Repository navigation
Share table capabilities and migrate claim fields in retained stores - #2646
Merged
11 commits merged intoOct 23, 2026
Merged
11 commits merged into
11 commits merged into
Conversation
# Conflicts: # src/agent_comms/acp_extension.py # src/agent_comms/context_store.py # tests/test_acp_queue_contract.py
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.
|
debt-src at b6714aa, every finding: |
trissim
marked this pull request as draft
October 23, 2026 08:04
trissim
marked this pull request as ready for review
October 23, 2026 08:28
trissim
marked this pull request as draft
October 23, 2026 08:31
trissim
marked this pull request as ready for review
October 23, 2026 08:46
trissim
added a commit
that referenced
this pull request
Oct 23, 2026
acp_extension.py keeps main's recipient_lookup/incarnation.lookup check over #2646's claimed_identity field name. private_sidecar.py keeps only the TYPE_CHECKING import; Annotated and Literal are unused. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
trissim
added a commit
that referenced
this pull request
Oct 23, 2026
The batch dedupe and #2646 each deleted a different copy of Platform in selected_write_plan.py, leaving none. selected_tool_broker.py imported Platform twice; native_runtime_input.py kept DurableTables and SharedFileTables after #2646 stopped using them. Co-Authored-By: Claude Opus 5.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.
The FailedTurnEvidence carry uses one rebuild for both renamed columns. Reviewer branch
origin/next/failure-reasonis merged, includingab91e5d7ce05649a27e6ceeebc6fbbb701461e4b. Both owned carries return root-relative Paths for #2691's Carried.rewritten contract. Pair with #2691 in the integration batch; no registry compatibility aliases were introduced.Python and the retained stores now use three distinct names for three distinct facts:
claimed_identity,resource_scope, andclaim_generation. The oldWireName("admission")overrides are deleted, along with the related generation/epoch/counter aliases.tools/cutover/carry_claim_fields.pycarries the predecessor format once; the production codec understands only the current declarations.The same PR shares the twelve WITHOUT ROWID declarations through
WithoutRowid, the two fixed singleton keys throughSingletonRow, and the compatible plain turn/item declarations throughTurnItem. FieldCodec and TypedTable remain the field and SQL owners.Stored format change
The carry selects each retired key from its declaring class. ValueDecoder, FieldPlan and the existing representation classes own traversal; the carry-side shape dispatcher is deleted. RetiredClaimFields is the shared capability inherited by both carries and used by the physical JSONL boundary. It does not infer whether an
admissionvalue is an identity, a scope, or a generation by inspecting its shape. Family/union selection uses the existing codec. Opaque provider JSON and message text are not recursively searched. A record containing both old and new spellings is refused.registry.jsonin the root and every catalogued archiveadmissions→claims; publication uses RegistryStore, including its private guardgoal-private/goal_attempts.sqlite3, FailedTurnEvidenceadmission→claim_generationand retiredreasonlabels → declaredfailure; includes Reviewer commit ab91e5dcoordination.sqlite3, NativeRuntimeInputsent_owner_admission_generation→sent_owner_claimed_generationcoordination.sqlite3, CurrentNativeCursorowner_admission_generation→owner_claimed_generationinput_dispositions.sqlite3, typed attempt JSONadmission→claim_generation; HumanInputOrigin'sadmission→claimed_identity; nested ClaimedIdentity'sadmission_generation→claimed_generationbus.sqlite3, typed claim-transition JSONadmission→resource_scope; RecordedScope'sowner_admission_generation→owner_claimed_generationturns/*.jsonadmission_generation→claimed_generationowner-restart-queue/**/*.jsonadmission_generation→claimed_generation; states and attempts remain unchangedselected-write-plans/*.jsonadmission_epoch→claim_epochRootFile discovers the actual files and TypedTable discovers the row/column declarations. The three renamed SQL columns are rebuilt through TypedTable.rebuild. Installation maintenance encloses publication, runtime mutation triggers are restored, and SQLite checks references before commit. Dry runs read snapshots and do not rewrite stores. A second run has no old keys to carry.
DeclaredFailures explicitly precedes ClaimFields. Its single FailedTurnEvidence.rebuild supplies both the retired reason-to-failure expression and admission-to-claim_generation expression, including roots with either old column alone. The retired-column mapping is inherited from RetiredClaimFields, not copied. ClaimFields then precedes FinishedTurns, DeadTurns, OwnerRequests, TurnOwner and ContextRequestKey; the latter registry readers cannot decode
admissionsafter this production rename. OwnerRequests already precedes BusHistory. The old JSONL reader remains isolated in tools: its current conversion uses the same typed key walk, while its reverse template still proves the original physical JSONL bytes. The missedacquiring.claim_scopeconsumer in carry_bus_history is migrated toresource_scope.Ownership and exclusions
typed_table.py:2173owns WITHOUT ROWID; twelve concrete tables inherit it and delete their local option.typed_table.py:2180owns the fixed singleton key; ContextStoreInfo and SnapshotMeta inherit it.turn_item.py:9owns the plain turn/item pair and its key; runtime update/item consumers and EarlierItems inherit it. ExternalPageRow retains its different keyed pair. DraftRow retains its pair because inserting a base would move a stored column.claim_scopename.revision>0andrevision > 0differ in stored SQL. OwnerIncarnation and Addressed remain with their plans.Evidence and remaining execution
Before the global stop, the capability changes passed 51 table/schema tests and 98 singleton/item tests. Those results predate the claim migration and later main merges; they are not results for this head. The new carry has not been executed locally. The single integrator owns the next touched-test run, including the existing bus-history conversion/read-back tests, input/claim/registry tests, turn carries and table/schema tests. The installed affected path is not claimed here.
Earlier source evidence is retained in
/home/ts/.cache/agent-scratch/mi-field-directives-source.json,mi-field-without-rowid-source.json, andmi-field-claim-consumers.txt; the prior DDL snapshots aremi-field-ddl-before.json,mi-field-ddl-singleton.json, andmi-field-ddl-claims.json. No new census was run after the stop.Every remaining
admissionhit under srccommander/rules/plain-reporting.md:11plan_phases.py:636storage_room.py:228todos.py:1250skills/refactor-audit/SKILL.md:84skills/refactor-audit/references/patterns/identity.md:22skills/refactor-audit/references/patterns/implementation.md:512,526,532skills/refactor-audit/references/patterns/membership.md:76skills/refactor-audit/references/patterns/over-time.md:197,236skills/refactor-audit/tests/fixtures/wire-identity/coding-before.py:14andcoding-after.py:14skills/refactor-audit/tests/test_audit_regressions.py:123NoExactCopies replacement design (Backend files untouched)
Assumed: the installer holds maintenance and stops predecessor writers; predecessor/current records use the declared formats; uncertain input records are transformed without any replay. Mixed old/new fields are refused, not resolved by guessing. The integrator must establish execution results for this head.