From a96c1310a7e837a95d4024bc8367090b88eb4ce6 Mon Sep 17 00:00:00 2001 From: Daphne Hansell <128793799+daphnehanse11@users.noreply.github.com> Date: Wed, 15 Jul 2026 13:49:58 -0400 Subject: [PATCH 1/3] Freeze C1/C2: flip ADR 0003 to Accepted (joint sign-off via this PR) The week-1 sync point from #192. All inputs are merged: the three person-side readers (#204/#205/#206), the firm-side banding/targets and this ADR's text (#195) including the phantom-band correction (evidence: #211) and the settled NOEMP/FIRMSIZE seam (#208). The approvals on this PR from both workstream owners are the joint sign-off; merging it is the freeze. Co-Authored-By: Claude Fable 5 --- docs/adr/0003-employer-firm-extension.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/adr/0003-employer-firm-extension.md b/docs/adr/0003-employer-firm-extension.md index edf2e937..bcb34687 100644 --- a/docs/adr/0003-employer-firm-extension.md +++ b/docs/adr/0003-employer-firm-extension.md @@ -1,9 +1,15 @@ # ADR 0003: Employer-firm extension — C1 spell schema and C2 canonical firm-size banding -**Status:** Proposed (week-1 freeze candidate for the interface -contracts on -[populace-dynamics#192](https://github.com/PolicyEngine/populace-dynamics/issues/192); -changed only by joint PR between workstreams A and B once frozen) +**Status:** Accepted — C1 and C2 frozen 2026-07-15. From this +point the contracts change only by joint PR between workstreams A +and B ([populace-dynamics#192](https://github.com/PolicyEngine/populace-dynamics/issues/192)). + +**Sign-off:** @vahid-ahmadi (Workstream B, author) · +@daphnehanse11 (Workstream A) — recorded by the merge of the freeze +PR, whose approvals from both workstream owners constitute the +joint sign-off. First scheduled amendment (pre-registered above): +the C1 ``hours_band``/monthly-hours column once phase-1 establishes +SIPP's supportable hours granularity. ## Context From b2b6714ee0d6834ee4aee0e696e0be738c3005f6 Mon Sep 17 00:00:00 2001 From: Daphne Hansell <128793799+daphnehanse11@users.noreply.github.com> Date: Wed, 15 Jul 2026 14:28:09 -0400 Subject: [PATCH 2/3] Freeze PR: record the cross-workstream approval norm MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both sides have been pushing to each other's branches productively; the freeze makes the implicit rule explicit — contract-touching changes need the other workstream owner's approval even when pushed directly, so pre-registration records who decided, not just who typed. Co-Authored-By: Claude Fable 5 --- docs/adr/0003-employer-firm-extension.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/adr/0003-employer-firm-extension.md b/docs/adr/0003-employer-firm-extension.md index bcb34687..0c09e26d 100644 --- a/docs/adr/0003-employer-firm-extension.md +++ b/docs/adr/0003-employer-firm-extension.md @@ -188,6 +188,15 @@ review finding 3): - `src/populace_dynamics/firms/banding.py` is the single canonical banding implementation; workstream A trains to it. Changing a band edge after the freeze requires a joint PR touching this ADR. +- **Cross-workstream pushes carry an approval norm.** Both + workstreams push directly to each other's branches when useful + (reader fixes, rebases, contract-text corrections — this has run + in both directions and worked). The norm the freeze makes + explicit: a change that touches contract semantics (C1 columns, + C2 bands/codings, gate definitions) requires the *other* + workstream owner's approval on the PR even when the commit was + pushed directly, so pre-registration always records who decided, + not just who typed. - The committed target extracts (`data/external/susb_us_*`, `bds_us_*`, `qwi_us_*`, `j2j_us_*`; provenance in `data/external/employer_firm_target_sources.md`) are external From 36cf7e2b07233460e782f94e18842b72d6c6033a Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Thu, 16 Jul 2026 12:47:03 +0100 Subject: [PATCH 3/3] ADR 0003 status block: sign-off mechanism wording + pre-registration pointer + freeze date Co-Authored-By: Claude Fable 5 --- docs/adr/0003-employer-firm-extension.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/adr/0003-employer-firm-extension.md b/docs/adr/0003-employer-firm-extension.md index 0c09e26d..b80236e7 100644 --- a/docs/adr/0003-employer-firm-extension.md +++ b/docs/adr/0003-employer-firm-extension.md @@ -1,13 +1,14 @@ # ADR 0003: Employer-firm extension — C1 spell schema and C2 canonical firm-size banding -**Status:** Accepted — C1 and C2 frozen 2026-07-15. From this +**Status:** Accepted — C1 and C2 frozen 2026-07-16. From this point the contracts change only by joint PR between workstreams A and B ([populace-dynamics#192](https://github.com/PolicyEngine/populace-dynamics/issues/192)). **Sign-off:** @vahid-ahmadi (Workstream B, author) · -@daphnehanse11 (Workstream A) — recorded by the merge of the freeze -PR, whose approvals from both workstream owners constitute the -joint sign-off. First scheduled amendment (pre-registered above): +@daphnehanse11 (Workstream A) — the joint sign-off is recorded by +the merge of the freeze PR: authorship by one workstream owner plus +approval by the other. First scheduled amendment (pre-registered +below): the C1 ``hours_band``/monthly-hours column once phase-1 establishes SIPP's supportable hours granularity.