Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
247aee9
DRAFT: SIPP job-spell noise floors for E4/E5 (pre-C3 anchor)
daphnehanse11 Jul 15, 2026
370736d
DRAFT: E3 tenure noise floors (with a heaping-robust ECDF variant)
daphnehanse11 Jul 15, 2026
fc9fcec
Lint: unused loop variable (B007)
daphnehanse11 Jul 15, 2026
835e85e
DRAFT: E8/E9 SIPP floors — completing the Workstream A battery
daphnehanse11 Jul 15, 2026
39e2bed
Merge remote-tracking branch 'origin/master' into sipp-spell-floors
vahid-ahmadi Jul 16, 2026
ef5b8ab
Review fixes for #212: merge master, thin-flag unit honesty, reader r…
vahid-ahmadi Jul 16, 2026
dd0043e
Document C3 precision-first linkage QC
MaxGhenis Jul 16, 2026
ee58b30
Wire linkage QC into the employer battery
MaxGhenis Jul 16, 2026
5346b3b
Merge origin/master into sipp-spell-floors (ADR 0003 status flip, sip…
vahid-ahmadi Jul 17, 2026
1f87c6a
C3 employer gate block: draft for referee (E1-E12 thresholds, partiti…
vahid-ahmadi Jul 17, 2026
87788eb
Cross-wave job-ID consistency check: PASS (pre-lock artifact for #230…
daphnehanse11 Jul 17, 2026
633ad10
Correct pre-registration label; report both scoring populations (revi…
vahid-ahmadi Jul 19, 2026
85912a1
Merge remote-tracking branch 'origin/master' into sipp-spell-floors
daphnehanse11 Jul 22, 2026
0266696
Address review: disclosed re-analysis, both populations, pinning
daphnehanse11 Jul 22, 2026
a3e8331
Address review: scale gap recorded, 20-seed E8/E9, person-unit thin, …
daphnehanse11 Jul 22, 2026
efdd5f6
Merge remote-tracking branch 'origin/master' into crosswave-jobid-check
daphnehanse11 Jul 22, 2026
35926fe
Referee S3 mechanics: recompute test, E->E-conditional definition, re…
daphnehanse11 Jul 22, 2026
dc22008
E4/E5 minimal-audit manifest: registered design (ADR 0004, pre-lock)
daphnehanse11 Jul 17, 2026
8e356ce
Pin the audit-result sequence per referee S4 (ADR 0004 section 1.5)
daphnehanse11 Jul 22, 2026
22ae1fd
DRAFT: SIPP-vs-J2J seam-reconciliation artifact (pre-C3, required by …
daphnehanse11 Jul 15, 2026
9edfd1b
Add J2J sex-x-age and J2JOD origin-x-destination firm-size extracts
vahid-ahmadi Jul 17, 2026
b370fb4
Correct entry 6: margin caveat, release attribution, content pin
vahid-ahmadi Jul 23, 2026
7956984
Recount tier manifest on current master (unit 740 -> 755)
vahid-ahmadi Jul 23, 2026
8887f23
DRAFT pre-C3 noise floors: Workstream B aggregate battery (E1/E2/E6/E…
vahid-ahmadi Jul 16, 2026
56ac222
Fix lint (ruff B905/B007) and reconcile tier counts after master merge
vahid-ahmadi Jul 17, 2026
7002c8f
Rebuild as draft_v0.1 on #228: E2 sex x age floor, E11 restated
vahid-ahmadi Jul 23, 2026
28ced1c
Promote the B-side floors to v1: three digests pinned (#230 s12.2)
vahid-ahmadi Jul 23, 2026
b707d78
Answer §13 item 6: no admissible truth frame for imputed bands
vahid-ahmadi Jul 23, 2026
47994df
Revision 2: address round-1 blocking items B1, B3, B4, B5 and S1
vahid-ahmadi Jul 23, 2026
5834467
Address review: job-ID linkage caveat, year-label convention, j2j/J2J…
vahid-ahmadi Jul 16, 2026
c3b1b47
Add the E5 run arm, no-revisit clause, frame-measured power, register…
daphnehanse11 Jul 23, 2026
a8a6b1c
IC3 block draft YAML + mutation pins (closes B2)
vahid-ahmadi Jul 23, 2026
31dbf21
Address round-1 review: E3 enumeration, k_basis, frame, ceremony
vahid-ahmadi Jul 23, 2026
d85386f
Rename to ic3_employer_gate_block.md; register the E3 per-year rule
vahid-ahmadi Jul 23, 2026
ac0caa2
Fix the byte-drift check's input and the refuted docstring claim
vahid-ahmadi Jul 23, 2026
f961bf3
Correct the e11_margin_trend magnitude and re-pin all three digests
vahid-ahmadi Jul 23, 2026
e2aba68
Drop the stray .claude gitlinks my review commit added; ignore .claude
vahid-ahmadi Jul 23, 2026
2470b76
Fold linkage-QC adoption requirements into ADR 0004
vahid-ahmadi Jul 30, 2026
1881094
Merge remote-tracking branch 'origin/master' into seam-anchor-refresh
vahid-ahmadi Jul 30, 2026
64631a4
Merge remote-tracking branch 'origin/master' into j2j-extracts-refresh
vahid-ahmadi Jul 30, 2026
3d0282d
Reclassify J2J target tests in tier manifest
vahid-ahmadi Jul 30, 2026
f5070b4
Keep firm targets outside historical estimate identity
vahid-ahmadi Jul 30, 2026
43b1b89
Merge commit 'f5070b4' into firm-floors-pr223
vahid-ahmadi Jul 30, 2026
f027c84
Refresh aggregate floors for the IC3 contract
vahid-ahmadi Jul 30, 2026
c686f0f
Merge remote-tracking branch 'origin/master' into crosswave-jobid-check
daphnehanse11 Jul 30, 2026
6126127
Merge remote-tracking branch 'origin/master' into sipp-spell-floors
daphnehanse11 Jul 30, 2026
a5bf14e
Merge IC1/IC2/IC3 naming root into linkage QC
vahid-ahmadi Jul 30, 2026
978ff23
Align linkage QC with IC naming and aggregate gate boundary
vahid-ahmadi Jul 30, 2026
dff73d5
Merge current master into linkage QC readiness branch
vahid-ahmadi Jul 30, 2026
7411d8d
Merge remote-tracking branch 'origin/master' into pr274-readiness
vahid-ahmadi Jul 30, 2026
8a243c6
Merge remote-tracking branch 'origin/master' into pr223-readiness-agent
vahid-ahmadi Jul 30, 2026
98ac6e9
Merge remote-tracking branch 'origin/rename-interface-contracts' into…
vahid-ahmadi Jul 30, 2026
83e4c45
Merge remote-tracking branch 'origin/master' into pr236-readiness
vahid-ahmadi Jul 30, 2026
b735ae9
Merge remote-tracking branch 'origin/sol/linkage-qc' into pr236-readi…
vahid-ahmadi Jul 30, 2026
1a4070d
Merge remote-tracking branch 'origin/crosswave-jobid-check' into pr23…
vahid-ahmadi Jul 30, 2026
27bceb7
Merge IC naming root into Workstream A floor promotion
vahid-ahmadi Jul 30, 2026
73213c5
Close pre-draw audit sizing channels
vahid-ahmadi Jul 30, 2026
35db53a
Merge remote-tracking branch 'origin/master' into pr230-referee-ready
vahid-ahmadi Jul 30, 2026
714f427
Merge remote-tracking branch 'origin/e4-e5-audit-manifest' into pr230…
vahid-ahmadi Jul 30, 2026
ddad180
Merge remote-tracking branch 'origin/j2j-se-od-extracts' into pr230-r…
vahid-ahmadi Jul 30, 2026
5de4496
Merge remote-tracking branch 'origin/seam-reconciliation' into pr230-…
vahid-ahmadi Jul 30, 2026
85750ac
docs: reconcile IC3 referee control block
vahid-ahmadi Jul 30, 2026
211152b
Promote Workstream A floor references to v1
vahid-ahmadi Jul 30, 2026
34a70fc
Pin the E12 true-link claims boundary
vahid-ahmadi Jul 30, 2026
9aaeef6
Merge commit '691901f2915865fceb906f1dc5f36c913a5e2675' into pr278-ic…
vahid-ahmadi Jul 30, 2026
abcf36b
Merge commit '211152bb506e08b0a8b39dcae1c255365a71df0d' into pr278-ic…
vahid-ahmadi Jul 30, 2026
355f03c
Merge remote-tracking branch 'origin/sipp-spell-floors' into pr230-co…
vahid-ahmadi Jul 30, 2026
573961c
Merge commit '34a70fc8c809d23b4643588ca228565b1c7b6513' into pr278-ic…
vahid-ahmadi Jul 30, 2026
80b8cae
Merge commit '85750ac10e9c5274c012db485fa4dc3ce432d137' into pr278-ic…
vahid-ahmadi Jul 30, 2026
197dbe6
Merge remote-tracking branch 'origin/firm-floors-pre-c3' into pr230-c…
vahid-ahmadi Jul 30, 2026
037b43f
Compose the IC3 floor promotions without asserting readiness
vahid-ahmadi Jul 30, 2026
f8313cd
Reconcile IC3 draft with composed floor evidence
vahid-ahmadi Jul 30, 2026
2e8ce60
Merge commit '037b43faec5e8b46f9d92a295ced792e602e5b6f' into pr278-ic…
vahid-ahmadi Jul 30, 2026
7931318
Close IC3 agreement and staging test gaps
vahid-ahmadi Jul 30, 2026
c24809b
Resolve Workstream A strict staging provenance
vahid-ahmadi Jul 30, 2026
00994dd
Merge resolved Workstream A staging provenance into IC3 draft
vahid-ahmadi Jul 30, 2026
1bc161e
Record resolved Workstream A provenance in IC3 draft
vahid-ahmadi Jul 31, 2026
302e136
Merge commit 'c24809b081c448255a39b74870de70207f615724' into pr278-ic…
vahid-ahmadi Jul 31, 2026
fe78723
Merge commit '1bc161e7ca6a86965708734b425bbc209bed0083' into pr278-ic…
vahid-ahmadi Jul 31, 2026
e87d739
Cascade reproducible person-side floors into IC3 draft
vahid-ahmadi Jul 31, 2026
3a2b7a6
Merge commit '044d2fc789052e89ea0849fa39fea9899317d97e' into pr224-ro…
vahid-ahmadi Jul 31, 2026
32f8fed
Merge commit '35499f134c009680e7b51c6599d49812246b5b2d' into pr224-ro…
vahid-ahmadi Jul 31, 2026
1cef081
Merge master into Workstream A floor references
vahid-ahmadi Jul 31, 2026
55ddae0
Format Workstream A floor seal files
vahid-ahmadi Jul 31, 2026
d13e8c4
Merge master into cross-wave job-ID check
vahid-ahmadi Jul 31, 2026
42a92cc
Merge remote-tracking branch 'origin/master' into pr274-refresh
vahid-ahmadi Jul 31, 2026
50404cb
Merge remote-tracking branch 'origin/master' into j2j-se-od-extracts
vahid-ahmadi Jul 31, 2026
7460a48
Merge commit '50404cb190f04c88508410b296dccf120cfdbf39' into pr223-re…
vahid-ahmadi Jul 31, 2026
ae8d674
Merge commit '35499f134c009680e7b51c6599d49812246b5b2d' into pr223-re…
vahid-ahmadi Jul 31, 2026
6e4ce87
Merge current linkage-QC prerequisite into audit design
vahid-ahmadi Jul 31, 2026
85bcf90
Merge commit 'd13e8c4c6d578d6fab65a297f2fcfacf0af3cf6d' into pr236-ca…
vahid-ahmadi Jul 31, 2026
b4c5b6f
Recount aggregate-floor tiers on refreshed roots
vahid-ahmadi Jul 31, 2026
c3da5e2
Merge commit '35499f134c009680e7b51c6599d49812246b5b2d' into pr230-co…
vahid-ahmadi Jul 31, 2026
03465cf
Merge commit '50404cb190f04c88508410b296dccf120cfdbf39' into pr230-co…
vahid-ahmadi Jul 31, 2026
9bfafb3
Merge commit '55ddae010e7a76ee72dd456eb215ba44f2d65558' into pr230-co…
vahid-ahmadi Jul 31, 2026
1719d0f
Merge commit 'b4c5b6f117b66b70a5527ec5d842f490ff3296c5' into pr230-co…
vahid-ahmadi Jul 31, 2026
04f39e8
Merge commit '32f8fed2cbb938d02ec7d9264d0a2556bd8c2f6f' into pr230-co…
vahid-ahmadi Jul 31, 2026
8991fe2
Merge commit 'd13e8c4c6d578d6fab65a297f2fcfacf0af3cf6d' into pr230-co…
vahid-ahmadi Jul 31, 2026
c80b9d8
Merge commit '85bcf90861265b7d5c8987d24432627879a74a00' into pr230-co…
vahid-ahmadi Jul 31, 2026
4276bf9
Merge commit '42a92ccec6a9b74915abc6ade66340f94246d805' into pr230-co…
vahid-ahmadi Jul 31, 2026
173ac15
Pin current IC3 prerequisite composition
vahid-ahmadi Jul 31, 2026
4d60404
Merge commit '044d2fc789052e89ea0849fa39fea9899317d97e' into pr278-fi…
vahid-ahmadi Jul 31, 2026
4b91301
Merge commit '35499f134c009680e7b51c6599d49812246b5b2d' into pr278-fi…
vahid-ahmadi Jul 31, 2026
f2c657c
Merge commit '50404cb190f04c88508410b296dccf120cfdbf39' into pr278-fi…
vahid-ahmadi Jul 31, 2026
0afa2c3
Merge commit '55ddae010e7a76ee72dd456eb215ba44f2d65558' into pr278-fi…
vahid-ahmadi Jul 31, 2026
31b5b2b
Merge commit 'b4c5b6f117b66b70a5527ec5d842f490ff3296c5' into pr278-fi…
vahid-ahmadi Jul 31, 2026
75c159a
Merge commit '32f8fed2cbb938d02ec7d9264d0a2556bd8c2f6f' into pr278-fi…
vahid-ahmadi Jul 31, 2026
f6674f6
Merge commit 'd13e8c4c6d578d6fab65a297f2fcfacf0af3cf6d' into pr278-fi…
vahid-ahmadi Jul 31, 2026
08bb777
Merge commit '85bcf90861265b7d5c8987d24432627879a74a00' into pr278-fi…
vahid-ahmadi Jul 31, 2026
c8d6182
Merge commit '42a92ccec6a9b74915abc6ade66340f94246d805' into pr278-fi…
vahid-ahmadi Jul 31, 2026
7a9aac3
Merge commit '173ac15d2cda4038ad20b591a4f6737ebdc1ab67' into pr278-fi…
vahid-ahmadi Jul 31, 2026
12c5c73
Resolve IC3 block draft dependency cascade
vahid-ahmadi Jul 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,9 @@ paper/paper_files/
scratch/
*.pkl

# Claude Code local state (agent worktrees are not repo content)
.claude/

# First-estimates ceremony-owned pre-publication state.
runs/first_estimates_attempt.claim
runs/first_estimates_retry.claim
Expand Down
134 changes: 131 additions & 3 deletions data/external/employer_firm_target_sources.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Employer-firm target extract provenance

Provenance sidecar for the four committed aggregate extracts that
Provenance sidecar for the committed aggregate extracts that
feed the employer-firm extension's calibration targets and gate
references (E1/E2/E7/E11/E12; issue #192, ADR 0003, workstream B).
All are small, tidy derivatives of published public aggregate files —
Expand Down Expand Up @@ -92,5 +92,133 @@ are keyless and authoritative.
firm-size-coded contribution as published. 2025Q1 firm-size cells
are suppressed in this release (status flag 5) and load as NaN.
- **Unit caveat:** job counts, as for QWI. Origin-x-destination
size-ladder flows (E11's J2JOD reference) are a later, separate
extract.
size-ladder flows are in `j2jod_us_firmsize_od_2015on.csv` (entry
6 below).

## 5. `j2j_us_sexage_2015on.csv` — J2J flows by sex x age group

Fetched on **2026-07-17** (extracts 5 and 6 are the second wave,
flagged in PR #223's method findings; same fetch script).

- **Source URL:** https://lehd.ces.census.gov/data/j2j/R2026Q1/us/j2j/j2j_us_sa_f_gn_ns_oslp_u.csv.gz
(release-stamped, not `latest_release`; see the QWI note above)
- **Release:** R2026Q1, V4.14.0 (`version_j2j.txt`: J2J US
2000:2-2025:1, `j2jpu_us_20260312_1118`); sex x age worker detail
(`sa`), no firm characteristics (`f`), not seasonally adjusted,
state/local/private ownership (`oslp`)
- **Raw sha256:** `0e043fc8796bd3e11231ff6d174fdfebed926c9d40da4f069a3ad31eed55aba0`
- **Transformation:** pure row/column filter, no re-aggregation:
the all-industry margin (`industry == "00"`) only, the full
sex (0/1/2) x age (A00-A08) grid margins included, 2015Q1 onward;
12 flow measures with status flags. The full NAICS-sector detail
would breach the 1 MB extract cap, so it is not committed; the
raw sector file stays available at the pinned URL. Sex and
age-group labels joined from the LEHD schema
(https://lehd.ces.census.gov/data/schema/latest/label_agegrp.csv,
sha256 `eb478c6eda6c12a57609afaf89bbb42dd4d9fb2ee883f6dd0399fb717b27889b`).
- **Naming caveat:** the age x sex tabulation is LEHD's `sa`
crossing; LEHD's `se` crossing is sex x *education* (the gate-E2
registration's "se" shorthand refers to sex x age, i.e. `sa`).
- **Unit caveats:** job counts, not persons (see the QWI entry);
ownership is `oslp` here versus `op` for the QWI extract, so
levels are not directly comparable across the two. 2025Q1
separation-side measures carry status flag -1 (not computable
until the next quarter is released) and load as NaN.

## 6. `j2jod_us_firmsize_od_2015on.csv` — J2J flows by origin x destination firm size

- **Source:** LED Extraction Tool query API,
https://ledextract.ces.census.gov (POST the pinned JSON request in
`scripts/fetch_employer_firm_targets.py` to `/j2j/download`, then
GET `/j2j/download.csv?<encoded query>` from the 303 redirect).
The LEHD flat J2JOD files (`j2jod_us_d_fs_*`) publish only the
one-sided firm-size margins — the full origin x destination cross
is not in any flat file — and the Census data API
(`api.census.gov`) still requires a key (probed 2026-07-17), so
the LED Extraction Tool is the pinned keyless source.
- **Release: not reported by the tool; inferred.** The extraction
tool exposes no release identifier. Its `/j2j/schema` reports
`V4.14.0`, which is the *software* version and is **identical for
R2026Q1 and R2026Q2** (`version_j2jod.txt`: R2026Q1 =
`j2jodpu_us_20260312_1118`, 2000:2-2025:1; R2026Q2 =
`j2jodpu_us_20260618_1116`, 2000:2-2025:2), so it cannot
distinguish them. An earlier revision of this entry claimed the
schema version "matches R2026Q1" and therefore pinned the release;
that inference does not hold. What is verified: the values served
for 2015Q1-2025Q1 are unchanged across the R2026Q1 → R2026Q2
rotation (checked 2026-07-23, all 1,476 rows), so the extract is
release-stable over its own window whichever release served it.
National, all industries, not seasonally adjusted, ownership A00
(state/local government plus private — the tool's reported
`ownercode`; equivalent to `oslp`).
- **Archived response:** `raw/led_j2jod_us_fsfs_2015on.csv.gz`
(gzip of the tool's CSV as served 2026-07-23; raw sha256
`7afad9f408319c54e7e7d802b068723e346f49c840d4fe861e7e55d9528d3944`).
Committed because the tool re-runs the query against whatever
release is current, so the 2015Q1-2016Q1 detail window — the only
window in which this cross is published at all (next bullet but
one) — is not re-fetchable in perpetuity. The archive is the
builder's default input; a live re-query is the verification path.
- **Integrity pin: content, not bytes.** `LED_J2JOD_CONTENT_SHA256`
= `c52ec512bc3f478d6426efb7b03cccbe1edc952309214030ed53eb42f7a83354`,
taken over the response canonicalised (columns sorted, rows sorted
by year/quarter/firmsize_orig/firmsize, fixed float format). The
byte digest is recorded but **not** enforced.

Why: the byte digest originally pinned here
(`adbd16e2...`, fetched 2026-07-17) stopped matching on
2026-07-23 while every one of the 1,476 rows was unchanged, value
for value. The tool had reordered its measure columns —
`EE,AQHire,EES,AQHireS,J2J,J2JS` where it previously emitted
`EE,AQHire,J2J,EES,AQHireS,J2JS`. A pin that fires on cosmetic
reordering trains the maintainer to re-pin on sight, which is
exactly how a genuine revision would slip through; so byte drift
is now reported and tolerated, and content drift raises.
- **Transformation:** column subset and sort only, no
re-aggregation: the full 6 x 6 firm-size grid (codes 0-5 on both
origin and destination sides), 2015Q1-2025Q1 (ordinal quarters
8060-8100), six flow measures (EE, AQHire, J2J = EE + AQHire, and
their stable variants) with status flags.
- **Detail-window caveat (important for E11):** the full 5 x 5
origin x destination detail is released only for
**2015Q1-2016Q1**; from 2016Q2 on every national detail cell
carries status flag 11 ("aggregate of cells not released because
component cells do not meet publication standards") and loads as
NaN. The tool aggregates the state-level OD tabulations to the
national level, and a state coverage gap from 2016Q2 blocks the
aggregate; the same suppression governs the J2J Explorer, so no
keyless public source carries the later cross. The one-sided
margins (code 0 on either axis) remain published through 2025Q1.
E11's origin x destination shape reference is therefore the
2015Q1-2016Q1 window; later quarters constrain the margins only.
- **Margin caveat (corrected 2026-07-23; the earlier version of this
bullet was directionally wrong).** The code-0 margins are the
tool's aggregates of the firm-size-coded tabulation (status flag
10/12) and they do **not** sit systematically below the flat-file
`d_fs` margins. Checked against
`j2jod_us_d_fs_gn_ns_oslp_u` (R2026Q1) across all 41 quarters, on
the all-demographics / all-industry / all-firm-age national cell:

| comparison | quarters tool > flat | deviation range | mean |
|---|---|---|---|
| all-size EE margin | 37 / 41 | −1.00% to +2.02% | +0.75% |
| per-size margins (orig and dest, sizes 1-5) | — | −3.20% to +3.67% | — |

The single 2015Q1 figure previously quoted (3,985,308 here versus
3,988,566 in the flat file, −0.08%) is real but unrepresentative,
and the explanation attached to it — the flat file's inclusion of
public-sector "N" flows — is not what drives the gap: a
size-N exclusion would bias the tool's margin *downward* in every
quarter, and it is above in 37 of 41. The deviations run both ways
and are dominated by independent noise infusion applied to the two
tabulations.

**This matters at floor scale.** E11's post-2016Q1 constraints are
margins-only, so a ±2-3% cross-source wobble on the quantity being
gated is itself an empirical noise datum for the E11 floor build,
not a footnote. Reproduce with
`scripts/check_j2jod_margin_agreement.py`.
- Detail cells that fail publication standards (status flag 11)
load as NaN — common in the small-x-large corners.
- **Unit caveat:** job counts, as for QWI/J2J; firm size is
administrative national March employment on both sides.
Loading