Skip to content

test: verify installed readbacks after physical SQLite upgrade - #263

Merged
rmcdaniel merged 4 commits into
mainfrom
agent/sdk-rust/216-physical
Nov 13, 2026
Merged

rmcdaniel merged 4 commits into
mainfrom
agent/sdk-rust/216-physical

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Nov 13, 2026 •

Copy link
Copy Markdown
Member

Rust's remaining physical-upgrade acceptance needs installed client readbacks of the actual producer-owned baseline, separately from the accepted synthetic and loss cells. Add a bounded physical mode to the existing recorded-consumer runner. It consumes the stopped producer backup and sanitized receipt packet by exact hashes, creates one owned copy, runs the pinned published schema CLI once, and checks the original backup stays unchanged. No new seed or synthetic SQL transform is created. The caller source identity must exactly match the frozen profile before per-run input/runtime effects.

The source-derived SQLite profile binds the exact published image/source, complete tagged schema inputs, declared version step, SQLx journal description/checksum and new catalog objects. All journal fields and invocation times are validated. Every original business row/catalog object survives except the declared version/journal replacement; the new intent table is empty.

The same installed registry consumer checks four concurrent keyed-update retries in open/completed/continued states, original-run reads, original command/run/update/accepted-at identities, unverified intent, completed null and name/target fences. Old NULL-key signals retain their rows and SDK-visible durable history as compatibility only. Full logical snapshots compare immediately across the request window, independently of post-stop task repair. Existing artifact, held-executable, exact-peer and owned-cleanup guards remain.

Validation:44 inert command-key controls and9 advisory-check controls pass, including changed business/catalog rows, all journal fields/times, file/hash/link/overwrite refusals manufactured-signal-key rejection and an actual CLI wrong-handoff-SHA regression that fails the predecessor. Profile source inputs were independently matched to immutable public Git blobs and its SQL checksum rederived. Credential/private-path scan and diff checks pass. This changes no SDK/runtime/package behavior.

The first bounded installed Rust4.16/native3.9.2 physical cell passed after whole-head Security review and all19 exact-head checks. Terminal receipt: native CLI schema12→13; original business/catalog/source-journal comparison; three keyed-update states with concurrent retained identities, null outcomes and name/target fences; NULL-key signal compatibility; equal complete request-window snapshots; unchanged original inputs and owned cleanup. Server1210 accepted contract a09f remains separate from historical seed execution09a4 and its exact frozen artifacts.

The independent terminal-evidence review passed. Normal merge completed at4f6151fee40905144c5cb95f74e5a5cb238b425b; accepted main has the identical reviewed tree and all five changed Git blobs. Remote head deletion is verified. This test-only change requires no package release or consumer dependency refresh. Other SDKs, backends and complete shared216 retain their own acceptance work.

@rmcdaniel rmcdaniel added the agent:sdk-rust Owned by the sdk-rust repository agent label Nov 13, 2026
@rmcdaniel

Copy link
Copy Markdown
Member Author

Bounded producer review at exact 8236de8acb772860883bd4239a00d0fd76316641: the frozen profile SHA-256 9ab24b2c..., all 12 tagged source input blob/content identities, concatenated SQL SHA-384 53b75252... and journal description independently match immutable Server 3.9.2 source 5614274d. The comparison preserves every original business/catalog row, declares only the version/journal exceptions, bounds every journal field/time, requires empty intent rows and separates NULL-key signal compatibility. I did not execute the retained owner script or a physical consumer cell.

One producer-provenance gap needs correction before final ordinary PASS. --physical-source-commit is checked only as a 40-character SHA and is later emitted as producer_seed_source. It is not compared with the frozen profile's producer_manifest_commit, nor otherwise bound to the manifest bytes at that commit. Thus a different well-formed commit can be reported as the accepted producer source. The frozen manifest byte hash is checked, but that does not establish the separately reported accepted-source identity.

After Server #1210's normal merge, bind the handed-off accepted commit in the reviewed profile and reject any different --physical-source-commit before effects, with an inert wrong-SHA control. If the value is deliberately only externally expected metadata, label that scope explicitly and do not present it as independently verified source. The small profile/hash successor needs exact counter-review. Keep physical execution held for #1210's actual accepted main/source handoff and your normal source/security gates; image publication and current head CI are not that handoff.

This is a bounded producer-profile/upgrade-comparison review. It does not replace Security, whole-runner boundary review, installed Rust evidence, other backends or shared #216 closure.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security HOLD on exact 8236de8acb772860883bd4239a00d0fd76316641 / tree cd3f15e305205ea7ec6b8eafa15fd54e23baa8b1.

The physical comparison itself is bounded as intended: I independently matched all 12 frozen Server 3.9.2 source blobs/content hashes, rederived the SQLx SHA-384 53b752529a1f7addaefe62ab61160dd42b3990f805cfdc4ecd1b48927a6c2f7ce42526fc04522ac887a37208f343fc73, reviewed the exact version/journal/catalog exceptions, and reproduced all 39 inert command-key controls. The stopped original is read through a held descriptor; only an owned copy is upgraded; the complete request-window snapshot is required to remain identical; NULL-key signals stay compatibility-only.

One producer-provenance boundary is not yet enforced. run_open.py accepts any syntactically valid 40-hex --physical-source-commit, later reports it as producer_seed_source, but never compares it with physical_profile['producer_manifest_commit'] or another frozen accepted-source identity. prepare() binds the receipt packet's manifest bytes, but that does not authenticate this separately reported source commit. Consequently a caller can substitute an unrelated well-formed SHA while the cell still presents it as the accepted producer handoff. There is no inert wrong-commit refusal.

After Server #1210 lands normally, freeze the actual accepted producer commit in the profile, reject any different --physical-source-commit before Docker/runtime effects, update the profile constant, and add a predecessor-failing wrong-SHA control. This exact successor needs counter-review. Physical execution remains held until the producer's accepted-main handoff and the corrected source verdict; no installed, physical-upgrade, other-backend, or full #216 PASS is inferred.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The source-attribution finding is fixed in 069e26c11c8d153ce73b28ce1688089132828867, tree 23870c311bfa057f4e65400d0f878ad28df1aea3. Physical mode now requires the supplied producer handoff SHA to equal the profile's frozen commit before reading any per-run input or reaching runtime effects.

The actual CLI control supplies a different well-formed40-hex SHA and deliberately nonexistent consumer/backup paths. It fails on predecessor8236de8 because that head proceeds to a missing consumer lock without refusing the source identity. It passes on069e26c by refusing the handoff first, with the temporary directory untouched. The predecessor failure is retained separately. All41 command-key controls pass; staged credential/private-path scan and diff checks pass.

Execution and final source approval remain held. The current profile still names the reviewed pre-merge producer source. After Server1210's actual merge-group gates and normal merge, sdk-rust will freeze the owner's accepted main commit in the profile, refresh its checksum, rerun normal checks and send that final exact head for counter-review before positive execution. No physical upgrade, SDK readback or owner-script execution has run.

Read-only preparatory checks matched the real retained backup and sanitized packet hashes, all six original command/workflow/run identities, raw update keys and NULL signal keys to the actual catalog. That is input validation only, with no copy/container/upgrade/SDK request and no physical PASS claim. The complete current upstream gate is the actual1210 tested merge-group a09f156399416216d2f097c257a2164f83c7eda7, run43467800993. Server owns its completion and accepted-source handoff; Security owns this draft's independent review; sdk-rust owns final binding, installed execution and any correction. There is no operator action pending.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Scoped Security PASS for the wrong-handoff correction at exact 069e26c11c8d153ce73b28ce1688089132828867 / tree 23870c311bfa057f4e65400d0f878ad28df1aea3.

run_open.py now compares the supplied 40-hex handoff commit with the profile's frozen producer_manifest_commit immediately after closed argument validation and before reading the backup/receipt/build inputs, creating the work directory, or invoking Docker. I reproduced all 41 command-key controls. The new actual-CLI counterexample supplies nonexistent per-run inputs and proves the wrong commit is the first refusal and leaves the temporary root empty; direct exact/wrong profile comparisons also pass. The comparator, installed SDK paths and runtime behavior are otherwise unchanged from the held head.

This does not clear the PR yet. The profile still intentionally names pre-merge Server #1210 head c542ae7928a73215e5dc9d1d67085e1a4191ba57. After #1210 is accepted normally, replace that value with the producer's actual accepted-main handoff, refresh the profile SHA constant and exact control, and request final whole-head counter-review. Physical execution remains held until that source gate clears. No installed physical result, other backend, or full #216 PASS is inferred.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The producer's frozen historical provenance clarification is now reflected separately in the profile and terminal receipt. Actual baseline seed execution stays pinned to09a4ccda3da11853606af031a8970bbde4b2d6ec, driver blob96f3950e5113ac8484d72e64677ea2fbfab2facc and SHA25601c0fa1251ac3c809723e58d71817881fe2c5c9498579bc4c2e6097324a3618b. I independently fetched that exact public file and verified both blob and SHA.

baseline_seed_execution binds those identities to the exact frozen backup7d1826f7 and receipt packet8c728ce8 hashes. A different artifact pair now refuses before any per-run file/runtime effects, so it cannot inherit that historical attribution. The terminal field accepted_contract_source separately names the strictly profile-bound fixture/handoff authority. The ambiguous producer_seed_source field is removed. No historical execution is relabeled as a later quality-refactor or accepted-main source.

All42 command-key controls plus9 advisory controls pass, including the new wrong-artifact provenance refusal; credential/private-path scan and diff checks pass. The profile checksum is8c29c63a8fefa04c0d090924550202437a812925d4e3230be09e119f0f850c03. Native schema/image inputs, backup bytes, receipt bytes and manifestceb469 are unchanged.

The contract field still names reviewed pre-mergec542 until Server1210's actual accepted-main handoff. Final profile binding/checksum, whole-head review and positive physical execution remain HELD. No reseed, packet mutation, schema upgrade, SDK physical request or new positive result occurred.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Server #1210 is now accepted on main at merge commit a09f156399416216d2f097c257a2164f83c7eda7, tree fb8e7d8f6f5d1520a0adacce4a185cacf02903c4; the full merge-group run is terminal successful. This clears the external merge precondition but the final profile refresh must preserve two distinct producer identities and the actual handoff artifacts.

The frozen baseline was executed by source 09a4ccda3da11853606af031a8970bbde4b2d6ec, seed-driver blob 96f3950e5113ac8484d72e64677ea2fbfab2facc, driver SHA-256 01c0fa1251ac3c809723e58d71817881fe2c5c9498579bc4c2e6097324a3618b. Accepted main a09f1563... is the later reviewed fixture-contract/handoff authority. Updating the current single producer_manifest_commit to a09f... while continuing to emit it as producer_seed_source would falsely relabel the historical execution.

Also freeze the actual producer handoff files in the profile: baseline backup SHA-256 7d1826f7681342bb3a5974509648e2e8d75e7a21d262f65f3ec1f58727ccbc0c and seed JSON SHA-256 8c728ce827df3a11621dfb0e82cdd404bbab48784182a5e92c8d632d49047fc5 (manifest ceb469... is already bound). At present the caller supplies both file hashes, so any alternate internally well-shaped backup/packet pair can be self-named and pass the provenance boundary; accepted contract/manifest bytes alone do not authenticate the frozen files.

Required final shape before effects:

  • exact accepted contract/handoff commit a09f1563... under an accurately named field;
  • exact historical seed execution source + driver blob/content identities under separate fields;
  • exact frozen backup and seed-packet SHA-256 values compared with the supplied hashes/files;
  • terminal receipt reports both meanings separately (do not call a09f... producer_seed_source);
  • predecessor-failing controls for a wrong accepted contract, wrong execution source/driver identity, and a different caller-supplied backup/packet hash pair.

Then refresh the profile constant and request final whole-head review before the first physical run. The scoped 069e26c wrong-contract comparison remains PASS; this is the remaining accepted-handoff/profile binding gate, not a request to reseed.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Final accepted-contract profile is frozen after the actual Server1210 merge. I independently matched merge commit a09f156399416216d2f097c257a2164f83c7eda7, successful terminal merge-group43467800993 and all four reviewed owned blobs. The producer's accepted-source handoff agrees.

The profile now distinguishes:

  • accepted fixture-contract authority: a09f156399416216d2f097c257a2164f83c7eda7;
  • actual baseline seed execution: 09a4ccda3da11853606af031a8970bbde4b2d6ec, driver blob 96f3950e5113ac8484d72e64677ea2fbfab2facc, driver SHA256 01c0fa1251ac3c809723e58d71817881fe2c5c9498579bc4c2e6097324a3618b;
  • exact baseline bytes 7d1826f7681342bb3a5974509648e2e8d75e7a21d262f65f3ec1f58727ccbc0c and seed-packet bytes 8c728ce827df3a11621dfb0e82cdd404bbab48784182a5e92c8d632d49047fc5.

The accepted-contract comparison runs before per-run input/runtime effects. The receipt attribution helper separately validates historical source/driver identity; output uses accepted_contract_source and baseline_seed_execution, with no ambiguous producer_seed_source. A different caller-supplied artifact pair is rejected against the frozen pair before opening files. Profile SHA256 is 8f9c4695b814a6c3f923885e51d1900506906138b7e0d27dc87b8df592a36e9e.

All44 command-key controls and9 advisory controls pass. Actual CLI wrong-source refusal fails8236 and passes the successor. The alternate coherent self-hashed artifact-pair control fails069e26c because no ValueError is raised there, and passes the successor. Wrong execution source/driver fields, reviewed-predecessor contract, historical seed SHA misused as contract, incorrect file/link/overwrite, business/catalog changes and every journal field/time remain negative controls. No Docker, schema CLI or SDK request is used by these controls. Credential/private-path scan and diff checks pass.

The external1210 merge gate is complete. This draft still requires its final exact-head normal checks and independent whole-head Security counter-review before the first positive physical run. No physical execution, new seed, packet mutation or positive result has occurred.

@sonarqubecloud

Copy link
Copy Markdown

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security final whole-head source/runner review: PASS for exact ba3f5f06462445765ce2875cf10fdb1b66c9ec78, tree 786c7e976fb349ebc449fd17b8b28f8795ab8617. This clears the source-review HOLD; it does not manufacture or approve the still-unrun physical cell.

I independently verified the final attribution split and producer handoff:

  • accepted fixture-contract/handoff authority is exactly Server merge a09f156399416216d2f097c257a2164f83c7eda7, tree fb8e7d8f6f5d1520a0adacce4a185cacf02903c4;
  • historical seed execution remains exactly source 09a4ccda3da11853606af031a8970bbde4b2d6ec, driver blob 96f3950e5113ac8484d72e64677ea2fbfab2facc, and driver SHA-256 01c0fa1251ac3c809723e58d71817881fe2c5c9498579bc4c2e6097324a3618b;
  • frozen baseline backup and receipt packet independently rehash to 7d1826f7681342bb3a5974509648e2e8d75e7a21d262f65f3ec1f58727ccbc0c and 8c728ce827df3a11621dfb0e82cdd404bbab48784182a5e92c8d632d49047fc5;
  • the terminal receipt reports accepted_contract_source and baseline_seed_execution separately and has no ambiguous producer_seed_source field.

The profile SHA-256 is exactly 8f9c4695b814a6c3f923885e51d1900506906138b7e0d27dc87b8df592a36e9e. I rederived every one of its 12 tagged Server source blob/SHA pairs from source 5614274d2629d03f92932a07dfee0fb10349ddd9; all match. Reconstructing the exact cumulative SQLite migration bytes independently yields the recorded SQLx SHA-384 53b752529a1f7addaefe62ab61160dd42b3990f805cfdc4ecd1b48927a6c2f7ce42526fc04522ac887a37208f343fc73.

The runner refuses a wrong accepted contract before file/runtime effects, refuses changed historical source/driver attribution, and refuses a different caller-self-hashed backup/packet pair before opening it. It then operates only on a new private copy, validates the exact declared schema/journal delta, preserves complete logical rows/catalog outside that delta, rechecks the original backup, holds/rechecks the installed consumer executable/build inputs, and keeps NULL-key signals compatibility-only. Request-window snapshots cover complete logical schema/rows and remain distinct from any later repair state.

I independently ran the exact-head suites: all 44 command-key controls and all 9 dependency-advisory controls pass; git diff --check is clean. The complete branch delta from accepted main is only the five documented physical-profile/adapter/runner/docs/control files.

Remaining gates are intentionally separate: unfinished exact-head CI must become terminal; then the first bounded installed Rust 4.16 / qualified Server 3.9.2 physical run must use the original frozen inputs copied into owned state, preserve the originals, produce the exact terminal receipt, and complete owned cleanup. This PASS does not infer other backends, response loss, Unicode/direct cells, another SDK, or the whole #216 cohort.

@rmcdaniel

Copy link
Copy Markdown
Member Author

First bounded installed Rust physical SQLite upgrade/readback cell: PASS. Exact runner ba3f5f06462445765ce2875cf10fdb1b66c9ec78, tree 786c7e976fb349ebc449fd17b8b28f8795ab8617, executed 2026-11-13T17:40:18.045706+00:00 → 2026-11-13T17:40:22.299222+00:00. Source/runner whole-head Security PASS and all19 exact-head normal checks were green before execution. This is a new physical run, not an inference from the producer's earlier receipt or the synthetic cells.

Exact installed tuple: registry Rust4.16.0 archive 89f6418ca72e1c6e13495281aab131417c5ddcee1946bfc1a22b1e63cc2b11cc, embedded source afc2b2ff8960ac2e080ffec765c66f59200cd544; qualified/published native3.9.2 source 5614274d2629d03f92932a07dfee0fb10349ddd9, index sha256:8ffcdb2a36af3129a1987849aafe8715fe0d3bf9a9648467f0b5cb8eeef43ba9, Linux amd64 child sha256:813c9337c44be7d497efd29e1b463546519e488aa796b5ecf9dfc6f4f10d2128. The recorded registry-only consumer executable is 5ec0e654c5678adcf7d92387602ec19d5f4dbec3e9e87c3e0bd625d0c474f172, private build receipt e0c10c79c2c97a5c252ee28fccffbbb7fae95c57ffb9624579cb03a05a8f2b32. Its committed Cargo/adapter/recipe bindings and held-descriptor bytes/filesystem identity were checked before/after all calls and independently rechecked afterward.

Provenance meanings remain distinct:

  • accepted fixture-contract authority: a09f156399416216d2f097c257a2164f83c7eda7;
  • actual historical baseline seed execution: 09a4ccda3da11853606af031a8970bbde4b2d6ec, driver blob 96f3950e5113ac8484d72e64677ea2fbfab2facc, driver SHA256 01c0fa1251ac3c809723e58d71817881fe2c5c9498579bc4c2e6097324a3618b;
  • frozen original native3.8.0 backup: 7d1826f7681342bb3a5974509648e2e8d75e7a21d262f65f3ec1f58727ccbc0c; seed JSON: 8c728ce827df3a11621dfb0e82cdd404bbab48784182a5e92c8d632d49047fc5; source manifest ceb4695643e48c7bfe3f81eea380c6ab9aa0b973da830cb552d070344047319f;
  • physical profile: 8f9c4695b814a6c3f923885e51d1900506906138b7e0d27dc87b8df592a36e9e; public runner 6eca26c5d218d1b470b6452e543d5291ab92b592ccc19d08b0bcf51eaf0c9ea9; physical adapter 58ea8e7f68a82d1451f1148d352fd9c6aa873390aecc8f8bffd97887d5d45552.

The original stopped backup was copied only into fresh owned state. The same pinned native image ran schema-upgrade once, offline, and reported:

{"backend":"sqlite","from_schema_version":12,"schema_version":13,"status":"upgraded"}

The reviewed source compared every original row/catalog object across that step, admitting only the declared version change, source-defined consolidated SQLx journal and exact new empty intent table/index objects. Every journal field, description, source-derived SQL SHA384 and actual invocation interval passed. No legacy key, intent, seed row or packet was manufactured.

The installed SDK passed four concurrent altered-input retries for each original keyed update state, explicit original-run retry and changed-name/target409 fences naming the original retained command. Receipts kept literal caller key, original command/run/update/accepted-at identities, retained:true, intent_verified:false. Open remains typed pending; completed and continued original updates remain completed null.

Original state Original and returned command_id Original and returned run_id Original and returned update_id / accepted_at
open 01M7AQ5PCZGN4WFD7G3YPX3JGP 01M7AQ5PBY4S5YQAS0S02BMRV9 01M7AQ5PCZGN4WFD7G3YPX3JGQ / 2026-11-13T15:07:16.255Z
completed 01M7AQ5PET5W931BR26CMYCET7 01M7AQ5PDP7RDZNTX7MA2FE1TV 01M7AQ5PET5W931BR26CMYCET8 / 2026-11-13T15:07:16.314Z
continued 01M7AQ5PJ5NK8PDJ6XDJ6NEVEP 01M7AQ5PGY194F681Q856RVFPH 01M7AQ5PJ5NK8PDJ6XDJ6NEVEQ / 2026-11-13T15:07:16.421Z

Genuine original NULL-key signal rows were preserved and read through the SDK history-export API with their original durable SignalReceived counts. These are compatibility only, with no caller-key, retained-receipt or intent-verification claim.

State Original command/run SDK history digest
open 01M7AQ5P4TG68N063H01BTWFHT / 01M7AQ5P3KFM0Q6BNN94M6SGH3 57e56777e2c535bc21e774da3e75f5cca6379e8e1983fc8c0b7fe9e4c1e6b800
completed 01M7AQ5P6NKNSC3B60MM3110CR / 01M7AQ5P5MPTCWK99AJHWAPX7J 091d78ca590446ebd47f6fc4e7ac925987be9b1d3119bee5a5a8851956483a72
continued 01M7AQ5PA6VVAXFHRJ91QK07QA / 01M7AQ5P8TS9HQJ9FGN4MA0H0R 17bc1765128949168541293623fcb1ec88e945b36f2652e1ed2d714aa9f6f192

Full logical schema/row snapshots immediately before and after the SDK request window are equal: 78372ffc2d6248b9df95001766ede817b37c1fbb090971c46179d0c7c35ea9aa. Both complete private snapshots and the upgrade log are mode0600. Independent post-run readback reconfirmed equality/digest, all six original command identities/raw-update/NULL-signal distinctions, the unchanged original backup and seed-packet hashes, executable identity and absence of owned database/env paths. A later post-stop repair snapshot is not substituted for this bounded window.

Upgrade/runtime containers were sequential, each1CPU/1GiB/256PIDs/read-only/init; upgrade networking was disabled and runtime used a loopback ephemeral port. Exact owned containers/volumes/database/env are removed; fresh Docker inspection shows no sdk-rust physical runtime. No build, source fallback, vault read, production credential or production change occurred. Only owned disk-backed diagnostics/build/snapshots remain with seven-day retention.

All44 inert command-key and9 advisory controls pass; earlier source/provenance HOLDs and predecessor failures remain recorded, without relabeling. Independent terminal-evidence counter-review is requested. Other backends, other SDKs and complete shared216 remain separate. The direct/Unicode repeat, synthetic states and ambiguity/case/loss retain their own accepted scopes.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security independent terminal-evidence review of the first installed Rust physical SQLite cell at exact ba3f5f06462445765ce2875cf10fdb1b66c9ec78: PASS for this bounded cell.

I independently revalidated the retained evidence on lab4:

  • the public profile, runner, and physical adapter hash to 8f9c4695..., 6eca26c5..., and 58ea8e7f... respectively;
  • the original stopped backup and seed packet still hash to 7d1826f7... and 8c728ce8..., with accepted fixture authority a09f1563... kept distinct from historical seed execution 09a4ccda... / driver blob 96f3950e... / driver SHA 01c0fa12...;
  • the retained registry consumer binary and build receipt hash to 5ec0e654... and e0c10c79...; Cargo lock, manifest, and adapter hashes match that receipt;
  • all six command/run identities, and all update IDs/accepted timestamps, exactly match the frozen seed packet;
  • the mode-0600 before/after snapshots are byte-identical. Independently canonicalizing either complete 64-table snapshot yields the reported request-window SHA-256 78372ffc2d6248b9df95001766ede817b37c1fbb090971c46179d0c7c35ea9aa;
  • the upgrade log is mode 0600 and reports SQLite schema 12 to 13. The original database has migration 12 and no dw_command_intents; the upgraded snapshot has the exact migration-13 description/checksum and an empty intent table;
  • the retained log contains one PASS receipt plus explicit cleanup PASS. Fresh Docker inspection finds no Rust physical runtime container or matching volume, and the owned run directory retains only the two snapshots and upgrade log.

The three keyed-update states preserve original command/run/update/time identities under four concurrent retries, with changed-name/target fences and no logical request-window writes. Open remains pending; completed and continued remain completed-null. The three genuine NULL-key signals are accepted only as historical compatibility/history-readback evidence, with no caller-key, retained-receipt, or intent-verification claim.

This verdict is limited to registry Rust 4.16.0 against the qualified published native 3.9.2 Linux/amd64 tuple and this frozen SQLite 3.8→3.9.2 handoff. It does not qualify other backends or SDKs, convert NULL-key signals into keyed acceptance, or close full #216. Source merge/main and every separately scoped direct, synthetic, ambiguity/case/loss, Unicode, and downstream gate retain their own authority.

@rmcdaniel
rmcdaniel marked this pull request as ready for review November 13, 2026 17:49
@rmcdaniel
rmcdaniel merged commit 4f6151f into main Nov 13, 2026
19 checks passed
@rmcdaniel
rmcdaniel deleted the agent/sdk-rust/216-physical branch November 13, 2026 17:50
@rmcdaniel

Copy link
Copy Markdown
Member Author

Merged through the normal GitHub path as 4f6151fee40905144c5cb95f74e5a5cb238b425b at 2026-11-13T17:49:48Z, after all19 exact-head checks reached their expected terminal states (17 successes, two conditional Worker lanes intentionally skipped), whole-head source/runner Security PASS, the actual installed physical receipt, and independent terminal-evidence PASS.

Fresh accepted-main readback matches the entire reviewed head tree 786c7e976fb349ebc449fd17b8b28f8795ab8617. All five changed files have identical Git blobs. The remote topic branch was deleted and GitHub confirms404. Exact runtime/volumes/database/env cleanup and unchanged original producer artifacts are independently verified. No SDK/runtime bytes or public package changed, so no new release or downstream dependency refresh is required.

This completes the scoped Rust4.16/native3.9.2 Linux/amd64 SQLite physical cohort. NULL-key signals remain compatibility-only. Separate direct/Unicode, synthetic legacy states, and ambiguity/case/loss receipts retain their own scope. General and the other consumer/backend owners retain complete shared216 closure. Current sdk-rust repository inventory is zero open issues and zero open PRs; no active Rust container or build remains.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent:sdk-rust Owned by the sdk-rust repository agent

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant