Skip to content

REQ-CONFIG-007: land canonical M4 PopulationConfig defaults and close Q-002 #549

Closed

Description

@drevendev

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.md still has Q-002 OPEN and describes sixteen controls as intentionally undefined.
  • Authoritative docs/spec/implementation_status.csv still records REQ-CONFIG-007 as PARTIAL from the earlier declaration/validation/needCategories projection slice.

Canonical M4 PopulationConfig baseline to implement exactly:

  • minHouseholdCashPerCapita = 2.5
  • liquidityFloorShare = 0.10
  • baseParticipationByStratum = { VULNERABLE: 0.70, WORKING_MIDDLE: 0.70, AFFLUENT: 0.70 }
  • minParticipation = 0.40
  • maxParticipation = 0.90
  • minHealthParticipationFactor = 0.75
  • maxHealthParticipationFactor = 1.02
  • minWeakOpportunityFactor = 0.90
  • maxWeakOpportunityFactor = 1.05
  • wageSignalAdjustmentSpeed = 0.20
  • maxWageSignalStep = ln(1.05)
  • essentialAlpha = 0.25
  • incomeAlpha = 0.15
  • employmentAlpha = 0.20
  • prosperityAlpha = 0.15
  • scenarioRealIncomeScale = 10
  • healthRecoveryRate = 0.05
  • healthMaintenanceThreshold = 0.85
  • serviceHealthRate = 0.02
  • serviceBaseline = 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.needCategories projection/genesis behavior and prove it still survives.
  • Rewrite repository Q-002 to ANSWERED with HANDOFF-REPAIR-M4-003 provenance and the canonical ownership resolution.
  • Reconcile the existing REQ-CONFIG-007 ledger row truthfully; PARTIAL is correct until all composite acceptance is proved. Promote only with earned evidence and normal post-merge provenance handling.
  • Regenerate docs/spec/IMPLEMENTATION_STATUS.md from the authoritative CSV when the ledger changes.

Non-goals

  • No REQ-POPULATION-001..003 behavior 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

  1. All twenty canonical M4 PopulationConfig defaults equal the Handoff/03 §8 HANDOFF-REPAIR-M4-003 values, including exact Math.log(1.05) semantics for maxWageSignalStep.
  2. Existing validation accepts the canonical defaults without widening ranges; focused tests pin the values and protect ownership/alias boundaries.
  3. Existing needCategories DefinitionPack → DefinitionRegistry → WorldState projection remains intact with regression evidence.
  4. Q-002 is ANSWERED and no repository text still claims the sixteen repaired controls are intentionally undefined.
  5. Deferred M8 demography/migration/mobility controls remain absent from the M4 default slice.
  6. REQ-CONFIG-007 evidence is truthful and six-column-valid; no premature merge SHA or false completion claim.
  7. TypeScript typecheck/tests/build and retained .NET gates pass on the exact PR head; policy/ledger checks pass.
  8. 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

  1. added
    priority:highImportant and time-sensitive; schedule ahead of normal work
    type:featureNew simulation capability or observable behavior
    status:in-progressClaimed work with an active branch or pull request
    on Sep 16, 2026
  2. drevendev commented on Sep 17, 2026

    @drevendev
    OwnerAuthor

    R338 IMPLEMENT continuation on zen/req-config-007-population-defaults: added createDefaultPopulationConfig() 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 now e4b59b9917b7f2a5aaeb40eb2e076c6fdf31a176. 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:configpriority:highImportant and time-sensitive; schedule ahead of normal worktype:featureNew simulation capability or observable behavior

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions