022 - Shared result delivery: deferred refinements and testing Started 24 October 2026. Running implementation note. Purpose Deliver the working shared service and NMRNet clean cut first. Audit against U01-U27 and A01-A11 as implementation proceeds, recording non-blocking imperfections and most additional testing here for later. These entries are not release gates. Result ownership, scientific correctness and basic operation remain part of the implementation. Magnet follow-up owner, 26 October 2026 Magnet's single maintained follow-up record is magnet-deploy/notes/041_deferred_20261026.txt. It consolidates the accepted START limit and nonblocking source/qualification follow-ups. Historical Magnet observations below remain evidence, not a parallel work queue or new delivery gates. Keep current Magnet follow-up status in that owning record. Follow-up status, 25 October 2026 (local date) The user subsequently authorized closing the five concrete follow-ups: supported test commands/retired consumers, the observed authentication refusal, idle relay recovery, SDK guidance, and native SQLite diagnostics. Historical findings below remain evidence; this status and the qualification update at the end supersede their original deferral where a repair is proved. Broader load, UID/engine and failure-timing matrices remain deferred. User direction, 24 October 2026 "No need, just a clean cut." "Laser-focus on the end-state now and speed-run there. Audit vs U/A as go you but record imperfections in a new running note, deferred for later." "Not html. .txt note" "Minimal testing; defer most testing (via note)" The clean cut supersedes note021's earlier legacy-state transfer plan. Remove displaced delivery code and obsolete storage without an importer, compatibility path or archive. Report any actual unfinished API Attempts at cutover; do not invent results or rerun predictions. Preserve unrelated services, private inputs and intentional qualification evidence. References Design: docs/notes/021_compose_runner_architecture_20261023.html#shared-delivery Criteria: docs/notes/013_sibling_practices_20261016.html Source baseline: fb997a5 (START checkpoint integration); executor changes are still uncommitted at the start of this note. Record later revisions per entry. Deferred refinements 1. More specific SQLite diagnostics (U23). At fb997a5, provider_core/diagnostics.py::failure_evidence exposes native OSError errno but not SQLite sqlite_errorcode/sqlite_errorname. Add bounded native SQLite code/name to the existing protected renderer when useful. Keep arbitrary SQLite exception text, queries and scientific bodies out of logs. This is diagnostic enrichment, not a new error framework. 2. Generic build-error wording (U17/U23). Review the inherited "inference" prefix in generic delivery-image build errors. The actual build output already reaches the operator; wording can be improved later without changing native command ownership. Deferred testing Reuse the existing evidence recorded in note021. Do not rerun it merely because the end-to-end integration is newer. Run only essential implementation checks and a minimal API smoke for the installed/deployed target now. Record exactly what those checks establish and what remains untested. 3. Extended installed/deployed recovery exercises (U07/U08/U27, A01/A11). Defer additional process-kill/lost-reply timings, repeated restart/reconnect sequences, and combinations of storage failure, API outage and cleanup failure. Existing local focused evidence does not prove every deployed failure scenario; state that limit at handoff. 4. Wider multi-provider and resource testing (U13/U14/U27). Defer load/stress/soak runs, many-provider capacity/fairness combinations and an expanded UID/GID/engine matrix. Implement the actual scoped grants and bounded capacity now; a broad matrix is not needed to finish this cut. 5. Broad regression and repeated scientific runs (U26, A01/A04). Defer broad unrelated suites, exhaustive branch combinations and repeat model/oracle/capacity runs. Preserve existing numerical evidence and report the narrow scope of any new API smoke. Do not weaken scientific acceptance rules or tolerances to avoid a failure. Updates Append concrete findings with their source revision, U/A criterion, practical consequence and deferred follow-up. Remove or mark resolved entries when the work is actually done. Missing core implementation belongs on the active path, not in this deferred list. 6. Port remaining historical executor/store/publication test expectations (U07/U08/U26/U27, A01/A04/A11). Current new executor qualification uses the compact store and recording relay ports; 31 focused delivery unit checks pass. Older tests still assert full durable prepared/result/suppressed records, file rename counts and producer terminal publication. Port their useful stop/observation/entry/condition race controls to the new boundaries later. Do not call those broad lanes qualified by the focused checks, and do not add a legacy store adapter to make them pass. Controller/recovery/service and operational cutover are required current work, not deferred implementation. No scientific benchmark was repeated. 7. Controller comments after removal of direct publication (U17/U22). Worktree after 376c97a, reviewed 24 October at 20:35 UTC: packages/provider-core/src/provider_core/controller.py::operation still describes a publication owner, and ::_retire_session still says publication can only follow retirement. The new controller has no producer publisher; approved-result handoff and native cleanup are independent. Update these comments to match that ownership and ordering. This is wording follow-up, not a reason to delay the functional cutover or add tests. 8. Waiting for a temporarily unavailable relay during idle admission (U27/A11). Worktree after 376c97a, reviewed 24 October at 20:40 UTC: nmrnet_provider/admission.py::require_admission_ready calls delivery.pending, while service.py::_until_api_available currently retries only ApiFailure. A local DeliveryUnavailable during this read can end the producer run rather than wait in process. Docker restart supplies the present recovery path. Consider paced, stop-responsive local read recovery later, preserving the original transport owner. The executor already retries its unchanged result handoff; this entry concerns idle admission, not an accepted result's delivery. 9. Read-only deployment command receipts (U13/U17/U23/U27, A05/A11). No longer deferred: direct user correction on 25 October (local date). The new launcher retained operation/query inspection, intent and log dumps, then gated later commands on a success marker. The user rejected both this pollution and a proposed temporary handoff-file substitute. Remove the extra Engine-observation checker/file-handoff path and its receipt gates. Use the maintained Docker/Compose owner directly, with normal bounded output and Docker-backed logs. Actual configuration/secrets and required queue/control databases remain. Do not invent another validator or recovery framework. 10. Producer checkpoint mount (U13/U14/U27). Resolved in 673e8fc. The initial unpublished 2d12648 used a private, bounded deployment bind for control metadata, without scientific result bodies. The supervisor's "queue/control volumes" wording imposed an unnecessary gate on the urgent cut: the shared result queue requires a Docker volume; the producer already had managed storage. A correction to defer conversion arrived after the worker had completed the named control-volume change and started matching cached builds. Keep that completed version; no reversal or further build cycle was requested. The control volume is provider-only, initialized by the finite ownership helper without SQLite/data access. No local result-file or archive path is reinstated. 11. Legacy file-store/publication test ports after the operational clean cut. The producer now uses compact checkpoints and the separate delivery queue. Removed operational owners: attempt_files.py, attempt_store.py, publication.py, nmrnet_provider/recovery.py and recovery_capture.py; stopped-store host commands and their qualification lane are retired. No importer or compatibility store is supplied. Existing legacy tests/fakes still importing those owners require a later intent-preserving port or deletion: test_attempt_store.py, test_attempt_history.py, test_terminal_store.py, test_publication.py, test_nmrnet_recovery.py, test_nmrnet_recovery_capture.py, plus execution, controller and recovery fixtures/assertions tied to full stored records. Their old tests are not evidence that the checkpoint/relay cutover is qualified. 12. Detailed SDK lifecycle reference (U17/U22). At 15f06db, docs/provider-core/index.html still has sections describing the removed AttemptStore/TerminalPublisher interfaces and full retained records. Port that detailed reference to checkpoint/relay ownership later. The operator guide, docs/provider.html, has been updated for the clean cut. Use the actual provider_core checkpoint/delivery/recovery modules and note021 for the new lifecycle contract; the old reference is not qualification of it. 13. Obsolete Engine inspection and file-handoff qualification consumers. Direct Compose deployment no longer uses finalize/manifest/inventory/admit/ network helper commands or inventory_containers/admit_container. Port or remove the old assertions in these exact files later: tests/integration/provider_core/normative/test_provider_deployment.py, tests/integration/provider_core/normative/test_provider_compose.py, tests/integration/provider_core/adversarial/test_provider_compose.py, and tests/integration/provider_runtime/runner_crash_admission.py. The last remains selected by tools/compose_qualification.sh (reader-crash admission capture). Do not treat these deferred checker consumers as qualification of the new direct Compose workflow. No replacement checker or gate is introduced. 14. Current delivery-unit aggregate still includes superseded fixtures. At fe71ac7, the held-discard witness passes (exclusive writer, wrong binding/ digest and pending refusal, exact held deletion and payload removal). The maintained delivery unit aggregate runs 22 tests with four errors: the two delivery_execution modules import tests/fakes/execution.py's removed AttemptStore, and two delivery_config tests use a binding fixture without the now-required socket_group_id. Port those fixtures separately; do not relax live configuration or reintroduce the deleted file store. Evidence: /tmp/nmrnet-held-discard-focused.log. This aggregate is not claimed green. 15. Qualification-client authentication-window diagnosis. The one local smoke Job at cb31917 was delivered successfully, but its first public readback stopped on GET29 with authentication_window_closed (HTTP401). The original Job then passed GET-only readback using JOB_RECEIPT at54fc49f; no Job/model/scientific operation was repeated. The cause is recorded below. Qualification update 1 / Native SQLite diagnostics: resolved in e4c0d76. The protected renderer emits native sqlite_errorcode and sqlite_errorname, including extended codes, without SQL, filenames or exception text. Real in-memory SQLite failures prove preserved identity and privacy; manually raised errors do not invent missing metadata. Reference: https://docs.python.org/3.12/library/sqlite3.html#sqlite3.Error . 15 / Authentication refusal and historical readback: resolved in deefb3f and 0561b52f. This was a concurrent replay-retention watermark race, not an old signature. The API raises ReplayAdmissionExpired when the original authenticated_at is at or before pruned_through. A correlated retention event advanced the watermark while the request was in flight. No API clock, watermark or nonce protection was changed. Sources inspected at API 86121d6cf0a3a17c02863577e8b37024fd69516b: nmr_api/security/persistence/adapters.py:181-186; nmr_api/security/problems.py:826-835; notes/066_replay_ledger_watermark_retention_20260726.txt:21-81. The qualification client now refreshes only GET signatures for the exact authenticated-environment authentication_window_closed refusal, at most three times under its existing process deadline. Other authentication failures and mutations are not retried. Every received refusal remains in protected evidence. The maintained client lane passes 44 tests, including real Bash coordinator checks for original-versus-current identity selection and paired-input refusal. An actual four-GET readback of original Job [Job reference omitted] passed with paired JOB_RECEIPT and JOB_IDENTITY, without DEPLOYMENT or a current producer lookup. Original identity bytes and oracle stayed unchanged. Result SHA-256 remained d9794208571eb728be539136a3527c6d7890c6d97d5c57c68582022f590d55d3. Protected evidence: .work/qualification/shared-delivery-readback-original-context-0561b52 No new Job, model call or scientific run was made for this repair. 8 / Idle relay recovery: implemented in a639ac4; deployed proof follows the final image refresh. The existing idle read loop retires its original DeliveryClient, requires that owner's retry permission, waits with capped/stop-responsive backoff, then rereads a complete admission view. Startup checks context before observations and honors stop after an original inventory read before any new native effects. The installed real-Unix receiving controls prove missing socket recovery, stop, permanent refusal and failed-original-retirement handling; the complete supported service lane passes 57 tests. The native missing-file error was retained in ConnectError.__context__, not __cause__: locked httpcore1.0.9 maps it in _backends/anyio.py:125-143 and _exceptions.py:8-14, then its connection pool clears the explicit cause at _async/connection_pool.py:248-256. The exact native ENOENT grant preserves explicit TLS/permission causes and unsettled-I/O refusals. https://github.com/encode/httpcore/blob/1.0.9/httpcore/_async/connection_pool.py#L248-L256 /tmp/nmrnet-idle-delivery-four-proof.log The initial failure-graph observation was tool stdout, not a retained logfile. Additional preserved-error repair: d3c6e78 gives session retirement sole ownership of its cancellation evidence, including cancellation of its original wait. Outer cleanup loops no longer append that same observation again. Exact parent/child cause and original-task controls pass in the complete 104-case prepared lane; no generic error deduplication or new lifetime registry was introduced. Follow-up closure evidence, 25 October 2026 UTC Source: 4d14863 (qualification and SDK), b3dcaeb (fresh-install native locks). These resolutions supersede the original deferrals in entries 1, 6, 7, 8, 11, 12 and 15. Broader timing/load/UID/engine matrices remain deferred. 6 / 11 / Supported test consumers: 3d9fe9a ports useful lifecycle assertions to CheckpointStore, DeliveryQueue/Service, the executor and direct deployment owners. Removed tests belonged to deliberately deleted full-record AttemptStore, AttemptFiles, producer TerminalPublisher and stopped-recovery capture interfaces. Their obsolete file rename/archive/history semantics have no successor; scope, single-writer, durability, cancellation, conditions, suppression and immutable handoff controls are preserved at the current owners. No legacy adapter or selector narrowing hides these removed interfaces. Scientific fixtures, upstream source, expected outputs and numerical tolerances were not changed. Focused contained results (complete named lanes, not a claim about test/all): service 57; process 67 (including receiving SQLite native code/name); prepared identity 109; prepared integration 48; recovery unit 78 and signed-TLS recovery 1; delivery unit 36 and connected delivery 28; START unit 8 and connected START 1; API 54; admission 25; runtime 16; application admission 10; Upload session 39; interpreter 15; installation contract 13; private recipe/API-only capture 20; launcher selectors 7; deployment 25; documentation 3; API client 44. The 109 prepared cases supersede the earlier 104-case count above. 7 / 12 / SDK and source guidance: 4d14863 rewrites docs/provider-core/index.html and tests.html around checkpoint/relay ownership. Admission and durable entry precede science; approved handoff and native retirement are independent. API receipt, relay enqueue acknowledgement and native cleanup remain separate facts. Suppression requires explicit retained disposition; only absent relay rows fall through to API observation. Controller comments now describe these same owners. The historical readback guide names paired JOB_RECEIPT and JOB_IDENTITY. Qualification glue: isolated recipes use the production source/Compose owners, private queue/IPC/control namespaces and API-only delivery secrets. Private configuration is sealed like ordinary configuration. Finite helper names retain cleanup authority on failure; metadata helper retirement precedes daemon restore. Ordinary deployment has no Engine-observation receipt or success-marker gate. A legacy worker-retirement receipt remains confined to the opt-in qualification peer's cleanup/evidence ownership; it is not an ordinary deployment handoff. The Bash deployment entrypoint explicitly exits after command completion, so a later checkout-file append cannot execute in a still-open interpreter. Fresh-install correction: initial private recovery at 4d14863 stopped before science because runner._lease required .owner-session.lock, absent from a fresh native runtime directory. Existing live deployments had inherited these files. b3dcaeb creates missing caller-owned mode0600 locks exclusively under private prediction/reader/smiles directories, preserving existing lock inode and mode. Symlink locks are refused before helper effects. Full deployment lane: 25 pass, /tmp/nmrnet-final-lock-install-tests.log. This host-only correction required no application-image rebuild. Original failed fixture evidence remains at /tmp/nmrnet-compose-lAa5hJbO; its containers were stopped, with private volumes retained rather than inferring an empty queue after a failed qualification. 8 / Actual isolated recovery: maintained target make test/integration/provider/deployment/recovery WHEELHOUSE=/path/to/wheelhouse passed at b3dcaeb, /tmp/nmrnet-final-private-recovery-lock-fixed.log, private evidence /tmp/nmrnet-compose-ySe66an5. The signed peer counted: START=0; COMPLETE=0; model=0; download=0; Hello=13. Idle relay down/up emitted api_delivery_retry then api_delivery_recovered; producer container ID/PID/restart0 and queue device/inode stayed unchanged. The controlled reader supervisor crash confirmed old-child exit via pidfd, new generation/operation, zero scientific input bytes, fresh scratch and released successor scratch. Final queue inspection: held=[], outstanding_items=0. Successful private queue/IPC/control volumes were then removed by their owner. This proves the local deployed recovery path with signed peers, not a live external-model prediction, public API outage or broad failure-timing matrix. Image builds (offline selected wheelhouses, matching application source4d14863): Local controller 39711be0366936b37512b5e310859f7ff29989bb7f65772797166a59a7e07662 delivery e09f0285a80de3f384662b221cc5c903112b18acf19353cc6163ad25998d1233 RDKit 19fcb0e2d7f3bc05b71f81ba4d825eb9db0bde8a31a0bf177c6d79c4ef482685 inference ffca2dc7a281982aa06f8d0c02f1fe3176030ea125e4699029c32de1068e0c8a Remote controller a7e0ac23468e773b63bb953fd1f547cc20b5477cc86c60aa6e474b18d30aeb86 delivery 69fd25b2c46101eac52f780cf2789c2aa7663519f58ee69855fd07445d74203e RDKit 1f71442fb2f2eb52f3ac48bd672c3229812082b4efc155048f2543a82454ed45 inference 035c96e7fb2ee1303f511b1ede1a700de8a0c9419f0251a4f62fcc93f3b81579 Full IDs have sha256: prefix. Build logs on each host: /tmp/nmrnet-final-{controller,delivery,geometry,inference}-build.log Deployment refresh used maintained down/install/up owners, retaining persistent volumes and existing credentials; no new Job, model call or scientific run. The explicit end-state rule is two independent choices: setup/acquisition uses an explicitly selected interface; deployment also uses explicitly selected interfaces. They may be the same or different. The mistake was conflating those choices, not requiring interface binding. Runtime must not inherit NETWORK_INTERFACE or select a default-route fallback. Supervisor backlog, 25 October 2026: residue closure Removed unused tools/deployment_helper_grants.sh (333 lines) and tools/deployment_runtime_recovery.sh (186 lines). Source/caller searches and independent containment review found no active consumers; historical artifact source manifests remain historical evidence, unchanged. No replacement layer. The failed lAa5hJbO fixture's exact Compose ownership identified private project nmrnet-qualification-c58a8cb23bc3fdb30d72ea11. The installed delivery_discard owner, run offline in delivery image e09f0285 with original daemon.toml and only its queue mounted, reported provider:example / https://127.0.0.1:43385: held=[], outstanding_items=0. Engine inspection found no containers referencing its three exact queue/IPC/control volumes; all three were then removed explicitly. No production volume or payload was accessed or removed. This supersedes the intentional failed-fixture retention described above. U13/U14/A05/A10 reviewed. 2 / Shared build-error wording: resolved at the existing native renderer in tools/inference_native.sh. Caller-owned operation names identify delivery or controller builds; the shared helper no longer adds an incorrect "inference" prefix, and cleanup refers to the native client. Internal variable names, operation reasons, native/cancellation statuses, retained output and budgets are unchanged. Receiving regression first failed on the old wording, then passed with the original native exit7 and BUILD_CAUSE retained in capped evidence. Contained wheelhouse lane52 and image command lane15 pass: /tmp/nmrnet-shared-build-wording-{red,green}.log /tmp/nmrnet-shared-image-context.log Independent U17/U23/A03/A05 review found no additional issue. These checks do not claim the entire test_inference_native signal matrix was rerun. Installed delivery backlog qualification, 25 October 2026 Maintained command (contained, installed wheel, local signed TLS peers only): make test/integration/provider-core/delivery WHEELHOUSE=/path/to/wheelhouse Result: 30 tests pass in3.979s; /tmp/nmrnet-installed-queue-recovery-first.log. New source witnesses in packages/provider-core/tests/integration/delivery/ normative/test_delivery_process.py: test_lost_api_ack_then_actual_daemon_restart_replays_one_queued_outcome test_two_bindings_isolate_grants_and_publish_while_one_api_is_unavailable They reuse existing delivery_main, DeliveryConfigFiles, TLS/UnixProxy peers, credential/signature fixtures, actual IPC clients and the original-child reaper. No new runtime hook, harness, schema, recovery registry or service mode. The first witness hands off one synthetic COMPLETE containing fixed result bytes. The peer records its effect before losing the API acknowledgement. After delivery_retry, SIGKILL terminates the original installed daemon; its actual process handle is awaited. Queue reopen finds the identical pending outcome. A second daemon starts from unchanged configuration and the same queue, without another producer submit. It sends identical bytes with a fresh signature, receives a matching replayed receipt, and deletes the row. The scripted peer records exactly one effect for two received requests. Final SIGTERM settles the second process. This is real local process/queue/transport recovery; the peer's effect counter is not proof of deployed API transaction semantics or science. The second witness configures TWO bindings in ONE installed daemon, with distinct keys, origins and sockets. A valid correlated503 keeps A pending while B receives its matching receipt and its row disappears. Every received signature is checked against that binding's actual key. B's scope submitted through A's socket is refused by the IPC server with both inventories/API calls unchanged. Restoring A's peer permits automatic delivery in the same daemon, without producer replay or manual repair; scripted accepted effects are A1/B1. Private payload markers are absent from retained notices. These are synthetic FAIL outcomes, not inferred scientific results. No real API Job, model call, input acquisition or prediction. U/A review of these bounded changes: U01-U06, A02/A04/A06-A08: scientific implementation, numerical fixtures, units, reference pins and expected outputs unchanged; no new accuracy claim. U07/U11/U25/U26, A01/A09: actual installed CLI/IPC/TLS/SQLite receiving boundaries; focused lanes only, no inference from health to scientific proof. U08-U10/U13/U14: enqueue and API receipts distinguished; exact pending bytes, scoped keys/IPC, original process cleanup and finite waits retain ownership. U12/U15-U18/U20-U22, A05: existing Make lane and owners; literal selectors unchanged; no parallel schema/framework or compatibility; note records scope. U19/U23/U24, A03/A10: concise rationale/evidence in place, safe diagnostic causes retained, no payload dumps or obsolete helper retention. U27/A11: abrupt-death recovery and independent progress are behavioral proofs, not merely safe stopping or transparent reporting. Independent containment and receiving-boundary reviews found no material issue. Wider load/soak, UID/engine combinations and failure-timing matrices remain explicitly deferred unless a concrete finding requires them. Existing separate recipe/Engine proofs own Docker mount isolation; these CLI tests do not add that claim. Producer-IPC lost acknowledgements remain separately covered, not joined into a new all-faults scenario. Live deployments are unchanged by this slice. Leftover-code pass: actual START-envelope boundary repair Moving the maximum-START control from the retired full-record format to the current checkpoint owner exposed a real restore bug. A valid65536-byte START was encoded compactly, but producer_checkpoint reconstructed it with default JSON separator whitespace before applying the same65536-byte bound. Both the pending and acknowledged restore paths now use the START encoder's compact separators. No limits or fixture sizes increased. The existing maximum case now round-trips pending, acknowledged and entered checkpoints at that exact boundary. Original full core discovery427 failed on this single error; repaired discovery passes (final428 includes the preserved ProtectedEvidence refusal control). /tmp/nmrnet-legacy-core-unit.log /tmp/nmrnet-legacy-core-unit-fixed.log /tmp/nmrnet-legacy-core-unit-final.log Leftover-code pass: retired persistence graph and operator residue Caller tracing and independent AST comparison identified the detached full-record terminal-history graph in attempt_record.py. Removed terminal pending/confirmed/ held/read-required/read-observed/suppressed wrappers, their full-record codecs, transition dispatcher and obsolete capacity reservations. Thirteen current START, admission, scope, phase, operation and evidence definitions remain unchanged, including the private START codec used by producer_checkpoint. Execution failure projection now uses its actual None/validated AcknowledgedAttempt directly, without the removed polymorphic extractor. Deleted uncalled fakes/attempt_history.py; kept fakes/attempt_store.py because its pure START/admission factories are used. Tests for the deleted terminal-history SUT were retired. Useful exact START bytes, closed schemas, scopes, bounds, entry identity and no-effects controls were ported to the current START/checkpoint owners; current checkpoint tests replace the old terminal-record selector in supported lanes. Empty, mutable and oversized ProtectedEvidence refusal controls survive in adversarial/test_prepared_identity. Config tests now spy on actual process.NativeAttemptFactory/CheckpointStore and exercise current CheckpointLimits/direct-source capture, without resurrecting removed history fields or snapshot handoffs. Negative scientific payload-file assertions remain. The process no longer emits an unconsumed admitted marker or gates startup on obsolete admission/result markers; private directory admission and actual ProcessStatus readiness remain. _publish remains the active immutable execution.json/case-evidence publisher with permission-failure controls. Active SDK and provider guidance describe current checkpoint and relay acceptance. Surviving contained checks: full core unit428 in12.099s: /tmp/nmrnet-legacy-core-unit-final.log config24: /tmp/nmrnet-legacy-config-ports.log process67: /tmp/nmrnet-legacy-process.log prepared integration48: /tmp/nmrnet-legacy-prepared-integration.log repository/core49: /tmp/nmrnet-legacy-selector-privacy.log documentation3: /tmp/nmrnet-legacy-docs.log Repository visibility exposed a missing operator-root classification: secrets remain private names-only metadata, never content grants. Public configuration is individually mounted from Git's tracked files, excluding adjacent private settings; a bounded launcher canary proves this. The obsolete empty deployment/ directory was removed. The public root rule still rejects omitted source roots. No blanket config grant, secret mount, weakened limit or new inventory framework. Operator residue cleanup preserved original evidence instead of duplicate inputs. Initial bulk retirement was rejected by automatic approval review; no effect occurred. A safer per-project inspection established exact exited container ownership and loopback-only synthetic API origins. The one CREATED object was an exact never-started API proxy (PID0/zero start timestamp). Maintained scoped down commands without --volumes then retired all63 old qualification containers. Final Engine inspection showed no qualification labels or config consumers. The y24 receipt was reconciled against its exact absent Engine object: failed Compose create api (missing runtime/route-api bind), not an API Job operation. No approval issue remains unresolved. Removed public/private config pairs, after verifying no unique scientific data inside and preserving original /tmp stores, .work packets and tracked artifacts: qualification-2f2eLDIu, qualification-7XzpKjhV, qualification-NXMfvchO, qualification-SkBASeQ7, qualification-TYONthLi, qualification-fFwYkZk3, qualification-gxvn4S3r, qualification-lAa5hJbO, qualification-lNFcYd5w, qualification-recovery-7VHMqw2B, qualification-recovery-RyUkJm42, qualification-y24e9GZ4, qualification-ySe66an5, qualification-ynuKx7wK. No production profile, shared volume, original scientific/control store or reviewed numerical receipt was deleted. Independent U/A reviews found the one missing evidence-refusal test above, restored before final qualification; the completed source and grant reviews found no further actionable issue. Final finite-host helper cut Actual API qualification and prediction-recovery callers use only canonical path/disjoint/IPv4 admission, initialize and finite create/command/remove helpers. Removed seven detached functions from tools/provider.sh: target, adopt_plan, observe, begin_drain, drain, routes and proxy_arguments; also their unreachable controller-running state and old recovery-result advice. Initialize's error fallback, exact finite handles, controller-before-API retirement, native-retirement gates, Docker config cleanup and lock release remain. Actual callers replace the bootstrap trap before creating components. Corresponding retired-workflow tests were removed; live finite launch/posture/log/uncertain-CID/exact-retirement and canonical path/disjoint/direct-entry refusal tests remain. Contained host11 and actual deployment/API-coordinator25 pass: /tmp/nmrnet-finite-host-cleanup-tests.log /tmp/nmrnet-finite-host-callers.log The final checkpoint docstring now describes current START/admission ownership, without referring to deleted terminal encoders. No extra behavioral test matrix was needed for that comment. Final image identities and deployment follow below. Final deployed cleanup closure, 25 October 2026 08:50UTC Application source7db62d6 includes the final provenance-comment correction. The initial7569bf5 image batch was superseded before deployment because that comment changes captured package bytes. Cached builds refreshed all four images on each host from7db62d6; no scientific qualification was repeated. Final image IDs (sha256: prefix): Local controller 2a5397916d6430950eee925cfd3c880249d3ceb06af097fb1477489766c684de delivery 9c8fcfe4d5dc7ccfb224ca62816e5da8d86a7b5f42a7844bda7e94afbdb48284 RDKit 3303a798ccc0ad2249743ffb53d3c1d3d5f9630f61607ef870976ff6ca6d7b60 inference 96e8e1154881e4a83eb9adfb73c8efe0d6cc3bbd9151e518aba7b1c36c29c250 Remote controller 566a06d64db7ef4858b4e8adde9de665057bd3cb712051434983a56a226a9785 delivery 90ad4a01b2d76f0e4db9aec569825a2b71496c05d967bd20b6000c96b37af3d5 RDKit e306be07daf4bccab45fc98de66d2e9424ef14e63ac7b63c8079320c53613a74 inference c71b5370bbfd091ee3872b8946161dd66a76e7a3c7b88765e215aa22d3bfd5c0 Build logs on each host: /tmp/nmrnet-clean-final-{controller,delivery,geometry,inference}-build.log. Maintained down/install/up owners preserved actual config, credentials and queue/ control volumes. Both pre-rollout metadata checks were queue0/checkpoints0. Local generation-9wb4AhCR and remote generation-5nhGRV7b have seven healthy roles; controller and shared daemon restart0/OOMfalse. Post-rollout queue0/checkpoints0 on both hosts. A read-only import probe in EACH actual running controller also confirms the retired terminal-history interfaces/codecs are absent from its installed package. Evidence: local /tmp/nmrnet-clean-local-rollout.log remote /tmp/nmrnet-clean-remote-rollout.log Docker Engine status/inspect and read-only SQLite counts, observed08:50UTC. Independent source/caller/test/grant reviews found no further actionable issue. Explicit setup/deployment interfaces remain separate and unchanged. No real Job, LLM call, prediction, numerical oracle regeneration or scientific tolerance change occurred. Historical scientific artifacts and original stores remain. Second-pass receiving correction: stopped-component log failure The full provider unit aggregate exposed an old fake Engine without the actual logs-before-rm phase. Its recording surface now models bounded logs and retains stop/inspect/logs/rm ordering and cancellation controls. The new logs-cancellation case also revealed that worker_container_retire's log-failure diagnostic omitted the original native status/cancellation/retirement facts. It now reports those owned facts consistently with worker_retirement_command, still returns2 and withholds rm for unresolved log delivery. A native exit143 reports cancellation0; actual SIGTERM reports the owned cancellation143. Failed-log CID and original receipts remain retained, with no automatic cleanup retry. Provider aggregate267 passes: /tmp/nmrnet-second-provider-with-log-refusal.log. No new error framework. Second-pass setup correction provider/prepare now invokes the existing delivery/image/build owner after the controller image, using its already selected shared wheelhouse. The preparation sequence previously stopped after three images while deployment required four. No new selector, cache, interface default or build implementation was added. Real-Make fixtures preserve literal cache/interface forwarding, extraction reuse, failure short-circuit and cooperative cancellation. Whole supported operator-input lane31 passes: /tmp/nmrnet-second-operator-inputs-fixed.log. Acquisition and explicit deployment interfaces remain independent. Operator guidance now names all four images and current readiness/log behavior. Second broader reachability pass (baseline e52b59e) Removed only caller-proven detached graphs: - NMRNetSession's optional None-to-direct-Job-JSON binding and submission wrapper. Session now requires an explicit preparation owner. Production assemble_attempt already supplies InputPreparation; scientific session tests inject a small local CoordinateJsonPreparation fixture using unchanged prepare_json/OutputSettings. The synthetic OOM probe has its own fixed-RAW preparation port, with no test module imported by production. Wrapper-only input tests were retired; current uploaded JSON, direct_coordinate_json result support, parser/unit/source-order, output tiers, native handle identity and no-effects controls remain. - predict.read_request_bytes (old standalone stream path; no supported CLI) and xyz.prepare_pasted_xyz. Scientific fixture calls use prepare_xyz directly. The existing pasted owner reads all XYZ frames and rejects multiplicity; it was already correct and was not changed. The actual parser retains exact-limit/ over-limit admission and float32/order proofs. Real request-digest tests remain. - Uncalled require_delivery_inputs, tests-only require_provider_inputs wrapper, and compose_reply_loss.sh plus its self-test. Its sole label-control test now invokes actual require_core_inputs. Fixed-kind image dispatch remains. - Ten dead Make captures and corresponding raw unexports: API_ROUTE, CONFIG, HOST_DRAIN_SECONDS, INSTALLATION_ROOT, LOCAL_PEERS, MAPPED_ADDRESSES, MAPPED_INTERFACE, MAXIMUM_STARTUP_BYTES, RECORD_SHA256, SOURCE_ROOT. Every indirect alias loop was checked; all supported literal/origin/override/unexport controls remain. INTERPRETER_CONFIG is a distinct live selector and remains. The supported operator fixture still copied removed provider_recovery.sh; its copy and the obsolete stopped-recovery-target test were retired. No adapter or selector narrowing was used. The provider aggregate's current image/Make tests required the existing Git-capable checker and read-only Makefile/build-lock inputs. Its full pattern is unchanged. Deleted geometry/retirement probe imports had hidden the live geometry-worker module: removed only old stall-marker tests, ported independent PDB-B/MOL2 expected-coordinate checks to actual prepared_reply, and retained cross-record refusal and all current wire/process tests. No expected fixture, model byte, numerical algorithm, coordinate unit or tolerance changed. The synthetic OOM and native-factory fixtures also still named TerminalRecovery; they now use the actual delivery observer and preserve allocation/role-transfer/ primary+cleanup controls. Runtime code was not changed to satisfy retired APIs. Retained with explicit reason: read_upload_file is a documented reusable SDK immutable-file boundary, with child/consumer proofs; lack of an NMRNet caller alone is not evidence it is dead. Core/transport/public streaming contracts and all scientific/readback/failure packets remain. Only the three wholly empty, unreferenced .work/provider-deployments/operation.{Otu0Ma88,ZfcwfUVM,cLZOlz5W} trees and empty parent were removed. Prepared models remain mounted by production; image records, original failure receipts and qualification packets were kept. Active guidance now describes current status readiness, bounded Docker logs and explicit setup/deployment selections; historical notes remain dated history. Affected contained results before final source freeze: provider aggregate267: /tmp/nmrnet-second-provider-with-log-refusal.log prediction input45: /tmp/nmrnet-second-prediction-input.log operator inputs31: /tmp/nmrnet-second-operator-inputs-fixed.log image owners15 / deployment24: /tmp/nmrnet-second-{image-owners,deployment}.log session/core integration48: /tmp/nmrnet-second-session-preparation.log configured runtime16: /tmp/nmrnet-second-runtime.log pasted7 / Upload39: /tmp/nmrnet-second-{pasted-owner,upload-owner}.log runner15 / native factory14: /tmp/nmrnet-second-{runner-current,native-factory}.log source/repository49 / docs3: /tmp/nmrnet-second-{repo-source,docs}.log Independent source/caller/scientific/authority U/A reviews found no remaining signal after these corrections. Scientific algorithms and fixture data remain unchanged; isolated input, original-handle retirement, identity and public versus protected evidence obligations stay at their current owners. No compatibility layer, general validation framework, extra role registry or new scientific run. Final synthetic-probe and deployed-image evidence follows after image refresh. Second-pass final deployed closure, 25 October 2026 09:31UTC Frozen application/source batchdb92409, after b87ffd9 (retirement diagnostic) and4188c70 (complete setup sequence). All four images were built once per host from this freeze. Synthetic qualification used the maintained target: make test/integration/provider/prediction-recovery WHEELHOUSE=/path/to/wheelhouse It passed with exactly one kernel OOM and one replacement in the same runner, identical frozen request bytes, and confirmed original/successor retirement. The two synthetic protocol executions were original OOM failure plus successor; no released model, API transaction or interpreter call was involved. Evidence root: .work/qualification/prediction-recovery-Md71A6RN/owner /tmp/nmrnet-second-synthetic-recovery.log output/summary.json SHA-256: bc874e51a1e3dbe02cbe35be2dd1ee10bad9a2f7b0088279b6f0d7cec147418f Scientific request SHA-256: 6130e1aa9512882c3feeed9d62122170676198c34f3051a203e8f6de50074182 Original/successor return codes were -9/-15 after the successful synthetic reply. Final image IDs (sha256: prefix): Local controller 929e16bbe5724a574dd716f0d35bd20c7ee17dd65fcb6a556ad3f8d928481543 delivery b8f827565e52a6f6e08df7bf99c77bd3a5228f2da7fdff71660567f210889929 RDKit 81d2c418ba6ef01132d2d9a5a16e3427357ab68d3dc346637fa598d1596e4ec9 inference 2326b55876d5182fbcd3ab31cb3c175eb2c1270ff2e7a77b3693ff32d3e59251 Remote controller b9da3e1759dbd2b232c2bf10b983556efbafb20829f644fe7268222cbacfdcd7 delivery f3418f91c332152b288e7d267d40fa6bc37d0f9ba62ee2a16edc871c070988c5 RDKit 0e7819aa805b6777cd1bc22112f6403fe35c41e850dfc0b93a665cc7d401fb22 inference 462356a016bf4258f1c693a158ab87559fa3c3dc6fad8f412eb9abbe4b39ac19 Build logs per host: /tmp/nmrnet-second-{controller,delivery,geometry,inference}-build.log. Maintained down/install/up targets preserved credentials, explicit deployment routes and persistent queue/control volumes. Before and after refresh, both hosts had queue0/checkpoints0. Local generation-hFNzDYXV and remote generation-u5jaM2Ml have seven healthy roles; controller/shared daemon restart0/OOMfalse. A read-only probe inside EACH actual running controller verifies mandatory preparation and absence of prepare_direct_job, prepare_pasted_xyz and read_request_bytes. /tmp/nmrnet-second-local-rollout.log remote /tmp/nmrnet-second-remote-rollout.log No real scientific Job, numerical fixture regeneration or LLM call was used. Independent final source/caller/scientific/authority reviews found no remaining signal in the scoped pass. Historical scientific and failure evidence remains. Third architectural reachability pass (baseline d99162f) No additional detached application runtime graph was found. Fixed-kind dynamic build/capture dispatch, public SDK streaming-file APIs, current checkpoint/input fixtures and historical scientific references remain live and were kept. Test prologues now name their actual checkpoint/input responsibilities without renaming heavily consumed fixture modules or changing their assertions. Removed tests/integration/provider_core/resource_evidence.py: its measured-resource qualification consumers were deleted with the older lifecycle. Its only remaining callers checked homemade dictionaries in two tests, not kernel observations. Removed that helper/resource_facts and those two self-only methods. The authored H128/C128 capacity_manifest, require_capacity_inputs and all altered-size, coordinate, producer-key and order refusals remain unchanged. Current actual kernel OOM qualification and runtime resource owners remain separate. The exact source-inventory declaration now reviews all six current Dockerfiles and eight support files (including the delivery runtime inspector), rather than only the initial three images. The existing native-images lane runs the complete inventory module. Discovery equality and generic hardening assertions are intact: no unknown-file waiver, weakened digest/user/frontend policy or source omission. The source comment distinguishes checked-in image files from generated runtime Compose recipes. Removed only unused _NMR_API_ROOT from the policy checker; retained its explicitly documented Django migration grammar fixtures for donor parity. They cannot exempt the inventoried local provider/tool sources; changing that separately documented policy was unnecessary for this bounded pass. Active guidance now names mandatory preparation and durable relay acceptance, independent native cleanup and publisher availability without promising an API FAIL receipt before unrelated work can proceed within capacity. Duplicate-cache cleanup, after consumer and byte checks: .work/wheelhouse/cpu:59 wheels plus unicore-source.tar.gz; .work/provider-core/wheelhouse:11 wheels; .work/preparation/wheelhouse:3 wheels. All73 wheels had identical size/SHA-256 counterparts in the operator-selected shared wheelhouse. Immediately before removal, cmp verified every wheel and the archive against that shared cache. The archive matches Uni-Core-ace6fae1c8479a9751f2bb1e1d6e4047427bc134.tar.gz (tracked source declaration). No current source, deployment, process or Engine mount referenced the old pools. Removed only these accounted duplicates, their derived .complete markers and empty pool directories/empty .work/wheelhouse parent. Shared cache unchanged. Kept .work/provider/interpreters and interpreter-imports: Gemma/Mistral credentials have no identical deployment copies, and imported documents retain source/ adaptation provenance. Being unmounted is not sufficient reason to destroy them. No credential values were printed. Original failed-capture/inspection receipts, scientific/readback packets, image records and currently mounted prepared models remain; there was no wholesale .work purge or new retention registry. Focused contained checks: native-images/source inventory65 in168.150s: /tmp/nmrnet-third-source-inventory.log current lifecycle/input fixtures14: /tmp/nmrnet-third-capacity-inputs.log documentation3: /tmp/nmrnet-third-docs.log Independent source/caller/authority/scientific U/A reviews found no remaining signal in this scope. No application source, model, numeric expectation, tolerance, dependency lock, runtime configuration or image changed. No build, service restart, API Job, LLM request or scientific execution was needed. 2026-10-25 fourth cross-surface review: current owners, not just reachability ------------------------------------------------------------------------- User requested continued review/revision until a complete pass finds no new signal. Three independent read-only lenses covered operator/Make callers, scientific source/result/provenance, and containment/cleanup/diagnostic effects; the supervisor also reviewed actual current consumers. Fixed verified findings: * tools/compose_deployment.sh::finish now keeps the original native diagnostic separate from helper-cleanup diagnostics; cleanup cannot replace the original status or silently erase its cause. The recording native owner now faithfully resets its diagnostic, and the receiving test covers cleanup success/failure. * tools/provider_api_qualification.sh::api_witness_finish retires its final helper before the final local-client hold. api_witness_stop_deployment preserves causes and status for down/inspection/removal/helper/restore failures; an unretired inspection cannot trigger a new removal or publisher restart. * tools/compose_qualification.sh::compose_witness_finish reports original and subsequent owned diagnostics before another native call can reset them. Every subsequent helper/log/peer effect requires the preceding client to have retired. Unconfirmed retirement retains the original host process/dependencies. Receiving tests hold the original process group, verify one dispatch and no later cleanup, and reap only the synthetic test group. No Engine/science is granted to these controls. The existing finite qualification owner remains; no new journal or lifecycle framework was added. * tools/provider_deployment.py::freeze_deployment no longer accepts or rewrites a private store_root. That value merely redirected a named volume's container target; it did not select host storage. The public runtime still owns its fixed /srv/nmrnet/attempts container path, with existing mount-mask/disjoint checks. client_inputs protects its actual deployment directory, not a fictional host checkpoint directory. Staging/peer callers and examples use the same contract; an obsolete private override is refused, and the emitted checkpoint mount is tested. The reusable runtime store_root API is unchanged. * docs/provider.html distinguishes retained OUTPUT configuration/receipts from producer checkpoints and outstanding bodies in named Docker volumes. Both must be preserved. session.py's comment now correctly names the checkpointed identity digest, not persisted identity content. Numerical policy and data are unchanged. * Removed the unreachable donor-only Django migration exemption and its three self-only fixtures from test_runtime_policy_posture.py. The third pass retained them for bounded donor parity; the user's expanded current-consumer review now justifies this explicit local adaptation. No inventoried path could enter the branch. Actual detection, escape, privacy and repository scan remain unchanged; quality-ports.html records the adaptation. This does not claim the separately deferred global policy campaign is green. Source commits: e87e570: unreachable donor migration exemption; 4952eb1: actual captured application source and cleanup/storage corrections; 0603e7e: remaining host-only private publisher restoration diagnostics/tests. Focused contained evidence (no real Job, LLM/model request or scientific run): deployment28 in5.561s: /tmp/nmrnet-fourth-deployment-final.log Compose20 in2.829s: /tmp/nmrnet-fourth-compose-final.log staged inputs13 in1.645s: /tmp/nmrnet-fourth-stage-final.log detector/escape/privacy4: /tmp/nmrnet-fourth-runtime-detector.log documentation3: /tmp/nmrnet-fourth-docs.log The detector controls used the existing offline checker image with the repository native-client/isolation owners; the known deferred global scan was not run. Independent final repeats and supervisor current-source review found no new material signal in these reviewed dimensions. This is scoped review evidence, not a claim that every possible defect or deferred policy has been eliminated. Refreshed exactly the three images whose declared inputs include session.py; geometry/inference currently capture the whole provider source tree. Delivery inputs did not change, so its image was reused. No image-layout refactor or scientific requalification was needed for these nonnumerical changes. local controller: sha256:61268a0f6737a2496e196e527601da8604ad29c15bd90eda91cab6b485de5c12 local RDKit: sha256:18da2d555504e18e9a8e70b86bf952ff6d7985cccca5de51b2779908340059e2 local inference: sha256:caf48adbebce1db88ac86cb0b93962dcf7a4f7348a741d6d4a77b6ac09dc7baa remote controller: sha256:a672e41f99332bda40cf0116149c7e0c0efcd2180633d1b23fc8298deb962869 remote RDKit: sha256:1d2e338196059002cf4b1c32c727eced2b35dd29959f318ef466e00c223ad80d remote inference: sha256:b3aa73b2cbe2e2b829a872d4eb911ec3160a93ea7e723f2f5108c51ac1a83b23 Build receipts: /tmp/nmrnet-fourth-{local,remote}-images.log. Removed only the obsolete store_root entry from each private deployment.toml; credentials, scopes and independently selected routes/interfaces stayed intact. Before maintained down/install/up, both hosts had0producer checkpoints and 0outstanding delivery bodies. No volumes were removed. Old/new recipe projections confirm identical producer/IPC volume names across the mount-target correction. Local generation9ursk3HX and remote generationEEtiyfJI each have all7roles healthy, restart0/OOMfalse; their shared delivery daemon is running restart0/OOMfalse with its unchanged image. Post-rollout reads again find both durable stores empty. These observations prove rollout/retained-state health, not a new prediction or external model/API/GUI scientific qualification. Original scientific evidence and the no-repeat-science constraint remain intact. 2026-10-25 wide QA/QC after offering deployment (baseline ec3efc8) ----------------------------------------------------------------- Reviewed user-facing scientific claims and instructions, input/result ownership, error and cleanup propagation, retries and outstanding delivery, literal operator choices, effective local container grants, and active-source legacy reachability. The relevant criteria include U01-U05, U07-U08, U12-U19, U22-U27 and A01-A11. The review applied the text, code-beauty, helpful-error, container, self-explanatory, authority/proof, anti-slop and end-state lenses sequentially. A review of selected owners is not exhaustive execution of every repository path. Two confirmed issues were corrected in the working tree: 1. Generated disconnected SMILES lacked a reader-facing relative-pose caveat (U02/U17/U23/U24, A04/A06/A07). An isolated call of generate_conformers for C.C, requested_count=1, seed=42, max_iterations=100, timeout_seconds=10, using geometry image 3ad400f0c9018f12ed26156a7387ac74e9ba8107d8866860c9ef66098ec8eab4, returned component_count=2, embedFragmentsSeparately=true and a carbon-carbon distance of 0.0 angstrom. No prediction model or API Job was invoked. Source authorities: RDKit Release_2026_09_1, https://github.com/rdkit/rdkit/blob/Release_2026_09_1/Code/GraphMol/DistGeomHelpers/Embedder.h#L166 https://github.com/rdkit/rdkit/blob/Release_2026_09_1/Code/GraphMol/DistGeomHelpers/Embedder.h#L232-L234 https://www.rdkit.org/docs/source/rdkit.Chem.rdDistGeom.html#rdkit.Chem.rdDistGeom.EmbedParameters.embedFragmentsSeparately Local source at ec3efc8: nmrnet_provider/smiles.py::_embed/_conformer and nmrnet_inference/model.py::compose_net_input. The generated result limits and main guide now disclose separate embedding, possible overlap, unqualified relative placement and the combined geometric context used for prediction. Low already retains component count and topology provenance; all result tiers retain the limitation. No new input restriction, repair, per-component run, schema or warning framework was introduced. No shift-error magnitude was measured. Guide actions distinguish an isolated component from a supplied combined arrangement. Independent source review and blind application checks confirmed the main distinctions. 2. Provider installation suggested replacing shared delivery with only the newly installed profile (U12/U17/U24/U27, A05/A11). The CLI now requests the complete profile list, explicitly including every other shared-service profile, and presents the single-profile command only for that condition. The private qualification branch is unchanged. No registry, discovery or gate was added. A blind reader adding beta to alpha/gamma selected alpha beta gamma. Focused evidence: Result owner: 48 checks passed; /tmp/nmrnet-fragment-limits-green.log. Deployment launcher: 28 checks passed; /tmp/nmrnet-complete-profiles-hint.log. Operator selectors: 31 checks passed; /tmp/nmrnet-wide-qa-operator-inputs.log. Documentation was checked before edits and rechecked after them using its maintained target; /tmp/nmrnet-wide-qa-documentation-final.log. Existing source/diff checks also passed. No new model/oracle run, API Job, broad regression, soak or failure-timing matrix was run. Local Engine inspection found all seven provider roles healthy, restart_count=0, nonroot and unprivileged with read-only roots, dropped capabilities and bounded Docker non-blocking json-file logs. Compute/controller roles had network none; network proxies retained their deliberate host-network exceptions. Only owned control/IPC paths were writable mounts. This is observed configuration and health, not a new numerical, egress-denial or recovery qualification. A repeat review of the changes found no additional actionable signal. Previously deferred load, UID/engine, extended failure timing and global policy work remains separate; this pass does not claim those campaigns are green. These changes are uncommitted and were not built, published or deployed in this QA pass. Both live provider deployments remain on ec3efc8; release needs the affected image refresh for result.py plus normal maintained deployment. The short offering is unchanged. 2026-10-25 second wide QA/QC: receiving diagnostics and live availability ----------------------------------------------------------------------- Baseline: ec3efc8 plus the preceding uncommitted QA fixes. Reviewed additional record-reader paths, exact Upload membership/grant/transfer ownership, held-item operations, model-input conversion, exception relationships and actual receiving surfaces. Previously reviewed input/verbosity, delivery ownership, containment, operator selection and pending-copy changes were rechecked where affected. Confirmed corrections (U17/U23/U24/U27, A03/A08/A11): * Upload store-response refusal used HttpResponse/HttpFileResponse as an UploadFailed.cause. Core's exception traversal then raised AttributeError on __traceback__, obscuring the original rejection. An isolated offline probe of the installed controller reproduced this with HTTP200/missing required headers. UploadFailed now retains response separately; all three header/status/encoding refusal branches use it. The protected projection includes only status and the existing admitted request ID. Real exception causes, grant-issued truth, interruption and cleanup evidence are unchanged. No arbitrary header/body/file hash enters the diagnostic. There is no generic renderer fallback or new gate. * Held-result inspection/discard hid the specific wrong-schema/unmatched-binding reasons because generic ValueError text is deliberately not rendered. Those two known pre-queue refusals now use argparse.error with operation-aware fixed text. The real CLI regression checks useful reason, status2, empty stdout, private-value/path nondisclosure and absence of a created queue directory. Focused contained evidence: Receiving process/reports68 passed in42.597s: /tmp/nmrnet-upload-response-green.log Upload ownership/acquisition59 passed in1.497s: /tmp/nmrnet-upload-response-acquisition.log Delivery/actual CLI31 passed in4.992s after final wording correction: /tmp/nmrnet-delivery-discard-reasons-final.log The receiving test covers byte/file response ports and status/header/encoding refusals through actual acquisition and the existing stderr renderer. Its API and store ports are synthetic; it does not create a remote Job or run inference. No additional model, dependency, source inventory or broad policy run was needed. Diff checks and the final owner/caller/privacy review found no further actionable source issue in this pass. Earlier pending QA corrections remain intact. Earlier deferred stress, extended failure-timing and global policy work remains unqualified. No new durable file outside this existing note was introduced. 2026-10-25 third wide QA/QC: repeat review, no new source finding -------------------------------------------------------------- Reviewed the pending corrections again and extended inspection into synchronous worker framing, descriptor handoff, private-file I/O settlement, supplied MOL projection, interface-bound DNS, proxy half-close behavior and HTTP connection retirement. A separate read-only worker review traced output precision, provenance, capacity and source-record correspondence across supplied/generated inputs and low/medium/max output. No additional reproducible source defect was identified. Distinct transport, file, publication and scientific ownership checks were retained; no extra validation, fallback, abstraction or cosmetic rewrite was introduced. The independent result review ran the maintained result lane:48checks passed in 0.423s; /tmp/nmrnet-wideqa-result-readonly.log. This is receiving-contract evidence, not a new native geometry, model, API or numerical qualification. The previous Upload and held-result corrections remain present with their prior evidence; those unaffected suites were not repeated in this pass. The reviewed source pass finished without a new actionable finding. This does not qualify the previously deferred stress, timing, engine/UID, global-policy or external-network campaigns. All four earlier QA fixes remain uncommitted and undeployed; live deployments were not modified and still use ec3efc8. No service restart, model run, Job creation, packet capture or dependency acquisition occurred. 2026-10-25 release of the four QA corrections -------------------------------------------- The user authorized committing and deploying the pending fixes locally and in production. The final source review also aligned tools/provider_image.sh's next-action profile-list example with the corrected installation guidance; shared delivery always needs the complete profile list. Shell syntax and diff checks passed. Existing focused evidence above remains applicable; no dependency or scientific policy changed. Offline builds must refresh all four runtime images per host because core diagnostics changed. Deployment preserves existing bindings, volumes, credentials, model data and independently selected runtime routes. The intermittent production DNS issue remains separately reported and is not addressed by changing configuration during this release. Record final rollout evidence below. QA release completed, 25 October 2026 ------------------------------------ Code revision: 536c9ebd3cc17d3a6c9236fb516bef3e4da83abc, pushed to main. All four runtime images rebuilt offline on each host using its existing selected shared wheelhouse. Old services remained online until those builds completed. Maintained down/install/up commands preserved the original queue/control/IPC volumes, sole binding on each host, credentials, private configuration and routes. Private configuration/key fingerprints matched before/after replacement; no fingerprint or key value is published here. Both hosts had 0 producer checkpoints and 0 outstanding delivery entries before and after rollout. No volume was removed. Local generation: wKYUCO5u; production generation: XQ0CAaOQ. All seven roles per host are healthy, restart_count=0 and OOMKilled=false; shared delivery is running with a healthy API proxy. Installed-code smoke checks on both hosts confirm the UploadFailed.response separation, safe HTTP status/request-ID rendering without private body/header leakage, and the generated-fragment scientific limitation. The synthetic smoke loads no model and creates no Job. Signed USER GET /v1/providers returned HTTP 200 on both hosts, with the exact unchanged 821-character offering and exact provider description. Offering SHA-256: 40b5e04428d517583f1cfca4e291b5f3b38c287d74ef5a0e29cd10e22ecd721d. Accepted Hello after each new container start: local: 2026-10-25T20:20:03.208746Z production: 2026-10-25T20:20:24.777938Z GitHub Pages reported status built for 536c9eb at 2026-10-25T20:17:55Z, publishing the revised scientific guide. These observations prove installed code, health, state preservation and API-visible registration; they are not new prediction, accuracy, end-to-end Job or outage-recovery qualification. Actual image identities (each sha256): local controller: 1fef0207376ca74609f0e3b8ca3a774250b93e6559fc0d8ea374b90f3d376601 local geometry: ac0341a910612eab99a4954706e8c2c03f3efdde750fff245ee15cb790c79ec2 local prediction: 56717406c4f2ef06b80dcbcdaf9af8a09a514e2110301290bf3a8c967201bd70 local delivery: b10d8a3b5be580c9b849f67a42d0518309704c6bac55f0ea41e7d1d8a407c262 production controller: 3cce1bcb94b06fa4041c0f32112e6b718f96882f56142943926e678c9c9119d1 production geometry: 21163a955f816da887b5839a62f8368e8cf10b094ce94efdde4cee1f7a6d1dbf production prediction: 16a244bd0f1cf4e1ed55183a56cc8c7d2ceb6e0278d319797ffc9a65d0dac279 production delivery: 5b688885c0112f103c0508cdc8fe50f6f2638a207131025d724630394dbfe5e4 Build logs per host: /tmp/nmrnet-qa-{controller,geometry,prediction,delivery}-build.log. Rollout logs: local /tmp/nmrnet-qa-local-rollout.log; production /tmp/nmrnet-qa-rollout.log. The underlying intermittent production DNS issue remains unresolved. No resolver, interface, network policy, Job, model, GUI or dependency-acquisition change was made. The four QA fixes are now deployed; earlier pending-status paragraphs are historical audit observations, superseded by this release record. 26 October 2026 - Shared terminal-delivery resilience Source baseline: 0956108. This slice changes shared provider-core delivery; it does not implement or deploy Magnet's handoff integration. Review found that a queued terminal request could remain paused until manual restart after a rate limit or an intermittent authentication refusal. The existing API owner now permits exact COMPLETE/FAIL replay after same-origin HTTP 429, including edge-generated HTML, or an admitted, correlated, recognised 401/403 problem. Explicit topology mismatch, TLS/trust errors, unknown auth responses, unsettled I/O and cleanup failure do not gain replay permission. START, progress, read and Hello permissions remain unchanged. Auth refusals do not prove temporary failure: existing credential/clock evidence is retained, and the authorization diagnostic now directs the operator to API permissions. ApiFailure.retry_after_seconds reads one server delay from the original received head; this advice grants no operation permission. DeliveryWorker adds its existing positive jittered, capped exponential backoff after the server floor. A valid server delay can exceed the local cap. Stop interrupts the wait. An independent review caught and corrected the initial max(jitter, server floor) formula, which synchronized providers whenever the server delay dominated. Ownership remains unchanged: one shared queue retains the exact terminal body until a matching API receipt. Local durable acceptance is not remote completion. No producer payload spool, archive, store, generic proxy, retry framework or dependency was added. Other bindings can continue while one waits. The declared Python base was restored through packages/base-images/python/download to run the existing offline lanes; its pinned digest and dependencies did not change. Focused installed evidence, each command run once after the final code change: make test/unit/provider-core/api WHEELHOUSE=: 57 passed. make test/integration/provider-core/delivery WHEELHOUSE=: 33 passed. Logs: /tmp/shared-delivery-api-check.log and /tmp/shared-delivery-integration-check.log. make test/repository/documentation: 3 passed; /tmp/shared-delivery-doc-check.log. The TLS API peer exercises 429, then authentication_failed, then a matching receipt in one worker: identical bodies and distinct valid signatures are observed. A second case keeps a 120-second Retry-After plus positive jitter above the local cap, lets another binding publish, and stops promptly while retaining the original pending bytes. Existing reply-loss, receipt mismatch, topology, storage and retirement cases also pass. This is installed local API/IPC/storage evidence, not a production outage or scientific-model run. U/A review focused on U07/U08/U11, U13/U14, U16/U17/U19/U22/U23, U25-U27, A01/A03/A05/A10/A11: operation-specific retry ownership, honest uncertain effects, bounded pacing, safe existing Docker diagnostics, no duplicate store, and automatic resumption after routine refusal. Scientific implementations, input semantics, model data, numerical tolerances and Make selectors did not change. A context-isolated operator reader understood the local-acceptance/API receipt distinction and required credential/clock/permissions investigation; source-aware review found the revised provider guidance matched the code. Sources: provider_core/api.py::ProviderAPI.can_replay_terminal and ApiFailure.retry_after_seconds; provider_core/delivery_worker.py::_deliver; tests/unit/adversarial/test_api_unavailability.py and tests/integration/delivery/normative/test_delivery_worker.py, all beneath packages/provider-core. HTTP semantics: https://www.rfc-editor.org/rfc/rfc6585.html#section-4 and https://www.rfc-editor.org/rfc/rfc9110.html#section-10.2.3. No deployment, live Job, model execution or credential/network-policy change was performed. Magnet's handoff and relay-aware reconciliation remain separate work with its owner; shared API retry support alone does not complete that work. 26 October 2026 - Shared-tools extraction in progress The maintainer requested end-to-end completion with continuous U/A QA/QC. Shared package, delivery/proxy implementation, GitHub release and host deployment are owned by nmr-provider-tools. NMRNet and Magnet own their consumers. Donor source is d09b77b. Agreed release is provider-core 0.2.0 from GitHub, with wheel, normal source distribution, runtime installation lock and exact artifact hashes. The flat wheelhouse is a cache, not the release origin. Consumers must not build core, resolve the private package through PyPI, import sibling source or retain a second shared implementation. The source distribution supplies only needed generic test fakes inside isolated consumer-test temporary storage. One operator-owned neutral binding TOML supplies API identity/trust, API route and IPC grants to host delivery and provider deployment. NMRNet derives its frozen API/socket settings from the selected binding. Its IPC intake/retirement budgets, interpreter/store routes and execution checkpoints retain their own local owners. No generated handoff descriptor or payload spool is introduced. Current edits replace the local core builder in the NMRNet installer and three image recipes/capture plans with the released installation lock. The exact lock and artifact pins arrived from the shared owner's qualified candidate below. The full extraction is not yet committed or deployed. Remaining work includes release acquisition, proxy/deployment/test wiring, displaced-copy removal, focused checks and coordinated operational qualification. The shared owner's advisory refresh identified certifi 2026.7.22 as affected and selected 2026.10.23. NMRNet's inference lock now explicitly uses the reviewed replacement wheel/sdist hashes, preserving numerical/model pins and its own setuptools 84.0.0. Shared builder setuptools is a separate build-only concern. PyPI evidence: https://pypi.org/pypi/certifi/2026.10.23/json, checked by the shared owner at 2026-10-26T08:37:21.346511+00:00, vulnerabilities empty. Only certifi's entry is refreshed in the inference advisory record; other entries retain the old baseline date. Inference lock SHA256 is 59883cfc16a56f0532385254920011918db3c3eab70ccd9b39747030bbaf3906. Preparation audits found hidden consumer dependencies on the in-tree core in ordinary unit lanes and on 22 reusable fake modules in consumer integration tests. These are actual extraction dependencies, not a reason to rerun models or copy permanent fake owners. The Git-dependent provider aggregate must retain its NMRNet checker image; the shared production image does not gain Git merely to support these tests. Further source review during the extraction (not runtime qualification): NMRNet's provider startup now has a finite checkpoint initializer rather than depending on shared delivery to initialize producer storage. Its root helper gets only the selected named volume, read-only implementation and CHOWN; an already matching UID/GID/0700 root is untouched, and unexpected nonempty data is refused. External volume naming/labels remain unchanged. Independent review caught an uninitialized temporary-query variable in EXIT cleanup that could have accepted an inherited filename as deletion authority. It is now explicitly initialized before traps, like the existing Docker-client resource owner. Magnet's source reviews caught (a) an intake pause checked before awaited input and readiness, allowing another lane to block delivery before START without a final admission check, and (b) retry-cutoff/control-error exits losing the pending Attempt/digest and last IPC cause. The owner moved the gate immediately before the first START, outside its exact replay campaign, and is preserving bounded unresolved-handoff evidence. Its adapter also stopped suppressing the original IPC cause; safe core diagnostics now retain native errno/cleanup facts. A secondary diagnostic failure must remain secondary, with the IPC refusal as explicit cause. These are concrete U08/U14/U23/U27/A11 findings, not evidence that composed/installed handoff or production recovery already works. Qualified shared candidate received: source a30ec2ff8f5cf60a464408309781b7996baae3ad, provider_core-0.2.0-py3-none-any.whl SHA256 248bcf548a25edb5d3b349e024d2ace568a5f9d2d01474d7a14d2c1d0394f6da, installation lock 7833b80727a2c58699f9f0a60ec5c8fc39b5d3aa9a3903c14ffdd757911fd671, source distribution 7b872bc620f56417eeab7fb0a16b5dd30e200dd18f8c3a84074996860c8d9867. Exact owner release record and installation lock are copied under requirements; wheel and source were admitted additively into the selected flat wheelhouse. GitHub publication has not yet been verified. Shared image supplied by its owner: sha256:077a09997c8975e42afe3022a3d252f466e61bb7c038712c28313670155c3889. NMRNet contained checks against that installed wheel: configuration 24 passed, composition/scientific-fixture wiring 18 passed, configured runtime 16 passed, idle delivery retry 4 passed. Image capture/offline installer tests 11 passed. These are focused consumer boundaries; no scientific models or live API Jobs were run and none establishes deployment or remote receipt. The first broader service selection was interrupted after repeated setup errors rather than run to completion. Cause found in the test fixture: explicit socket GID differed from its daemon's actual GID and its shared-group parent was mode 0700 instead of 0710. Fixture grants now match the real daemon. The interrupted container was confirmed absent. The larger service selection remains unqualified until rerun if warranted; runtime and narrow delivery checks above passed afterward. Source audit removed stale generic-test patterns from consumer selectors and moved shared-only deployment qualification out of the consumer test modules. The consumer support runner selects only 25 approved regular fake/package files from the hash-pinned source archive, changes into the isolated test tree before fake subprocesses start, and discovers no generic core cases. Core is installed offline into a pip-free ephemeral environment; no sibling or donor core source enters its import path. Normal source-unit lanes use the same released wheel. 26 October 2026 - Released artifacts and consumer image boundary Shared release v0.2.0 is public at https://github.com/numpde/nmr-provider-tools/releases/tag/v0.2.0. Anonymous acquisition through the maintained packages/provider-core/wheelhouse target, an explicitly selected interface and shared image sha256:c801a505abbbef79ae60d51f33bb339ee03b782104197615517296b44da4f7f3 downloaded the exact wheel/source hashes above into a fresh temporary cache. The third-party pip invocation selected 12 dependencies; provider-core was excluded from that index input. Its immutable GitHub URLs are in requirements/provider-core-assets.in. Offline verification selects the complete installation lock; check with the assets input also verifies the source archive. Local unpublished source slices e12297b and 5cf1a5d establish released-wheel image installation and ephemeral installed-consumer testing. They are intermediate commits, not completion or a deployment claim. Source copy and generic proxy/ delivery-owner deletion, maintained consumer caller ports and end-state docs are being integrated. No branch was changed and the incumbent services remain live. Actual offline image builds completed: controller sha256:0ed2d5b1588b63f58d3ec11ce625e82aec46c8fbd173eaf305c109b9e7e7d1a8, geometry sha256:ea4ddb2237ecad43ecf5b49e5b493031a29d471b5439aea6f7ee36fed67bc2dc, inference sha256:8cc77cbacec80193f58620e4cb871b367eeb8da9d039a318682213c7dca01da3. Controller installed-image checks: 4 passed. API configuration staging using the pinned source support in that controller: 13 passed. Inference imports passed. Further captured-source changes may require rebuilding an affected image before deployment; these identities are proof snapshots, not a release recommendation. Focused maintained checks: provider host/qualification caller composition 24 passed; API-owned client carrier/scientific-result checks 44 passed without network or Jobs; wheel/cache acquisition and capture 52 passed; documentation 3 passed; extraction-owned source/Make/inventory/import/grant checks 45 passed. The finite API client now opens its already-admitted literal IPv4 address and binds its explicit interface with standard sockets, retaining TLS authority and the existing close/error owner. It does not import a generic DNS proxy into the separately maintained API-client image. Source review accepted that boundary. Independent reviews corrected two real fixture startup blockers: neutral queue keys must be total_items/total_bytes, and scripted peers import staged support through tests.fakes. Newly executed support driver, binding fixture and release record were added to the existing qualification source hash list. Generic shared host/proxy tests moved with their owner rather than remaining copied consumer tests. tools/docker.sh executes the installed shared bound_http_proxy from the selected image, so preparation and subsequent acquisition commands carry that same explicit image selection. Deferred testing and baseline debt: the broad repository campaign was interrupted after repeated stale acquisition-fixture selector failures; that common fixture now supplies the selected shared image. Its unchanged large cancellation/fault matrix has not been rerun. Full lint/format checks also report broader existing debt (93 files needing formatting and late imports in prediction test modules). Representative unchanged files interpreter.py, geometry_protocol.py and tests/test_prediction_model.py match d09b77b. No broad formatting sweep or new waiver was introduced. The focused consumer source target retains guard, import, Make, exact inventory and read-only-grant checks; the broader gates remain available and their failure is not reported as success. Ruff's target Python is explicitly 3.12, matching the declared/runtime version rather than its implicit older default. No expensive numerical repetitions or live fault campaigns ran. Shared owner's read-only incumbent observation: local delivery IPC root is UID/GID 1000:1000 mode 0710, lock mode 0600, socket mode 0660, pending_items 0. Thus no hypothetical 0700 migration or permission compatibility mechanism is needed for that actual instance. Queue/IPC identities are retained for handoff. The shared host owner and supervisor are revising deployment composition to honor the maintainer's no-managed-host-state-directory requirement. Existing Docker volumes and actual outstanding work remain protected; no live cutover has occurred during this consumer work. 26 October 2026 - Stateless shared-host composition closure Commit 4ae594c removes the extracted core source, generic proxy/deployment copies and their duplicated tests from NMRNet. Shared delivery up now takes only the operator binding definition and immutable shared image; down/status/logs select PROJECT. Config and secret files remain exact read-only inputs. No shared install, managed deployment tree, persistent recipe, registry or handoff file is required. Docker volumes own queue, IPC and proxy runtime state. Qualification callers use that same public owner; their 24 focused composition checks passed after the port. The final HTML/link/historical-record checks passed all 3 cases. Neither result is a live deployment or remote result-receipt claim. The shared owner added a local-intake healthcheck using existing bounded IPC status requests for all bindings concurrently. It does not depend on remote API availability and Docker unhealthy status alone does not restart the publisher. The owner's updated deployment/proxy lane passed 34 cases; actual lifecycle proof and coordinated incumbent retirement remain required before rollout completion. 26 October 2026 - Local operational cutover and actual API receipt One maintained provider/qualify/api/existing-pasted run used the real interpreter and retained scientific oracle. The API returned a succeeded Attempt; passed.json reports scientific_repeatability=true and interpretation_scripted=false. This establishes actual remote API publication and numerical comparison for one pasted-input Job; it is not a broad benchmark. No further local scientific repetition is required for this slice. Real operator finding: incumbent queue and IPC volumes have Labels=null. New Compose safely reused their exact names, but the shared held/discard wrapper required a Compose construction label. Shared owner is removing that redundant label condition in favor of the explicitly selected existing volume name and SDK storage ownership/schema/exclusive-writer authority. No volume relabel, queue replacement, compatibility importer or SDK/image rebuild is required. 26 October 2026 - Assumptions challenged during final rollout The local obsolete shared managed deployment tree was removed only after all container mount metadata showed no borrowers, its top-level entries were exactly current/bundles, and every entry was caller-owned. Original operator inputs and Docker queue/IPC/control volumes remain. The held/discard label correction is public as shared-tools 0b97435bf674b3c987f17fb8f8c05e23b04fa793; an isolated existing unlabeled queue passed the maintained held command, with no key grants. It changes the host shell only; release 0.2.0 and runtime image remain unchanged. A fresh independent reader found no new actionable operator command, selector or ownership mismatch in the end-state docs against the actual shared launcher. An independent evidence reader accepted only the exact passed.json/final Attempt and identity projections for the local Job, without reading molecular/key bodies or repeating scientific work. My staging assumption that the production NMRNet Python base implied the shared base was present was false: NMRNet uses 3.12.12, shared delivery pins 3.12.15. The actual helper create refusal established this before any new service start. The shared owner uses the maintained exact-base bootstrap, whose Docker-daemon routing exception is explicit, then the ordinary offline image build. BuildKit cache presence alone is not image availability. The compressed bulk-copy retry was also too slow; its own client was retired before choosing the smaller metadata-copy/offline-build path. No competing staging path was launched. A substantive reuse assumption remains under owner adjudication: replacing Magnet's HTTP implementation with SDK 0.2.0 is not automatically behavior-neutral. Magnet currently paces certain GET failures including HTTP500/429; SDK ProviderAPI.can_retry_read has a narrower safe-read availability policy and explicitly treats HTTP500 separately for Attempt recovery. Blind replacement could reduce unattended resilience. Owners were directed to preserve actual route/effect/retirement/identity semantics and decide any required SDK policy change centrally. An immutable 0.2.0 asset must never be silently replaced. Local success, empty-queue cutover and health are not substitutes for this U27/A11 contract, and local science does not prove production GPU/runtime publication. A further supervision correction: I initially applied the maintainer's NMRNet setup/deployment interface instruction as though it explicitly required binding Magnet's producer traffic to a host interface. The exact instruction was given in the NMRNet deployment context; no separate explicit Magnet producer-interface requirement was established. That broader application was my interpretation, which I withdrew rather than forcing a new proxy or extending the shared route contract. The host publisher route and the producer's existing Docker network grant must each be described truthfully. Actual local edge metadata now publishes both loopback and a Docker-host address, so the earlier loopback-only assumption was stale; a producer host-gateway projection has a real reachable endpoint to qualify while retaining API TLS authority. This does not establish all-host or external-route behavior, nor authorize silently exposing additional API ports. My subsequent proposal to borrow the existing shared API-proxy volume also had an unverified UID assumption. Magnet's compose/provider.yml actually runs its producer as 65532:65532; the shared proxy runs as1000 with private0700 directory and0600 socket. A read-only mount does not supply the missing Unix access grant. The proposal was withdrawn before implementation. One shared delivery service does not require one proxy process; if needed, a producer-owned role using the installed common proxy implementation can preserve independent UID/lifecycle ownership without copying proxy code. No new group-sharing feature is implied. Magnet's existing frozen-secret POSIX ACL grant must likewise remain distinct from SDK default private-file admission; original source admission and the exact compiled runtime reader are their existing owners. Durable byte references for the existing local qualification packet (SHA-256; no payload or key contents copied into this record): client/passed.json,168 bytes: 35f4795a3b341729e77c4e8bc8acb1fab0a5cdbee57bdadc59a684056e3de6b2 client/035-final-attempts.response.json,459 bytes: 972ae742e96b69714a321c0972b1f2780424230252e2a1711c739463c9a5feb3 client/scientific-result.json,14919 bytes: 57aa56e090e4763aacac8c6abcde10b7259e58c4b658f1ae7625430d27b4b6a1 source/identity.json,542 bytes: bc30e2eb0b4dff8da0f22867cf930ed871fe14087617de03910d89574225e153 These identify the captured bytes; a digest is not a substitute for the actual comparison/receipt checks and the qualified scope reported above. Cross-consumer rollout coordination: keep the live host binding definition unchanged until Magnet API/route source is qualified. Stage one complete shared binding definition preserving NMRNet and add Magnet's entry at the coordinated boundary. One affected shared-runtime adoption should serve both consumers, without a second singleton or independent restart churn. Any later NMRNet SDK patch adoption waits for qualified immutable publication; the current0.2 proof remains a0.2 proof. Its pre-existing500 safe-read gap also affects NMRNet U27/A11 and must not be described as unrelated merely because Magnet exposed it. 26 October 2026 - Public SDK0.2.1 adoption staging Shared source c2b02c6aa3de41c5410fcd3d86f1f8bcfb724dbc is published as https://github.com/numpde/nmr-provider-tools/releases/tag/v0.2.1. Public assets were downloaded and compared with the qualified original bytes; the existing0.2.0 asset identities/digests remained unchanged. Exact0.2.1 pins: wheel SHA2563c15c53aefc4583e86a40556a93c30cb99ee9492fab30fd761dbc31da82aaf9f source SHA25651a9eaf4e8943e7af2fe709f2a00c892d2383424ae7d3d0af64c74f685c58ffd install lock SHA2568536d4a493b5ad32f9b958e20fc8d3d82d8d6ee332d4dee6d3afe906e7e7ab04 release record SHA256003b202be9d0c603afef1e2a47096b1e067f2aa4df51a1db7eb75302cf8fd788 The third-party dependency closure is unchanged. NMRNet copied the exact issued lock/record, pinned the two GitHub artifact URLs and updated the installed-image asset witness. Its maintained interface-bound acquisition actually downloaded the new wheel and source archive into the existing flat wheelhouse; the index input still contained only the12 third-party dependencies, not provider-core. All three NMRNet image captures include the single shared install lock, so its actual changed construction input requires offline image rebuilds; no duplicate role-specific pin or fingerprint exception is being added to avoid that work. The patch permits safe GET recovery after500/429 and verified408 admission refusal, fresh current Hello recovery after those permitted failures, and scoped job-discovery access recovery. Request-ID, topology, retirement and earlier uncertainty remain distinct; this send's no-effect408 does not resolve an earlier unanswered send. Mutation replay retains each operation's existing authority. Docs describe the selected end state. Live runtimes remain0.2.0 until the single coordinated adoption boundary; the earlier numerical/receipt evidence keeps its original version scope. No new scientific Job is implied by the package update. SDK0.2.1 consumer staging checks completed from NMRNet0b4af31: public artifact acquisition: actual wheel and source download passed; existing configuration/admission lane:24 passed against installed0.2.1; documentation links/anchors/historical-record lane:3 passed; newly built controller installed inventory/origin/signing lane:4 passed; local and production new inference imports passed. No scientific Job, new numerical benchmark or broader fault matrix ran. Local staged images: controller sha256:1962ef1784c230e5933a3e7fa879ae3b0a6f5cc9c8ee3d6510e5109875fef88b geometry sha256:bba91c9cb0159f5d4e105c420c50b78498f6425f9db89ab97164f64d2c5fe139 inference sha256:a9750876cd67baa7e50434f1b9d189dc6f83f4e71634f2095de4db7d524b5d45 Production staged images: controller sha256:2184efa743925e5157e6fdb82d84203ed93f8f6c267bd74acf554b8e9d78c326 geometry sha256:0edefafc8cb546b81ef6834e0d7a518436a796647148bb86995f9dceb09cc166 inference sha256:b820a65fe9668cbbef475a7e335179d5ac2d4f0db5dffc0635076784f0a6dc58 Known production public/private input modes were checked before the next boundary:0644 and0600, respectively, UID/GID1000:1000. Current live0.2.0 local/production producer and publisher counters remained restart0 and healthy. Stage completion is not live patch adoption. Existing canonical definitions remain unchanged pending coordinated Magnet source closure and host adoption. Error-transport QA found a real scope gap in the first Magnet main diagnostic witness: its patched _run_provider bypassed supervision. The real supervisor retrieved a task exception as data then emitted a failure event before raising it, so an event-sink failure had no automatic context linking the original task error. Magnet569496f activates that error before reporting; independent source review accepted the correction and saved RED/GREEN27 evidence, while the actual supervision-to-main receiving-path witness remained separately required. Native cleanup/cancellation evidence was addressed in subsequent coherent5cbe78e. A suspected Hello add_note omission was adjudicated as nonblocking: existing owned operation and 'Cannot confirm provider Hello acceptance' already preserve uncertainty, and Attempt/issuance false flags are not Hello no-effect claims. No arbitrary-note dump or redundant Hello state was added for that suspicion. Shared0.2.1 runtime staging completed independently by its owner: local sha256:ab664d1e19c2daae73f06a946ec951296f6f99d080ac44ad8dd2bf46fabb4025 production sha256:d5d39bcfce25bf39b38ba28bf207e42298989c8b732ad0314cbc7362b0bdd3cc common construction fingerprint 20b70f5e6195c1c9413e347c45b855894ad518b658772a5438f79d9e431bc6a5. Local installed helper/proxy34 passed; production build admitted its own exact ID/fingerprint. These are staged, with no shared live restart or binding edit. The completed temporary0.2.0 GitHub acquisition proof cache and its private pip cache were removed; the chosen shared wheelhouse and durable hashes remain. The actual supervision-to-main diagnostic witness was subsequently corrected: real _run_provider and supervision remain in the path; injection fails ProviderOperationsFailed after earlier Hello reporting succeeds. The final sink checks original API/request-ID facts, reporting OSError, privacy and later cleanup. An independent reader inspected the saved installed0.2.1 process proof (46 cases OK) without rerunning it. This closes that receiving-path seam, not all separate status-publication, cancellation, discovery, routing or live-adoption questions. Additional recovery-envelope assumption checked, read-only: the real local nmr-api-v1-dev-local project has healthy public-api/provider-api services and four cleanup/retention worker services, but no execution-attempt-expiry worker service was found. Make's DEV_PRIVATE_WORKER_SERVICES omits it; the RUN list includes it and compose/run.shared.yml owns maintain_execution_attempt_expiry. No alternative expiry owner was identified by this inspection. This does not prove a universal API deployment defect or authorize changing its data/policy. The deployed provider-api's static ExecutionAttemptExpirySettings.load reported 86400 seconds eligibility age and60 seconds normal cycle; no database was read or changed to obtain those settings. Thus automatic capacity recovery must not be assumed to exist locally, or to be immediate where an expiry worker exists. Production API expiry was not inspected in this probe. Conservative START uncertainty also does not by itself fail U27: current Magnet controller continues traversal after ExistingInProgress/StartCommitUnresolved. A committed lost-ACK key remains replayed; a later feed cannot make that same committed key fresh. A never-created/preconnect case can eventually receive a fresh non-replayed creation. These are different useful-progress claims. The actual server expiry/capacity envelope, honest diagnostics and pending user choice determine any further work. No new nonce/checkpoint/proxy feature or SDK0.2.2 was prescribed merely to improve a conservative effect flag. Required shared API ownership integration continues independently with existing safe behavior; no scientific replay or API expiry mutation was attempted. Magnet subsequently settled the START policy under the user's instruction to continue pragmatically and document the caveat. Commit 997af40 implements it; notes/041_ambiguous_start_recovery_20261026.txt is the dedicated explanation, linked from notes/040. An active replay never starts scientific execution, including a replay after this campaign lost a genuinely fresh START reply. The lane reports the Job, stable attempt key and Attempt identity, then considers other Jobs. This preserves the no-rerun safety rule but supersedes the earlier notes/029 lost-reply completion behavior; it is not unchanged recovery behavior. An unexecuted active Attempt can consume capacity until an actual API-owned expiry or other authorized resolution occurs. Skipping it does not guarantee continued service once admission capacity is exhausted, or eventual completion. Root read the dedicated note and source commit identity directly. Magnet's supervisor reports 155 focused checks passing for source, tests and updated native fixture expectations; the changed native campaign has not been run. Earlier native qualification must not be claimed for this changed policy. Typed discovery/input integration continues next, followed by START/progress transport ownership. No SDK0.2.2, ownership protocol, checkpoint or new scientific run was added to settle this decision. Both hosts' 0.2.1 images remain staged, not adopted into the live shared runtime or NMRNet producers by this note. Receiving-boundary review while Magnet discovery/input integration continued: the shared binding's socket_group_id is the daemon's primary GID, while Magnet's deployment_inputs.delivery_compose derives the producer's supplementary group from that binding. A producer UID65532 can therefore use the existing shared GID1000 grant without changing the daemon UID or inventing per-binding daemon GIDs. This is source review, not proof of the final installed socket connection. The direct producer API route remains a distinct pending composition boundary: the reviewed Magnet loader rejects mapped loopback addresses and its Compose projection copies the admitted addresses. The publisher's working host route does not prove producer-container reachability. Final readiness must include the actual producer's TLS/authenticated read route and the required shared outbox/API publication effect; startup, local ACK and empty queue alone do not establish the latter. No binding or live runtime was changed during this review. A proposed broader sanitizer for an input-error reporting failure was withdrawn after inspecting the actual receiver: _admit_serially projects the error through restricted diagnostics and ends the lane without retaining its raw graph. FatalRunError's private-frame detachment is not a ban on natural exception context reaching that internal receiver. No new carrier or broad interception was justified by that hypothesis. The worker retained one focused check of the actual failed-reporting receiver instead of expanding the architecture. Magnet read-path source milestone: baf9469b5ede7d3ccfb653305b2d6bc8b50854b1, 'Use shared API ownership for Job discovery and input reads'. Root inspected the committed deletion/integration scope and the dependency-posture change: it replaces the exact local job_input import with provider_core.job_input and also includes core imports in the existing check. It does not broadly exempt SDK dependencies. Native runner input lists still omit analysis_contract and the API input module; the separate SDK-equipped runner probes own those reads. The saved final aggregate reports 192 repository checks, 786 unit tests, 20 contract tests and 177 integration tests, all OK. Root read those observations without rerunning the campaign. Log /tmp/magnet-sdk-reads-full-check-final.log, SHA-256 46d04a399a2b41cd7cf946732159f16fc5ce4c30cbd86a99b423548461b407f6. An earlier aggregate failed its old dependency expectation; the final aggregate is the passing one. This milestone is source/read qualification, not START, observation/progress replacement, physical retirement or live route proof. Nonblocking deferred fixture issue: the final aggregate emits repeated missing provider-core-install.lock/provider-core-release.json diagnostics before its G01 release-input check. repository_checks/check-g01-release-inputs.sh copies Makefile and requirements.lock into its temporary repository but omits these newly hashed files; Makefile:24 eagerly computes TEST_BASE_KEY at parse time. The final aggregate still passes. Do not hide the stderr or treat that success as proof of the fixture's complete hash inputs. Triage the fixture/input scope later; this does not block the remaining transport integration or authorize another broad campaign now. Sent through the single Magnet supervisor stream. Next-slice assumption challenged, source review only: Magnet's existing progress port describes observing a phase or observing/clearing a condition, without acquiring outcome ownership. The pinned SDK fixture's PUT /progress x-nmr-recovery ('latest_progress') likewise says these are observations, not permission to start/stop work or confirmation of a final outcome. Retries may send only facts that still represent the latest observation; an obsolete retry can overwrite a newer condition. The API text does not require acknowledgement before science. SDK0.2.1 separately constrains phase deferral (fresh allowed read before effects) and replay of a still-current awaited condition. Those helpers do not make every provider condition an awaited one. Root sent the actual contract distinction to Magnet's supervisor so its consumer mapping remains explicit, rather than acquiring NMRNet's execution-session semantics by analogy. No progress implementation, API policy or SDK release was changed by this review. Two concrete U27/A11 findings in the next working START patch (after baf9469), sent to the single Magnet supervisor stream before qualification: 1. job_provider_attempt_limit_reached and job_attempt_limit_reached409 were grouped with key conflicts as StartConflict. Its actual receiver holds the affected analysis lane, preventing other Jobs of that kind from proceeding. Other lanes may still run; this is not proof that the whole process exits immediately. The pinned START409 contract says retained Job attempts count after completion/expiry and neither waiting nor changing the key releases that Job's capacity. Job-specific exhaustion does not establish an identity conflict or justify holding unrelated Jobs. Preserve earlier unanswered START uncertainty and do not invent a key, delete records or raise limits. 2. ApiFailure exposes the START response's Retry-After advice, but the patch called wait_before_start_retry() without a floor. The real callback, SelectedJobControl.wait_before_start_redelivery, used only the configured operational polling interval. A positive server delay would therefore be visible in diagnosis but ignored by actual pacing. Carry it through the existing pacer, preserving exact replay, its bounded budget and the existing drain/cancellation policy; zero adds no server delay. No retry framework or broad new fault campaign was requested. Both findings remain pending until the actual changed consumer and focused evidence are inspected. Subsequent working-source inspection found both corrections in place: Job limit refusals return SelectionNotAdmitted, or StartCommitUnresolved when an earlier send may have committed; specific key conflict remains separate. START passes the positive Retry-After floor (zero becomes None) into the existing control callback and pacer. These are source corrections, not yet closed qualification. Remaining terminal-ownership cleanup found by a runtime reference scan: attempt_outcome.py still defines COMPLETE/FAIL response parsers and receipt types, plus restore_attempt_complete/fail, although only tests/helpers call them after publication/recovery moved to the shared service. Remove these displaced owners and their duplicated wire checks at the final deletion boundary; retain genuinely used prepared values and scientific/public failure policy. Its _complete_body/_fail_body also duplicate the SDK's public builders for opaque bytes. Check delegation for new commands. The local outer serializer sorts keys while the SDK emits insertion order/ASCII escapes: do not normalize any retained or queued request to change its identity. Scientific payload bytes and existing unresolved obligations must remain exact. Sent to the supervisor as final ownership work, not a demand to rewrite all local terminal policy or publish a new SDK. No source deletion or queue rewrite was performed by root. Focused START milestone while implementation continues: root read the saved 47-case passing controller log, /tmp/magnet-start-sdk-controller-green.log, SHA-256 e3f1b16bfa4cccdad4fd7eed6685a9771d1825670f68cc3372edc10553025406, and inspected the actual Job-limit test. The first correlated 409 produces SelectionNotAdmitted; an earlier 503 with an uncertain effect followed by 409 produces StartCommitUnresolved. Neither branch requests science. This is a scripted SDK exchange with an uncertain HTTP 503 outcome, not proof of a physical lost reply. The existing receiver continues traversal for both outcomes. This qualifies the Job-limit correction at that seam; the START delay's control/pacer path and the remaining transport/adoption boundaries still need their own evidence. Rollout preparation, without stopping or changing services: both selected Magnet operator policies use a 30-second API timeout and have no delivery table in their old input shape. Preserve that exchange budget in the new bindings; NMRNet's 10-second binding budget is independent. The selected new finite choices are 5 seconds for API retirement and 30/5 seconds for producer IPC exchange/ retirement, matching the maintained consumer fixture's IPC budgets. These new budgets are explicit choices, not claims about old policy values. Local and production original policy/key/definition metadata was checked: operator UID/ GID 1000:1000, policy 0644, signing input 0600 and shared definition 0600; the local canonical CA is also 0600. Credential contents were not read for this metadata inspection. Preserve admitted modes during rewrites and recheck the exact final inputs before downtime; no bulk permission change is justified by this preflight. Run-authority preservation checked in source: run_generation_fingerprint hashes the provider, analysis kind, explicit generation ID and creation-time window; provider_attempt_key adds the Job and input fingerprints. Transport, credentials, process/GPU identity and the configuration schema are absent. Preserve existing lane IDs/windows when replacing the operator policy; initialization defaults must not manufacture new keys for existing Jobs. The readiness comparison must use the actual running frozen authority as its baseline, without assuming that the mutable operator file matches the active capture. Sent to the supervisor for the existing freeze/preflight; no extra snapshot/handoff file, scientific rerun or new test campaign was introduced. Completion priority reiterated: finish the agreed delivery path and defer nonblocking improvements. An extra positive START-delay witness is not a new completion gate: forwarding was source-reviewed and established pacer behavior can be reused. Do not claim a direct positive START-floor test from the existing None-delay cases or the earlier controller-only result. Optional terminal builder/restorer refinements must not prolong the completion push. Concrete two-provider definition preflight, using the actual staged 0.2.1 SDK on each host: load the original definition, add the selected Magnet binding in memory, size host totals for the declared shares, serialize and admit through the public parser. The SDK requires host totals to cover all provider shares; unchanged single-provider totals would reject the new binding. Both actual definitions use 8 items and 16 MiB per provider. Preserve those shares and allocate 16 items and 32 MiB host totals for the two providers. This is allocation for a newly admitted provider, not repeatedly raising a history limit to sustain throughput. Every original NMRNet binding dataclass compared equal after the addition, including its API, route, socket and derived IPC identity. New bindings admit with GID 1000 and their selected socket names. Proposed serialized-definition SHA-256 values: local e42c669669277b7ad0ba137bcf9c2d45c352b2e1e5bc4f16cb51b4f30926fd45; production 49428d535939c8c259b630c9fac03cdb7c29a78f180700551c8473a57af9705c. The checks used cached immutable runtime images in finite, network-disabled, read-only containers. No proposed file or descriptor was persisted; canonical definitions, services and queues were untouched and credential contents were not read. This proves definition admission and derived identity, not credential admission, producer reachability, actual IPC grants or remote delivery. Publish the complete definitions only at the coordinated lifecycle boundary and refresh inputs if they change before then. 0.2.1 operational adoption, 26 October 2026 The earlier plan to wait for Magnet before adopting the shared/NMRNet patch introduced an unnecessary dependency. A complete shared definition may contain an idle Magnet binding while its producer is still being prepared. Adopt that complete service once, upgrade the already qualified NMRNet consumer, and let Magnet adopt its existing socket later without another shared restart. Both hosts completed that adoption through the maintained shared delivery and NMRNet down/install/up targets. Before stopping, each NMRNet producer had zero compact checkpoints and zero queued deliveries. The installed SDK admitted both providers' exact signing/TLS inputs without printing credentials. Selected public and private configuration modes were checked before downtime. The complete definitions were atomically published with exactly the preflighted hashes above; temporary writer files were removed. No importer, archive, runtime descriptor or registry was introduced. This rollout did not alter a Magnet process or its operator policy. Local NMRNet generation: generation-vpYDkZ4g. Production NMRNet generation: generation-sotqpmM7. All seven NMRNet roles and the shared daemon/two API proxies became healthy. Actual controller/inference/geometry/shared image IDs matched the staged 0.2.1 identities recorded above; those inspected containers had restart count zero. An independent read-only peer confirmed the image/health observations on each host. Provider readiness follows startup admission and accepted Hello in service._startup; it is not merely successful process creation. Actual mounts retain nmr-api-delivery-queue and the existing producer checkpoint volumes: local nmr-api-delivery-control-b0ac10481bd2a099e4cd4cba9a41c0d160dd4caff47738c275aa47259c41a6d3; production nmr-api-delivery-control-a257f21578b3ff6535aa5fe4bd99e15d97382e70086b679092bed4e0f701a358. Original NMRNet IPC identities are unchanged. Per-provider capacity remains 8 items/16 MiB; host totals now cover the two declared shares at 16 items/32 MiB. Each new Magnet socket passed an actual pending() query in a finite read-only, network-disabled SDK container as UID/GID 65532:65532 with supplementary GID 1000. Both reported zero items, publisher running, and the unchanged provider share. This establishes that socket grant, not Magnet's producer API route, scientific execution or terminal publication. No new scientific Job or model rerun was requested. The existing numerical/API result evidence remains scoped to its recorded run. Magnet's remaining source, captured API-route proof, result handoff and consumer adoption remain with its implementation owner. Publisher API route qualification, 26 October 2026, 18:52-18:53 UTC Each installed shared daemon admitted its actual /run/delivery.toml through load_delivery_service without starting another service or opening the queue. For each binding, its installed ProviderAPI performed jobs() with analysis_kind_ref=peaks_from_mol, has_provider_execution_attempt=false, limit=1, cursor=None through the configuration's actual API proxy socket. Both local identities ([local NMRNet provider] and [local Magnet provider]) and both production identities ([production NMRNet provider] and [production Magnet provider]) returned authenticated, admitted pages with zero items. All four clients confirmed transport retirement; both finite commands exited zero. Output contained only provider identity, operation, success, item count and retirement confirmation, without credentials, Job contents or response bodies. No Hello, START, progress or terminal mutation, Job creation, queue submission or model execution was requested. This proves installed publisher signing, TLS, API topology and proxy reachability on both hosts. It does not prove Magnet's separate producer-container API route, terminal publication or numerical behavior. Those remain distinct obligations. Deferred deployment-bundle retention, 26 October 2026 A read-only local inventory found 17 NMRNet frozen configuration generations under secrets/deployments/nmr-localhost/bundles, including the current generation-vpYDkZ4g. Docker mount inspection across all local containers found only that current generation borrowed. The maintained install path in tools/compose_deployment.sh creates an exclusive new generation and atomically selects it; it does not remove earlier generations. Existing deployment tests deliberately require previous frozen inputs to remain unchanged. These are deployment configuration snapshots, distinct from the shared delivery queue and scientific result storage. This inspection did not read credential contents or establish a production inventory. Defer an explicit retirement policy for unborrowed configuration generations. Before removal, separate useful qualification evidence from redundant frozen inputs, preserve current bindings and original operator inputs, and honor every actual borrower. Do not add an archive, registry, payload dump or another shared deployment root. No files were removed or lifecycle behavior changed for this finding; it is not a new gate on Magnet's current integration and delivery proof. Production Magnet adoption and authentic replay, 26 October 2026, 19:46 UTC The actual shared daemon's Docker log contained one matching delivery_published event for the selected provider, operation complete, on the production API: body sha256:637a40883622ca7f9a4e8ace96f4bf26c3e4046ea8f02c297e88802c5f5ee5db; replayed true. The SDK emits that event after a matching API receipt and queue-row removal (provider_core.delivery_worker.DeliveryWorker._deliver). This is actual delivery path evidence for the controlled demo's authentic retained command, not merely an enqueue or an empty-queue observation. It is an exact replay of the original result, not a new scientific execution or first-time result creation. The worker read the original command in place; no scientific payload export was required. Sequencing correction: Magnet's require_legacy_terminal_adoption checks the original terminal-outbox volume without removing it. The maintained up path only removes the distinct obsolete provider-state volume. Earlier advice that terminal replay had to precede automatic terminal-outbox removal was based on conflating those volumes. In-place replay after adoption is supported by the actual lifecycle. Retention/retirement of old terminal stores remains an explicit owning decision; preserving unique evidence does not make local payload-history retention automatically satisfy the maintainer's file-pollution requirement. Overall completion is still open. The maintainer challenged blanket deferral of Magnet's remaining SDK use; its owner is mapping actual chat, runner/lifecycle and result/status calls against the shared contracts before deciding and making the necessary replacements. The live API/delivery adoption and replay above do not establish adoption of those other components. Current scope and deferred limits remain in Magnet's maintained notes/041_deferred_20261026.txt. 27 October 2026 - Installed SDK startup-stop receiving evidence GitHub release v0.2.2 is public and immutable, from shared source 2a74aaed6a07307f021cc523197b10717070455e. Independently observed public asset digests match the qualified wheel, source archive, full install lock and release record. NMRNet acquired its wheel/source through the maintained interface-bound packages/provider-core/wheelhouse lane into the existing selected flat cache; no consumer wheel build, sibling runtime import or private PyPI resolution ran. Wheel SHA256 a0727593a7f74fa4f6fa6b0fb7d7935829f3d17e8a2665fa7bcdea9b73df8e2e; source SHA256 3fcc34d623317f6ea6b443878a36111ac0b96c14d0a49c527d429dfcf30a8ca9; install lock SHA256 24327ac72322b8643dfe5b4009ca7bd89864ec1bed6f95d7f56c15f382ad1bcf; release record SHA256 b59e548a3d4e34c3a6ab945cfea28483374329b18cd0e7353790dc63b308986c. The twelve third-party dependency pins and hashes are unchanged from v0.2.1. The receiving test held RunnerSession construction while NativeOperation still had no published session, cancelled the startup waiter, requested retirement, then released construction. Before the consumer fix it observed one allocated child after cancellation. Forwarding the existing owner stop flag immediately after publishing the SDK session and before connect reduced that to zero. The typed RunnerStartupStopped outcome permits local closure without creating a proof child; arbitrary socket/greeting failures still require the retained opening observation and existing retirement barrier. The original typed stop still reaches the protected diagnostic recipient. The maintained test/integration/provider-core/runner target then passed all16 checks against the installed v0.2.2 wheel and matching published source support. This includes actual child/reader behavior, lost-control proof retirement, cancelled waiters and supervisor replacement. Its readiness witness now observes an actual ENOENT/ECONNREFUSED connection result instead of patching the SDK's sleep implementation. test/integration/provider-core/interpreter passed all41 checks against the same release; both contained installations passed pip check. These checks use model-free fixtures, not a live LLM, new scientific calculation or API terminal delivery. No production or shared-service lifecycle changed. Final image staging awaits the owner's separate narrow v0.2.3 patch for its own pre-connect deadline expiring after only known endpoint absence/refusal. Generic TimeoutError cannot prove no allocation. The settled new public contract is RunnerStartupUnavailable(TimeoutError), restricted to the SDK-owned pre-attempt deadline branch. NMRNet must adopt that typed no-connect outcome together with the final immutable pin; ordinary OS/greeting timeouts remain uncertain. This avoids rebuilding three consumer images twice while the receiving defect is being fixed. It does not reopen the completed API/delivery rollout or make NMRNet an additional Magnet release gate. The added receiving witness test_never_connected_readiness_expiry_retires_without_a_proof_child also failed against the actual installed v0.2.2:16 existing checks passed, while this one raised TimeoutError in NativeOperation.retire. It kills only a disposable test supervisor, leaves its real refused control socket, joins the failed original startup, then requests retirement. The generic deadline outcome sends cleanup through an unnecessary proof-session connection and consumes the cleanup budget. This is a demonstrated NMRNet need for the typed v0.2.3 outcome, not an upgrade for version uniformity. The witness sends no scientific command. 27 October 2026 - Public v0.2.3 receiving qualification The final public release is https://github.com/numpde/nmr-provider-tools/releases/tag/v0.2.3, from source d9e7b18bbf5b7d0d310f2515e3f23500acfc4d35. GitHub independently reports a non-draft release with seven assets and these exact adopted identities: wheel SHA256 2b5fe22d9bab969b83445e9ac3d839ad9c980c226ad53893e70776f3bc75e376; source SHA256 7bb9989b7230ba35b4ba6cf5bb81244a289944e51c6096f8a26ab31581fabce6; install lock SHA256 c76e60778c2b8834bb03883e75045df18319b081a09bfaecef2c32ad931af094; release record SHA256 d84cf997d544a84c3da20ab75fdfb03a1c384b4fe4aba4a7871c20870b57d4fe. The owner qualified the wheel/source rebuild with690 passing checks. NMRNet downloaded the wheel and source through its maintained acquisition lane, and pinned the exact full lock and release record. Third-party pins remain unchanged. The final installed-package runner target passed all17 tests, including the previously failing refused-endpoint cleanup witness and stop-before-publication witness. NMRNet catches only RunnerStartupStopped and RunnerStartupUnavailable as proof that this startup never connected. The original typed cause remains available to protected reporting; generic OS/greeting errors keep the existing proof-session path. Comparing release records shows runner_session.py is the only production source file changed from v0.2.2. Conversation bytes are identical, so the41 interpreter checks above retain their stated scope without a redundant rerun. The v0.2.3 contained installation also passed pip check. These are consumer-source/package checks. Controller, geometry and inference images and local/production deployment still require the final adoption step. Existing shared delivery/proxy API and IPC source bytes did not change; their healthy v0.2.1 service does not need a restart for consumer version uniformity. Independent final review closed the early-stop handoff and retained-uncertainty source questions. It also found that opening the existing lifetime lock read-only could wait forever if that path were a stale FIFO, before the regular-file check ran. The open now includes O_NONBLOCK so the existing fstat admission can reject that object; no extra state, validator or fallback was added. A dedicated FIFO failure-injection test is deferred. This was a source-level failure scenario, not an observed production incident. 27 October 2026 - Magnet final integration and local adoption Magnet published source commit 160d1fa92473752127c5a48b9949ba1009de5e71 and recorded its local deployment evidence in commit 6870c02. Independent comparison of all six regenerated CPU/CUDA locks found no scientific package version or artifact-hash changes. Only SDK-overlap utility pins changed: anyio/certifi/idna and, for E01, typing-extensions. Existing numerical evidence therefore retains its scope; this refactor does not add numerical or GPU qualification claims. Magnet commit 3cd056c, notes/040_shared_terminal_handoff_20261026.txt, records local adoption and the unsuccessful production acquisition of the unchanged Torch 2.12.0+cpu wheel. That acquisition failure is not an SDK failure or evidence of production native adoption. No new numerical qualification is claimed. 27 October 2026 - Cached inputs and configuration retirement Cached acquisition now asks the existing offline pip selector whether the selected flat WHEELHOUSE already satisfies the complete lock. A successful selection returns immediately, without a public index query, download staging directory or cache mutation. An unsuccessful selection retains pip's diagnostic and follows the existing explicit acquisition path, with unchanged hash checks and additive publication. It does not authorize acquisition during offline capture, build or test. The real-pip fixture proves two consecutive complete cache hits without any online subprocess, plus missing-wheel acquisition and conflicting-byte preservation. The maintained wheelhouse lane passed 53 checks. Configuration retirement now belongs to tools/compose_deployment.sh under its existing deployment lock. Successful install retires unused older generations; make provider/deployment/retire-generations DEPLOYMENT= provides the same operation without reconfiguration or provider shutdown. The selected bundle is always retained. Docker inspection includes all containers, including stopped ones, and preserves mounts at, above or inside a generation. Inspection failure stops before deletion. Only obsolete bundles have their sealed directory modes relaxed for removal; original operator inputs, runtime directories and volumes are outside this operation. No archive, retention registry or handoff file was added. This resolves the configuration-generation deferral recorded above. Implementation: ebbb76702bae6b0ea250c97cdeb9da125ff900a2. A Docker test confirmed that a generation mounted by a never-started container is preserved. The deferred FIFO witness now uses an actual FIFO with no writer, inside a bounded subprocess. It proves NativeOperation rejects that lease as a nonregular file without blocking or creating a session. The installed-core native-runner lane passed 18 checks. Deployment checks passed 27, provider posture 45, and operator-input checks 31. The latter exposed a pre-existing interactive fixture that omitted the now-required shared runtime image; its invocation now supplies that explicit image. Product requirements were preserved. Decision review: the existing pip selector owns compatible artifact and hash admission. Reusing it avoids a second filename/tag resolver; an incomplete cache pays for an offline attempt before the explicitly requested download. Retirement uses the deployment lock and Docker's actual mount inventory rather than an age/count policy, which could discard a stopped container's inputs. Retaining all generations or archiving them would preserve the redundant configuration copies the user asked to remove. The FIFO witness addresses one concrete hang; no new stress matrix or model qualification was needed. The real Docker witness proves preservation for a never-started container, not a separate exited-state trial; all-container inspection covers both states in the same code path. Selected failure/resource evidence: the new FIFO case covers blocking before lease admission. The deployment witnesses cover inspection failure before deletion, mounted ancestors/files and retained nonrunning borrowers. The cache witness covers repeated complete-cache reuse without staging or byte mutation, and the existing conflicting-byte case covers failure without replacement. The 53-check wheelhouse lane also reran the existing native-client resource regression, tests/test_inference_image.py:265-282: 40 consecutive real helper calls must finish within 15 seconds in the contained lane. The adjacent deadline case uses TERM-resistant descendants/held pipes and checks that the child is retired or a zombie rather than running, while rejecting late success. These are bounded process-exhaustion and retirement witnesses, not a throughput, concurrent-job, long-duration leak, numerical or production-outage qualification. No new signal justified a broader stress campaign for these maintenance changes; those unmeasured properties remain unclaimed. The existing shared tooling supplies wheel selection/capture. Magnet's source-only dependency and build-backend policy remain model-owned. NMRNet provider follow-up Shared lifecycle decisions are recorded in the sibling repository: ../../../nmr-provider-tools/notes/014_joint_provider_refactor_decisions_20261028.txt This note records NMRNet-specific follow-up; it does not replace those decisions. 1. Make ordinary updates practical without abandoning a selected result. The current up command requires an empty project; down waits for a clean provider exit before removing dependencies. Develop a shared lifecycle approach that permits safe routine updates and handles partial deployments without relying on forced removal. 2. Resolve blocked shutdowns without losing reporting duties. A selected result can keep shutdown waiting indefinitely while delivery is unavailable. Keep the original report and its owner until durable handoff, and develop an operator-visible recovery path with the shared delivery owners. 3. Qualify scientific and resource behavior separately from lifecycle tests. GPU, out-of-memory and numerical campaigns have not been established by the current lifecycle checks. Confirm the intended deployment and scientific claims before presenting those checks as evidence. 4. Preserve the distinction between public result capacity and protected evidence capacity. The result planner reports a conservative public size limit before prediction; oversized protected preparation evidence remains a separate retained failure and needs its own reviewed reporting policy. 5. Native recovery after supervisor replacement requires continuity of the original scratch authority or independent proof of its cleanup. An empty new scratch directory alone does not establish that the old child was cleaned up. 6. Source recovery has a bounded per-Attempt budget. NMRNet's implementation permits another Job after a classified Upload outage only when the original controller and factory have settled; the failed Job remains claimed. A two-Job test against intermediate provider-core source a4cb69fb exercised three signed Upload-list 503 responses, the retained first claim, a later completed Job, protected outage evidence and shutdown without a fabricated FAIL. The earlier 5aab1abd candidate also passed focused Upload-preparation and service checks; focused checks also passed against the final release wheel. Live deployment qualification remains outstanding. The shared design permits continuation only when the other Job has independent resources and capacity is available. A retained claim still consumes that finite capacity, so continuation alone cannot guarantee recovery from repeated outages: admission can eventually wait for capacity until this supervisor lifetime ends. A future policy for reconciling an Attempt known to have closed needs shared ownership review; elapsed time or absence from discovery does not release its claim. Do not infer or manufacture a terminal Attempt outcome or discard unresolved ownership. 7. Provider-core 0.5.0 does not classify a TLS handshake EOF as a temporary network failure. A settled Job read can consequently stop a provider, and terminal delivery can pause its binding rather than retrying the retained request. The shared owner is reviewing operation-specific recovery; retain TLS verification, the original failure and the API's exact replay rules. 8. NMRNet operator notices are best effort. An atomic pipe rejects a notice larger than its available record limit, and a full or broken sink can reject even a short notice. The process retains the latest failed notice and output error in memory and attempts to report them at shutdown; later failures can replace that record, and the shutdown notice can also fail. The terminal failure and worker cleanup do not depend on logging. Review a bounded way to signal omitted or unavailable diagnostics without claiming durable storage or introducing a local payload dump. 9. Acquisition diagnostics: tools/docker.sh collects proxy logs for readiness failures but not when an acquisition worker exits unsuccessfully. On the next acquisition-tooling change, preserve bounded proxy failure evidence alongside the original worker error without logging request contents or claiming an unobserved cause. 10. Image retirement: tools/image_retirement.sh inventories container IDs before inspecting their images. If a container disappears between those operations, inspection can fail and stop retirement before any image is removed. Review this race at the next image-lifecycle change while preserving the rule that incomplete inventory never authorizes removal. Provider readiness is separate from this cleanup outcome. 11. Build interruption: tools/inference_native.sh establishes retirement of the local client group, not completion of daemon-side build work. The image-build cleanup removes captured inputs after local retirement; an interrupted build's image outcome remains unconfirmed. Docker describes BuildKit requesting local contexts through the client (https://docs.docker.com/build/concepts/overview/), but this does not by itself prove retirement for every supported engine/session failure. When changing build ownership, verify the actual client-session and daemon boundaries before changing cleanup or claiming that the daemon can still read a removed host path.