Repository navigation
Conversation
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
|
debt-src at 045fc2e, every finding: |
|
Absorbed by merged #3820 (71773f6). All34 changed paths accounted for:23 identical at integration; remaining11 preserve shared-reader ownership and include exact-question/audit settlement, later rule corrections and current transport tests. Superseded verdict recorded on17c5c27e. Original branch retained; #3824 authority work is separate. Installed restarted-session/compaction evidence is retained by Salvage, not inferred from this source comparison. |
Summary
First source checkpoint: 34 files, +197/-378. Six role-selected reader classes → zero; one concrete shared reader with three material capabilities. Prime's two role fields → one
readerdeclaration. Three RuleAudience declarations and22 audience frontmatter flags → zero. 12 changed Python files compile; actual four Prime source sets/MRO/import origin checked. No pytest/native/physical acceptance claimed yet.This extracts the independent reader boundary from #3824 so #3820 preparation does not wait for board/consent/review-authority work. It does NOT include #3820's producing-question changes or #3829 retention. The full #3824/742577 and #3820/8607 histories remain preserved; #3824 should rebase on the accepted reader change rather than keep its copy. No auto-merge or installation requested by this checkpoint.
One source set; explicit material choices
Before: abstract DeckReader + FleetReader/CommanderReader and role-specific refresh/light subclasses. CommanderProject chose the reader; Prime repeated fleet/commander fields. Two sessions could receive different rules solely because a storage declaration/tag chose a role.
After: DeckReader owns the common papers, ordered rules, voice, failure catalog, shared skill, NRA index and indictment. RulesOnly removes papers; IndictmentFree removes the indictment; LightReader composes both via C3 MI. The Full/Paperless/Indictmentless/Light Prime classes each declare their reader once. PiRedeal and CLI prime consume it after the existing exact-birth lookup. No compatibility aliases or second role roster.
Observed source sets: full36, no-papers27, no-indictment35, light26. LightReader MRO: LightReader → RulesOnly → IndictmentFree → DeckReader → DealtSources → ABC → object.
RuleFile supplies rendering and the order footer
RuleAudience's grouped audience rendering and role headings are deleted. RuleFile.render_packaged() supplies native instructions; RuleFile.order_line() supplies the Todo order footer. All22 packaged frontmatter audience fields are deleted, while rule bodies are unchanged in this extraction. The decoder/type discriminator remains owned by RuleFile/FieldCodec.
CommanderProject.deal_rules and its unused TYPE_CHECKING imports are deleted. CommanderProject.by_role remains only for its existing project-membership fact, not source selection; no new authority or registration behavior is imported.
Preserve independent boundaries
Source evidence and boundaries
Existing NRA SourceModule/ModuleSyntaxIndex/canonical class-family projection supplement the retained171-module map with whole tracked Core retrieval at71e/742577/8607, all #3820 changed Python files and paired Toad consumers. Before: baseline208modules/2284original classes/2255projections/125446sites; shared209/2277/2248/126410; producer208/2291/2262/126507. Zero parse omissions;29 original unprojected classes per variant remain OPEN. test_holder_consent.py is explicitly absent on baseline/producer, not a parse omission. Dynamic/foreign/rebinding/runtime/behavior remain OPEN. This is authored extraction, not an executable migration certificate or comparable debt total.
Whole Core src/tests/tools plus paired Toad src/tests search finds no removed reader/audience names or Prime role fields. The Toad root was positively checked with CommsUpdateConsumer at acp/comms_updates.py:61. Changed files are only the declared reader/RuleFile/consumer/fixture closure; board and authority modules stay out except the precise Todo footer and deletion of the unused reader helper.
The first map driver timed out at180s/rc124 inside stdlib ast.get_source_segment's repeated source splitting. It imported no subject behavior and produced no completed JSON. Corrected driver reused ParsedModule.source_segments; the second three-revision map completed rc0. Both logs retained. Source map is evidence, not runtime acceptance.
Checks executed / still required
git diff --check HEAD: rc0.Assumed