Skip to content

Parity row31: enforce declared deletion targets on actual delivered commits - #2118

Closed
trissim wants to merge 24 commits into
fix/parity-family-afrom
fix/parity-deletion-target
Closed

trissim wants to merge 24 commits into
fix/parity-family-afrom
fix/parity-deletion-target

Conversation

@trissim

@trissim trissim commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Row31: deletion intent is enforced on actual delivered commits

One declaration: DeletionTargetParityRow.comparison = DeletionComparison.read. The shared ParityRow owns verification dispatch; row31 has no verify forwarder.

The same scenario runs on two independent LifecycleRun copied buses. Each sends an actual order with FamilyDeletion. Real initial, partial and zero-site commits are pushed to independent local Git origins. The partial commit repairs the caller's primary behavior but leaves one obsolete class declaration. Current DoneVerb.run -> Commander.done and the declared native CLI -> CommsOrderDoneTool both refuse that actual commit; the canonical pending order stays unchanged. Both accept the actual zero-site commit and record its exact SHA and unchanged deletion intent.

Ownership changes

  • Shared LifecycleRun.invoke_command owns candidate-source environment, BoundedRun, timeout and ChildResult. Row31 consumes typed ExitedOutcome(1/0); timeout/signal cannot pass as refusal.
  • Existing ArgumentTool owns record-to-native-arguments projection. ToolRequest composes that capability and projects its own identity/arguments to InvokeCliCommand; that existing CLI class owns module/argv/JSON emission.
  • Deleted both consumer-owned envelope/argv builders: NativeDeletionPath and tools/proofs/cn_phase3_record.py. Phase3's owner confirmed no overlap.
  • Actual checked-commit verification uses the supplied persistent OrderCheck.at API, not fabricated CheckedCommit notes. All checks read genuine Git check records generated by delivery.
  • Practice roots retain storage limits and use isolated temporary checkout bases under the persistent checkout root, without touching the original unit's protected checkouts.

Verification

  • Actual copied-bus current/native process proof: all 9 checks on each path match and pass, including primary check passing on the rejected one-site commit and exact zero-commit delivery identity. Final proof uses the shared BoundedRun/ChildResult producer.
  • Actual native CLI through the shared typed projection also passed for named and no-thread callers.
  • Orders/parity focused run: 90 passed, 1 existing withdrawn-close failure (Closing requires recorded installed application evidence.).
  • Tool/native/parity run: 17 passed, 9 failures. A complete archive of the pinned family-a source, using the same existing dependencies, reproduces all nine unchanged: 13 passed, the same 9 failures. Two stale decoder-message assertions and seven timestamp-less event/preview fixtures. No new fixture/runtime failure claimed away.
  • Exact head f6679cf: final actual process proof passes all 9 matching checks per path; final parity/measurement tests 4 passed; targeted typing emits no errors; Ruff passed on row31 and the migrated proof.
  • Exact-head src/tools ratchets both 0, with positive deltas {} and introduced findings {}. Consumes family-a's 80c5348 process API (rebased through d1438b9); candidate Python environment is supplied explicitly through that shared owner.

Source evidence and limits

Existing NRA ModuleSyntaxIndex enumerated production src/tools declarations, inheritance, imports, attribute reads/writes, checks and consumers before/after; no parse omissions. Before: consumer-owned FieldCodec projection/envelope trimming, foreign family identity transport and duplicate CLI grammar. After: ArgumentTool.arguments, ToolRequest.cli_command and InvokeCliCommand.argv own those facts once; both consumers depend on them. Existing lifecycle declarations and shared producer remain owned by family-a's integration owner.

Evidence: /home/ts/.cache/agent-scratch/pi-cn-phase5/row31-{before,transport-before,after}.txt, row31-final-owner-receipt.txt (actual single-owner searches), and row31-{final-live,final-parity-tests,api-tests,base-full-api-tests,last-src,last-tools,final-typing}.log. Inline Python child programs and dynamic declaration discovery were read semantically and exercised; source AST alone does not prove their invocation. Scratch source/archive/test data used the existing checkout's .pytest_cache/row31: 78 MiB retired after an empty lsof borrower check. Copied buses and detached checks are disposed by their existing context owners; no remaining parity-deletion checkout directories or copied roots were found.

Assumed: this is worker copied-bus acceptance. Merger owns integration, practice installation and installed parity execution. This does not claim full parity-gate success, full commander CLI eligibility/gating acceptance, production installation or completion of P294/P285.

@trissim
trissim force-pushed the fix/parity-deletion-target branch from 80f4364 to 7c9487a Compare October 20, 2026 03:59
@trissim
trissim force-pushed the fix/parity-deletion-target branch from 7c9487a to 9532f67 Compare October 20, 2026 04:04
@trissim
trissim force-pushed the fix/parity-deletion-target branch from b61a527 to f6679cf Compare October 20, 2026 04:07
@trissim
trissim marked this pull request as ready for review October 20, 2026 04:09
Copilot AI balanced review requested due to automatic review settings October 20, 2026 04:09

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.

@trissim
trissim force-pushed the fix/parity-family-a branch from 9731501 to f0ef11b Compare October 20, 2026 04:25
@trissim

trissim commented Oct 20, 2026

Copy link
Copy Markdown
Contributor Author

Sent back by the desktop merger. This branch is 101 commits behind main, and it calls helpers main deleted: commander.order.deadline and hhmm (main uses RecordedEventTime(time.time()).at_clock(due) and .clock()). Its commander_parity/lifecycle.py conflicts with the sibling parity PRs #2118, #2120 and #2127, which each grow their own copy. Rebuild on current main by 00:46, with one shared lifecycle.py that all three extend, and drop invoke_command's unused cwd and env=None defaults (NoneAbsence at lifecycle.py:199-200). Then reply here for a merge.

@trissim

trissim commented Oct 20, 2026

Copy link
Copy Markdown
Contributor Author

Not merged: conflicts with main in commander/order.py and commander_parity/lifecycle.py (add/add). Rebase.

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