Repository navigation
chore(register): assimilation + expert-review findings — Cluster L and the clone-readiness set - #147
Merged
Conversation
… cleaned up repo-assimilation pass with a clone-readiness lens (views-crafdapi, views-productionapi). Seven new entries, two merges. The finding that organises the rest: the frame-native contract path replaced the pandas path and won — run-0 delivered 2026-07-27 and FAO has been served from it since — but the replaced path was kept behind a config fork "until run 0 proves the contract path live" (C-40) and never removed. C-63/C-64/C-65/C-66/C-68 are all residue of that single omission, so Cluster L's fix strategy is one deletion, not five fixes. D-11 already ratified that shape and named the missing step. C-63 (Tier 2) is the sharpest: two independent config axes (wire_contract, data_format) give four delivery modes, production uses one, and omitting either key silently selects the retired half — .get() returning None is indistinguishable from a deliberate False. That is the inference ADR-003 forbids, in the repo that authored it. Two merges that IMPROVE existing entries rather than adding risk: - C-40: views_pipeline_core is imported by exactly ONE module. The blast radius is one file wide, not repo-wide, which makes the thin-shell extraction bounded. That file is 636 lines / 25% of the package and holds every SRP violation in the repo — reframed as *the* clone blocker. - C-25: its registered mitigation (identity.assert_forecast_identity) is legacy-only; production selects by run manifest instead. Better protected than the entry claims, but not by the mechanism it names. Register: 69 concerns, 32 open. Integrity guard green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…locations into C-69 Second register pass, from expert-code-review with the dead-code and migration-tail focus. C-70 (Tier 3): gaul_schema.METADATA_COLS encodes three independent contracts — set membership, normative wire column order (ADR-013 §5.1), and null-gate scope — while its docstring names only the first. The type policy is separately re-derived positionally via 'if col in CODE_COLS' in three modules. Held at Tier 3 rather than 2 because the §10 golden fixture makes a reorder fail loudly in CI; the risk is cost-of-change and the trap a clone walks into. Folded into C-69 rather than registered separately: partner identity has three homes — product.py CONSUMER_DOCUMENT_NAME, appwrite_env.py UNFAO_* names, and sink.py's consumer_name parameter. The third is the right shape and proves the machinery is already parameterisable; the other two are what a clone must hunt. Same boundary problem as C-69 at field level, so it belongs in that entry. Register: 70 concerns, 33 open. Integrity guard green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Two register passes from the clone-readiness investigation (
repo-assimilation→expert-code-review). 8 new entries, 3 merges, 1 new cluster. No source code touched.The organising finding
The frame-native contract path replaced the pandas path and won — run-0 delivered 2026-07-27, FAO served since. The replaced path was kept behind a config fork "until run 0 proves the contract path live" (C-40) and never removed.
Cluster L groups the residue: C-63, C-64, C-65, C-66, C-68 + #145 + C-40's residual. Fix strategy is one deletion, not five fixes — D-11 already ratified that shape and named the missing step.
New entries
wire_contractsilently routes into retired code instead of failingdelivery/identity.pyis an authoritative invariant production never callsunfao/extraction.pyis 4/5 unreachable and duplicatesframe_extraction.py_DEFAULT_LOOKUP— private name imported across three module boundariesunfao/binds ~800 lines of partner-neutral machinery to one partner's nameMETADATA_COLSserves three contracts at onceC-63 is the only Tier 2: this repo authored ADR-003 ("declarations over inference"), and its own manager infers delivery mode from a missing key —
.get()returningNoneis indistinguishable from a deliberateFalse.Merges that improve existing entries
views_pipeline_coreis imported by exactly one module. The blast radius is one file wide, not repo-wide, which makes the thin-shell extraction bounded rather than open-ended. That file is 636 lines (25% of the package) and holds every SRP violation in the repo — reframed as the clone blocker.identity.assert_forecast_identity) is legacy-only; production selects by run manifest instead. Better protected than the entry claims, but not by the mechanism it names.sink.py'sconsumer_nameparameter is the right shape and proves the machinery is already parameterisable.Worth stating plainly
The architecture is better than the register previously implied. pipeline-core touches one file;
delivery/is partner-agnostic by its own declaration and imports neither pandas nor views_frames;unfao/wire/already parameterises its consumer name; ADR-013 has 40+ guards and byte-parity fixtures.The debt is concentrated, not diffuse — almost everything here traces to one un-executed deletion plus one packaging boundary that was never drawn. Short critical path, not a long one.
Register: 62 → 70 (33 open / 37 resolved). Integrity guard green.
🤖 Generated with Claude Code