Widen company stat-band owner state

This commit is contained in:
Jan Petykiewicz 2026-04-17 21:27:38 -07:00
commit d6a951841d
4 changed files with 25 additions and 5 deletions

View file

@ -57,8 +57,8 @@ build on owned state instead of another round of single-field save-offset guesse
runtime-side `0x2329` stat-family reader seam is now rehosted too for the currently grounded slots
`0x0d` (`current_cash`) and `0x1d` (`book_value_per_share`), so later annual-finance logic can
extend one shared reader family instead of hard-coding more direct field accesses. Those saved
stat-band windows are now widened to 16 dwords per root in save-slice/runtime state so later
year-series finance closure has enough owned raw state to attach to. The matching world-side issue
stat-band windows are now widened to 32 dwords per root in save-slice/runtime state so later
year-series finance closure has a broader owned raw state band to attach to. The matching world-side issue
reader seam is now also rehosted for the grounded `0x37` investor-confidence lane on top of the
save-native world-restore state. The selected-company summary path now also exposes the
unassigned share pool derived from outstanding shares minus chairman-held shares, so later

View file

@ -3505,7 +3505,7 @@ const SAVE_COMPANY_RECORD_TRACK_LAYING_CAPACITY_OFFSET: usize = 0x7680;
const SAVE_COMPANY_RECORD_STAT_BAND_ROOT_0CFB_OFFSET: usize = 0x0cfb;
const SAVE_COMPANY_RECORD_STAT_BAND_ROOT_0D7F_OFFSET: usize = 0x0d7f;
const SAVE_COMPANY_RECORD_STAT_BAND_ROOT_1C47_OFFSET: usize = 0x1c47;
const SAVE_COMPANY_RECORD_STAT_BAND_ROOT_WINDOW_LEN_DWORDS: usize = 16;
const SAVE_COMPANY_RECORD_STAT_BAND_ROOT_WINDOW_LEN_DWORDS: usize = 32;
const SAVE_COMPANY_RECORD_SCALAR_CANDIDATE_FIELDS: [(&str, usize); 7] = [
("mutable_support_scalar", 0x4f),
("young_company_support_scalar", 0x57),
@ -16125,6 +16125,26 @@ mod tests {
assert_eq!(market_state.prior_issue_calendar_word, 6);
assert!(market_state.city_connection_latch);
assert!(!market_state.linked_transit_latch);
assert_eq!(
market_state.stat_band_root_0cfb_candidates.len(),
SAVE_COMPANY_RECORD_STAT_BAND_ROOT_WINDOW_LEN_DWORDS
);
assert_eq!(
market_state.stat_band_root_0d7f_candidates.len(),
SAVE_COMPANY_RECORD_STAT_BAND_ROOT_WINDOW_LEN_DWORDS
);
assert_eq!(
market_state.stat_band_root_1c47_candidates.len(),
SAVE_COMPANY_RECORD_STAT_BAND_ROOT_WINDOW_LEN_DWORDS
);
assert_eq!(
market_state.stat_band_root_0cfb_candidates[31].label,
"stat_band_0cfb_word_32"
);
assert_eq!(
market_state.stat_band_root_0cfb_candidates[31].relative_offset_hex,
"0xd77"
);
assert_eq!(roster.entries[1].company_id, 2);
assert_eq!(roster.entries[1].linked_chairman_profile_id, Some(2));
assert_eq!(roster.entries[1].debt, 500_000);

View file

@ -117,7 +117,7 @@ The highest-value next passes are now:
and `[company+0x1c47]` for each live company, so later finance/stat-family readers can attach to
owned runtime data instead of one more guessed save offset; the first runtime-side `0x2329`
stat-family reader seam is now also rehosted for slots `0x0d` and `0x1d`, and the saved
stat-band windows themselves now carry 16 dwords per root; the matching world-side issue reader
stat-band windows themselves now carry 32 dwords per root; the matching world-side issue reader
seam is now rehosted for the grounded `0x37` lane, and selected-company summaries now expose the
unassigned share pool derived from outstanding shares minus chairman-held shares for later annual
finance logic; that same owned company market state now also backs a bundled annual-finance

View file

@ -201,7 +201,7 @@ roster. The current owned company-side roster now includes not just the market/c
the first grounded stat-band root windows at `[company+0x0cfb]`, `[company+0x0d7f]`, and
`[company+0x1c47]`, and the first runtime-side `0x2329` stat-family reader seam is now rehosted
for slots `0x0d` and `0x1d`, so later finance readers can target saved owner state and one shared
reader family directly. Those stat-band windows now carry 16 dwords per root in the save-slice and
reader family directly. Those stat-band windows now carry 32 dwords per root in the save-slice and
runtime-owned company market state, and the matching world-side issue reader seam is now rehosted
for the grounded `0x37` lane over save-native world restore state. The selected-company summary
surface now also carries the unassigned share pool derived from outstanding shares minus