Carry full company issue calendar tuples

This commit is contained in:
Jan Petykiewicz 2026-04-17 21:34:53 -07:00
commit 126a637bc2
7 changed files with 95 additions and 10 deletions

View file

@ -70,8 +70,9 @@ The fixed-world finance neighborhood itself is now widened to 16 dwords rooted a
so future issue-`0x38/0x39` closure can build on a broader owned restore-state window rather than so future issue-`0x38/0x39` closure can build on a broader owned restore-state window rather than
another narrow one-off probe. The next company-side seam is now bundled too: a shared company another narrow one-off probe. The next company-side seam is now bundled too: a shared company
market reader now exposes outstanding shares, assigned shares, public float, rounded cached share market reader now exposes outstanding shares, assigned shares, public float, rounded cached share
price, salary lanes, bonus amount, and issue-calendar words from the owned annual-finance state price, salary lanes, bonus amount, and the full two-word current/prior issue-calendar tuples from
instead of leaving that logic spread across summary helpers. The same annual-finance state now also the owned annual-finance state instead of leaving that logic spread across summary helpers. The
same annual-finance state now also
derives elapsed years since founding, last dividend, and last bankruptcy from the runtime calendar, derives elapsed years since founding, last dividend, and last bankruptcy from the runtime calendar,
which lines up directly with the grounded annual finance-policy gates in the atlas. Live bond-slot which lines up directly with the grounded annual finance-policy gates in the atlas. Live bond-slot
count is now carried through the same owned company market and annual-finance state too, which count is now carried through the same owned company market and annual-finance state too, which

View file

@ -5057,7 +5057,9 @@ mod tests {
last_bankruptcy_year: 0, last_bankruptcy_year: 0,
last_dividend_year: 1837, last_dividend_year: 1837,
current_issue_calendar_word: 5, current_issue_calendar_word: 5,
current_issue_calendar_word_2: 6,
prior_issue_calendar_word: 4, prior_issue_calendar_word: 4,
prior_issue_calendar_word_2: 5,
city_connection_latch: true, city_connection_latch: true,
linked_transit_latch: false, linked_transit_latch: false,
stat_band_root_0cfb_candidates: Vec::new(), stat_band_root_0cfb_candidates: Vec::new(),
@ -5106,7 +5108,9 @@ mod tests {
last_bankruptcy_year: 0, last_bankruptcy_year: 0,
last_dividend_year: 0, last_dividend_year: 0,
current_issue_calendar_word: 3, current_issue_calendar_word: 3,
current_issue_calendar_word_2: 4,
prior_issue_calendar_word: 2, prior_issue_calendar_word: 2,
prior_issue_calendar_word_2: 3,
city_connection_latch: false, city_connection_latch: false,
linked_transit_latch: true, linked_transit_latch: true,
stat_band_root_0cfb_candidates: Vec::new(), stat_band_root_0cfb_candidates: Vec::new(),
@ -6398,7 +6402,9 @@ mod tests {
last_bankruptcy_year: 0, last_bankruptcy_year: 0,
last_dividend_year: 1838, last_dividend_year: 1838,
current_issue_calendar_word: 4, current_issue_calendar_word: 4,
current_issue_calendar_word_2: 5,
prior_issue_calendar_word: 3, prior_issue_calendar_word: 3,
prior_issue_calendar_word_2: 4,
city_connection_latch: false, city_connection_latch: false,
linked_transit_latch: true, linked_transit_latch: true,
stat_band_root_0cfb_candidates: Vec::new(), stat_band_root_0cfb_candidates: Vec::new(),

View file

@ -85,8 +85,12 @@ pub struct RuntimeCompanyMarketState {
#[serde(default)] #[serde(default)]
pub current_issue_calendar_word: u32, pub current_issue_calendar_word: u32,
#[serde(default)] #[serde(default)]
pub current_issue_calendar_word_2: u32,
#[serde(default)]
pub prior_issue_calendar_word: u32, pub prior_issue_calendar_word: u32,
#[serde(default)] #[serde(default)]
pub prior_issue_calendar_word_2: u32,
#[serde(default)]
pub city_connection_latch: bool, pub city_connection_latch: bool,
#[serde(default)] #[serde(default)]
pub linked_transit_latch: bool, pub linked_transit_latch: bool,
@ -125,7 +129,11 @@ pub struct RuntimeCompanyAnnualFinanceState {
#[serde(default)] #[serde(default)]
pub years_since_last_dividend: Option<u32>, pub years_since_last_dividend: Option<u32>,
pub current_issue_calendar_word: u32, pub current_issue_calendar_word: u32,
#[serde(default)]
pub current_issue_calendar_word_2: u32,
pub prior_issue_calendar_word: u32, pub prior_issue_calendar_word: u32,
#[serde(default)]
pub prior_issue_calendar_word_2: u32,
pub city_connection_latch: bool, pub city_connection_latch: bool,
pub linked_transit_latch: bool, pub linked_transit_latch: bool,
} }
@ -373,7 +381,9 @@ pub enum RuntimeCompanyMarketMetric {
ChairmanSalaryCurrent, ChairmanSalaryCurrent,
ChairmanBonusAmount, ChairmanBonusAmount,
CurrentIssueCalendarWord, CurrentIssueCalendarWord,
CurrentIssueCalendarWord2,
PriorIssueCalendarWord, PriorIssueCalendarWord,
PriorIssueCalendarWord2,
} }
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
@ -1955,7 +1965,9 @@ pub fn runtime_company_annual_finance_state(
years_since_last_bankruptcy, years_since_last_bankruptcy,
years_since_last_dividend, years_since_last_dividend,
current_issue_calendar_word: market_state.current_issue_calendar_word, current_issue_calendar_word: market_state.current_issue_calendar_word,
current_issue_calendar_word_2: market_state.current_issue_calendar_word_2,
prior_issue_calendar_word: market_state.prior_issue_calendar_word, prior_issue_calendar_word: market_state.prior_issue_calendar_word,
prior_issue_calendar_word_2: market_state.prior_issue_calendar_word_2,
city_connection_latch: market_state.city_connection_latch, city_connection_latch: market_state.city_connection_latch,
linked_transit_latch: market_state.linked_transit_latch, linked_transit_latch: market_state.linked_transit_latch,
}) })
@ -1997,9 +2009,15 @@ pub fn runtime_company_market_value(
RuntimeCompanyMarketMetric::CurrentIssueCalendarWord => { RuntimeCompanyMarketMetric::CurrentIssueCalendarWord => {
Some(annual_finance_state.current_issue_calendar_word as i64) Some(annual_finance_state.current_issue_calendar_word as i64)
} }
RuntimeCompanyMarketMetric::CurrentIssueCalendarWord2 => {
Some(annual_finance_state.current_issue_calendar_word_2 as i64)
}
RuntimeCompanyMarketMetric::PriorIssueCalendarWord => { RuntimeCompanyMarketMetric::PriorIssueCalendarWord => {
Some(annual_finance_state.prior_issue_calendar_word as i64) Some(annual_finance_state.prior_issue_calendar_word as i64)
} }
RuntimeCompanyMarketMetric::PriorIssueCalendarWord2 => {
Some(annual_finance_state.prior_issue_calendar_word_2 as i64)
}
} }
} }
@ -4262,7 +4280,9 @@ mod tests {
last_bankruptcy_year: 0, last_bankruptcy_year: 0,
last_dividend_year: 1841, last_dividend_year: 1841,
current_issue_calendar_word: 5, current_issue_calendar_word: 5,
current_issue_calendar_word_2: 6,
prior_issue_calendar_word: 4, prior_issue_calendar_word: 4,
prior_issue_calendar_word_2: 5,
city_connection_latch: true, city_connection_latch: true,
linked_transit_latch: false, linked_transit_latch: false,
..RuntimeCompanyMarketState::default() ..RuntimeCompanyMarketState::default()
@ -4295,7 +4315,9 @@ mod tests {
years_since_last_bankruptcy: None, years_since_last_bankruptcy: None,
years_since_last_dividend: None, years_since_last_dividend: None,
current_issue_calendar_word: 5, current_issue_calendar_word: 5,
current_issue_calendar_word_2: 6,
prior_issue_calendar_word: 4, prior_issue_calendar_word: 4,
prior_issue_calendar_word_2: 5,
city_connection_latch: true, city_connection_latch: true,
linked_transit_latch: false, linked_transit_latch: false,
}) })
@ -4390,7 +4412,9 @@ mod tests {
last_bankruptcy_year: 0, last_bankruptcy_year: 0,
last_dividend_year: 1842, last_dividend_year: 1842,
current_issue_calendar_word: 9, current_issue_calendar_word: 9,
current_issue_calendar_word_2: 10,
prior_issue_calendar_word: 8, prior_issue_calendar_word: 8,
prior_issue_calendar_word_2: 9,
..RuntimeCompanyMarketState::default() ..RuntimeCompanyMarketState::default()
}, },
)]), )]),
@ -4446,6 +4470,14 @@ mod tests {
), ),
Some(9) Some(9)
); );
assert_eq!(
runtime_company_market_value(
&state,
7,
RuntimeCompanyMarketMetric::CurrentIssueCalendarWord2
),
Some(10)
);
assert_eq!( assert_eq!(
runtime_company_market_value( runtime_company_market_value(
&state, &state,
@ -4454,6 +4486,14 @@ mod tests {
), ),
Some(8) Some(8)
); );
assert_eq!(
runtime_company_market_value(
&state,
7,
RuntimeCompanyMarketMetric::PriorIssueCalendarWord2
),
Some(9)
);
assert_eq!( assert_eq!(
runtime_company_market_value( runtime_company_market_value(
&state, &state,

View file

@ -3497,7 +3497,9 @@ const SAVE_COMPANY_RECORD_MERGER_COOLDOWN_OFFSET: usize = 0x15f;
const SAVE_COMPANY_RECORD_FOUNDING_YEAR_OFFSET: usize = 0x157; const SAVE_COMPANY_RECORD_FOUNDING_YEAR_OFFSET: usize = 0x157;
const SAVE_COMPANY_RECORD_LAST_BANKRUPTCY_YEAR_OFFSET: usize = 0x163; const SAVE_COMPANY_RECORD_LAST_BANKRUPTCY_YEAR_OFFSET: usize = 0x163;
const SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET: usize = 0x16b; const SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET: usize = 0x16b;
const SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET_2: usize = 0x16f;
const SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET: usize = 0x173; const SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET: usize = 0x173;
const SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET_2: usize = 0x177;
const SAVE_COMPANY_RECORD_TAKEOVER_COOLDOWN_OFFSET: usize = 0x289; const SAVE_COMPANY_RECORD_TAKEOVER_COOLDOWN_OFFSET: usize = 0x289;
const SAVE_COMPANY_RECORD_LAST_DIVIDEND_YEAR_OFFSET: usize = 0x0d2d; const SAVE_COMPANY_RECORD_LAST_DIVIDEND_YEAR_OFFSET: usize = 0x0d2d;
const SAVE_COMPANY_RECORD_CITY_CONNECTION_LATCH_OFFSET: usize = 0x0d18; const SAVE_COMPANY_RECORD_CITY_CONNECTION_LATCH_OFFSET: usize = 0x0d18;
@ -3511,7 +3513,7 @@ 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_0D7F_OFFSET: usize = 0x0d7f;
const SAVE_COMPANY_RECORD_STAT_BAND_ROOT_1C47_OFFSET: usize = 0x1c47; const SAVE_COMPANY_RECORD_STAT_BAND_ROOT_1C47_OFFSET: usize = 0x1c47;
const SAVE_COMPANY_RECORD_STAT_BAND_ROOT_WINDOW_LEN_DWORDS: usize = 32; const SAVE_COMPANY_RECORD_STAT_BAND_ROOT_WINDOW_LEN_DWORDS: usize = 32;
const SAVE_COMPANY_RECORD_SCALAR_CANDIDATE_FIELDS: [(&str, usize); 7] = [ const SAVE_COMPANY_RECORD_SCALAR_CANDIDATE_FIELDS: [(&str, usize); 9] = [
("mutable_support_scalar", 0x4f), ("mutable_support_scalar", 0x4f),
("young_company_support_scalar", 0x57), ("young_company_support_scalar", 0x57),
( (
@ -3527,10 +3529,18 @@ const SAVE_COMPANY_RECORD_SCALAR_CANDIDATE_FIELDS: [(&str, usize); 7] = [
"current_issue_calendar_word", "current_issue_calendar_word",
SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET, SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET,
), ),
(
"current_issue_calendar_word_2",
SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET_2,
),
( (
"prior_issue_calendar_word", "prior_issue_calendar_word",
SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET, SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET,
), ),
(
"prior_issue_calendar_word_2",
SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET_2,
),
]; ];
const SAVE_COMPANY_RECORD_POST_CAPACITY_CANDIDATE_FIELDS: [(&str, usize); 6] = [ const SAVE_COMPANY_RECORD_POST_CAPACITY_CANDIDATE_FIELDS: [(&str, usize); 6] = [
("post_capacity_word_1", 0x7684), ("post_capacity_word_1", 0x7684),
@ -3650,10 +3660,18 @@ fn parse_save_company_roster_probe(
bytes, bytes,
record_offset + SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET, record_offset + SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET,
)?; )?;
let current_issue_calendar_word_2 = read_u32_at(
bytes,
record_offset + SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET_2,
)?;
let prior_issue_calendar_word = read_u32_at( let prior_issue_calendar_word = read_u32_at(
bytes, bytes,
record_offset + SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET, record_offset + SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET,
)?; )?;
let prior_issue_calendar_word_2 = read_u32_at(
bytes,
record_offset + SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET_2,
)?;
let city_connection_latch = read_u8_at( let city_connection_latch = read_u8_at(
bytes, bytes,
record_offset + SAVE_COMPANY_RECORD_CITY_CONNECTION_LATCH_OFFSET, record_offset + SAVE_COMPANY_RECORD_CITY_CONNECTION_LATCH_OFFSET,
@ -3725,7 +3743,9 @@ fn parse_save_company_roster_probe(
last_bankruptcy_year, last_bankruptcy_year,
last_dividend_year, last_dividend_year,
current_issue_calendar_word, current_issue_calendar_word,
current_issue_calendar_word_2,
prior_issue_calendar_word, prior_issue_calendar_word,
prior_issue_calendar_word_2,
city_connection_latch, city_connection_latch,
linked_transit_latch, linked_transit_latch,
stat_band_root_0cfb_candidates: stat_band_root_0cfb_candidates stat_band_root_0cfb_candidates: stat_band_root_0cfb_candidates
@ -15958,7 +15978,9 @@ mod tests {
last_bankruptcy_year, last_bankruptcy_year,
last_dividend_year, last_dividend_year,
current_issue_calendar_word, current_issue_calendar_word,
current_issue_calendar_word_2,
prior_issue_calendar_word, prior_issue_calendar_word,
prior_issue_calendar_word_2,
city_connection_latch, city_connection_latch,
linked_transit_latch, linked_transit_latch,
), ),
@ -15984,7 +16006,9 @@ mod tests {
1851u32, 1851u32,
1848u32, 1848u32,
7u32, 7u32,
8u32,
6u32, 6u32,
7u32,
true, true,
false, false,
), ),
@ -16009,7 +16033,9 @@ mod tests {
0u32, 0u32,
1850u32, 1850u32,
3u32, 3u32,
4u32,
2u32, 2u32,
3u32,
false, false,
true, true,
), ),
@ -16095,9 +16121,15 @@ mod tests {
bytes[record_offset + SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET bytes[record_offset + SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET
..record_offset + SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET + 4] ..record_offset + SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET + 4]
.copy_from_slice(&current_issue_calendar_word.to_le_bytes()); .copy_from_slice(&current_issue_calendar_word.to_le_bytes());
bytes[record_offset + SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET_2
..record_offset + SAVE_COMPANY_RECORD_CURRENT_ISSUE_CALENDAR_OFFSET_2 + 4]
.copy_from_slice(&current_issue_calendar_word_2.to_le_bytes());
bytes[record_offset + SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET bytes[record_offset + SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET
..record_offset + SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET + 4] ..record_offset + SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET + 4]
.copy_from_slice(&prior_issue_calendar_word.to_le_bytes()); .copy_from_slice(&prior_issue_calendar_word.to_le_bytes());
bytes[record_offset + SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET_2
..record_offset + SAVE_COMPANY_RECORD_PRIOR_ISSUE_CALENDAR_OFFSET_2 + 4]
.copy_from_slice(&prior_issue_calendar_word_2.to_le_bytes());
bytes[record_offset + SAVE_COMPANY_RECORD_CITY_CONNECTION_LATCH_OFFSET] = bytes[record_offset + SAVE_COMPANY_RECORD_CITY_CONNECTION_LATCH_OFFSET] =
u8::from(city_connection_latch); u8::from(city_connection_latch);
bytes[record_offset + SAVE_COMPANY_RECORD_LINKED_TRANSIT_LATCH_OFFSET] = bytes[record_offset + SAVE_COMPANY_RECORD_LINKED_TRANSIT_LATCH_OFFSET] =
@ -16177,7 +16209,9 @@ mod tests {
assert_eq!(market_state.last_bankruptcy_year, 1851); assert_eq!(market_state.last_bankruptcy_year, 1851);
assert_eq!(market_state.last_dividend_year, 1848); assert_eq!(market_state.last_dividend_year, 1848);
assert_eq!(market_state.current_issue_calendar_word, 7); assert_eq!(market_state.current_issue_calendar_word, 7);
assert_eq!(market_state.current_issue_calendar_word_2, 8);
assert_eq!(market_state.prior_issue_calendar_word, 6); assert_eq!(market_state.prior_issue_calendar_word, 6);
assert_eq!(market_state.prior_issue_calendar_word_2, 7);
assert!(market_state.city_connection_latch); assert!(market_state.city_connection_latch);
assert!(!market_state.linked_transit_latch); assert!(!market_state.linked_transit_latch);
assert_eq!( assert_eq!(
@ -16221,7 +16255,9 @@ mod tests {
assert_eq!(second_market_state.chairman_bonus_amount, 0); assert_eq!(second_market_state.chairman_bonus_amount, 0);
assert_eq!(second_market_state.last_dividend_year, 1850); assert_eq!(second_market_state.last_dividend_year, 1850);
assert_eq!(second_market_state.current_issue_calendar_word, 3); assert_eq!(second_market_state.current_issue_calendar_word, 3);
assert_eq!(second_market_state.current_issue_calendar_word_2, 4);
assert_eq!(second_market_state.prior_issue_calendar_word, 2); assert_eq!(second_market_state.prior_issue_calendar_word, 2);
assert_eq!(second_market_state.prior_issue_calendar_word_2, 3);
assert!(!second_market_state.city_connection_latch); assert!(!second_market_state.city_connection_latch);
assert!(second_market_state.linked_transit_latch); assert!(second_market_state.linked_transit_latch);
} }

View file

@ -1981,7 +1981,9 @@ mod tests {
last_bankruptcy_year: 0, last_bankruptcy_year: 0,
last_dividend_year: 1841, last_dividend_year: 1841,
current_issue_calendar_word: 5, current_issue_calendar_word: 5,
current_issue_calendar_word_2: 6,
prior_issue_calendar_word: 4, prior_issue_calendar_word: 4,
prior_issue_calendar_word_2: 5,
city_connection_latch: true, city_connection_latch: true,
linked_transit_latch: false, linked_transit_latch: false,
stat_band_root_0cfb_candidates: vec![ stat_band_root_0cfb_candidates: vec![

View file

@ -124,9 +124,9 @@ The highest-value next passes are now:
reader seam for assigned shares, public float, and rounded cached share price; the fixed-world reader seam for assigned shares, public float, and rounded cached share price; the fixed-world
finance neighborhood is now widened to 16 dwords rooted at `[world+0x11]` so later issue-family finance neighborhood is now widened to 16 dwords rooted at `[world+0x11]` so later issue-family
closure can target a broader owned restore-state window; the same annual-finance state now also closure can target a broader owned restore-state window; the same annual-finance state now also
feeds a shared company market reader for stock-capital, salary, bonus, and issue-calendar values, feeds a shared company market reader for stock-capital, salary, bonus, and the full two-word
and now derives elapsed years since founding, last dividend, and last bankruptcy for later annual current/prior issue-calendar tuples, and now derives elapsed years since founding, last dividend,
finance-policy rehosting; live bond-slot count now travels through that same owned annual-finance and last bankruptcy for later annual finance-policy rehosting; live bond-slot count now travels through that same owned annual-finance
state for the stock-capital branch gate, and the grounded bond table now also contributes both state for the stock-capital branch gate, and the grounded bond table now also contributes both
the largest live bond principal and the chosen highest-coupon live bond principal into that same the largest live bond principal and the chosen highest-coupon live bond principal into that same
owner-state surface owner-state surface

View file

@ -212,10 +212,10 @@ cached share price, which is a better base for later dividend / issue-calendar s
scattered single-field helpers. The fixed-world finance neighborhood is now widened to 16 dwords scattered single-field helpers. The fixed-world finance neighborhood is now widened to 16 dwords
rooted at `[world+0x11]`, so later issue-`0x38/0x39` closure can build on a broader owned rooted at `[world+0x11]`, so later issue-`0x38/0x39` closure can build on a broader owned
restore-state window instead of another narrow probe. The same owned company annual-finance state restore-state window instead of another narrow probe. The same owned company annual-finance state
now also drives a shared company market reader seam for stock-capital, salary, bonus, and now also drives a shared company market reader seam for stock-capital, salary, bonus, and the full
issue-calendar values, which is a better base for shellless finance simulation than summary-only two-word current/prior issue-calendar tuples, which is a better base for shellless finance
helpers. That same owned annual-finance state now also derives elapsed years since founding, last simulation than summary-only helpers. That same owned annual-finance state now also derives elapsed
dividend, and last bankruptcy from the runtime calendar, which lines up directly with the grounded years since founding, last dividend, and last bankruptcy from the runtime calendar, which lines up directly with the grounded
annual finance-policy gates in the atlas. Live bond-slot count now also flows through that same annual finance-policy gates in the atlas. Live bond-slot count now also flows through that same
owned company market and annual-finance state, matching the stock-capital branch gate that needs owned company market and annual-finance state, matching the stock-capital branch gate that needs
at least two live bonds. The same grounded bond table now also contributes both the largest live at least two live bonds. The same grounded bond table now also contributes both the largest live