Repository navigation
Conversation
trissim
left a comment
There was a problem hiding this comment.
Source checkpoint accepted. ThreadServingBackend composes actual required abstract capabilities ahead of AgentBackend's concrete refusal; NewThreadBackend derives one default from nominal family membership. Both default consumers migrate directly, NoSessionFile owns unstarted construction, and seal attaches concrete location owners only after checking all relationships. Read the consumer/import trace and retained real durable-host result. The three original own-code monkeypatch tests have been replaced by real declarations in independently executed actual source; no canonical private state or location declaration is mutated. Independently replayed the three declaration tests and all fresh package import cases against final source: 6 passed in 5.65s. Existing independent native producer ABI manifest/comparison is correctly retained, so this is not whole RostersPhase closure. Paired installed native DM/reply/tab-return qualification remains integration-owned.
|
debt-src at ad8815f, every finding: |
trissim
left a comment
There was a problem hiding this comment.
Ordered landing checkpoint accepted at bf089be. Compared all changed backend/identity/session production and focused test files against previously source-accepted 0d76980: they are unchanged after main sync. The additional plan correction was read: it preserves independent Pi producer-versus-converter coverage, keeps the actual remaining registration work open and corrects the stale completion condition. Original source acceptance and real declaration/import/runtime controls retain their stated scope. This PR lands before #2634. No duplicate test batch just for the merge; no installed-runtime claim. Hosted checks retain actual state; auto-merge enqueue is not a merged claim.
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.
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.
Ordered prerequisite targeting main. Pushed head
bf089be8d3c259e34d5ac1e2e4c2354a6e60977bnormally merges current main69c5b0e4e; accepted source head0d7698057remains an ancestor. All accepted production/test files are byte-for-byte unchanged. The sync had no conflicts. The complete backend receipt is retained; three plan lines now carry the accepted independent Pi coverage correction, corrected completion criterion and accurate five-owner inventory for this ordered checkpoint.Focused backend declaration/missing-extra event coverage and fresh Pi/package imports pass (8 cases, 7.24s). This PR is independent of #2627. Birthless must follow its landing; the original #2634 is already merged into the preserved side checkpoint, and accepted source
067532a10remains available for its ordered delivery. No installed qualification is claimed. Aggregate #2635 is parked until ordered landings contain its useful work.A backend could claim thread support through flags while its class lacked the required roles. THREAD_CAPABILITIES and validate_backends restated that obligation beside the inheritance tree. This change deletes the roster, both flags and generic validator. ThreadServingBackend inherits Steers and Compacts; NewThreadBackend owns default selection from the declared family. PiNativeBackend composes that contract with Interrupts/Forks; PiDurableBackend remains outside the thread-serving contract.
Both Thread and ThreadProvenance default factories now invoke NewThreadBackend.selected directly, deleting the old forwarding selector. NoSessionFile owns construction of UnstartedRuntime, deleting both copied backend unstarted_type declarations and imports. Thread capability bases precede AgentBackend: otherwise its concrete turn-refusal fallback would hide RunsTurns' abstract method.
Location ownership is attached once at seal, after checking the concrete declarations and unique default/location relationships. The previous init_subclass write ran before ABC registration could reject incomplete declarations. Production reads were traced through RuntimeLocation.backend, ThreadProvenance.runtime, TurnRunner.backend_for and UnstartedRuntime.new_location/select_session. Both concrete backend modules are imported at the end of threads.py before seal; default factories are stored callables, not invoked during record declaration. Incomplete test declarations now remain abstract and cannot rebind an existing location.
Source evidence: NRA ModuleSyntaxIndex + CompactClassFamilyIndex census across Core, hooks, tools, tests and paired Toad source. Before1,528 modules/6,973 original classes/6,752 projected; after1,529/6,974/6,753; zero parse omissions,221 original classes unprojected and retained. Core remains953 modules/5,341 original classes; the extra dependency module/class came from concurrent Toad source edits. Evidence is syntax/class projection, not arbitrary dynamic binding or behavioral equivalence. Existing receipt: plans/REMAINING-SLOP-PLAN.md6.4; detailed before/after evidence in /home/ts/.cache/agent-scratch/backend-capability-rosters. MEMB-2: required roles now derive from inherited contract, rather than a second tuple/flag validator. The location mapping built at seal is a transient typed projection, not another persistent registry.
Validation: focused27 passed in25.69s (test_agent_backend, test_package_imports, test_durable_runtime_location, test_agent_backend_deletion_gates). Includes fresh CLI/UI imports, typed native/durable round trips, worker backend reuse, ABC refusal without location mutation, and the real durable host reading260 saved rows while its SQLite writer stays open. Initial24-pass/3-failure run exposed a stale raw-string session-file fixture, an obsolete three-caller gate and missing local locked Node dependencies. Fixed the fixture/gate from source and installed the exact locked dependencies offline; the initial run is retained, not counted green. No local ratchet or full suite was run.
Independent Pi producer ABI coverage remains: AgentSessionEvent/AgentEvent, RPC outputs and patch-native-steering declare producer events separately from NativePiEvent converters. Deriving expected kinds from converters would destroy missing-converter detection. PI_0_85_1_EVENT_KINDS and its comparison remain; RostersPhase is still open, and its declaration is untouched. Installed copied-agent DM/reply/tab-return qualification belongs to the later paired integration; this branch does not change the live runtime.
Review correction at0d7698057: replaced all three monkeypatch-based declaration tests with actual isolated declarations. A local pytest fixture re-executes the existing agent_backend module through stdlib runpy.run_path, preserving the canonical module/family. Real subclasses exercise abstract non-registration without rebinding the canonical PiSessionFile, duplicate ownership before any attachment, and zero/two nominal defaults; actual seal/ABC/registry code is used throughout. No copied registry implementation or generic harness. Only tests and the existing plan receipt changed. Changed declaration checks3 passed in0.11s; fresh CLI/UI entrypoint checks2 passed in3.69s. Earlier27-case real durable/runtime qualification remains the production-code result; the census counts above describe d8559df before this fixture correction.