Skip to content

Preserve original native history in bounded copies - #3829

Merged
trissim merged 26 commits into
mainfrom
fix/p867-recorded-source
Nov 2, 2026
Merged

trissim merged 26 commits into
mainfrom
fix/p867-recorded-source

Conversation

@trissim

@trissim trissim commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Original-history selected copy: 26 commits, 39 files, +2860 / -186

Shipped; original-data consumer in progress

Core#3829 merged as 012ec8f00f55992bde4302f6ffad05812af6319b. The installed runtime's build.json independently records that commit. Qualification-only#3871 is closed; its branch and both failed source-cut attempts remain preserved. The capture/recapture wait was removed from source landing.

The installed ordinary readers now resolve the actual P867 selection: pi-mi birth 1792870523.265548, native session bc1b3764-382b-4c69-85c8-594e56b9e723 at its original imported-session path, 6,274 context entries and 510 native rows. Saved context request80943 resolves through ContextManifestReference.read/the ordinary store reader; manifest digest d9e3efc8274e3dc4189d72e28fb8cab90a605e98cc9acb4e532c121c484d28ad. The read-only selection command exited0, used157,656KiB maximum RSS and left its capture destination uncreated. This is selection/read evidence; the actual worker materialization and native/physical reader journey follow.

The encoded operation is shared-board/p1086-original-selected-probe-01.json; its actual cap is3,221,225,472bytes. p1086-original-selection-01.{json,log,rc} retains the original identities, request reference, digests and resource baseline. The comparison driver uses canonical unresolved input reads, ordinary context/participant reads and original session+path native rows under the existing retargeted hold.

Source delivery was attempted through Core; installed012 refuses its self-reviewer routing (Thread 'pi-publication-carry' cannot message itself). Order-story readback records no delivery. The generic ClaimReviewer repair is merged asCore#3878/96b7673e29a6 and belongs in the next shared install. P1086 remains open for its real application outcome.

Head: 7a2b1f5c791953f40127f7ff71804445e06d5b54, rebased onto main test cleanup 58daba13e30363fd1439136a5e0afbb09a7c942d. Latest worker-proof commit: 3 files,+22/-10; the preceding file-capability correction was 7 files,+57/-19.

Test-cleanup rebase and actual target-worker proof

The58daba13e rebase retained main's cleanup. The one conflict was the shared-helper import in tests/test_coordination_response.py: it now imports accept_initial/publish_initial/responder from conftest alongside the required CoordinationStore import. No fixture implementation or deleted test was restored. Of the39 owned files, only four test files changed across this rebase: that import consolidation, import lifting in test_context_manifest_deltas.py, and main's removed absence/inheritance assertions in test_input_documents.py and test_maintenance_barrier.py. All37 Python files parsed/compiled with no subject execution. Production source bytes are unchanged across this rebase; earlier executions retain their actual epochs rather than becoming a claimed new run.

A real candidate runtime was built/completed through RuntimeStack at core-eb8adb337-lock-2e2515cea9110ddb, including native/package preparation and client imports, without live publication. Its owner-resolved lock selects Toad9e0452dca and Textual94d743f5; that lock is included in the worker-proof commit. The annotation materialization control now calls InstallCommands.probe through actual interpreter worker pipes instead of invoking ProbeRequest.answer in-process. Executed through RuntimeStack.test against the installed candidate, with its declared dev extra and fresh owned basetemp: 1 collected/1 passed,5.45s,exit0. The outer command took70.468s;5.45s is not an end-to-end timing. This is real target-worker transport on private fixture data, not original-data, peak-resource, native-agent or physical acceptance.

Receipts: p867-target-runtime-build-02.{log,rc}, p867-target-runtime-build.json, p867-target-runtime-resolved.lock, p867-target-worker-test.{log,rc}, p867-worker-proof-publish.{log,rc}, p867-test-cleanup-rebase.log, p867-test-cleanup-continue-01.{log,rc}, p867-test-cleanup-before.json, and p867-test-cleanup-push.{log,rc}. The earlier /usr/bin/time pre-start127 and bounded-shell command-substitution refusal are retained as failed launches, not test executions.

Latest owner correction: derive the capture file family

Hosted debt-src on32ef correctly rejected the new PracticeCopy.input_readers roster (InheritanceCleanupPhase) and the heterogeneous capture tuple (object.path_in type error). InputCaptureFile(RootFile) now marks the four participating store declarations. CompleteInputReader(InputCaptureFile) marks Bus and InputDispositions, which must be copied whole. ContextStore and CoordinationStore compose InputCaptureFile directly. Pin/drain selection, complete-reader preflight/copy and original-reader checks all use RootFile.declarations_in; the roster and mixed tuple are deleted. Existing writer/schema/copy parents remain unchanged. The flagged docstring word is replaced with 'in-flight', without changing transaction behavior.

Actual post-correction execution: 19 collected/19 passed,4.97s,exit0, covering real file-family C3 construction, each of the four stores' in-flight/later writer controls and decoded selected materialization. Focused mypy on installer/practice.py: no issues,exit0. Six modules parsed/compiled without subject execution; all seven source/doc hashes were checked across rebase. Receipts: p867-file-capabilities-{source.json,tests.log,tests.rc,mypy.log,mypy.rc,publish.log,publish.rc,publication.json}. These are fixture/backend and source proofs, not original-data/native acceptance. The preceding125-case epoch below remains its own execution.

Previous selected-operation correction: 5 files,+151/-14, with its five hashes preserved through its safety rebase. Source parse/compile and checkpoint publication exited0. The affected nine-path execution collected125 cases:125 passed,21.65s,exit0, under the normal host TestLease with a fresh explicit owned /home/ts/wt basetemp. This is fixture/backend qualification, not original live-data, cross-runtime target-build, resource-peak, native or physical acceptance.

This supplies a bounded selected copy of original input/context/coordinator evidence for the P867 saved-history journey. Ordinary complete copies and backups stay complete and uncapped. The two 75-case integration runs reached 45 passed / 24 failed / 6 setup errors, then 70 passed / 5 failed. The five affected cases at b7fafd7 subsequently passed in 2.42s, exit 0. That is a separate five-case execution, not a 75-case rerun; the original-data journey remains unverified. It is not a replacement for native preparation or permission to run a frozen root.

1. One fresh-file loading and publication lifetime

Before: selected records lacked a complete store-loading path. An entry-only prototype omitted saved request/version history and coordinator dependencies; copying whole stores exceeded the selected-copy allowance.

After: ReconciledFile.retaining_rows owns staging, read-only original attachment, schema admission, loading, dependency closure, sequence metadata, close, exclusive publication and cleanup. Its staged writer now explicitly enables uri=True, matching the existing reconcile connection. The failed run showed the omitted connection capability prevented SQLite from interpreting the original's read-only ATTACH URI. ATTACH itself and mode=ro are unchanged; there is no missing-source creation or filename fallback. TypedTable.loading / TableSchema.loading_rows share the existing table/index/guard/relation ordering. Unknown columns/triggers, missing declared retention keys, and existing or symlink destinations refuse rather than silently discard evidence.

AttachedPracticeRebuild copies original writable SQL values with declaration-derived keys and null-safe deduplication. It uses the existing requested-key compiler, not a second field roster or INSERT OR IGNORE. SQLite total_changes supplies progress, including WITH-prefixed inserts. SQLiteDatabase / TableSource qualify all original-side reads through one attachment.

2. Declared relationships and original row groups

Reference.foreign_keys and TypedTable.foreign_keys derive inherited/generated relationships. FK comparisons keep the referenced column on the left, preserving its affinity/collation; NULL does not invent a parent.

RetainsChildren(TypedTable) supplies required inverse groups. Execution, harness, native and publication rows compose the capability where their original children are required. Publication intents keep their original evidence and append-dispatch records; partially received harness records remain partial. No claim, completion, ACK or publication is fabricated.

Native membership remains owned by NativeInputExecution. Its membership-led LEFT JOIN deliberately reaches the required-row decoder when a declared claim is missing; an inner join would erase the defect. source_assignments returns the original decoded rows, and each row retains through its own declared key. Existing source_assignment_ids derives its ID result from the same query. FULL and TRIAGE keep their separate membership definitions; stage SQL uses the existing declaration-aware sql_literal boundary. The four source-qualified table expressions now call TypedTable.qualified_table, keeping nominal table identity at its SQL boundary.

3. The existing unresolved-input projection chooses seeds

SnapshotInputDispositions.retain_unresolved consumes unresolved(entries), including uncertain harness attempts absent from the ledger. The complete ledger still suppresses completed attempts from every ledger state; stored_unresolved() is not substituted for that projection.

InputOrigin.harness_sources exposes no witness by default, while HarnessAttemptOrigin exposes itself. HarnessDelivery.retain_attempt owns the original bridge/recipient/full-reference retention and required-row refusal; provenance imports no coordinator row. WakeAssignment.for_harness_sources shares candidate acquisition and reference checking with the ordinary assignment reader. A same sequence naming another message refuses. Original recipient birth distinguishes recreation from rename; birthless evidence remains birthless. Names and request-generation scalars are not invented joins.

ParticipantStore.read_at shares ordinary acquisition. Selected participants keep their generation/current-execution aggregate, while absent participants remain absent and incomplete present aggregates refuse. Required components use the existing required-row decoder; only missing rows translate to the original participant-domain failure. Malformed/duplicate rows are not hidden by a fallback. ParticipantRows(AttachedPracticeRebuild) adds that existing aggregate owner to each expansion of the same loading/fixed-point lifetime, including FK-discovered participants. PracticeCopy.include_inputs and the shared real coordinator-test factory select this policy explicitly; the generic attachment alone does not claim aggregate completeness. The low-level Participants→ParticipantStore hook is deleted. Two additional controls reach incomplete participants solely through FK discovery.

4. Saved context and annotation history

ContextStore.retain_contexts keeps original sessions, file/item coordinates and the selected request/info/version/entry/predecessor chains. original_segments restores the actual retained requests through the ordinary entry resolver. Native groups are selected by both original session ID and path, not a scalar pseudo-FK to a context.

The browser already enforced full SegmentManifest.contains_span eligibility. The defect was the missing annotation seed in the selected coordinator copy, not digest-only browser eligibility.

The shared structure is now:

ContextSpanRows(TypedTable)
  SpanAnnotationsRow(ContextSpanRows, CoordinatorRow)
  AnnotationRequestsRow(ContextSpanRows, CoordinatorRow)

WorkingMemoryAnnotations.for_segments and retention share that candidate/eligibility owner. Original label order, question/classifier versions and human corrections remain represented. Requests retain grant-wide usage across outcomes and contexts, including Submitted/Failed/Completed histories needed for duplicate suppression and hourly limits. The annotation hook compares its declared generated address columns directly: one natural address can have multiple correction rows, so it is not fabricated as a foreign key. Storage no longer imports a reader to reconstruct those values.

The old for_digests path and duplicate eligibility loop are deleted, without an alias. Both annotation sorts use int(row.id); UnallocatedRowId owns the numeric refusal instead of allowing an unstored label to masquerade as recorded history.

5. Copy orchestration and resource bounds

Before: callers could independently copy a bus/ledger and later select contexts/coordinator rows without an expressed common-cut entry. Pinning alone held no SQLite transaction, and a marker alone was not holder or target authority.

The17f checkpoint supplied only an available PracticeCopy.capturing_inputs() context; Salvage correctly found no production caller. The correction adds the declared target-only SelectedInputsProbe(TargetProbe, RuntimeProbe[PracticeMeasurement]). Existing ProbeRequest/FieldCodec transport reaches PracticeCopy.capture_inputs, whose one scope encloses the first complete bus/ledger copy, context selection and coordinator selection. Birth lookup uses the original RegistryCut, not caller-provided name/generation records. Ordinary complete PracticeBus.select, include() and live backups are unchanged; no automatic selected capture is inserted into an ordinary install.

Existing maintenance members own current-holder/retargeted-runtime admission and unchanged-generation refusal. The scope pins selected source groups, drains/releases each admitted SQL writer separately, then acquires the original RegistryCut. No SQL lock is held while seeking another writer or the registry. Materialization selects existing NoMaintenanceHolder.acting(), clearing both its request-local and exported child-process claim: ordinary source writes refuse before mutation, while the private target remains writable. Before/after source observations and the original registry revision remain an additional fence, not rollback or a substitute for prevention. The original claim is restored on every exit. Previously materialized, symlink and donor-contained destinations refuse. Complete reader groups receive an allowance preflight before their first copy.

The report trace places start publication before owners_stopped, terminal publication after cleanup, and phase timing only in the in-memory InstallClock. All15 capture controls pass in the125-case epoch, including the actual source-write refusal, per-store admitted/later writers, generation and failure cleanup. The annotation control also round-trips and executes the actual ProbeRequest with selected context/coordinator materialization and unchanged source checks. That is an in-process protocol/backend control; a qualified cross-runtime original-data request remains owed. The probe returns a data measurement, not native launch/write authority.

PracticeCopy.include_contexts / include_inputs own selection and resource registration. The newly introduced CoordinationStore.retain_inputs wrapper is deleted; its sole caller now uses CoordinationStore.retaining_rows directly. This removes four local imports and four type-only imports from the low-level storage module. Native and annotation hooks remove two more local import detours. The preceding owner correction removed both new retention-local imports. The key family also answers recorded/unrecorded birth matching without importing the higher-level incarnation family; StoredInput uses its existing incarnation dispatcher.

Bus and complete ledger capture must precede coordinator selection; selected contexts must precede coordinator finalization. A copied reader without its original source refuses. A resource is recorded only after successful publication.

Selected materialization requires maximum_bytes. Existing bytes and the free-space floor reduce the remaining allowance. SQLite uses the actual page size and max_page_count; staged groups and companions are measured before publication. Original sqlite_sequence high-water marks survive even an empty selection. One-segment-at-a-time traversal avoids accumulating restored prefixes. Measured aggregate/WAL/temp/journal/memory/handle peaks are still owed; streaming is not that measurement. Ordinary full-copy paths are unchanged.

Verification and next execution

Safety-base rebase/push receipts: shared-board/p867-capture-safe-base.{log,rc}; exit0, local/remote head32ef26a04e equal, all five corrective-file hashes unchanged. The125-case execution below belongs to pre-rebase a0e4, not a new32ef execution. No installer/bootstrap operation was invoked by that rebase.

Current receipts: shared-board/p867-capture-claim-checkpoint.{log,rc}, p867-capture-claim-source.json, p867-capture-claim-head.txt, p867-capture-claim-tests.{log,rc}. Five changed modules parsed/compiled without subject execution, no omissions, checkpoint rc0; actual affected execution125/125 in21.65s/rc0. The runner used installed c5 CPython3.14.8, the existing retained pytest dependency directory, explicit own src/tools, INT300 and --basetemp .capture-qualification-a0e4-home-1. No package install, new environment, full suite or local NRA gate. Carry owns qualification, landing and supported install; no central approval dependency or test handoff. Exact corrective-head source review requested in55393.

The preceding17f run remains 122collected/114passed/8failed/17.02s/rc1. Seven failures hit the unchanged10GiB free-space floor on a4.9GiB-free /tmp filesystem; one stopped-thread oracle wrongly expected a process after RegistryDocument.unregister intentionally stores NoProcess. It now compares the actual stopped RegistryEntry unchanged after rejected activation. Exactly8 affected cases then passed in2.89s/rc0 on a fresh own /home basetemp. Those two epochs are not122green.

That first runner's default pytest cleanup attempted unrelated old DQDock scratch. The incident was disclosed in55078; mounted originals remained read-only and the checked canonical source file kept its prior bytes/mode/mtime, but complete preservation of non-mounted siblings is unproved. No manual cleanup/unmount was performed. All subsequent runs use explicit fresh owned /home/ts/wt basetemp; protected evidence remains retained.

Earlier receipts p867-capture-checkpoint.* and the definitive pre-start -S refusal remain tied to their own epochs. The supported -I -B source checkpoint was not an UNKNOWN retry.

The actual frozen 90f6d053 seven-path run collected 75 cases: 45 passed, 24 failed, 6 setup errors, 13.22 seconds, exit 1. It used an owned source archive, installed c8 CPython 3.14.8, explicit archive src/tools/tests and the real pytest_session host lease. Full failed log: /home/ts/.cache/agent-scratch/pi-commander/submission-nov1/retention90-tests.log and .rc. This epoch remains retained, not replaced by a successful prediction.

The next exact 891bc2a76c seven-path run collected 75 cases: 70 passed, 5 failed, 14.46 seconds, exit 1, using installed74 CPython3.14.8 and the owned exact-head archive. Log: /home/ts/.cache/agent-scratch/pi-commander/submission-nov1/retention891-tests.log and .rc; channel54638 and direct54640 deliver the result. A/B/D and the FULL allocation check pass in that epoch. Four corruption controls stop at a subset-schema assertion; one context control compares pre-read writer state with restored state. Neither run is erased.

The exact b7fafd7c7bbe655ca3b6b989c0ad7678408438d3 correction then collected 5 cases: 5 passed, 2.42 seconds, exit 0. I read the complete log and rc at /home/ts/.cache/agent-scratch/pi-commander/submission-nov1/retentionb7-tests.log and .rc. It names all four direct/FK-discovered missing-generation/missing-pointer cases and the selected-context closure case. The log reports installed038 CPython3.14.8 and .review-retentionb7; exact-head preparation, TestLease and INT300 are integration's recorded execution facts (direct54699). Two pytest warnings remain visible. No author pytest was run. This qualifies those five corrected cases only, not the whole seven-path selection, common source cut, aggregate resource peak, native launch or original-data physical journey.

Latest bounded corrections:

  • A: Harness fixture transcript IDs now pass actual UUID spellings through TranscriptRecordIdText.decode; the declaration remains strict.

  • B: The staged writer enables URI handling. The SQLITE_FULL control still requires FULL, not the CANTOPEN failure that previously stopped it first.

  • C: Both direct and FK-discovered incomplete-participant controls begin with ParticipantStore.register and a valid aggregate. They explicitly simulate foreign corruption by removing only the chosen type's declaration-derived NoDelete guard, deleting one required component, restoring the exact guard and requiring the full schema. Insertion-membership guards stay installed. The ordinary aggregate reader must refuse before retention is attempted. This models external damage, not a permitted coordinator transition; integration accepted this explicit foreign-corruption shape in54640. The schema assertion now selects CoordinationStore.schema_at(source.path), retaining the actual private root's cohort tables/triggers rather than incorrectly requiring only CoordinatorTable's base schema.

  • D: Two obsolete unresolved-input callers now obtain actual RegistryEntry values from the declared registry. No string overload or selector change.

  • Ordinary-read context comparison: Before copying, resolve the exact selected source/record through the original ContextStore. Compare the complete retained CapturedContext with that original read, preserving restored contributor JournalProvenance, text, coordinates, recorded fields and source identity. Writer CapturedContext.value is not the ordinary-read contract. Original digest, contributor count, selected predecessor IDs and allocation high-water assertions remain.

Earlier run891 targeted NRA syntax coverage and compilation: two test modules, no omissions, exit 0. Both hashes survived rebase. The preceding 3-module and 11-module source/import evidence remains tied to its earlier epochs. These source passes execute no Core subjects/classes/MRO/SQL/stores/providers/native sessions; they are not corrected behavior or full dependency-closure acceptance. No author pytest or local NRA gate ran.

Salvage read the implemented participant/harness shape and accepted those two source repairs. Its static import graph covered 642 source modules at the pre-rebase epoch. A targeted post-rebase NRA-parsed query covered 97 reachable project modules and found no unconditional input-origin→harness-row path; guarded/class-time/dynamic/external effects remain OPEN. Neither result is a cold import. The ordinary harness witness annotation remains runtime-resolvable; no new TYPE_CHECKING detour or compatibility alias was introduced.

Latest receipts under shared-board/: p867-run891-source.{log,rc}, p867-debt-repair-run891-oracles-after.json, p867-run891-source.sha256, p867-run891-publish.{log,rc}, p867-run891-head.txt and p867-run891-remote.txt. Earlier run75/closure/import/native/copy/source artifacts and all failed/refused epochs remain retained. Historical hosted successes and skipped smoke/rehearsal are neither a current-head verdict nor behavioral acceptance. The b7 result remains its actual five-case execution, without suppression or rebudgeting.

The existing combined host selection was requested at bus 54258:

  • tests/test_retained_coordinator_groups.py
  • tests/test_retained_annotations.py
  • tests/test_context_manifest_deltas.py
  • tests/test_coordination_response.py
  • tests/test_harness_receipt_context.py
  • tests/test_input_documents.py
  • tests/test_working_memory_read.py

That historical selection exercises actual selected-copy loading, original attachments, required groups, annotation corrections/grant history, original source preservation and refusals. Its earlier epochs remain as recorded above. The current extended run is Carry-owned under the normal host TestLease; no full suite or local NRA gate is launched. I retain failures and ownership of the remaining journey.

Assumed / still owed

  • Consistent original source cut and the actual stopped service/owner/host/writer-drain lifetime. A maintenance marker, pinned reader or independent SQLite backups alone do not prove a common cut.
  • Original registry/turn association: safe ordinary practice registry retirement intentionally drops active-turn references and cannot stand in for that evidence.
  • Unproved inverse-native, serialized, recovery, producer and grant-reference relationships remain open; no omitted relationship is scored as zero.
  • Bounded original-data copy and peak-resource measurement, followed by qualified preparation/native launch and the original P867/P667/order/activity/draft/reader-return/reopen/physical journey.

Frozen P867 originals remain non-runnable; retained_native.py remains untracked and unwired. No original input or historical destructive action is replayed. This unfinished acceptance does not hold independent installer, shell or UI landings.

Copilot AI balanced review requested due to automatic review settings November 1, 2026 06:53

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 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.

@trissim
trissim force-pushed the fix/p867-recorded-source branch 3 times, most recently from 30c9cad to b5da049 Compare November 1, 2026 15:26
@trissim
trissim force-pushed the fix/p867-recorded-source branch 3 times, most recently from 11cc10e to c67acb5 Compare November 1, 2026 19:34
@github-actions

github-actions Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

debt-src at 83df817, every finding:

+ CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-6_s43j_u --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/base/openhcsdev/agent-comms
= 9.128s CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-6_s43j_u --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/base/openhcsdev/agent-comms (9.128s elapsed)
+ CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-qedpcays --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/base/openhcsdev/formbridge
= 0.720s CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-qedpcays --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/base/openhcsdev/formbridge (0.720s elapsed)
+ CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-ak8o6c2n --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/base/openhcsdev/metaclass-registry
= 0.769s CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-ak8o6c2n --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/base/openhcsdev/metaclass-registry (0.769s elapsed)
+ CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-zp9_ig7c --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/base/openhcsdev/textual
= 1.147s CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-zp9_ig7c --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/base/openhcsdev/textual (1.147s elapsed)
+ CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-9352bc98 --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/base/openhcsdev/toad
= 0.967s CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-9352bc98 --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/base/openhcsdev/toad (0.967s elapsed)
+ CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-_88ltr0k --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/base/openhcsdev/ui-theme
= 0.950s CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-_88ltr0k --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/base/openhcsdev/ui-theme (0.950s elapsed)
+ CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-w175memp --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/head/openhcsdev/agent-comms
= 7.960s CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-w175memp --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/head/openhcsdev/agent-comms (7.960s elapsed)
+ CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-2kla6i6f --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/head/openhcsdev/formbridge
= 0.729s CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-2kla6i6f --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/head/openhcsdev/formbridge (0.729s elapsed)
+ CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-u03aktpw --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/head/openhcsdev/metaclass-registry
= 0.930s CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-u03aktpw --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/head/openhcsdev/metaclass-registry (0.930s elapsed)
+ CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-kz0f7a8m --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/head/openhcsdev/textual
= 1.603s CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-kz0f7a8m --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/head/openhcsdev/textual (1.603s elapsed)
+ CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-fobcyv6i --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/head/openhcsdev/toad
= 0.754s CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-fobcyv6i --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/head/openhcsdev/toad (0.754s elapsed)
+ CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-0u9y4f6_ --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/head/openhcsdev/ui-theme
= 0.747s CommandPhase: /home/runner/work/_temp/checker-venv/bin/uv build --wheel --out-dir /home/runner/work/_temp/paired-sources/metadata/metadata-0u9y4f6_ --python /home/runner/work/_temp/checker-venv/bin/python /home/runner/work/_temp/paired-sources/head/openhcsdev/ui-theme (0.747s elapsed)
grew BannedVocabulary:src/agent_comms/installer/practice.py +1
done plan phase InheritanceCleanupPhase no longer holds: src/agent_comms/installer/practice.py:152 PracticeCopy.input_readers
::warning file=src/agent_comms/typed_table.py::GodClassExcess +122 (warns, never blocks)
::warning file=src/agent_comms/coordination_database.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/coordination_tables/harness_deliveries.py::LintFindings +1 (warns, never blocks)
::warning file=src/agent_comms/installer/practice.py::LintFindings +2 (warns, never blocks)
::warning file=src/agent_comms/messages.py::LintFindings +2 (warns, never blocks)
::warning file=src/agent_comms/typed_table.py::LintFindings +3 (warns, never blocks)
grew TypeErrors:src/agent_comms/installer/practice.py +1
::warning file=src/agent_comms/installer/probes/inputs.py::Unformatted +1 (warns, never blocks)
found BannedVocabulary:src/agent_comms/installer/practice.py at src/agent_comms/installer/practice.py:197
found LintFindings:src/agent_comms/coordination_database.py at src/agent_comms/coordination_database.py:3 (I001 [*] Import block is un-sorted or un-formatted)
found LintFindings:src/agent_comms/coordination_tables/harness_deliveries.py at src/agent_comms/coordination_tables/harness_deliveries.py:36 (E501 Line too long (101 > 100))
found LintFindings:src/agent_comms/installer/practice.py at src/agent_comms/installer/practice.py:19 (E501 Line too long (101 > 100)) src/agent_comms/installer/practice.py:338 (E501 Line too long (107 > 100))
found LintFindings:src/agent_comms/messages.py at src/agent_comms/messages.py:33 (E501 Line too long (107 > 100)) src/agent_comms/messages.py:115 (E501 Line too long (106 > 100))
found LintFindings:src/agent_comms/typed_table.py at src/agent_comms/typed_table.py:2814 (E501 Line too long (101 > 100)) src/agent_comms/typed_table.py:2819 (E501 Line too long (104 > 100)) src/agent_comms/typed_table.py:2903 (E501 Line too long (106 > 100)) src/agent_comms/typed_table.py:2911 (E501 Line too long (114 > 100)) src/agent_comms/typed_table.py:2943 (E501 Line too long (104 > 100)) src/agent_comms/typed_table.py:3246 (E501 Line too long (101 > 100))
found TypeErrors:src/agent_comms/installer/practice.py at src/agent_comms/installer/practice.py:211 ("object" has no attribute "path_in"  [attr-defined])
found Unformatted:src/agent_comms/installer/probes/inputs.py at src/agent_comms/installer/probes/inputs.py:1 (Black would reformat this file)
introduced BannedVocabulary:src/agent_comms/installer/practice.py at lines [197]

@trissim
trissim force-pushed the fix/p867-recorded-source branch 7 times, most recently from 9a139d5 to 8d93042 Compare November 2, 2026 00:24
trissim added a commit that referenced this pull request Nov 2, 2026
Type the harness hook and remove its new low-level type-only/error-import detours. The unallocated SQLite ID owns numeric refusal; both annotation sorts use it. Participant reads use the existing required-row decoder and preserve domain missing-row refusal. One unrun original-ID case added.

Source-only: NRA syntax/compilation of six files, zero omissions; no Core subjects/MRO/SQL/store/pytest/provider execution. Hosted debt-src at parent is red; remaining import/native projection findings and preservation/application qualification remain open on same #3829.
trissim added a commit that referenced this pull request Nov 2, 2026
Type the harness hook and remove its new low-level type-only/error-import detours. The unallocated SQLite ID owns numeric refusal; both annotation sorts use it. Participant reads use the existing required-row decoder and preserve domain missing-row refusal. One unrun original-ID case added.

Source-only: NRA syntax/compilation of six files, zero omissions; no Core subjects/MRO/SQL/store/pytest/provider execution. Hosted debt-src at parent is red; remaining import/native projection findings and preservation/application qualification remain open on same #3829.
@trissim
trissim force-pushed the fix/p867-recorded-source branch from 81c83d3 to fafa769 Compare November 2, 2026 01:15
@github-actions

github-actions Bot commented Nov 2, 2026

Copy link
Copy Markdown

debt-tools at 451610c, every finding:

Traceback (most recent call last):
  File "/home/runner/work/agent-comms/agent-comms/tools/nra_gate.py", line 15, in <module>
    raise SystemExit(audit.gate.main(project, arguments))
                     ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/_temp/checker-venv/lib/python3.14/site-packages/nominal_refactor_advisor/audit/gate.py", line 1061, in main
    return gate(project, args.base, args.head, args.root, args.workers)
  File "/home/runner/work/_temp/checker-venv/lib/python3.14/site-packages/nominal_refactor_advisor/audit/gate.py", line 1034, in gate
    result = compare(repo, base, head, root, workers, Compared.members())
  File "/home/runner/work/_temp/checker-venv/lib/python3.14/site-packages/nominal_refactor_advisor/audit/gate.py", line 984, in compare
    for part in measure.parts(repo, base, head, paths, root)]
                ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/agent-comms/agent-comms/tools/agent_comms_project.py", line 292, in parts
    return tuple(partial(cls.findings, repo, side.ref(base, head), client, side)
           ^^^^^
  File "/home/runner/work/agent-comms/agent-comms/tools/agent_comms_project.py", line 294, in <genexpr>
    for client in cls.cut(repo, base, head, side)
                  ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/work/agent-comms/agent-comms/tools/agent_comms_project.py", line 253, in cut
    return tuple(repo.clients.at(repo.path, base, head, CutSide.materializing(side)))
                                                        ^^^^^^^^^^^^^^^^^^^^^
AttributeError: type object 'Side' has no attribute 'materializing'

trissim added a commit that referenced this pull request Nov 2, 2026
Type the harness hook and remove its new low-level type-only/error-import detours. The unallocated SQLite ID owns numeric refusal; both annotation sorts use it. Participant reads use the existing required-row decoder and preserve domain missing-row refusal. One unrun original-ID case added.

Source-only: NRA syntax/compilation of six files, zero omissions; no Core subjects/MRO/SQL/store/pytest/provider execution. Hosted debt-src at parent is red; remaining import/native projection findings and preservation/application qualification remain open on same #3829.
@trissim
trissim force-pushed the fix/p867-recorded-source branch from fafa769 to d02129a Compare November 2, 2026 01:53
trissim added a commit that referenced this pull request Nov 2, 2026
Type the harness hook and remove its new low-level type-only/error-import detours. The unallocated SQLite ID owns numeric refusal; both annotation sorts use it. Participant reads use the existing required-row decoder and preserve domain missing-row refusal. One unrun original-ID case added.

Source-only: NRA syntax/compilation of six files, zero omissions; no Core subjects/MRO/SQL/store/pytest/provider execution. Hosted debt-src at parent is red; remaining import/native projection findings and preservation/application qualification remain open on same #3829.
@trissim
trissim force-pushed the fix/p867-recorded-source branch from d02129a to 90f6d05 Compare November 2, 2026 03:58
trissim added a commit that referenced this pull request Nov 2, 2026
Type the harness hook and remove its new low-level type-only/error-import detours. The unallocated SQLite ID owns numeric refusal; both annotation sorts use it. Participant reads use the existing required-row decoder and preserve domain missing-row refusal. One unrun original-ID case added.

Source-only: NRA syntax/compilation of six files, zero omissions; no Core subjects/MRO/SQL/store/pytest/provider execution. Hosted debt-src at parent is red; remaining import/native projection findings and preservation/application qualification remain open on same #3829.
@trissim
trissim force-pushed the fix/p867-recorded-source branch from 90f6d05 to 891bc2a Compare November 2, 2026 04:29
trissim added a commit that referenced this pull request Nov 2, 2026
Type the harness hook and remove its new low-level type-only/error-import detours. The unallocated SQLite ID owns numeric refusal; both annotation sorts use it. Participant reads use the existing required-row decoder and preserve domain missing-row refusal. One unrun original-ID case added.

Source-only: NRA syntax/compilation of six files, zero omissions; no Core subjects/MRO/SQL/store/pytest/provider execution. Hosted debt-src at parent is red; remaining import/native projection findings and preservation/application qualification remain open on same #3829.
@trissim
trissim force-pushed the fix/p867-recorded-source branch from 891bc2a to b7fafd7 Compare November 2, 2026 04:56
trissim added a commit that referenced this pull request Nov 2, 2026
Type the harness hook and remove its new low-level type-only/error-import detours. The unallocated SQLite ID owns numeric refusal; both annotation sorts use it. Participant reads use the existing required-row decoder and preserve domain missing-row refusal. One unrun original-ID case added.

Source-only: NRA syntax/compilation of six files, zero omissions; no Core subjects/MRO/SQL/store/pytest/provider execution. Hosted debt-src at parent is red; remaining import/native projection findings and preservation/application qualification remain open on same #3829.
Type the harness hook and remove its new low-level type-only/error-import detours. The unallocated SQLite ID owns numeric refusal; both annotation sorts use it. Participant reads use the existing required-row decoder and preserve domain missing-row refusal. One unrun original-ID case added.

Source-only: NRA syntax/compilation of six files, zero omissions; no Core subjects/MRO/SQL/store/pytest/provider execution. Hosted debt-src at parent is red; remaining import/native projection findings and preservation/application qualification remain open on same #3829.
NRA source snapshots and compilation: five production modules plus one test, no omissions. Existing membership-query prefix is AST-identical; 85 existing annotations unchanged. Source checks only; no Core, MRO, SQL, store or test execution. Existing 29 authored scenarios still need the combined run.
The actual frozen90 integration run collected75:45pass/24fail/6setup errors. The selected-loading writer now enables the URI capability already used by reconcile; read-only ATTACH and rollback remain unchanged. Harness fixtures decode real UUID spellings; unresolved inputs receive actual registry entries. Incomplete-aggregate controls start with real owner registration and explicitly model foreign corruption by removing/restoring only the declaration-derived delete guard, keeping insertion membership intact and requiring schema before retention.

NRA parsing and compilation of three changed modules:0 omissions,rc0. No author Core imports/MRO/SQL/pytest/provider execution. The original failed run is retained; corrected behavior and the wider original-data/native/physical journey are unverified.
The75-case891bc2 integration result is70passed/5failed/rc1. Four corruption controls asked only the base coordinator schema to validate a private root; use schema_at(source.path). The context control compared a restored read with a writer object before contributor JournalProvenance restoration; compare the complete original-store resolve at the selected source/record with the complete retained resolve. All coordinates, guard restoration, refusals, digest and allocation checks remain.

Two test modules parsed and compiled through NRA, zero omissions, rc0. No product edits or author Core/SQL/pytest/provider execution. Both failed epochs retained; corrected behavior and original-data/native/physical acceptance remain unverified.
PracticeCopy pins selected source groups and drains each admitted writer separately before acquiring the original registry cut. No SQL lock is held while seeking another or the registry. Existing maintenance members own target/holder admission and unchanged-generation refusal. Source observations reject holder-side writes before accepting the materialization. Complete include and backup behavior is unchanged.

Authored13 real-owner controls for admission, each of the four source writers, original registry association, holder side effects, hold generations and failure cleanup. Three changed modules parse and compile without execution. Controlled-copy tests, resource peak, original-data/native/physical acceptance remain OPEN; no replay or live/donor mutation.
Use existing NoMaintenanceHolder.acting inside the captured registry cut. Ordinary source writes now refuse before mutation, and the private target remains writable. Restore the original claim on every exit. Before/after source observations remain an additional fence. The declared target-only SelectedInputsProbe calls the complete selected operation before first include and through context/coordinator selection. Complete reader preflight refuses oversized groups; ordinary copies and backups remain unchanged. Exercise the decoded probe request and all four stores, donor-contained destination refusal and no-copy budget refusal.

The preceding122-case execution is114passed/8failed/rc1. Seven cases met the real free-space guard on /tmp; exactly8affected cases passed in2.89s on fresh owned /home basetemp after fixing the stopped-thread oracle against unregister. Those are separate retained epochs, not122/122. Five correction modules compiled without executing subjects. New claim-scoped controls and original-data/native/physical acceptance remain OPEN.
@trissim
trissim force-pushed the fix/p867-recorded-source branch from 7cbe0cb to 7a2b1f5 Compare November 2, 2026 09:55
@trissim
trissim added this pull request to the merge queue Nov 2, 2026
Merged via the queue into main with commit 012ec8f Nov 2, 2026
9 of 10 checks passed
@trissim

trissim commented Nov 2, 2026

Copy link
Copy Markdown
Contributor Author

P1086: connect the selected request to the held worker

Checkpoint 788302a, pushed to the continuing fix/p867-recorded-source branch; local and remote heads matched. One commit, seven files, +98/-32. This continues the original capture obligation after #3829's merged source; it is not an application-completion claim.

Owner repair

Before, SelectedInputsProbe existed but no CLI/launcher request reached it inside the shared hold. upgrade also received individual options copied out of the request.

After:

  • InstallRequest.selected_inputs declares --selected-inputs as a JSON array of the existing typed probes, with empty-tuple default.
  • InstallRun.run passes the request itself to upgrade, deleting its option-by-option forwarding.
  • The existing retargeted mode.owners_stopped lifetime encloses staged.probe before member.rehearsed takes its first complete copy.
  • RehearsedUpgrade.captured_inputs retains the returned measurements. Rehearsal-only mode gains no hold; the existing selected-probe maintenance refusal remains its boundary.
  • Both direct test callers use InstallRequest. A narrow CLI/launcher regression is authored in test_retained_capture.py, not executed. Historical verification is retained in the documentation.

The operation finally has a route from its argument to its worker; previously the doorbell was installed on a wall with no door.

Actual source check

The existing installed Python3.14.8, with only this checkout's src on PYTHONPATH, decoded the actual original P1086 selected request through the CLI and launcher record. It preserved selected values, retained the empty default and round-tripped measurements. Five changed Python files parsed. rc0; capture executed:false; destination created:false.

The first check compared the CLI subclass identity with the decoded base request and failed; the corrected check compares the declaration-owned request values. Both epochs are retained:
shared-board/p1086-request-codec-{01,02}.{log,rc}; drivers .p1086-request-codec-{01,02}.py in the owned checkout. The five recorded source hashes exactly match the committed files after rebase. New regression execution and actual held-worker capture remain open.

Remaining delivery

#3829 is merged, so it cannot land this next commit. The same-PR instruction needs correction to permit a linked successor repair PR; requested in bus56986. This comment preserves the continuing evidence on #3829 meanwhile. No substitute qualification carrier was opened.

Assumed/Open: hosted checks and affected installer/rollback execution for this new source, original-data materialization/resource peaks and ordinary-reader comparisons, and the original configured-native/isolated-physical journey. The same original coordinates and3GiB selected allowance remain. No original store, uncertain input or credential was changed by the CLI/codec check.

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