Conversation
Records the brief, the four bounds the transport lane's census found binding between 1/10 and full source, and the one-argument decision. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The recovered pilot artifact's own rosters: 1,584 selected households carry 3,464 stacked persons (2.1869/hh) and six entity rosters. Every count in the census is this artifact scaled to 1,587,376 supplied households, so the derivation is stated rather than assumed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
… scaling The recovered artifact carries the whole ACS and ASEC catalogues, which do not scale with the selection fraction. Their selectable households reconcile to selection.supplied_households exactly (1,348,408 + 84,422 + 98,784 + 55,762 = 1,587,376), so a full-source selection is the catalogue and the counts are measured rather than extrapolated: ACS 1,531,614 households / 3,422,888 persons ASEC 55,762 households / 142,125 persons stacked 1,587,376 / 3,565,013; combined clone 3,174,752 / 7,130,026 The transport lane's ~3,471,000 stacked and ~6,943,000 cloned were the 1/1000 per-household ratio extrapolated; the catalogue figures supersede them. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…he census inherited survey_origin_budget streams one ~731-byte origin record per allocation group into one bytearray under a 64 MiB cap. Measured through the module's own _reference and _json at full-source household-id widths: 764 bytes per group, so the cap admits 87,838 households -- 5.53% of source, below 1/10 and below the 96,860-household preparation-receipt ceiling the transport lane lifted. A full-source payload is 1.13 GiB, 18.07x the cap. Also records where the module runs: no node in the 19-node financial graph (graph.json of the recovered run lists all nineteen) or in the completion host executes it; survey_age_calibration and graph_survey_budget do, over the same full-source selection. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Four times the measured full-source count of exactly what each bounds, rounded
up to the next whole million:
acs_pums.MAX_EXACT_HOUSEHOLDS 1,000,000 -> 7,000,000 (1,531,614)
acs_pums.MAX_EXACT_PERSON_ROWS 1,000,000 -> 14,000,000 (3,422,888)
acs_person_coverage_columns.MAX_SELECTED_ROWS
1,000,000 -> 14,000,000 (3,422,888)
survey_observed_age.MAX_ROWS 2,000,000 -> 14,000,000 (3,422,888)
survey_origin_budget.MAX_GROUPS 1,000,000 -> 7,000,000 (1,587,376)
Every refusal keeps its code and its expression; only the number moves.
acs_person_coverage_columns.MAX_ROWS stays at 6,000,000 because it asserts the
source file's own size rather than a roster this build chooses, and
survey_origin_budget.MAX_PAYLOAD_BYTES stays at 64 MiB because it is a byte
transport and takes the segmented-transport argument, not this one.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…erate INHERITED, NOT THIS LANE'S. On native-scale-transport, b6081ef ("Hash a spill segment that was already there") added path.read_bytes() inside _spill_roster. read_bytes is in graph_implementation._RESOURCE_CALLS, so it moves survey_population_preparation.py's resource_accesses_sha256 -- and the pin was not regenerated. implementation_manifest() therefore raises "Unclassified US dependency/resource contract" for every stage containing that module, including authenticated_survey_population_v1, which is the stage the nineteen-node path runs. The break is at origin/native-scale-transport and at a64f7b7, proven by recomputing the contract from each commit's own blobs; this branch does not touch that file. The transport lane's report was right that Path.write_bytes is invisible to resource_accesses_sha256 by construction. This is the converse: a later commit on the same branch added a read, which is visible. Regenerated with experiments/native-row-ceilings/regenerate_inventory_contract.py, which writes exactly what graph_implementation._dependency_contract returns. Never hand-edited. Serialization verified byte-identical before the edit, so one value moves and nothing else. resource_accesses_sha256 ccfed1c1acff... -> 0071f934801d... Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…rest hold acs_native_coverage_binding._ACCEPTED pins four ACS modules by whole-file sha256 and refuses UNREVIEWED_PREPARATION on a mismatch. acs_pums.py is one of them, so the ceiling edit moves it: 6ecf79f0dfb0c0bc... -> e79a2a4ecbc81e52... Regenerated with experiments/native-row-ceilings/regenerate_accepted_pin.py, which computes exactly the sha256 the check itself computes. Never hand-edited. repin.py now reports: 124 inventory contracts checked, 0 moved; the other three _ACCEPTED entries unchanged; all ten stage manifests built. Both generators are idempotent -- rerun, they report nothing moved. The pin tools set sys.path to this worktree and assert beneath the import block that each module resolved inside it, since a pin re-derived from another checkout would be the wrong value; pyproject carries the E402 ignore that ordering needs, beside the transport lane's own harness ignores. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ount
One new file carries the rule as an assertion -- the measured full-source
counts, and for each moved ceiling that it is exactly four times its count
rounded up to the next whole million. It also pins the bounds that must not
move, with the reason each stays: the ACS source-file row bounds assert a file
this build does not produce, the ASEC codec bounds count a source no fraction
grows, 2**53 bounds a value not a row count, and the origin budget's byte
transport takes the segmented-transport argument.
Per-module boundary tests prove each refusal fires at exactly its own constant,
so acceptance at full source follows from the two together without any test
allocating a full-source roster:
acs_pums.MAX_EXACT_HOUSEHOLDS patched to 3; 3 accepted, 4 and () refuse
acs_pums.MAX_EXACT_PERSON_ROWS NP is a declared count, so a two-row household
table declaring the whole 3,422,888-person ACS
file drives the shipped ceiling for free -- it
runs past and refuses later on the person
archive; patched one below, it refuses there
MAX_SELECTED_ROWS patched to 2; 2 proceeds to the archive, 3 refuses
survey_observed_age.MAX_ROWS a real 3,422,888-row normalize, 0.02s and 27 MiB
survey_origin_budget.MAX_GROUPS six accepted, five refuses GROUP_COUNT_BOUND.
MAX_GROUPS is inside the module's loaded
contract, so the test re-seals _LIVE beside the
patch -- what a module shipped with a different
number looks like -- leaving every other
producer check in force.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
docs/us-native-row-ceilings.md: the rule and why each of its three clauses is load-bearing; the measured counts and why the artifact's catalogues answer the full-source question where its rosters would only estimate it; the five moved constants with their refusal codes unchanged; why a bound stays a bound rather than being deleted; the three classes that must not move at all (an upstream file's real size, a fixed-width encoding, a quantity no fraction grows); and what still binds and whose argument it is. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
… reach
current_survey_geography.MAX_HOUSEHOLDS was 64 * 1024**2 // 128 = 524,288
against the 1,587,376 households a full-source build selects, so it binds --
harder than any of the five, at 33% of source.
It is a pure row ceiling despite its byte-derived form: _projection_digest
streams one bounded row encoding at a time into a hashlib.sha256 and
materialises no per-household payload, and the module's only bytes are the
64 KiB summary receipt that MAX_RECEIPT_BYTES already bounds. So no byte
transport sits behind it, the rule applies with no judgment left, and the
expression's borrowed 64 MiB never described anything in this module.
MAX_HOUSEHOLDS 524,288 -> 7,000,000 (4x 1,587,376, rounded up)
Refusals unchanged: HOUSEHOLD_COUNT at :68 and PROJECTION_STORAGE at :188,
both ValueError("CURRENT_SURVEY_GEOGRAPHY_" + reason). Boundary test drives
PROJECTION_STORAGE over a three-row projection at a patched-down ceiling.
Nothing in the tree referenced the old value. No pin moves: the module is not
in graph_implementation_inventory.json and not in _ACCEPTED.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
graph._bounded_json opens with _require(type(limit) is int and 0 < limit <= 64 * 1024**2, "TRANSPORT_LIMIT") so the shared encoder refuses any cap above 64 MiB before it encodes a byte. A larger MAX_PAYLOAD_BYTES in survey_origin_budget would not loosen the bound; it would refuse the module. That turns "this takes the transport argument" from a preference into a structural fact, and the test now drives it. Also names, in section 5a, the test the rule applies to a bound that looks like a row ceiling -- does the binding site stream, or materialise a per-row payload -- and the three bounds it decides: current_survey_geography streams (moved), current_survey_household_roles serialises its whole per-person table to JSON under a 64 MiB artifact cap, and current_child_property_income_source does one json.dumps under a 64 MiB projection cap. Both of those are the transport's. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
asec_demographic_source._MAX_PERSONS was 600,000 over two rosters: a fixed ASEC three-cohort 432,523 that no fraction grows, and the retained ACS persons, which a full-source build grows to 3,422,888. One constant over two rosters takes the larger, so the rule produces 14,000,000. Three things had to hold and each was read. It is not a fixed-width encoding: rows is a JSON header integer, the only struct.pack is "<I" over the header length that _HEADER_MAX bounds separately, and the body budget is derived and checked against actual bytes rather than capped. It is not an assertion about the ACS file's size and could not be -- at 600,000 it sat 5.7x BELOW the genuine 3,422,888-row file, and a bound that would refuse the real file is not a claim about it; ACS_SOURCE_ROW_SHAPE and ACS_CAPTURE_CHANGED make that claim exactly, and DEMOGRAPHIC_COHORT_ROWS makes the ASEC one, so neither weakens. And no per-row payload sits behind :1016, which takes two numpy arrays. Boundary test drives ACS_ROWS at acs_household_reference_states. No pin moves: the module is not inventoried and carries no external digest pin. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Both are byte transports, so neither is this lane's to move. Both are measured and pinned in a test, because a reader who meets them in a build has lost hours. ACS coverage authentication charges every selected row 6 * len(raw) + 1024 against MAX_BODY_BYTES before the reader allocates, refusing SELECTED_BODY_BUDGET. Measured over 200,000 real records of the pilot's captured public ACS PUMS archive: a person record averages 695.57 bytes, so the charge is 5,197 bytes and 64 MiB admits 12,911 selected persons -- 0.38% of source, 265x under at full source. It is the tightest ceiling censused, and it refuses 265x before acs_person_coverage_columns.MAX_SELECTED_ROWS, which this lane lifted. And the preparation-receipt ceiling the transport lane reported as moved from 96,860 households to 6,206,000 is still enforced one module downstream: _roster_payload returns one joined payload under MAX_ROSTER_BYTES = 4 GiB, and graph_survey_population._checked_preparation checks those same bytes against PREPARATION_MAX_BYTES, still 64 MiB, refusing PREPARATION_BYTES. From the transport lane's own committed receipt: a 1/10 roster measured 109,804,304 bytes and was recorded accepted by the producer, 1.64x this cap; a full-source roster measured 1,099,892,722 bytes, of which this cap admits 96,839 households. That is the number the transport lane lifted, still standing. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
census.json: 146 bounds across five families, each with its enforcement site, refusal code and exception type, what it protects, its counts at 1/10 and full source, and whether it binds -- plus the 41 adversarial verdicts, none of which overturned a headline binding call. Fourteen bind at full source, six at 1/10. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Test summaries, PR URL and the questions for Max follow once the final clean run lands; those sections are added, not rewritten. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ineteen The census agents read a moving tree: five constants were lifted while it ran and the agents correctly reported the post-lift values, recording both numbers per row. At base nineteen bind; seven moved here; twelve remain for the transport argument. Also corrects 41 verdicts to 42. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…e code does I wrote in the design note that the roles projection costs "roughly 200 bytes of JSON per person" and admits "a few hundred thousand". That was reasoned, not computed, and this lane's own standard forbids it. Measured through the module's own encoder: 320.08 bytes per person row, so the 64 MiB artifact cap admits 209,661 persons -- 5.88% of source, against a row bound that admits 58.8%. The byte cap refuses ten times earlier, which is exactly why MAX_PERSONS is not this rule's to move. Also two precision fixes. The financial graph DOES call into survey_origin_budget -- for _config_payload and the _live() producer seal -- so "no node executes it" becomes "no node executes freeze_survey_origin_budget, where GROUP_COUNT_BOUND is checked, and neither of those calls reaches _initial". And MAX_SELECTED_ROWS at 14,000,000 now sits above MAX_ROWS at 6,000,000 in the same module, which is not an inconsistency -- one bounds caller-supplied keys, the other the archive's own rows -- but does mean the effective ceiling there is 6,000,000 by containment. Both said in the note rather than left for a reviewer to find. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
399 passed over the seven touched test files at a fixed commit with the tree untouched for the run; ci_test_groups --verify ok; the stdlib matrix contract's 15 tests OK; spec-engine coverage 42156/42156 and 41/41; ruff clean and 21 files already formatted; all three pin generators idempotent. Records honestly that an earlier full-file run reported 8 failed while this session was editing the tree underneath it, and that it measured nothing -- the same tests pass at a fixed commit. And records the base-worktree run that proves the inherited pin break is the base's: 7 failed there with the exact Unclassified-contract ValueError, all 7 pass here. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
PR #949, draft against native-scale-transport, MERGEABLE. CI does not run on it by design: test.yml triggers on pull_request: branches: [main], and gh pr checks reports none, so section 8's local gates are the only ones this branch has. Section 11 says what the report does not claim -- including that census.json's per-row prose is the agents', checked but not rewritten, so a row may carry a superseded classification beside its verified binding call; and that the roles projection figure is on a faithfully shaped invented table, not a real artifact. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
) Brings main through 8c44daa up the stack. Clean merge. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This was referenced Sep 18, 2026
Draft
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Draft, and it stays draft. Base is
native-scale-transport(PR #945's branch).The transport lane's census (
docs/us-native-scale-transport.md§5) recorded asecond family of ceilings it did not touch: row counts that a full-source native
US build meets. Max decided (2026-09-17) they are lifted as one change with one
argument, not one build at a time. This is that change.
The rule
The multiple is the transport lane's own:
MAX_ROSTER_BYTESis 3.9× afull-source preparation receipt, so both families share one law. The rounding
makes the rule checkable at a glance — divide any moved constant by the count its
comment names and the answer is between 4 and 4.6 — and
test_us_native_row_ceilings.pyasserts it, so a later edit that drifts fails atest rather than a build.
docs/us-native-row-ceilings.mdis the argument: why each clause isload-bearing, why a bound stays a bound rather than being deleted, and why three
classes must not move at all.
The counts are measured, not extrapolated
The recovered 1/1000 pilot artifact carries the whole ACS and ASEC catalogues,
which do not scale with the selection fraction. Its selectable households
reconcile to its own
selection.supplied_householdsexactly —1,348,408 + 84,422 + 98,784 + 55,762 = 1,587,376 — so "the whole catalogue" and
"what a full-source selection supplies" are the same set, and the catalogue's
counts are the full-source counts.
The transport lane's ~3,471,000 stacked / ~6,943,000 cloned were the 1/1000
per-household ratio extrapolated. These supersede them, about 2.7% higher.
What moved
acs_pums.MAX_EXACT_HOUSEHOLDSacs_pums.MAX_EXACT_PERSON_ROWSNPover selected ACS householdsacs_person_coverage_columns.MAX_SELECTED_ROWSsurvey_observed_age.MAX_ROWSsurvey_origin_budget.MAX_GROUPScurrent_survey_geography.MAX_HOUSEHOLDSasec_demographic_source._MAX_PERSONScurrent_survey_geography.MAX_HOUSEHOLDSEvery refusal keeps its code, its exception type and its expression. Only the
number moves.
One consequence worth naming so a reviewer does not have to find it:
MAX_SELECTED_ROWSat 14,000,000 now sits aboveMAX_ROWSat 6,000,000 in thesame module. That is not a mistake —
MAX_SELECTED_ROWSbounds caller-suppliedperson keys, which can exceed what the source holds, while
MAX_ROWSbounds thearchive's own rows — but it does mean the effective ceiling on that path is
6,000,000, by containment. Tying the two together (
MAX_SELECTED_ROWS = MAX_ROWS)would be tighter and provable, at the cost of making the rule two rules; it is
listed as an open question below.
The last two are ones the transport lane's census did not reach, and both were
moved only after reading what stood behind them. The rule's test for a bound that
looks like a row ceiling is one question: does the binding site stream, or
materialise a per-row payload? A bound in front of a materialised payload
cannot usefully be raised alone, because the payload's own byte cap refuses first
and at a smaller number.
current_survey_geography.MAX_HOUSEHOLDSbound hardest of the seven — 524,288against 1,587,376, refusing at 33% of source. It reads as a byte budget
(
64 * 1024**2 // 128) but streams:_projection_digestfeeds one bounded rowencoding at a time into a
hashlib.sha256and materialises nothing perhousehold. Moved.
asec_demographic_source._MAX_PERSONSis one constant over two rosters, so ittakes the larger. It is not a fixed-width encoding (
rowsis a JSON headerinteger; the only
struct.packis"<I"over the header length), and it couldnot have been an assertion about the ACS file's size — at 600,000 it sat 5.7×
below the genuine 3,422,888-row file, and a bound that would refuse the real
file is not a claim about it. Moved.
current_survey_household_roles.MAX_PERSONSandcurrent_child_property_income_source.MAX_ROWSfail the test —table.reset_index().to_json(...)and onejson.dumpsrespectively, each undera 64 MiB cap. Left to the transport argument.
survey_origin_budget.MAX_GROUPSis the one the transport lane left as "notestablished". It is established:
allocation_instructionsrequires oneinstruction per selected household, so the group count is the selected
household count.
What did not move, and why
acs_person_coverage_columns.MAX_ROWSandacs_native_coverage_binding.MAX_SOURCE_ROWS, both 6,000,000, assert that theACS archive is near its real 3,422,888 records. Raising either trades a real
check for nothing, since a selection cannot exceed its source.
PAYLOAD_MAX_BYTES = len(MAGIC) + 4 + HEADER_MAX_BYTES + ROW_BYTES * MAX_HOUSEHOLDS + 32family computes a bytebudget from a row ceiling, so moving the row ceiling moves the wire format.
MAX_EXACT_FLOAT64_INTEGER= 2**53 bounds a value, not a row count.asec_current_money.MAX_PERSONS(1,000,000)counts the ASEC source's own rows, measured at 142,125. The transport lane's
§5 listed it among the bounds a full-source build meets; it does not, and this
PR corrects that.
Findings the owner should see
The census read 146 bounds across five module families, each with its
enforcement site, refusal code and exception type, what it protects and its
counts at 1/10 and full source; 41 verdicts then went through an adversarial
pass that read the code again and tried to refute them, and no headline binding
call was overturned. Fourteen bind at full source — and six bind at 1/10,
which contradicts the transport lane's §5 conclusion that "a 1/10 build meets no
ceiling this lane did not lift". All six are byte transports. Three matter enough
to be measured rather than listed.
1. The ACS coverage authentication body budget is the tightest ceiling on the
path, and it is not close.
acs_person_coverage_authenticationcharges everyselected row
6 * len(raw) + 1024bytes againstMAX_BODY_BYTES(64 MiB) beforethe reader allocates, refusing
SELECTED_BODY_BUDGET. Measured over 200,000 realrecords of the pilot's captured public ACS PUMS archive — a person record
averages 695.57 bytes — the charge is 5,197 bytes and the budget admits
12,911 selected persons, 0.38% of source, 265× under at full source.
That is below 1/100. It is why lifting
MAX_SELECTED_ROWShere is necessary andnot sufficient: this refuses 265× earlier on the same path.
2. The preparation-receipt ceiling #945 lifted is still enforced one module
downstream.
survey_population_preparation._roster_payloadreturns one joinedpayload under
MAX_ROSTER_BYTES= 4 GiB — it must, becauseKernelResult.artifactsis a mapping ofbytes— andgraph_survey_population._checked_preparationchecks those same bytes againstPREPARATION_MAX_BYTES, still 64 MiB, refusingPREPARATION_BYTESat:305and
:309and again in the allocation kernel at:577/:582, reached from sixcall sites including
graph_atomic_survey_population:172.From #945's own committed
ceiling-receipt.json: a 1/10 roster measured109,804,304 bytes and was recorded
acceptedby the producer — 1.64× this cap —and a full-source roster measured 1,099,892,722 bytes, of which this cap admits
96,839 households. That is, to within rounding, exactly the 96,860 #945
reported as the ceiling it had lifted.
Both are pinned in
test_us_native_row_ceilings.pyso the next reader meets themin a test rather than in a build. Neither is this lane's to move.
3. The origin budget's byte transport binds below one tenth.
survey_origin_budget.MAX_PAYLOAD_BYTES(64 MiB) admits 87,838 households,5.53% of source — below 1/10 and below the 96,860-household preparation-receipt
ceiling the transport lane lifted. A full-source payload is 1.13 GiB, 18.07× the
cap. Measured, not estimated: one faithful origin record through the module's own
_referenceand_jsonat full-source id widths is 764 bytes per group.It cannot be raised here at all.
graph._bounded_jsonopens with_require(type(limit) is int and 0 < limit <= 64 * 1024**2, "TRANSPORT_LIMIT"),so the shared encoder refuses any cap above 64 MiB before encoding a byte. This is
the transport argument's work, and lifting
MAX_GROUPSis necessary but notsufficient: at full source the refusal moves from
GROUP_COUNT_BOUNDtoTRANSPORT_LIMIT.4. An inherited pin on this base is not regenerated. On
native-scale-transport,b6081efcbaddedpath.read_bytes()inside_spill_roster.read_bytesis ingraph_implementation._RESOURCE_CALLS, so itmoves
survey_population_preparation.py'sresource_accesses_sha256— and thepin was not regenerated.
implementation_manifest()therefore raised"Unclassified US dependency/resource contract"for every stage containing thatmodule, including
authenticated_survey_population_v1, the stage the nineteen-nodepath runs. Proven by recomputing the contract from
origin/native-scale-transport,a64f7b733andb6081efcb's own blobs; this branch does not touch that file.Re-pinned here through the generator so the base is functional — say if you would
rather it moved to #945 and this branch rebased.
Pins
graph_implementation_inventory.json→ all 124contractsgraph_implementation._dependency_contract(payload, name, _covered_imports(name, inventory))acs_native_coverage_binding._ACCEPTED["acs_pums.py"]sha256(<module>.read_bytes())6ecf79f0…→e79a2a4e…_ACCEPTEDentriesimplementation_manifest(stage)graph_implementation.implementation_manifestNo pin was hand-edited. Both generators are committed under
experiments/native-row-ceilings/and are idempotent — rerun, they reportnothing moved.
Tests
A boundary test per moved bound drives the refusal at exactly its own constant,
and the shared file asserts the shipped constant clears 4× its measured count —
so acceptance at a full-source-sized count follows from the two without any test
allocating a full-source roster. Two do drive real full-source counts for free:
survey_observed_agenormalizes a genuine 3,422,888-row channel in 0.02 s, andNPis a declared count, so a two-row ACS household table declaring the whole3,422,888-person file exercises that ceiling with no person rows at all.
Scope
packages/microcosm-graphhunks.graph_atomic_survey_financial.py,survey_population_replay.pyuntouched.only input is one recovered development artifact, and every receipt carries
"release_eligible": false.🤖 Generated with Claude Code