Repository navigation
REQ-CONFIG-007: land canonical M4 PopulationConfig defaults and close Q-002 #549
Description
Goal
Complete the remaining M4 configuration slice for permanent REQ-CONFIG-007 after Drive HANDOFF-REPAIR-M4-003 resolved Q-002. Land the canonical M4 PopulationConfig defaults/ownership vocabulary, preserve the already-implemented DefinitionRegistry.needCategories projection, close repository Q-002, and promote the composite requirement only when the full acceptance evidence is earned.
Evidence
- Drive authority:
HANDOFF-REPAIR-M4-003/ Handoff/03 §8 now defines the complete M4 PopulationConfig baseline and ownership rules. - MACHINE mirror sync spec: sync specification mirror from Drive #548 is on current master
203fe92cc928c37453ad18e24d8976378caef565; mirrored Handoff/03 contains the repaired defaults/ownership rules. - Repository
docs/spec/OPEN_QUESTIONS.mdstill has Q-002 OPEN and describes sixteen controls as intentionally undefined. - Authoritative
docs/spec/implementation_status.csvstill recordsREQ-CONFIG-007as PARTIAL from the earlier declaration/validation/needCategories projection slice.
Canonical M4 PopulationConfig baseline to implement exactly:
minHouseholdCashPerCapita = 2.5liquidityFloorShare = 0.10baseParticipationByStratum = { VULNERABLE: 0.70, WORKING_MIDDLE: 0.70, AFFLUENT: 0.70 }minParticipation = 0.40maxParticipation = 0.90minHealthParticipationFactor = 0.75maxHealthParticipationFactor = 1.02minWeakOpportunityFactor = 0.90maxWeakOpportunityFactor = 1.05wageSignalAdjustmentSpeed = 0.20maxWageSignalStep = ln(1.05)essentialAlpha = 0.25incomeAlpha = 0.15employmentAlpha = 0.20prosperityAlpha = 0.15scenarioRealIncomeScale = 10healthRecoveryRate = 0.05healthMaintenanceThreshold = 0.85serviceHealthRate = 0.02serviceBaseline = 0.50
Ownership rules: PopulationConfig.baseParticipationByStratum is authoritative for the M4 participation path and supersedes LaborConfig.baselineParticipationRate there; population health-participation bounds are distinct from labor health-productivity bounds; worker-equivalent tolerance remains SimulationConfig.numeric.quantityEpsilon; P_raw weights remain fixed formula constants; NeedCategoryDefinition owns per-category substitution/target/budget/carryover data; stale parallel aliases (needSubstitutionElasticity, consumptionBudgetShare*, precautionaryCashFloorMonths, healthEmaAlpha, wageSignalAlpha) must not be revived; prosperityEmaAlpha maps to prosperityAlpha=0.15.
Scope
- Update
createDefaultSimulationConfig()/ PopulationConfig defaults to the exact twenty values above. - Keep existing validators strict; add focused canonical-value regressions and sensitive negative controls where needed.
- Preserve existing
DefinitionRegistry.needCategoriesprojection/genesis behavior and prove it still survives. - Rewrite repository Q-002 to
ANSWEREDwithHANDOFF-REPAIR-M4-003provenance and the canonical ownership resolution. - Reconcile the existing
REQ-CONFIG-007ledger row truthfully;PARTIALis correct until all composite acceptance is proved. Promote only with earned evidence and normal post-merge provenance handling. - Regenerate
docs/spec/IMPLEMENTATION_STATUS.mdfrom the authoritative CSV when the ledger changes.
Non-goals
- No
REQ-POPULATION-001..003behavior implementation in this unit. - No M5 trade/FX, M6 fiscal/Clan dynamics, M7 monetary dynamics, M8 demography/migration, or later-milestone pull-forward.
- No
laborEpsilon, no second participation owner, no duplicate need-substitution control, and no M8 defaults. - Do not patch
docs/spec/mirror/; it is MACHINE-owned.
Acceptance criteria
- All twenty canonical M4 PopulationConfig defaults equal the Handoff/03 §8
HANDOFF-REPAIR-M4-003values, including exactMath.log(1.05)semantics formaxWageSignalStep. - Existing validation accepts the canonical defaults without widening ranges; focused tests pin the values and protect ownership/alias boundaries.
- Existing
needCategoriesDefinitionPack → DefinitionRegistry → WorldState projection remains intact with regression evidence. - Q-002 is
ANSWEREDand no repository text still claims the sixteen repaired controls are intentionally undefined. - Deferred M8 demography/migration/mobility controls remain absent from the M4 default slice.
REQ-CONFIG-007evidence is truthful and six-column-valid; no premature merge SHA or false completion claim.- TypeScript typecheck/tests/build and retained .NET gates pass on the exact PR head; policy/ledger checks pass.
- PR handoff names every changed artifact and exact tested head, then stops at the production→judgement boundary for SLOPSTER.
Verification
Run the focused config/default/projection tests plus the repository-required TypeScript and retained .NET gates. Verify scripts/implementation_status.py --check if evidence files change. Confirm the final PR diff contains no mirror edits and no population behavior/M5+ scope.
Activity
drevendev commentedon Sep 17, 2026
R338 IMPLEMENT continuation on
zen/req-config-007-population-defaults: addedcreateDefaultPopulationConfig()as the narrow runtime seam over the exact HANDOFF-REPAIR-M4-003 twenty-control baseline and a regression proving the returned config is validator-safe and does not share its nested participation map across calls. Exact branch head is nowe4b59b9917b7f2a5aaeb40eb2e076c6fdf31a176. This does not claim REQ-CONFIG-007 complete yet:createDefaultSimulationConfig()still carries the old four-control population object, repository Q-002 is still OPEN, and the ledger remains PARTIAL. No PR is opened until the complete bounded #549 diff reaches that production→judgement boundary.