Skip to content

P421: Finish independent owner requests, preserving #2473 - #2560

Merged
33 commits merged into
mainfrom
fix/P421-owner-requests-unit-forks
Oct 23, 2026
Merged

33 commits merged into
mainfrom
fix/P421-owner-requests-unit-forks

Conversation

@trissim

@trissim trissim commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

P421: independent owner requests

Published and remote-matched head d5b9c0a. Current replacement Core order ee9f3ae89b05 follows fork-review-w's send-back. Source delivery claim recorded on this head in Core revision114 (Claimed, not accepted). Preserves #2473 ancestry. Not merged, installed or live-accepted.

Review correction

  • Fork-review-w reproduced test_done_problem_delivers_the_units_held_order failing at14761f8d4 and passing on main954534a8e. My fixture copied the entire current Core source into one synthetic commit, making delivery look like it added existing forwarders (IDEN-7). My earlier statement that all four source failures had been repaired and re-exercised was wrong; the focused22 did not cover this held-order case.
  • Removed the recursive source copy and ignore roster. proof_build_checkouts still owns the single commit graph. Copying only __init__.py fixed held delivery, but the broader batch found the watcher requires CommanderConfig.module_repo(PlanPhase.__module__): 37 passed / 1 failed, not green (P421-sendback-qualified-tests.log).
  • Final fixture copies plans and exactly the module derived by source.module_file(PlanPhase.__module__). CommanderConfig.plan_reading selects that declaration (commander/config.py:130), and Repo.module_file owns its path (repo.py:36). It does not hand-maintain the path or copy unrelated production code. The real delivery gate remains unchanged. Current-main store-writer changes are integrated, preserving their owner.
  • 38 passed in54.23s, exit0, on published final headd5b9c0ab8: tests/test_held_problem_orders.py, tests/test_todos.py, tests/test_proof_build.py, tests/test_order_claims.py. This includes the real copied-state done worker P1 --sha delivery and watcher journey, with no gate bypass. Command: PYTHONPATH=src:tests timeout 300 /home/ts/code/projects/agent-comms/.venv/bin/python .P421-family-check.py tests/test_held_problem_orders.py tests/test_todos.py tests/test_proof_build.py tests/test_order_claims.py; canonical fixture plugin, serial execution, faulthandler60, existing interpreter. Artifact P421-declared-plan-tests.log. Only warning: xdist was imported before pytest assertion rewriting. No exact-head commander verdict or installed acceptance is asserted.
  • Before/after source inventory uses the existing audit Package parser: both14761f8d4 and finald5b9c0ab8 parse src442/tools15/tests474 with zero omissions. Artifacts: P421-sendback-before-ast.log, P421-declared-plan-ast.log, both exit0. The trace covers fixture declarations/consumers, SourceRepository, proof graph and delivery gate; dynamic fixture/plugin resolution is confirmed by the real pytest run, not claimed as lexical proof. F821 and git diff --check pass.

Ownership and deletion

  • OwnerRequest(TypedTable, SharedFileTables, DurableTables) owns request ID, commander incarnation, text, directives and Open/Completed state. Requests no longer occupy Thread.goal.
  • Todo.request is the request foreign key. Todo creator validates request ownership; P440's typed acting assigner remains separate.
  • OwnerRequestStore(DurableStore) owns the complete request persistence/serving-work capability. TodoStore inherits it, sharing its existing transaction and file, not a second store or delegate. Completion refusal lives once on OpenRequestState.complete; pending unaccepted claims still serve their request.
  • Named/newest directives, request add/list/complete, dispatch and reporting use rows. Request original/reply reads share one checked read and retain recorded identity across rename.
  • Deleted RequestGoalOrder, GoalRef/GoalReference, DirectiveGoalAction, goal-directed request overrides and second-request-refusal tests. Whole-source request-goal declarations 1 → 0 (source after0; no installed after0 claim).
  • VerdictAudience uses the Todo's creator, not a request lookup to recover the same commander. ProblemVerb owns problem creation; deleted Commander.problem and migrated both parity consumers. This also repairs their stale calls that lacked P421's request selection.
  • RequestRevision owns historical prefix validation through RequestAtRevision/NoRequestRevision. No nullable prefix probes. History endpoint columns derive from RequestHistory's dataclass fields; the carry no longer owns a before/after roster.

E1–E4

  • Kept TypedTable.rebuild: writable columns, missing stored-field NULL, constraints/indexes/triggers live on the table. Callers supply only real data conversions.
  • GoalHistoryEntry owns quoted history reads and JSON updates. Carry _column_list references 0; no private table calls from its helpers.
  • OwnerRequest and history preparation use inherited reconcile_schema, not create/create_schema or schema-only rebuild. Real Todo goal→request conversion remains.
  • Existing durable reconciliation derives nullable additions only for the exact earlier declaration minus those fields. Undeclared populated columns still refuse without data loss. _table_sql owns creation and comparison; no second schema reconciler.
  • CommanderConfig/StorageRule compose DurableFile so the existing practice-copy owner retains their records. Removed duplicate root_path API.

Historical qualification (not attributed to the current head)

  • At preceding head14761f8d4, hosted smoke, native-scripts, debt-src, debt-tools and install-rehearsal PASS (P421-queue-now.json, head14761f8d4). PR job review-verdict also reports SUCCESS, but its sole verdict step runs only on merge_group (.github/workflows/debt-ratchet.yml:103–114); this is not evidence of commander review. Fork-review-w owns the exact-head verdict. The private hosted rehearsal passed; this is not live-bus installation or completion.
  • After caller migration, 2 passed in 3.72s (P421-last-consumers.log): order story and parent/fork judge. After initial latest-main integration, request family 1 passed in 3.34s (P421-current-main-request.log), before the final main update. Neither is a final-head full-suite claim.
  • 22 passed in 26.95s, using canonical fixtures and existing dependencies: tests/round2/test_typed_table.py, tests/test_owner_requests.py, tests/test_commander_forks.py. One request-family journey exercises real request CLI add/list/refused completion/independent completion, named/newest directives, recorded-identity replies, prefix validation, claim-blocked completion and unchanged commander goal. It uses the canonical credential-free HOME fixture and a separate bus; no agent starts.
  • The earlier stand-alone CLI proof used a separate bus but inherited real HOME. It is superseded, not evidence of full host isolation. Its raw output remains an observation only. Current CLI evidence is the fixture-backed family journey above.
  • Fresh retained-copy carry PASS, exit0: captured only registry/guard/metadata and the Todo/history SQLite snapshots under the registry owner; sessions/inputs/auth not opened or replayed. 12,633,894 bytes; 454 Todos, 401 request links, all 1,915 history rows preserved. 32 requests, 289 directives, 612 history endpoints carried. Preview/apply both changed66; direct ledger-free repeat Carried(0). Artifact: P421-final-revision-carry.log in owned scratch.
  • Mypy on owner_requests.py and tools/cutover/carry_owner_requests.py: exit0, with MYPYPATH=src:tools --explicit-package-bases --follow-imports=silent. This is not a whole-source type-check claim. Those modules lint clean; history retains its three pre-existing long lines.
  • Exact ready-head AST inventory: src442/tools15/tests474, zero parse omissions, using the existing audit Package parser (P421-ready-head-ast.log, exit0). Prior inventory at321b2de1f used audit pin8185dc8b86b2d58f83fe20d9ec25a00071459fb0 and counted src441/tools15/tests472. Before/after evidence includes imports, declarations, writes and callers; unresolved dynamic binding is outside lexical proof. Rejected the earlier symbolic-HEAD inventory that read frozen P440; exact P421 tree hashes were used instead.
  • Earlier broad touched run: 122 passed / 4 failed / 2 native setup errors, not a pass. The claimed complete source-failure repair was disproven by the held-order regression above; do not treat the later22 focused passes as coverage of this case. No ratchets, full suite, venv, SDK build/sync, clone or installation run locally.
  • On preceding head1b2101bc8, hosted smoke, native-scripts and install-rehearsal passed. The rehearsal built a private installed runtime and ran real saved-owner DM/reply native proof. Debt-src/debt-tools failed there; this checkpoint repairs their request-store/Commander growth, nullable probes, field roster, type and new-line lint findings. Latest-head debt-src/debt-tools now pass; the earlier installed rehearsal is not attributed to this head.

Remaining delivery

  1. The fixture-consumer batch passes38/38; Core records the source claim on this head (revision114). Hosted smoke/debt-tools PASS; native-scripts, debt-src and install-rehearsal were running at last read. Obtain fork-review-w's new verdict on this head and land via ready/auto merge queue. The earlier queue record was for14761f8d4 and was sent back.
  2. Merger-owned matching prepared/installed b6969 runtime qualification for the three previously attempted native cases:
    • tests/test_holder_standing_rules.py::test_sigterm_group_preserves_active_goal_and_never_reissues_orders
    • tests/test_owned_turn_goal_replacement.py::test_turn_after_order_replacement_is_allowed
    • tests/test_install.py::test_install_routes_a_new_bus_and_replaces_only_a_route_that_selects_none
      No alternate pin, source-prefix alias or weakened guard. Shared test-runtime repair has a named owner; no competing repair here.
  3. Actual installed live bus: both Tristan targets open with serving orders, then complete one while the other remains open, plus actual native/connector reply. Source CLI proof and hosted rehearsal do not establish this. The previous native prompt send remains UNKNOWN and must not be replayed. Per commander messages17797/17805, wait for the commander's fresh post-install message.

Diff against integrated main: 1,423 added / 594 deleted, 49 files. No merge commit yet.

Assumed:

  • claude-code owns fresh-environment qualification/install on the pushed head; unit-forks retains P421 implementation and installed follow-through.
  • Original P421: Record independent owner requests #2473 unpublished edits, frozen P440 work, auth, sessions and UNKNOWN inputs remain preserved.
  • P440's ordinary-holder delivery CLI mismatch stays with its existing owner and checked follow-up, without weakening fork identity here.

@trissim
trissim marked this pull request as ready for review October 22, 2026 00:19
Copilot AI balanced review requested due to automatic review settings October 22, 2026 00:19
@trissim
trissim added this pull request to the merge queue Oct 22, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 22, 2026
@github-merge-queue github-merge-queue Bot closed this pull request by merging all changes into main in 69c5b0e Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants