Open
opened 2026-10-16 07:27:34 +00:00 by kayg
·
659 comments
No Branch/Tag specified
main
j470b-server-mesh-rejoin
mesh-compat-382
j444b-d381-key-wins-flood
j461b-macos-utun-reader-thread
j475b-remove-host-motion
fix-reconnect-new-link
j481-d380
dev
j479-mesh-soak
fix/j476-host-facts
j475-motion-pill-split
j470-mac-node-join
root-upgrade-d376
j474-review-merge
latency-targets-120hz
nightly-suite-shards
gotatun-pin-j469
macos-utun-reader-thread
fix-flood-echo-stall
wip/j416
motion-fast-ease-out
mesh-addhost-j259
takeover-close-terminals-d368
kbd-instant-followups
fix-trust-key-double-click
nightly-suite-partial-report
appwin-icons-j207
rusqlite-slice1
swipe-content-first-d374
mesh-mtu-381
addhost-instant-open
glass-contrast-d365-mock
glass-contrast-d365
signout-followups-442
fix-startup-toast-red
research-gotatun-matrix-j317
themes-sync-j304
fix-load-flakes
fix-nix-zig-patch
fix-compute01-browser-baseline
ratchet-size-baseline-419
predict-auto-d130
revoke-coverage-d367
nightly-suite-queue-timeout
nightly-browser-suite
fix-rustsec-2026-0459
fonts-ioskeley-obel
log-retention-d375
fix-kbd-no-anim-427
fix-dev-red-specs-2
takeover-proof-305-j205
wip/j410-server-pump
ui-consistency-d372
fix-osc52-clipboard
libghostty-vt-1.0
forget-retired-host-d369
j404-merge-426
fix-setup-lock-race
fix-touch-select-426
revoke-access-report-ui
fix-predictive-echo-specs
fix-selinux-agent-exec
wip/j395-checkpoint2
wip/j395
j391-review-scratch
ui-consistency-j195-deferred-rebased
fix-rustc-paths-421
decisions-wording-341
fix-install-suite-red
fix-dev-rtt-specs
fix-pending-removal-align
fix-privileged-skip
fix-install-suite-404
review-j368
mesh-dns-j254
revoke-access-report-d356b
revoke-privilege-round5
fix-removal-confirm
review-j360
gotatun-rotation-367
deps-refresh-340
review-j354
review-J351
review-j350
addhost-takeover-d359
revoke-report-items-347
revoke-end-sessions-d362
review-j348
size-mesh-ssh-346
size-trim-337
revoke-access-diff-d356
j259-pre-rebase-b06c5a6
j305-ended-at-start-spec
addhost-sudo-consent
fix-layout-real-specs-411
fix-shell-open-411
fix-console-hosts-373
fix-shell-exit
fuzz-host-name-353
fix-host-details-410
macos-filter-j197
research-gotatun-tricks
revoke-p3-j216l
stale-state-pill
revoke-followups-j216k
revoke-progress-j216e
backup/macos01-20261106/lume/j197
backup/macos01-20261106/lume/appwin-icons-j207-stash0
backup/macos01-20261106/claude/stash-0
backup/macos01-20261106/claude/stash-1
backup/macos01-20261106/claude/J80-macos-s1
backup/macos01-20261106/claude/J80
backup/macos01-20261106/claude/J80-slice1-20261102
backup/macos01-20261106/claude/J16b-appwin-on-dev
backup/macos01-20261106/claude/appwin-launch-idle-146
backup/macos01-20261106/claude/J80-s1-run
wip/j259
trust-285-p3c
runtime-lock-j216f
mesh-ssh-p3-j175
tun-proof-p3b
trust-285-p3
terminal-polish-j271
tun-proof-p3
ssh-install-flakes-j216i
fuzz-fixes-j264
trust-285-a
trust-285-b
restart-oversized-fixture-j198
backup/macos01-20261106/lume/appwin-icons-j207
restart-bound-j216h
up-preflight-p3-j198
backup/macos01-20261106/lume/j251
up-preflight-j198
wip/up-preflight-j198-j245-p2
wip/up-preflight-j198-j245-p1
agent-fsync-offloop-j196
wip/up-preflight-j198-j245
settings-offscreen-j231
wip/up-preflight-j198-j226-inspection
wip/j103f
themes-j206
wip/up-preflight-j198-j226
flakes-j216c
backup/macos01-20261106/claude/j197
flakes-j216b
backup/macos01-20261106/claude/j197-red
wip/up-preflight-j198-review
flakes-j216
backup/macos01-20261106/claude/appwin-icons-j207
engineering-j208b
appwin-mock-j209
toast-stack-j165
engineering-j208
decisions-d351
decisions-d350
decisions-d349
appearance-presets-mock-j129
decisions-d348
docs-audit-spec
doc-coverage-baseline-raise
decisions-d347
decisions-d346b
decisions-d346
j88h-profile
ui-consistency-j195-deferred
ui-consistency-j195
engineering-practices-j194
preferred-login-ui-j166
signin-pools-263-j174
macos-node-265-s1
decisions-d345
decisions-d344
proxy-cgroup-j164
verify-quick-fuzz-329
proxy-start-io-j168
timing-flakes-j163
up-263-s1
mcp-events-j147
verify-quick-fuzz-j158
proxy-p3-j159
agent-resource-j157-detect
wip/j103d-final
remote-cancel-hang-j155
proxy-traefik-281-j62d
j149-verify-quick
proxy-traefik-281-j62b
j150-drop-unnamed
wip/j79d-red-r4
wip/j103d-d332
rootless-toast-j142
wip/j103d-head
wip/j103d
j125c-mcp
macos-build-j136
backup/macos01-20261106/claude/j136
wip/j79d-red-cli
wip/j79d-red-server
j121-link-liveness
j118c-tracer-failures
wip/j79c-head
release-desktop-j131
j124c-signed-macos
wip/j79c-red-p3
wip/j79c-red-p23
wip/j79c-red-p22
merge-j128-check
perf-deferred-j128
sidebar-toggle-260
j127-shortcut-changed-dot
j125-mcp
j118-tracer-failures
j126-account-summary
settings-sections-mock-j92
j120-pinch-lock
sidebar-292
backup/macos01-20261106/claude/j120
taste-2026-11-03
row-actions-242-215
backup/macos01-20261106/claude/stash-0-untracked
backup/macos01-20261106/claude/J80-265-s1-run
backup/macos01-20261106/claude/J80-macos-s1-20261102
j112-canvas-commands
ui-no-overshoot-scroll
fix-recovery-restart
backup/macos01-20261106/claude/stash-1-untracked
taste-2026-11-02
size-baseline-ratchet
machine-cards-structure-j108
j109-boot-copy-mockups
fix-dev-red
wip/up-263-s1
j95b-settings-rows
proxy-traefik-281
j95-option-rows
docs-human-j91
docs-keys-palette
fix-flood-1013-270-j38d
mesh-ssh-s1
mesh-ssh-s0
addhost-d291-tunnel
test-stability-load
mesh-relay-220
repro-296
shim-thp-off-24
mesh-pins-258-v2
mesh-dns
signin-d311-merged
docs-pages
ui-size-283
fix-ui-batch-specs
wip/j12b-edge-update
gate-on-arm
fix-rename-sync-293
trust-285-j60b
fix-focus-ring-clip
integ-ui-1101
edge-update-v2
signin-d311
taste-2026-11-01
layout-per-tab-250
ui-approved-splitopt-224
ui-approved-splitopt-224-on-dev
icon-text-centre-282
ui-approved-189-212-216
research-reverse-proxy
transfer-budget-320
review-mesh-pins-258-r2
sidebar-pill-259
review-mesh-relay-220
wip/j12-edge-update-v2
nix-package
status-crash-loop-237
fix-dev-test-failures
fix-fixture-socket-path
wip/mesh-relay-220-pre-dev-advance-rebase
fix-canvas-side-clip
research-head-to-head
frosted-real-256
review-mesh-pins-258
wip/mesh-relay-220-pre-final-rebase
review-layout-per-tab-250-r2
broad-suite-triage
nix-devshell
review-status-crash-loop-237-r3
wip/nix-devshell-pre-p3
taste-frosted-real
wip/code-serve-demo-2026-10-30
wip/code-serve-glass-2026-10-30
wip/code-serve-clusters-2026-10-30
wip/code-merge-release94-dev-2026-10-30
wip/rproxy-delta-scratch-2026-10-30
wip/stale-note-257-staged-2026-10-30
wip/d241-size-staged-2026-10-30
review-broad-suite-207
wip/mesh-pins-258-pre-split
wip/mesh-relay-220-pre-rebase
mesh-measure-220
plan-211-update
review-edge-autoupdate-r3
perf24-reconnect
review-stale-note-r2
release-prod-live
d241-shell-marker
review-mesh-pins-server-258
review-revocation-r3
review-setup-token-r2
review-sync-journal-r3
wip/review-mesh-pins-258-prune-review-1995fee46
frosted-scroll-256
sync-journal-r3
revocation-per-account-wip
review-tokio-asyncfd-0386
review-sync-p3s
wip/stash-8by64-stash0-2026-10-30
mesh-drag-r2
setup-token-data-wip
release-9-4
auth-busy-1013
mesh-view-overlap
sync-p3s
review-auth-busy-wake
review-readd-r8-wip
mesh-drag-bounds
audit-auth-93
app-windows-stream-start
review-authority-cap-r3
app-windows-r7-measure
readd-minimal-r6
readd-minimal-r5
app-windows-r7-soak
readd-minimal-r4
app-windows-r7
app-windows-r6
readd-minimal-r3
readd-minimal-r2
readd-minimal
merge-release8-dev
review-busy-page-liveness-r2
review-busy-page-liveness
mesh-view-trim
review-authority-read-retry-r2
review-remove-uninstall-r2
release-retry-reattach
release-retry
review-remove-uninstall
review-authority-read-retry
app-windows-ship
mesh-autoswitch-p2
mesh-ssh
mesh-relay
mesh-macos-node
screen-and-control
session-labels
review-real-logins-r5
review-real-logins-r4
review-real-logins-r3
shim-memory-r2
review-real-logins-r2
shim-memory
shadow-addhost-instant
shadow-real-logins
shadow-same-session-flood
shadow-prod-perf-fix
hosts-from-server
app-windows-real
app-windows-transport
release-prod-6w
mesh-policy-verify
quiet-close-toast
dev-merge-r4
review-mesh-agent-transport
review-app-windows-transport
settings-roundtrip
review-release-pipeline-r4
mesh-agent-transport
ended-strip-fix
review-audit-ca-update-d244
settings-rows
phone-width
signout-clear
fix-restart-tests
dev-merge-rp
signer-hardening
review-audit-ca-update
terminal-fidelity
review-audit-ca-update-wip
mesh-integrate
review-mesh-agent-transport-515d3712
review-mesh-dataplane-feec1988
mesh-dataplane
signout
research-canvas-node
wip/review-renderer-cost
wip/review-terminal-fidelity
padlock-glyph
review-release-pipeline-2e95b689
phone-polish
sidebar-polish
inbox-generic
review-mesh-dataplane-378d4055
prod-batch
ui-inbox
ui-ca-unlock
ui-machine-sections
review-mesh-dataplane-a5f744fb
tls-session-prod
session-bounds-prod
fix-dead-session
session-bounds
tls-session
palette-polish
shortcuts-d222
research-appmeta
phone-gutter
ui-centre-button
wip/ui-centre-button
wip/tls-session
review-addhost-breakit
ui-platform
renderer-cost
remote-agents
mesh-api
ssh-bootstrap
prod-hotfix2
prod-fixes
review-remote-agents
review-mesh-dataplane
session-life
research-browser
review-mesh-api
research-capture
review-mesh-api-round3
review-mesh-api-round1
gate-stability
review-gate-stability
review-relay-direct
review-mesh-api-findings
proto-sessions
font-picker
proto-addhost
proto-windows
mesh-core
latency-gate
research-bsd
research-discovery
keytray-mods
mock-core
ui-tweaks
fix-motion-sel
fix-motion
integrate2
fix-robust
t-web
t-server
vt-ghostty
fix-snap-echo
t-web-auth
review-vt2
t-agent
lane-protocol
lane-shim
lane-auth
s1-base
s1-contracts
s1-workspace
No results found.
No labels
launch-qa
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
kayg/infraternal#231
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Owner 2026-10-16 ~13:00 IST (answer to "stuck infraternal agent on infraternal-dev"): "no by hand replace, fix it in code and deploy. I test adding it again."
Field case (#225): one rootless infraternal agent on infraternal-dev runs an old binary (20,333,104 B, host_id 0bc79da5…, endpoint 10.69.69.50:7443). It dials once after start and never retries, so it never receives the signed update. The server shows 3 stuck host records for it.
Acceptance (owner runs it after deploy): adding infraternal-dev again from the canvas succeeds with no manual step on the host:
Also: an old agent that cannot reach the server must not be needed for this; the takeover is driven over SSH.
Do not touch infraternal-dev's live state by hand: it is the acceptance test.
NEW EVIDENCE (2026-10-17 ~12:00 IST, owner retest on production 3b2183eaa+web):
infraternal mesh statusshows 0 peers.Starting #231 on addhost-readd at
34d9d5e4a4(origin/addhost-retry). Read #231 and #225 history; continuing from #230 installer. First regression: recorded but disconnected host must not return already_added. Will preserve XDG/session state, drive takeover over SSH, reconcile server records, and validate both modes in isolated fixtures. No owner fixture access, merge or deploy; pushes only addhost-readd. D168/D244 CA rules retained; D287 wording concerns licence retention, with session survival also specified by D13/D17.Source findings: bootstrap_remote.rs:211 uses only remote_hosts/remote_host_bootstrap existence for already_added; the disconnected fixture is currently labelled live without admitting any transport. The regression now requires no already_added response. Existing installer upgrade copies state (install.rs:312), but CLI remote.rs:284-300 refuses any identity.json before join, so that upgrade path cannot re-enrol a real existing identity. Replacement will retain host UUID/private key, re-enrol only with the unlocked D168 signer, and keep the existing rollback transaction/session directory. Prior authority must survive failed replacement; fresh-bootstrap retirement intents must not own an existing host. Duplicate retirement will require exact authenticated SSH destination or public-key evidence, never UID/name similarity. No production fixtures accessed.
Inspection regression before fix: completed install incorrectly returned INFRATERNAL_SETUP_CLEAR (1 failed). Updated shell validates the existing marker, unit, launcher/current/live paths and private state identity metadata, then emits only the installed host UUID; focused real-file shell test now 1 passed. This is inspection proof, not end-to-end replacement acceptance; no version or performance result claimed. Rust server regression is compiling through build-slot. Receipts: red, green. No commits yet; parser/API integration and gated atomic commits follow.
Completed contract step, committed and pushed
27df3e2ec1(addhost-readd only). contracts/bootstrap.md now defines online-only already_added (zero grace window), SSH-driven staged replacement, retained UUID/key/mode/uid/session state, preserved prior authority on failure, and evidence-bound duplicate retirement. Proposed on this issue before documentation. cargo fmt --all --check and git diff --check pass; documentation-only step, no runtime measurement. Implementation regressions/inspection remain uncommitted while the initial server build completes. Failure wire struct stays unchanged for already-added-open coordination.Confirmed server regression before fix: readding_a_never_connected_host_does_not_report_already_added FAILED, 0 passed/1 failed, at bootstrap_remote.rs:941: !event.failure.unwrap().already_added. This is the exact old-record/no-transport condition from the owner retest. red receipt. Full shell ownership/recovery suite passes 35/35: receipt. Additional retained-authority/live-disconnect and CLI staged-identity regression runs are queued sequentially through build-slot before their fixes.
Completed inspection module, pushed
3bd7f23e2. Canonical installed-host observation is distinct from stale fresh setup; exact unit/launcher/binary links and private state metadata required, with no private identity contents returned. Before-fix inspection test failed; current 35/35 shell tests and 65/65 installer tests pass, one existing sudo-dependent test ignored. SSH all-target strict clippy and workspace fmt pass. installer tests, clippy. CLI staged-identity regression also failed before fix: receipt; current focused CLI tests 10/10 pass, lint pending. This is not end-to-end acceptance.Author review found partial duplicate retirement in the initial uncommitted reconciliation: sequential revoke followed by binding write could leave an incomplete result. Failing test before repair: final SQLite trigger refusal left 1 live record where all 3 must remain; receipt. Repaired with one writer transaction for duplicate selection/tombstones/retained binding and an owned finalizer reusing commit_revocation publication/fences. Current module lint and regression checks are running. The initial live/disconnect test failed its setup because the shared native pair consumed its greeting; test now supplies the actor greeting before inventory, without relaxing online proof. No acceptance/performance claim from that setup failure.
Completed/pushed identity repair
4f78ff331and server replacement/reconciliation630261485. Recorded-only already_added is replaced by authenticated online inventory (no added grace window). SSH-observed UUID is re-enrolled with its retained key; failed replacement keeps prior authority and owns no fresh retirement intent. Successful completion retires evidence-matched duplicates atomically and retains the existing record, with ordinary revocation fencing/publication. Other owners/accounts/modes remain separate.Gates: identity 10 passed/0 failed; backend 15 passed/0 failed/2 existing opt-in cases ignored (includes rootless/rootful upload failure, actual native live/disconnect, atomic storage rollback and unrelated account protection); SSH entire suite 137 passed/0 failed/11 opt-in cases ignored. Strict all-target touched-module clippy and fmt pass. backend, identity, lint, SSH.
Real SSH/systemd 20x-per-mode proof and full static/size gates remain; not done. Existing disposable systemd image is present locally and on the named perf VM; Docker needs the documented sudo -n wrapper locally (socket itself is inaccessible). No owner fixtures accessed. #230 remains at
34d9d5e4aunder its round-4 review, not yet merged; final rebase still pending.Real-service oracle now compiles and passes strict all-target server lint. It is guarded to a fresh disposable systemd container, uses actual SSH, re-enrolls the existing UUID/key, verifies /proc/MainPID/exe against the candidate digest, keeps one real PTY/shim, and asserts one active host after each of 20 replacements per mode. The old executable is explicitly a sparse 20,333,104-byte one-shot-dial behavioral fixture, not claimed historical bytes. Historical
9ab4329cStoredIdentity has exactly the current seven fields, so this path needs no JSON schema migration. Initial static candidate is building; real service runs have not happened yet.Additional author review: terminal_sessions.remote_host_id can still name an older duplicate even though the on-host shim survives. Added a regression requiring that binding to follow the retained UUID before retirement; it will be run red before any fix after the active static build. This avoids relying only on the retained-host session case. already-added-open has no pushed remote branch yet; coordinating the optional live host_id field on this issue, with no frontend changes in this lane.
Coordination for already-added-open: its named remote branch is not pushed yet. This lane will use the existing Failure struct with additive optional host_id, present only when already_added is true after live registry proof. Stale/never-connected installs keep the replacement flow and no already-added failure. Added a wire assertion to the live/disconnect regression before adding that field, so the terminal button receives the retained UUID rather than an arbitrary matching stale row. No UI component or failure kind changes are planned.
Real service oracle r1: fresh signed install + real PTY worked, but after stopping the service and starting the 20,333,104-byte one-shot behavioral fixture, the cached session census stayed Available. The test stopped before re-add (0/20); this cache alone cannot prove “already added”. Adding a bounded fresh authenticated response before refusing replacement. No owner fixture touched. Owned container and both control PIDs gone; cleanup IDs and exact failure: receipt. No successful replacement or performance claim from this run.
Additional failing-first regressions: cached census falsely blocks re-add, missing live host_id and stranded duplicate terminal binding, wizard loses replacement caption.
Additive contract refinement: “already added” requires a new correlated authenticated response within 2 seconds, alongside session inventory; no recent-connection grace. An explicit remote action refusal counts as a response, so disabling host facts does not pretend a live host is offline. Duplicate probes run outside SQLite's writer; the matching record selection is rechecked inside the transaction. The live-only failure carries host_id for the parallel terminal-button job. State/session links move to the retained identity atomically with duplicate tombstones. No change to signer unlock or D168/D244 authority.
Contract refinement committed/pushed as
b8a3c7080: fresh correlated response within 2 s, including explicit remote action refusal; zero grace for cached inventory. Documentation-only gate: git diff --check passed. Rust check (server remote tests) passed, caption decoder/model checks 35 passed/0 failed and bun run check passed. Full touched-code checks/static size remain queued for a shared build slot; no completion claim.Identity review found a missing server-side invariant: retained-key reuse is enforced by the CLI, but the replacement invitation currently accepts any valid CSR key for that retained UUID. Adding a failing real-CSR/SQLite regression before the fix.
Proposed additive boundary: replacement tokens may redeem only a public key already in that host's certificate ledger (expired certificates still identify its retained key). Store this condition with the single-use token so process restart cannot discard it. Ordinary invitations keep their current behavior. A refused key must not consume the legitimate replacement token. This implements the same-key contract already recorded above; signer unlock and D168/D244 remain unchanged.
UI step committed/pushed as
dfd55392c: typed replacement caption survives install updates and clears on retry, using the existing wizard row (D160). Compiler passed; 35 decoder/model checks passed; six production-build browser cases passed with the requested theme asserted in the DOM at 1440×900, 393×852 and 375×667. Functional checks only; build-host test durations are not performance evidence. Captures for independent visual review:caption-browser-final.log
Further failing-first evidence:
retained-key-red.log
rootless-r2-control.log
version-truncation-red.log
The CSR test admitted a different key under the retained UUID; the new durable token condition will refuse it without consuming the token. The real rootless service run reached a generic readiness refusal (0/20); exact completed phase diagnostics are being added, alongside bounded retry of transient connection-unavailable results during start. Its owned container and both control PIDs are gone. Version inspection also reproduced a truncated numeric release being reported as valid; oversized output now falls back to unknown and the focused shell check passes.
Interim x86_64 artifact: 21,367,952 B, +45,952 B against the #230 parent receipt. This is above the job allowance; no cap was raised. Size attribution/optimization and final head gates remain pending. No deploy or live owner-fixture changes.
Taking over #231 on addhost-readd (worktree head
dfd55392c, base34d9d5e4a= origin/addhost-retry at branch time; origin/addhost-retry has since moved tofc8731f84). Inheriting 19 modified + 4 untracked files from the previous worker: fresh-response already_added probe (2 s) with live host_id, terminal_sessions rebinding on duplicate retirement, durable retained-key replacement token (migration 0026), installed binary size/version in SSH inspection, real SSH/systemd oracle + perf-VM runner. Plan: build and test the inherited work, commit sound parts atomically, debug the rootless r2 fresh-install readiness failure, add the foreigninfraternal0device case (test first), run the 20x per mode on the perf VM, size vs dev,scripts/verify fast. Owner fixtures on infraternal-dev stay untouched.Findings after takeover (functional only, no perf claims):
Unavailableinconnected_facts. Local functional run of the real SSH/systemd oracle (owned disposable container on the build host, not the perf VM, load ~35 on 12 cores): rootless 20/20 and root 20/20 re-adds of the one-shot-dial 20,333,104 B fixture, each ending with one live host record, the retained UUID/key, the same shim PID and a fresh echo on the retained PTY; cleanup left no container or PIDs. Timings from this host are not evidence; the perf-VM run follows on the final head.infraternal0(field case: markedinfraternal.mesh.v1, server's 10.254.0.1/32 + fd38:c296:7b32::1/128, key no state on the host created). Before the fixNode::restoreadopted any marked link with a readable key: it would rebind its port off 51820, report its key to the server as this node's identity, and later replace its addresses. Regressioncrates/plugins/mesh/tests/foreign_interface.rs(kernel,unshare -rn) failed red at the adoption assertion and passes green.Choice: the marker proves only that some infraternal process created the link. Ownership now needs this state directory's own record of the key it created (
mesh-device.json, public key only, a separate file so an older binary restored by rollback still readsmesh-public.json), or an accepted configuration bound to that key. Kept for upgrades: configurations from before key binding, and an unaddressed link from a binary that predates the record. A foreign link is left exactly as found (key, port, addresses, alias),mesh up/identity refuse,mesh.statusreports stateBlockedwith a plain next step, andpreferred_servernever routes through it. Rejected: deleting/re-keying it (it may belong to a running local process) and address-only checks (the restart path already recovers aliases from interrupted re-addressing).For the owner's rootless install this changes nothing: rootless has no kernel mesh (D163 root only). It matters for a rootful re-add on that host.
rootless-local-functional.log
root-local-functional.log
foreign-interface-red.log
foreign-interface-green.log
Real SSH/systemd oracle on the perf VM (infraternal-perf-test, 4 cores, bench lock held per mode, container CPUWeight 10000, load before ≤1.6). Head
0a7a2a5a7, static candidate sha256 4749b243…, behavioural fixture = one-shot dial padded to 20,333,104 B (not the historical binary).Each re-add: same host UUID and key, one live record (two seeded duplicates retired each time), /proc/MainPID/exe = candidate, original shim PID kept, terminal binding on the retained host. Cleanup: containers gone, no PIDs left.
Finding (not fixed): root r1 sample 20 completed the re-add (Done, image hash, shim PID all correct) but the fresh echo on the retained PTY did not arrive within 10 s. 1 in 60 root re-adds, 0 in 20 rootless, 0 in 80 local functional runs. It did not reproduce in two more root runs. Either a test race on attach right after replacement, or a rare lost retained-PTY output after an agent swap; needs its own look before claiming it is only the test.
Re-add time is dominated by the staged install (upload + stop + start + facts + PTY canary); this lane adds a ≤2 s liveness probe only when a matching host is online.
vm-root-service.log
vm-root-summary.json
vm-root-r2-service.log
vm-root-r2-summary.json
vm-root-r3-service.log
vm-root-r3-summary.json
vm-rootless-service.log
vm-rootless-summary.json
Size (D243), measured on the build host, same recipe as
scripts/verify fast:34d9d5e4aThis is over the 16 KB allowance; no cap was raised. Unstripped symbol diff (cargo bloat, base vs head before the #235 commits): .text +36,032 B, the rest is read-only data (SQL, shell programs, messages) and unwind tables. Where the code goes:
completed+8.3 KB,duplicate_ids+1.7,commit_reconciliation+1.5, quiesce/tombstone +1.1, shared spawn +1.3): ≈14 KBfirst_live+3.0, facts/call/online +1.4): ≈4.5 KBissue_attempt(+4.0) andclassify_installed(+1.3, #235): ≈5.3 KBBootstrap::runinspection → replace/Replace-pause flow (+4.0,pause_for_choice+1.1): ≈5 KBjoin,load_stored, X509 checks): ≈3.5 KBrecord_replacementlog line ≈0.9 KB, missing-account classify ≈0.35 KBCuts that remain possible without dropping behaviour are small (sequential liveness probe instead of FuturesUnordered ≈2–3 KB; dropping the version probe/log ≈2 KB). Getting under 16 KB would mean dropping one of the behaviours above. Decision for the orchestrator/owner: accept a measured exception (as D298 did) or name what to drop.
Finish for this round: head
8616bf3c62on addhost-readd (pushed).scripts/verify fastoutput, verbatim (tail):uninstall_handoff_runs_only_after_a_successful_real_socket_write). This lane does not touch infraternal-agent. It passes 5/5 when run alone (receipt below), so it is load-dependent and not caused by this change. The earlier run failed only because the host disk guard deleted this job's target/debug mid-run (catalog_startupbinary missing); I freed 10 GB of my own scratch.agent-test-isolated.log
verify-fast2.log
Resuming #231 and #235 on addhost-readd at
8616bf3c62. Read issue history and repository contract. Merging origin/release-prod-livea906ede87(Retry, removal, live terminal action, CLI); resolving conflicts while preserving fresh-response re-add, retained identity/session state and installation ownership. Then failing-first R2-1/two-server ownership and R2-3 resumable removal; full head gate and paired D243 size. No deploy or owner fixture access; push only addhost-readd.Merge findings (#231/#235): production introduced early SSH session publication, shared enrollment shell templates and typed CLI presentation. Resolved the overlaps by keeping replacement on the normal staged service-swap path (no extra shell), retaining the revoked-identity drop in the shared join template, carrying both replacement/session fields, and publishing host_id only after the existing fresh authenticated probe. 50 focused add-host UI tests and TypeScript check pass. Rust checks found an obsolete status test API; repaired; lint/tests queued through build-slot.
Ownership follow-up contract: use production mesh-interface.json as the single local creation receipt. A coordinator binding or an empty interface is not proof of creation: an older installation may have adopted it, including across two independent servers. Without the local receipt leave/name the interface; do not mint a receipt during adoption. The same rule applies to disabled restore and uninstall. Add regression against two independent migrated MeshService databases and real kernel interface. No owner fixture access.
Removal follow-up: strict admission still checks all installed artifacts. Cleanup will accept absent artifacts under the matching private .bootstrap-owner, while validating every artifact still present. Keep the launcher through daemon-reload, skip disabling an already removed unit, make file removal retryable, and prove repeat cleanup plus foreign-artifact refusal. No foundation/dependency change.
Failing-first R2-3 reproduced: interrupted_removal_accepts_missing_owned_artifacts returns NotFound instead of reaching the manager (0 passed/1 failed). red. Initial isolated runs needed the existing test-support and Tokio multi-thread test features; those compile-only failures are excluded.
Merge strict Clippy passed. SSH installer 97 passed/0 failed/1 ignored, then three inherited recovery fixture tests failed before exercising the guard: absolute socket names exceeded sun_path under the mandated scratch root. Shortened only those synthetic socket basenames; retained absolute binding, the newline HOME and all refusal/retention assertions. The production guard checks socket inode/device/uid, not UUID basenames. interim test output. Full focused rerun in progress.
Production advanced while the
a906ede87merge was being checked: release-prod-live now includesc00c6364e(Mesh view), reserving migrations 0026_mesh_node_name_source.sql and 0027_mesh_node_name_claim.sql. This unshipped branch currently has 0026_replacement_join_key.sql. After committing the checked initial merge I will merge the production update and renumber the unshipped replacement-key migration to 0028, adapting migration tests. No deployed migration is rewritten; D168/D244 retained-key constraints stay durable.Current focused result: server remote_backend tests 26 passed/0 failed/2 existing opt-in ignored; SSH installer 97 passed/0 failed/1 ignored and recovery 11 passed/0 failed/1 ignored; strict touched-crate Clippy passes. Remaining merge checks are CLI identity and Mesh state.
Committed and pushed initial production merge
d8828bb8be(parent release-prod-livea906ede87), addhost-readd only. Conflict choices are in the commit body: keep fresh authenticated liveness, retained-key/session replacement, revoked-install Replace, production Retry/early terminal and CLI. One mesh creation receipt (mesh-interface.json). TypeScript check and 50 focused add-host tests pass. Strict touched-crate Clippy passes; SSH installer 97 passed/1 ignored, recovery 11 passed/1 ignored; server remote backend 26 passed/2 ignored; CLI identity 13 passed; Mesh lib 43 passed/13 ignored. No failures in the focused merge gate. verbatim gate receipt.Next merge is frozen at
c00c6364e(production Mesh view); replacement-key migration moved from unshipped 0026 to 0028 to avoid production 0026/0027 collision. Its focused checks are running. Follow-up regression tests remain separate/uncommitted; no owner fixture or deployment action.Committed/pushed production update
65bce9c5db(c00c6364e). Shipped migrations 0026/0027 are unchanged; unshipped replacement-key migration is now 0028. Gate: strict normal-feature Clippy, 13 migration +14 replacement tests, 4 naming +2 presence +6 store tests, TypeScript check +9 protocol tests all pass. receipt.Six ownership regressions fail before their respective repairs, using real WireGuard interfaces in isolated user/network namespaces: two independent coordinators, plan/execution key replacement, second installation on/off, unmarked interface, live down, delayed configuration. Compile-only fixture mistakes were corrected before these red receipts; no host fixture was used.
R2-3 also has a second red: a closed shim socket returns ConnectionRefused and blocks retry. Repairs and forward/idempotence tests are implemented, gated next.
Compatibility choice: a legacy marked interface without a local creation receipt is unverifiable, including if its coordinator accepted that public key. It is left in place and reported Blocked, not silently adopted or deleted. This is required to preserve another installation across two servers; no private key, dependency or new background work is added.
Completed/pushed logical module steps: resumable uninstall
e17aa341c2; creation-key Mesh ownershipe67438b365. Only addhost-readd pushed.Gates: strict touched-crate all-target Clippy PASS; uninstall 16 passed/0 failed; Mesh lib 61 passed/0 failed/14 ignored; new ownership kernel regressions 6/6; server-address/own restart 2/2; route preservation 1/1; inherited retirement proofs 7/7. All kernel runs were isolated user/network namespaces and functional only, no build-host performance claim. The first inherited retirement run lacked nft on PATH and cascaded after setup failed; /usr/sbin was added for that fixture only, then all seven passed. complete partial gate including setup failure, corrected retirement run.
The uncommitted real-service oracle extension now finishes by stopping/disabling the fixture service, unlinking its checked unit/launcher, invoking the shipping binary to resume cleanup, repeating from the immutable fixture image and requiring every tracked service/shim PID gone. Its runner requires REMOVAL_RESUMED as well as the existing 20 re-add samples and removed-host Replace phase. Iteration gate + current static candidate build are queued/running; real SSH/systemd rerun, paired size and final fast gate remain. Perf VM preflight succeeded through NetBird; existing disposable image is available. No deployment or owner fixture access.
Documentation step pushed as
c4295c5a9: contracts/bootstrap.md specifies resumable cleanup with unchanged strict admission; contracts/mesh-dataplane.md requires the local creation receipt and live key checks. docs/verification/addhost-readd.md records the six ownership regressions, real kernel suite invocation and planned actual-uninstaller final phase. Additive contract changes were proposed in the earlier finding comments. git diff --check passed. Broader iteration gate is running; full static size and final gate remain outstanding.Author review at
c4295c5a9(qualification still in progress):Iteration gate finding: previous_attempt_shell's Rust launcher never supplies INFRATERNAL_TEST_RUNTIME_HELPER, although production's Python fixture now requires it. The same launcher/Python prerequisite exists at
c00c6364e. The ordinary workspace gate stopped with 32 KeyError setup errors before any shell assertions; fmt, CLI compile-out, Clippy and cargo-deny passed.Repair uses tests/common::runtime_helper() and scratch(), without production changes or an environment-dependent skip. The focused launcher now passes all 35 underlying Python checks. Strict touched-crate Clippy is queued; the final full gate remains outstanding.
Failing gate excerpt
Focused passing run
Test-launcher repair pushed as
86fd93f8a. cargo fmt --check and cargo clippy --locked -p infraternal-plugin-ssh --all-targets -- -D warnings passed. The ordinary previous_attempt_shell launcher passed again (35 underlying Python checks), now without a caller-supplied runtime-helper environment variable. Native/static real-service artifacts are building; final full gate remains outstanding.Static candidate (normal release recipe) built successfully: 21,271,440 B, SHA-256 a6c75baf144f129a12f815cf180017da7ae7d31267ad55e7fc1518114d94e440. This is +45,568 B against production's recorded 21,225,872-B x86 ceiling; the identical-recipe detached production comparison is queued to confirm the delta. No ceiling was raised. Real SSH/systemd repetitions have started on the perf VM (4 cores, initial load 0.286/0.124/0.424, CPUWeight 10000).
To meet the original 16-KiB limit, I am measuring opt-level=s for the infraternal CLI/entrypoint crate, following the existing per-package convention for orchestration. This is a build-config experiment first; no repository profile change has been made. Transport, crypto, terminal and Mesh engine profiles stay unchanged. I will compare size, real-service replacement and CLI startup before adopting it. No foundational dependency or engine is being selected.
Production-browser functional checks: 8/8 passed on port 4251. Captures cover replacement progress in both themes at 375/393/1440 pixels, plus the already-added terminal action at phone/desktop widths. Captures below are for independent visual review; no timing claim comes from the build host.
Real-service oracle finding: the first rootless run collected zero replacement samples and timed out in its fresh-install wait. My merge adaptation waited for a second wizard Done, but production deliberately ends that stream at early terminal publication; service completion is emitted only on the host-bound setup status. The oracle now subscribes before replay and waits for Stage::Ready/State::Done there, with public failure diagnostics. No production change was needed. Its owned container was absent and both control PIDs were gone after cleanup. The corrected native harness is rebuilding.
round3-rootless-red.log








The corrected status wait exposed an independent fresh-install failure before any re-add sample: with no optional session image supplied, the full binary opens the early SSH terminal, then setup fails at Install with exit-73's “Setup is already running on this host” message. The full session bridge starts plugin control/runtime ownership; the following staging/activation handoff needs that lifetime ownership. Relevant paths are session_bridge::run, setup_scripts::ACTIVATE and handoff_setup_lease. No existing installation or replacement path was reached.
Public host-status failure and cleanup receipt
This brief tests re-add of an already installed service, which deliberately does not use the early bridge. The oracle now seeds its initial service through the existing staged-only SSH capability (still actual SSH, shipping signed/staged installer, actual systemd and authenticated PTY). All twenty replacements exercise the same production path as before; no production workaround or bypass was added. docs/verification/addhost-readd.md explicitly scopes that capability. The optional full-image early-terminal fallback is recorded here for a separate fix; this lane makes no qualification claim for it. The failed container was removed and both control PIDs were gone. The staged-service harness is rebuilding.
Normal release candidate real-service proof passed on the perf VM (4 vCPU, CPUWeight 10000): rootless 20/20 replacements, p50 2.947820 s, max 3.187008 s; rootful 20/20, p50 3.206369 s, max 3.299481 s. Every cycle retained host UUID/key, one live record, the original PTY/shim and the exact running-binary hash. Each mode also passed revoked-host Replace under a new identity, actual --bootstrap-uninstall with its unit and launcher already absent, a repeated cleanup/no-op, and tracked-PID disappearance. Both exact containers were absent; all four control PIDs were gone. Full load arrays and individual samples are in the linked JSON.
The paired production static build at
c00c6364eexactly reproduces 21,225,872 B. Normal candidate is 21,271,440 B (+45,568 B). The compact-entrypoint experiment and its runtime comparisons remain outstanding; no ceiling has been raised.rootless-service.log
rootless-summary.json
rootless-cleanup.json
root-service.log
root-summary.json
root-cleanup.json
D243 experiment rejected: opt-level=s for the entrypoint produced 24,420,400 B versus the normal 21,271,440 B (+3,148,960 B). The repository profile was never changed; no runtime claims are made for the rejected artifact. Production's paired normal build remains exactly 21,225,872 B.
The 1,000-peer measurement passed all 12 actual-kernel probes (six baseline/candidate pairs, reversed order, private network namespaces, perf VM, CPUWeight 10000). Single-endpoint updates were baseline 540–888 us and candidate 1,674–3,554 us; the new live ownership proof has a measurable management-only cost of roughly 1.7 ms at 1,000 peers. Initial snapshots were 115–156 ms. No forwarding path or idle work changes.
I will measure outlining the existing generic netlink visitor's framing loop into one borrowed, type-erased internal callback. Framing, validation, buffering, request/reply ordering and public APIs remain unchanged; no new allocation or engine is introduced. The aim is code-size reuse under the normal profiles, with the kernel/property suites and the same 1,000-peer comparison before accepting it. The first Docker benchmark preflight collected no sample because that SSH image lacks nft; native namespaces use the VM's existing nft tool.
Real-service oracle step pushed as
6d4eafcf8; its staged-service scope documentation isee5ddea5c. The runner now requires actual resumed removal/no-op success in addition to twenty replacements, revoked-host Replace and PID cleanup. The 20+20 normal-release runs and their exact cleanup receipts are linked above. cargo fmt --check and shipping-feature workspace Clippy passed. No production early-terminal fallback change is included.The pending shared-netlink-loop optimization passed the same Clippy check, 61 ordinary Mesh tests and all 16 isolated kernel cases. Its exact normal-profile static size and repeated 1,000-peer measurements are still pending, as is the final scripts/verify fast gate.
The normal-profile shared-netlink build is 21,270,032 B, saving 1,408 B but still +44,160 B over production. Functional gates passed (workspace Clippy, 61 Mesh unit tests, 16 real-kernel cases). A paired original/outlined kernel measurement will decide whether to keep that free cut.
To reach the original 16-KiB target without changing engine/compiler profiles, I will measure a smaller common SSH Failure value. Fingerprint vectors, key-family text and missing-payload coordinates are rare; the type already allocates optional boxed UUID metadata. Reuse that box for these public details, preserving both UUID fields separately and preserving exact JSON/field access behavior. Common failures keep their ordinary fixed message/log fields and no details allocation. The layout/wire-format regression is tightened first, then checked on the perf VM. No new dependency, engine, wire field, runtime worker or polling is introduced. This is a layout experiment until size and real-service gates pass.
Shared bounded-netlink-codec cut pushed as
1e9d3e8fe: -1,408 B x86 under unchanged normal profiles, with workspace Clippy, 61 ordinary Mesh tests and 16 isolated kernel cases passing. Six paired original/outlined 1,000-peer probes on the 4-vCPU perf VM: snapshot means 140.729/141.252 ms (+0.37%); endpoint means 2.604/2.207 ms, with overlapping variation. No speed improvement is claimed. The failure-layout experiment remains uncommitted and the final full gate remains outstanding. Its tightened common-layout test fails first on the perf VM at 112 bytes.summary.json
outline-build.log
failure-layout-red-vm.log
Failure-layout experiment: the tightened regression failed first on the perf VM at the original 112-byte common value (receipt above). The compact layout now passes all three serialization/layout cases on that same VM: <=64-byte bound, exact outcome-specific UUID keys, flat optional facts and clone independence. Only rare fact writes allocate the existing optional details box; empty reads use immutable default facts. Public JSON and ordinary field syntax remain unchanged. No compiler/engine profile or dependency change.
The source remains uncommitted in crates/plugins/ssh/src/model.rs while the full SSH/replacement checks and exact static-size measurement wait for a build slot.
failure-layout-green-vm.log
Compact structured facts cut a further 13,760 B under normal profiles: static x86 is 21,256,272 B, still +30,400 B over production. Workspace Clippy, the complete SSH suite and selected re-add/replacement suites passed; the exact wire/layout/clone cases passed on the perf VM. The change remains experimental and uncommitted while the byte limit is unmet.
Next measure: put the variable log vector in that same details box too. Plain static refusals remain allocation-free; enriched errors pay for one details allocation, while success/control futures and empty history slots carry a smaller inline value. Keep flat JSON, independent clones and distinct UUIDs. Measure the layout plus the actual enriched-error cost and real-service repetitions before accepting this tradeoff. No dependency, engine or profile change.
The current static x86 candidate is 21,233,872 B: +8,000 B against the independently reproduced
c00c6364ebaseline, now within the original 16-KiB limit. Profiles/dependencies/engines remain unchanged. The earlier half-layout diagnostic is confirmed on the perf VM at 56 B; final common layout and enriched-error measurements are pending.Real-service qualification of the compact candidate passed 20/20 rootless replacements and revoked-host Replace, then the actual removal shell returned status 1. The exact container was absent and both control PIDs were gone. The oracle now captures only that owned command's public phases, CLI diagnostics and final status, and still requires exit 0; the diagnostic rerun is active. No completion claim is made.
Benchmark preflight rejected the first production-control artifact because it had the same hash as the compact binary: a shared Cargo target reused the remapped workspace artifact. No comparison from those artifacts was run or accepted. The production control is being rebuilt in a separate comparison target, and the measurement asserts production/common sizes 112/32 before accepting any sample. The earlier paired static baseline used a separate target and exactly reproduced production's ceiling.
round6-vm-run.log
failure-diagnostics-vm.log
R2-3 real-service finding: the compact candidate again passed all 20 rootless replacements and revoked-host Replace, then its public removal phases showed --bootstrap-uninstall returning Broken pipe during shim retirement. Owned container and both control PIDs were gone.
A new real-Unix-socket regression fails before the fix: the authenticated peer sends Exited, then closes before ExitAck. A companion regression closes without Exited and must remain refused. The narrow fix accepts only closed-transport errors from the final ACK after authenticated Exited; all earlier errors still fail. All 18 uninstall tests pass, including both new cases. Source remains uncommitted pending shipping-feature Clippy and fresh real-service runs. Normal profiles and engines stay unchanged; the current pre-fix x86 candidate is within the 16-KiB size target.
round7-vm-run.log
final-ack-red2.log
final-ack-suite-green.log
Compact Failure measurement accepted for the size/representation change: independent artifacts on the 4-vCPU perf VM, actual CPUWeight 10000, load 0.531/0.521/0.522 before and after. Every sample asserts the actual production/compact common sizes 112/32 B. Six reversed-order pairs, each with 31 timed batches per lane, retain 1,600 enriched errors plus one history copy. Exact JSON, separate UUID meanings and clone isolation remain green.
Aggregate creation medians: 102.5 -> 117.5 us per 1,600. Clone medians: 72.5 -> 119.5 us. Combined-batch median: 177.5 -> 243.0 us; observed maximum: 400 -> 3,474 us. Retained RSS growth: 364,544 -> 512,000 B (+147,456 B / 144 KiB). These are enriched-error costs, not total application RSS; inline common storage alone falls from 179,200 to 51,200 B for 1,600 values, excluding boxed facts/log buffers. Plain refusals allocate no details. Working terminal/transport paths do not use this SSH diagnostic type. The bounded extra cost on rich errors is accepted to keep result/future values small and meet D243 without changing engine/compiler profiles or adding dependencies. No tail-speed improvement is claimed.
The pre-ACK-fix stripped x86 artifact is 21,233,872 B, +8,000 B versus the independently reproduced 21,225,872-B production baseline. This meets the original 16-KiB allowance; fresh x86/ARM artifacts including the narrow final-ACK fix are building before final qualification.
summary.json
errors-vm-run.log
log-failure-build.log
Completed and pushed
f0585fc7c: optional SSH failure facts use one private details box; common Failure is 32 B versus 112 B on production. Flat JSON keys, purpose-specific UUID accessors and clone independence stay unchanged. Full SSH suite, selected server re-add/replacement tests, fmt and workspace all-target Clippy passed (log linked in the preceding measurement comment). Perf VM six-pair workload: 1600 rich errors + one history copy, combined median 177.5 -> 243 us, max 400 -> 3474 us, retained RSS growth +147456 B. Plain failures allocate no details. Pre-final-ACK static x86 delta +8000 B; fresh final binaries are building.Documentation step committed/pushed as
9dcb16775. docs/verification/addhost-readd.md now gives the independently built control recipe and bounds the rich-error/RSS claim; it also names authenticated exit vs early-close regression coverage. git diff --check passed. No runtime change in this step. Current shipping-feature Clippy, remote regression and static builds continue before final qualification.Completed/pushed
dec8f7227: removal accepts a closed final ACK only after authenticated Exited. A peer closing before Exited stays refused; partial-frame read and periodic shell retirement behavior are unchanged. The Unix-peer regression failed before the fix, then all 18 uninstall tests passed. Current source also passes cargo fmt --check and cargo clippy --locked --workspace --all-targets -- -D warnings. The three SSH representation/JSON/clone tests pass. Fresh service-oracle/static binaries are building; actual 20x rootless + 20x rootful final qualification remains. No owner install or foreign device was touched.D243 architecture finding: current stripped ARM artifact is 19,455,264 B against the production ceiling 19,427,688 B (+27,576 B). The x86 candidate before final-ACK is +8,000 B; its current rebuild is still linking. No compiler profiles, dependencies, crate features, packet path, background poller or per-peer retained storage were added for size work. ARM growth above 16 KiB is explicitly recorded here rather than presented as meeting the x86 target.
Justification for the bounded ARM growth: this lane adds authenticated live-response admission, same-key replacement/reconciliation, per-installation live interface ownership checks, and resumable removal. Safety paths reuse the existing transport, SQL, crypto and parser implementation. Shared bounded netlink codecs and compact SSH diagnostics reduce duplication without weakening checks. Paired 1,000-peer perf-VM measurements cover the live-key management guard: endpoint updates add roughly 1.7 ms in that test; unchanged packet/idle paths gain no new work. Six-pair outlined-codec snapshots average 140.729 vs 141.252 ms with overlapping variation. Rich-error allocation costs are quantified in f0585fc7c's preceding comment, including the maximum. Final exact sizes and ceilings will use the final artifact, and the 16-KiB x86 requirement remains enforced. No global optimization-profile change is being shipped.
Completed/pushed
d81f9d4af(public removal-phase diagnostics; exact zero status still required) and63b0c7a159(exact D243/D264 static ceilings + process table).Final stripped normal-profile x86: 21,234,000 B, SHA256 8d5baaa84e32a981519f655edf59a30f7aa52feaa0c3b7afea3b03a355a903e4; independent production
c00c6364econtrol: 21,225,872 B, delta +8,128 B (within task 16-KiB allowance). ARM: 19,455,264 B, SHA256 1f52af2e002261a99b85c484867347e9efd18630d7fd2e5fbacbcc37a137270b, +27,576 B versus production ceiling; target-specific measured justification is in the preceding D243 comment. No profile/dependency/engine changes. Both fresh static builds, fmt, strict workspace Clippy, 18 uninstall tests and 3 SSH wire/layout tests pass. Native real-service oracle compiles.The final x86 artifact and oracle are now running on the 4-vCPU perf VM, CPUWeight 10000, round8-20261019, separate lock for each mode. scripts/verify fast is submitted through build-slot on head
63b0c7a15; no final-gate completion claim yet.final-static-size.json
isolated-bench-build.log
Final real-service qualification PASS at source head
63b0c7a159, exact x86 artifact SHA256 8d5baaa84e32a981519f655edf59a30f7aa52feaa0c3b7afea3b03a355a903e4 (21,234,000 B). Named perf VM, 4 vCPU, scope/container CPUWeight 10000, separately locked per mode. Rootless 20/20: p50 2.950451 s, observed max 3.071849 s; load 0/0/0.129 -> 0.415/0.153/0.177. Rootful 20/20: p50 3.205159 s, observed max 3.269477 s; load 0.415/0.153/0.177 -> 0.885/0.354/0.245.Both modes retain UUID/public key/state/PTY and prove the new MainPID executable with one live record after each one-shot-dial silent fixture. Both also pass revoked-host Replace, actual --bootstrap-uninstall with the unit and launcher already gone, repeated no-op cleanup, and all tracked shim/service PIDs gone. Rootless container 09bab4039a81cc8283febe345e117f0f037868a1def47878b0cfdaa545f891a0 absent; control PIDs 3404932/3405050 gone. Rootful container 6748f807da20049f8990f2bf9b75ea19a76a26426a1eb748116feb25ec5f2d40 absent; control PIDs 3409605/3409728 gone. No owner installation/device was accessed. The fixture is behavioral and padded to 20,333,104 B, not the historical executable. Optional fresh early-terminal full-image handoff remains the separately recorded pre-existing finding; this oracle exercises production staged replacement.
Author checklist update: reviewed unchanged flat failure JSON, separate UUID purposes and deep clone ownership; optional-facts cost is measured, no new dependency/profile. Final-ACK success requires authenticated Exited; early close remains refused by regression. Local creation marker plus live-key checks guard Mesh restore/config/down/retirement; two-server same-key regression and the other 15 kernel cases passed. Removal remains owner-scoped and verifies every present artifact, retains unrelated state, and retries idempotently. Browser production-build receipts are attached above for independent visual review. Prior author review covers authority, transactionality, additive migration and rollback.
scripts/verify fast is still waiting in the unmodified shared build-slot wrapper on this head. This is a completed service-proof step, not the final completion comment.
round8-vm-run.log
rootless-service.log
rootless-summary.json
rootless-cleanup.json
root-service.log
root-summary.json
root-cleanup.json
Cleanup step: all 87 public VM receipt files were copied and SHA256-verified locally, then only /root/infraternal-bench/addhost-readd was removed after checking zero running job-labelled containers and zero job scopes. Exact container/PID cleanup proofs are in round8's preceding comment. Detached negative-control and production-comparison worktrees were removed after saving their tracked test-only patches; the separate comparison build target is removed. Primary target remains until the final gate finishes. No broad process kills or owner fixture access.
Final fast gate is still queued in the unchanged build-slot wrapper on
63b0c7a159; all three regular slots are occupied (two other final gates and a check-steps run). Source and branch head remain unchanged. No gate failure or completion is being inferred from the wait.vm-cleanup-final.json
vm-archive-manifest.json
comparison-worktree-cleanup.json
comparison-target-cleanup.json
Finished on addhost-readd, pushed head
63b0c7a159. Productionc00c6364eis merged; only addhost-readd was pushed. No deployment; no owner's live installation or interface was accessed. Issues stay open.Stale or never-connected installations now take the SSH-only staged replacement path; genuinely live hosts alone get already-added with the terminal host id. Replacement retains the issued UUID/key, sessions and state, and atomically retires evidence-matched duplicate records. Mesh operations require this installation's creation receipt plus the live key; a foreign interface is reported and preserved. Removal resumes after partial cleanup and repeats as a no-op; a closed final ACK succeeds only after authenticated exit.
Qualification: scripts/verify fast exited 0 on this head, with every Rust row PASS and all TypeScript/compiler/bundle rows passing. Workspace: 1,588 passed / 0 failed / 191 ignored in 136 groups; no load-baseline exception used. Additional functional proofs: 16 real-kernel ownership cases, 18 uninstall unit cases, 8 production-build browser cases. Final real SSH/systemd proof on the 4-vCPU perf VM: 20/20 rootless + 20/20 rootful replacements, one record and retained PTY/identity/state, hash-proven executable, revoked-host Replace, resumed actual uninstall after absent unit/launcher, repeated no-op cleanup. Rootless median/max 2.950451/3.071849 s; rootful 3.205159/3.269477 s, CPUWeight 10000, loads in the attached receipts. It is a padded one-shot-dial behavioral fixture, not the historical binary.
D243 final stripped static sizes: x86 21,234,000 B versus the independently rebuilt production control 21,225,872 B (+8,128 B, within 16 KiB); ARM 19,455,264 B versus production ceiling 19,427,688 B (+27,576 B, separately justified above with measured management and diagnostic costs). Exact caps have no slack. No dependency, engine or optimization-profile change. The normal gate and explicit-release service artifacts have distinct build-identity hashes and equal sizes, recorded separately.
Author checklist is recorded in the service-proof comment above. Optional fresh full-image early-terminal handoff remains the separately recorded limitation; this lane qualifies production staged re-add. Screenshots are attached for independent review. VM job files, all comparison worktrees/build targets, the primary target and temporary fixtures are removed; no owned scratch processes or listeners on 4251/4252 remain. Public receipts and reproduction scripts remain outside the checkout. All 87 VM receipts were SHA256-verified before VM cleanup.
final-fast.log
workspace-test-counts.json
gate-and-release-identities.json
final-static-size.json
isolated-bench-build.log
round8-vm-run.log
rootless-service.log
rootless-summary.json
rootless-cleanup.json
root-service.log
root-summary.json
root-cleanup.json
final-local-cleanup.json
local-port-cleanup.json
gate-and-release-identities.json
Full scripts/verify fast output, verbatim (including existing dependency-duplication warnings):
Independent break-it review starts on review-addhost-readd at base/head
63b0c7a159; review c00c6364e..63b0c7a15. Read #231/#235 and parent #225 history. Test-only commits; no deploy, production changes or owner fixtures. Checking retained-key admission, fresh-response races, kernel ownership, interruption boundaries and production-build replace/progress/failure screens.P1 R1 confirmed at target
63b0c7a15: bootstrap_readd.rs:163-190 probes duplicate liveness before acquiring the SQLite writer, then rechecks only row selection. A previously silent duplicate can reconnect and answer a fresh correlated authenticated call while reconciliation waits for that writer; reconciliation still revokes it and returns Ok(()). Native QUIC/SQLite regression review_reconciliation_rechecks_a_duplicate_that_connects_after_the_probe: 0 passed / 1 failed, assertion "an answering duplicate was retired after the offline probe: Ok(())". The test uses a deterministic pool-admission barrier, not a timing race; proves already_added from a fresh response before releasing retirement. No production change or owner fixture access.reconciliation-red.log
Production-build screenshot step complete on unchanged implementation
63b0c7a15. Playwright port 4297, loopback test-double events driving the actual production wizard/decoder. 10/10 functional checks pass: replacement caption persists through install in both themes at 1440/393/375px; earlier-install Replace and missing-account failure naming kayg on silent.lab captured at 1440x900 and 393x852. Missing-account Retry absent. Browser plugin unavailable; repository Playwright used. These screenshots are attached for human judgment; no visual-quality or performance verdict is made.browser.log
R2 data-loss regression confirmed (P0 under the brief severity definition): uninstall.rs:180-186 permits missing bin/current during retry, but remove_files at :724-732 recursively removes the entire current bin directory without proving it is the directory setup created. Reproduction: interrupt after unit/launcher/bin deletion, retain the matching private parent owner marker, independently recreate bin/operator-notes, resume cleanup. It returns Ok([]) and the independent file is gone. Complete uninstall suite: 20 pass / 1 fail; the new ownership assertion fails with left=None. Existing phase/idempotence controls pass, as do new ACK-only and wrong-session refusal controls. Shipping-CLI/systemd reproduction is prepared and will run against the final static artifact; no owner fixtures accessed.
removal-tests-complete.log
P1 R3 confirmed at target
63b0c7a15: ssh/install.rs:415-419 rewrites the removed installation unit marker before the owner marker, without a recovery journal for those two writes. The real-shell fixture terminates the shell immediately after the first rename and explicitly proves unit=new UUID / owner=old UUID. Normal rollback and normal repeated re-add inspection both refuse with exit 71. review_removed_install_adoption_recovers_after_the_first_marker_rename: 0 pass / 1 fail. No implementation change.Other functional qualification: replacement real-CSR key admission 1/1; existing re-add checks 9/9 plus R1 red; 16/16 real-kernel ownership cases in isolated user/network namespaces; 20/21 uninstall cases (R2 only red, ACK/session controls pass). Strict workspace all-target Clippy, fmt and TypeScript check pass. Earlier compile-only fixture errors excluded.
adoption-red-corrected.log
key-admission.log
kernel-ownership.log
readd-suite.log
review-clippy.log
Test-only steps committed and pushed on review-addhost-readd; head
e859f0d331(clean checkout).14c5e658e: R1 native reconnect/writer race (red twice; existing re-add checks 9 pass).1a5d29743: R2 independent replacement-slot deletion (red; real-CLI fixture committed for candidate/control check).59fd7d317: ACK-only and wrong-session retirement controls (both pass; uninstall 20 pass / R2 fails).f46cee12a: R3 real-shell interruption between unit/owner renames (red; rollback and re-add both exit 71).e859f0d33: production-build Replace/account screenshots on phone/desktop (10 browser checks pass).Workspace strict all-target Clippy, fmt, TypeScript check and all 16 real-kernel ownership checks pass. No production code changes. Full scripts/verify fast, independent production static-size comparison and candidate/control shipping-CLI removal runs are queued through one build slot on this head.
Starting round 2 on addhost-readd-r2 at
63b0c7a159(origin/addhost-readd). Continuing review R1/R2/R3 from #231/#235 and review findings. Cherry-picking the five specified test commits without weakening assertions, then separate ownership-removal, fresh-liveness and recoverable-handoff repairs. Will run isolated kernel/service/browser cases, paired static-size comparison and final scripts/verify fast. No deployment or owner acceptance fixture access. Push addhost-readd-r2 and fast-forward addhost-readd only after green.R2 repair boundary: bin is never recursively removed. Only checked slot names are unlinked while bin/current still proves the live target; an empty bin may be removed, unknown entries remain and are reported. A resumed cleanup with no current link cannot claim leftover slot contents. R1: retain the cheap preflight probe, then require a new bounded correlated response check after SQLite writer admission and exact duplicate-selection recheck, before retirement. R3 additive recovery: link the original unit atomically into a private handoff receipt before rewriting either marker; under the existing parent guard rollback/repeated inspection restore the old unit when owner is still old, or retire the receipt when both markers agree on the new owner. No new dependency, engine or background task (D17/D134/D243).
Contract step
87ef91dd9committed: specifies fresh liveness under the SQLite writer, recoverable two-marker handoff, and nonrecursive binary-slot removal (D17/D134). git diff --check passed; documentation only. Five review test commits cherry-picked unchanged as199d031ee,18f3334b8,056fe3905,40107b665,08bd88577. Initial failing-first runs are compiling dependencies through the shared build slot; added original-directory/unknown-file and every-handoff-boundary regressions. No owner fixture access.R2 reproduced on this branch before repair: uninstall 20 passed / 2 failed. The unchanged review test deleted the recreated bin/operator-notes; additional regression
c2af008abalso deleted unknown contents in the original slot directory. R3 reproduced before repair: rollback and inspection both refused with exit 71 after unit=new / owner=old. Additional test commit8cd533dbdcovers all journal/marker publication boundaries and both recovery paths; its pre-fix journal-boundary assertion fails. No owner fixture access.removal-red.log
handoff-red.log
handoff-boundaries-red.log
R1 reproduced before repair: unchanged native QUIC/SQLite regression failed 0 passed / 1 failed with “an answering duplicate was retired after the offline probe: Ok(())”. Added the second fresh correlated call under the acquired SQLite writer, after matching-record recheck and before any retirement write. The existing management call path does not reacquire the database. Focused repaired-module tests/lint plus 16 real-kernel ownership cases now running sequentially through build-slot.
reconnect-red.log
Completed R3 in
18a204074. An atomic sibling hard link preserves the original unit before either marker rename, avoiding cross-filesystem assumptions. The existing parent guard restores the old unit while owner is old, or accepts owner/unit=new and retires the receipt. Recovery itself and repeated pre-stage rollback are retryable; unit contents, uid, mode and marker grammar are checked before journal mutation.Installer suite: 99 passed / 0 failed / 1 existing sudo-dependent ignored. Includes the unchanged review regression and ten real-shell boundary/recovery combinations. SSH strict all-target Clippy, workspace fmt and diff checks pass. No owner fixture access. Full static, browser and service qualification remain.
install-green.log
ssh-clippy.log
Completed R2 in
867cf236e: bin is never recursively deleted. Only the checked current/live slot names are unlinked, live first so interruption keeps the binding proof. Unknown entries, unbound live files and replacement directories remain, with a truthful leftover report; repeated cleanup cannot infer ownership from their existence. Test-root follow-up6d8d4eff5makes every uninstall fixture honor INFRATERNAL_TEST_STATE_ROOT; short owned root ah2 avoids Unix-socket path limits.Uninstall: 22 passed / 0 failed, including original R2, extra-file, missing-current, ACK-only and wrong-session controls. Strict all-target remote Clippy, fmt and diff checks pass. All 16 unchanged real-kernel ownership cases pass in isolated user/network namespaces (2+6+1+7). Functional only; no build-host performance claim. Final shipping CLI/systemd, browser and full static gates remain.
removal-isolated-green.log
removal-clippy-corrected.log
kernel-ownership.log
Completed R1 in
8da757467: exact duplicate selection and a new correlated authenticated response check now share the SQLite writer, before any retirement write. The pre-writer probe remains only preflight. A response aborts the transaction with prior authority and terminal bindings intact. No new dependency or task.Re-add suite 10 passed / 0 failed; standalone unchanged reconnect regression 1/1; retained-key admission 1/1. Strict cargo clippy --locked --workspace --all-targets -- -D warnings, fmt and diff checks pass. The earlier isolated server-only Clippy invocation selected the mesh-disabled infraternal-agent branch and hit two unchanged unnecessary_wraps lints; shipping workspace features pass without changing that unrelated code.
Author review added an independent-unit-edit regression for handoff recovery before tightening that proof. Final browser install/check and service/static gates remain.
readd-green.log
reconnect-green.log
key-admission.log
workspace-clippy.log
Author-review finding in the new R3 recovery: the original-unit journal alone could overwrite a unit independently edited after interruption. Test-only commit
5938b919areproduces it with real files: 0 passed / 1 failed at the exact content-preservation assertion (KillMode edit was overwritten). Tightened recovery now requires the current unit to equal the saved original except for the canonical identity-marker substitution, before any temporary-file retirement or restore. No extra utility/dependency is added. Full installer requalification is running; shipping fixture remains isolated.handoff-independent-red.log
Completed author-review safeguard in
e0c73f595: recovery validates the full current unit against the saved unit, allowing only its canonical marker change, before any recovery mutation. Independent unit edits are refused and preserved with the journal. Full installer suite 100 passed / 0 failed / 1 existing ignored; strict SSH all-target Clippy, fmt and diff checks pass. Exact-source native service oracle rebuilt successfully. All three review regressions remain unchanged. Production-build browser cases, iteration/full gates and paired static size are next; no deploy or owner fixture access.install-final.log
ssh-clippy-final.log
Production-build browser qualification on
e0c73f595: 10 passed / 0 failed / 0 retries at unique TRACER_TEST_PORT=4292. Six replacement-caption cases (ink/paper, desktop/393/375) plus four unchanged review Replace/missing-account cases (desktop/393). Frozen Bun dependencies installed; bun run check passes. Captures are attached for independent visual judgment; these are browser viewport checks, not physical-phone or build-host performance claims. Test server shut down through the harness. Iteration, static/service qualification and independent D243 control are queued through one build slot.browser.log






Qualification queued since 2026-10-19T02:11:48+02:00; source remains clean at
e0c73f595. Focused/module/kernel/browser checks are green as recorded above. Current shared wrapper defaults to 3 ordinary slots; all are occupied. No capacity or priority override used. Remaining: iterate, exact static CLI + 40 real-service re-adds, merge-base size, cap ratchet if needed, final fast gate, push both branches. Waiting normally; no owner intervention requested.2026-10-19T02:03:59+02:00 slot 1: ? pid 1933533: bash /home/kayg/.cache/codex-scratch/app-windows-latency-r2/evidence/check-integration-and-build-window.sh
2026-10-19T01:40:36+02:00 slot 2: ? pid 1684431: bash -c git rev-parse HEAD; scripts/auth-toolchain; export PATH="$CARGO_TARGET_DIR/auth-tools/zig:$PATH"; cargo build --locked -p infraternal-plugin-ssh --example recovery-helper && scripts/verify fast
2026-10-19T02:15:18+02:00 slot 3: ? pid 1987920: /home/kayg/.cache/codex-scratch/review-layout-sync/browser-run.sh
First iteration gate on
e0c73f595: fmt, VT fmt, compile-out, Clippy and cargo-deny passed; Rust tests stopped at runtime_lock::tests::a_live_legacy_runtime_cannot_publish_an_unheld_lifetime_file (108 passed / 1 failed in that crate). The post-listener-close acquire assertion failed. Both runtime_lock source/test files are unchanged from63b0c7a15; isolated rerun of the exact compiled test passes 1/1. This is not an allowlisted #118 waiver. Re-running the full iteration gate unchanged; every final row must pass. Static/service qualification did not start after that failed gate.iterate-first.log
runtime-lock-isolated.log
Qualification order update: the unchanged runtime-lock test passes in isolation. The final scripts/verify fast will provide the fresh full-suite recheck rather than repeating both workspace gates. No exception or assertion change is applied. Proceed with exact static service qualification and independent size control before the final full gate; push remains conditional on its result. Initial iterate failure remains attached above.
Exact static candidate ea702558d996bdc264856a0f608cb0308d66c85fe81f7128ba6bc7cc59aa8913 (21,239,632 B) passes the shipping CLI P0 fixture: independent uid-1000 bin/operator-notes retained, leftover reported, exit 0, container absent. Rootless oracle passes 20/20, removed-host Replace and resumed cleanup; container and both control PIDs gone. Rootful initial run passed 15 replacements, then sample 16 returned Setup is already running during Install. Its exact container and PIDs are gone. No product cause established; fresh root oracle rerun uses identical source/artifacts/assertions, with the first failure retained. No build-host timing claimed.
removal-cli-candidate.log
rootless-summary.json
rootless-cleanup.json
service-root-first-run.log
Final functional service runs pass on source
e0c73f595, exact stripped static x86_64 candidate ea702558d996bdc264856a0f608cb0308d66c85fe81f7128ba6bc7cc59aa8913, 21,239,632 B. Rootless 20/20 and fresh rootful 20/20, each with one live record, retained UUID/key/PTY/shim and candidate MainPID executable digest. Both modes also pass removed-host Replace, shipping resumed uninstall, repeated no-op cleanup and every tracked service/shim PID gone. Exact containers and both control PIDs per mode are absent in cleanup receipts. Shipping P0 fixture preserves/reports the independently recreated bin file.The earlier rootful attempt stopped at sample 16 with a busy-setup refusal after 15 successful replacements; it is retained separately above, not counted as a passing run. No assertion or candidate change between runs. All tests use owned disposable containers/private network namespaces on the build host. Times are not performance evidence; fixture is the documented one-shot-dial behavioral image, not the historical executable. Owner live acceptance files/installation/interfaces remain untouched. Independent merge-base size build and ARM build are running next; final full fast gate and pushes remain.
rootless-service.log
rootless-summary.json
rootless-cleanup.json
root-service.log
root-summary.json
root-cleanup.json
Independent same-recipe D243 x86_64 comparison complete: merge base
63b0c7a15= 21,234,000 B; candidate sourcee0c73f595= 21,239,632 B; delta +5,632 B (5.5 KiB), below 16 KiB. No dependency, feature or profile changes. Shipping-CLI negative control against the actual baseline reproduces deletion of the independent file; the candidate preserves/reports it. Both exact fixture containers were removed. ARM build is running; measured ceilings and final full fast gate follow.static-comparison.json
removal-cli-baseline.log
removal-cli-candidate.log
Measured D243 ceiling step committed as
f3b53dfa03. Exact static/stripped artifacts: x86_64 21,239,632 B (+5,632 vs independent63b0c7a15control); aarch64 19,460,512 B (+5,248 vs recorded parent). Both within 16 KiB; no allowance/slack remains. Profiles/features/dependencies unchanged. Production-only trust, no PT_INTERP, exact size checks, shell syntax, fmt and diff checks pass. Final scripts/verify fast queued on this clean head. Both branches will be pushed only after the final result; no deploy.static-comparison.json
measured-cap-check.log
Final-fast first run on
f3b53dfa0: runtime-lock test that failed the first iterate passed unchanged; fmt/compile-out/Clippy/cargo-deny/static rows passed. A separate existing Python ownership-shell oracle failed 26 assertions with exit 127 because its hand-assembled guard omitted the new handoff dependency. The minimal-host Rust helper had the same direct-include pattern. Updated only their composition/preamble to include the shared recovery helper and explicit fixture unit path; no assertion changes. All 35 Python ownership cases now pass. Rust fixture tests and strict SSH Clippy are queued before a test-only commit and final full gate rerun. No #118 waiver; production source/artifact bytes unchanged.final-fast-first.log
ownership-shell-corrected.log
Completed test-only fixture alignment in
bed79b865a. Python ownership composition and minimal-host Rust composition now include the same handoff helper/preamble as production. No assertion or expected status changed. All 35 Python ownership cases and 12 non-ignored Rust fixture tests pass; the opt-in minimal host without Python additionally passes with the shipping static helper. Strict SSH all-target Clippy, fmt and diff checks pass. Production code/artifact bytes remain unchanged. Final full scripts/verify fast is queued on this clean head; previous full-gate failure is retained above.ownership-fixtures-green.log
ownership-fixtures-clippy.log
minimal-host-recovery.log
Finished round 2 at
bed79b865a. Pushed addhost-readd-r2 and atomically fast-forwarded origin/addhost-readd to this same head; all 16 logical commits are on both branches. Worktree clean. No deployment or owner live acceptance fixture access; issues stay open.R2: only checked slot entries are unlinked; unknown/recreated bin contents remain and are reported. The exact shipping-CLI baseline reproduces deletion; candidate preserves it. R1: fresh correlated liveness is rechecked under the SQLite writer before retirement. R3: atomic original-unit journal plus guarded recovery makes both marker states retryable, and independently edited units remain untouched. All five requested review commits were cherry-picked without weakening assertions. Shared ownership fixtures now compose the full shipped helper.
Final validation: scripts/verify fast exit 0, all Rust rows PASS, 1,596 reported Rust passes (including isolation child runs), 0 failures; 260 tracer/UI tests, 37 protocol tests and 2 compiler-metadata tests pass. No #118 or other gate waiver. Additional qualification: 22 uninstall tests, 100 installer tests, 35 ownership-shell cases, 16 real-kernel cases, 10 production-build browser cases, minimal-host recovery without Python, final real SSH/systemd 20 rootless +20 rootful replacements including removed-host Replace and resumed/repeated uninstall. Retained identity/key/PTY/shim, one live record and exact candidate MainPID digest were checked. Browser captures are attached above for independent visual judgment. No build-host timings are claimed as performance evidence.
D243: stripped static x86_64 21,239,632 B, +5,632 B (5.5 KiB) versus the independently rebuilt
63b0c7a15merge base, 21,234,000 B. ARM 19,460,512 B, +5,248 B against the recorded parent artifact. Both exact ceilings are ratcheted with no spare allowance; no dependency/feature/profile change. The final gate's x86 bytes match the executable used in both final service runs.Earlier qualification failures remain recorded above: the unchanged runtime-lock test passed in the final gate; the incomplete ownership fixture composition was corrected with identical assertions; one initial rootful run stopped at a busy-setup refusal after 15 samples, followed by a fresh unchanged 20/20 run. These are not counted as passing attempts or hidden by retries in the oracle.
Cleanup: temporary baseline worktree, both Cargo targets, copied artifacts, short fixture root and initial red-test fixture removed. All exact owned containers/control PIDs are gone in the retained receipts; browser ports closed. Evidence stays outside the checkout. Functional adapter, identities, counts, author checklist and cleanup receipts:
final-fast.log
final-identities.json
final-counts.json
final-cleanup.json
author-checklist.txt
Full scripts/verify fast output, verbatim:
Finish supplement, same head
bed79b865a: the full verbatim gate, identities, counts, cleanup and author checklist attachments all uploaded successfully and are linked in the finish comment above. The optional functional-adapter source attachment returned HTTP 422; its exact source remains outside the checkout at $HOME/.cache/codex-scratch/addhost-readd-r2/evidence/harness/functional-service.py. Required qualification receipts are complete. Both branches are pushed, worktree clean, no deployment.Starting delta correctness review #231/#235 round 2 on review-addhost-readd-r2 at
bed79b865a(base/subject head origin/addhost-readd). Scope 63b0c7a15..bed79b865: removal ownership/retry, duplicate liveness, interrupted identity handoff, exact size caps and existing fixture checks. Test commits only; no deploy or owner fixture access. Findings persist in job evidence/findings.md.Round-2 review, provisional P2: the new original-unit journal is a hard link. At its first publication boundary, an independent in-place append changes both unit and journal, so the full-content comparison accepts it and retires the journal without reporting the edit. Direct real-shell check of shipped handoff_recovery.sh/setup_guard.sh: recovery_exit=0, edit_preserved=true, journal_preserved=false. No immediate edit deletion is claimed. Added installer regression; compilation/full gate pending. Evidence: handoff-in-place-shell.log. No production source or owner fixture changed.
Completed test-only step
58b1f673a, pushed on review-addhost-readd-r2. P2 handoff edit gap confirmed by installer regression: 0 passed / 1 failed at the intended acceptance assertion; normal private identity metadata supplied. Workspace strict all-target Clippy and fmt pass. The edit itself remains intact at inspection; recovery incorrectly accepts it and removes its journal instead of reporting it. Rust receipt. Production untouched; native retirement and shipping-removal results pending.P1 / HOLD, round-2 residual retirement window. Test-only commit
d233db7f0pushed on review-addhost-readd-r2. Native QUIC/SQLite regression review_r2_answering_duplicate_during_retirement_drain_is_preserved fails 0 passed / 1 failed: “a duplicate answering before retirement commit was revoked: Ok(())”. It holds duplicate 44's actual admitted write to pause the finalizer after both probes/SQL updates, reconnects duplicate 42 with pre-admitted authority, proves online inventory plus a new correlated authenticated Result, then releases the drain. Reconciliation still revokes 42. No timing race or production hook: the real revocation notification is the barrier. Source bootstrap_readd.rs:197-218,244-260; writer serialization does not cover registry reconnects. All peers/responder cleaned before assertion. Strict workspace Clippy and fmt pass. receipt. Full gate/static/service/browser qualification continues; no deploy or owner fixture access.P1 strengthened before retirement SQL, same finding counted once. Pushed test-only
2632a82b4. review_r2_reconnect_during_writer_probe_is_preserved fails with “a duplicate answering during the writer-side probe was revoked: Ok(())”. Drive ordinary reconciliation to the silent duplicate's second host.facts.read Call (writer-side probe), stop polling that future, reconnect the previously checked duplicate and prove inventory plus a new correlated authenticated Result, then resume. Retirement SQL cannot run during this proof; reconciliation still tombstones the answering duplicate. Re-add module: 10 existing pass / 2 new review assertions fail. Strict workspace all-target Clippy, build and fmt pass. receipt. Other fresh checks now green: all 22 uninstall tests, 35 ownership-shell cases, 16 kernel ownership cases, 12 recovery fixture tests plus the opt-in minimal host without Python. Browser/service/size control and final head gate remain.Count correction to the preceding comment: recovery_support has 11 ordinary tests plus 1 opt-in minimal-host test, 12 total, all passing. It is not 12 ordinary plus the opt-in. Other counts are unchanged and verified: uninstall 22, ownership-shell 35, kernel 2+6+7+1=16.
P0 residual guarantee-1 failure, pre-existing source (not a new round-2 regression): shipping static x86 CLI 21,239,632 B deletes an independently recreated state/operator-notes after interrupted removal. Parent .bootstrap-owner is root-owned and matches; replacement state directory/file are uid 1000. Result: cleanup_exit=0, independent_file_preserved=false, “infraternal was removed”, no leftover report. Final fixture ownership assertion fails; exact container absent. remove_files still recursively removes state without its own creation/ownership proof; this operation predates
63b0c7a15. Independent baseline execution is running next. state receipt. Candidate bin control preserves/reports independent data; foreign-owned sessions is preserved with an ownership refusal, not deleted. The same test script now selects bin/state/sessions; test-only commit follows baseline control. No owner fixture access.Completed/pushed test-only
d5f21053aon review-addhost-readd-r2. Shipping removal fixture now selects bin/state/sessions and retains the original bin default. Candidate results: bin exit 0 + preserved + leftover report; state exit 0 + deleted + no leftover report (intended P0 review assertion fails); foreign-owned sessions exit 1 + preserved. Python syntax/diff checks pass. Independent baseline build continues. Separately, both unchanged real SSH/systemd modes passed 20/20 re-adds, removed-host Replace, resumed cleanup and exact-container/control-PID cleanup; logs will be attached with final qualification. No owner installation accessed.Independent same-recipe size control confirms round-2 claim: x86 base
63b0c7a15= 21,234,000 B, subject = 21,239,632 B, exactly +5,632 B. Both stripped static PIE/no PT_INTERP; distinct hashes. ARM subject = 19,460,512 B, +5,248 B versus recorded parent. Both current caps equal actual artifact bytes exactly. identities. Baseline CLI also deletes foreign-owned state, confirming the residual P0 predates this delta: base state. Base bin deletes it while subject bin preserves/reports it, confirming867cf236efixes that case: base bin. All exact control containers absent. Settled browser recapture and final head gate remain.Completed/pushed test-only
6f09507172. The ten screenshot cases now wait for the expected final pane and shared PaneStepper rest conditions in one DOM observation. Existing product outcome assertions remain unchanged; no UI implementation changed. bun run check and all ten production-build browser cases pass. These captures supersede initial transition captures and are attached for independent visual judgment. The first sequential capture helper raced a later progress-to-failure transition (8 pass / 2 helper failures); it was corrected to the atomic expected-page observation, with its raw log retained. This is not another product finding. Final scripts/verify fast is running on this clean pushed head.settled-browser.log






settled-browser-check.log
HOLD — delta correctness review finished on review-addhost-readd-r2, pushed head
6f09507172. Subjectbed79b865a; reviewed 63b0c7a15..bed79b865. Five atomic test-only commits, four test files. No production/dependency/feature/schema/decision changes, merge or deployment. Owner acceptance fixtures were untouched; no lab machine was contacted. Issues remain open.63b0c7a15binary and subject do this. The bin repair is effective: baseline deletes its independent file, subject preserves/reports it. Foreign-owned sessions is preserved with an ownership refusal. This is a residual guarantee-1 failure, not a newly introduced round-2 regression. subject state, baseline state.Pushed test commits:
58b1f673a(in-place unit edit),d233db7f0(retirement drain),2632a82b4(reconnect before retirement SQL),d5f21053a(state/sessions CLI ownership controls),6f0950717(settled screenshot readiness). No implementation fix is included.Functional qualification: real SSH/systemd 20 rootless +20 rootful re-adds pass, with retained UUID/key/state/PTY/shim, one live record, exact MainPID executable digest, removed-host Replace and resumed/repeated uninstall. The old-process fixture is the documented padded one-shot-dial behavior, not historical bytes. Uninstall22/22; actual-kernel ownership16/16; ownership-shell35/35; recovery11 ordinary +1 minimal-host without Python =12/12; retained-key real-CSR admission1/1. TypeScript/UI260, protocol37 and compiler metadata2 pass. Final typed capture helper and all10 production-build browser cases pass. Settled captures in the preceding comment supersede initial transition captures and remain for independent visual judgment. No build-host timings are claimed as performance evidence.
D243 confirmed independently with the same recipe: stripped static x86 base21,234,000 B -> subject21,239,632 B, exactly +5,632 B; both no PT_INTERP, distinct hashes. ARM subject19,460,512 B, +5,248 B versus its recorded parent19,455,264 B. Both current caps equal actual artifact bytes exactly; final head hashes match the tested subject. size identities.
Final scripts/verify fast exited1 on the head above: test FAIL(101) solely for the intentional new handoff assertion (100 existing pass,1 new fail,1 ignored). fmt, VT fmt, CLI compile-out, strict workspace Clippy, cargo-deny and both static-build rows PASS. The two intentional server review failures are recorded separately in the re-add module receipt. TypeScript was checked separately, including the final screenshot helper. No #118 or other waiver. An earlier final attempt hit an unchanged socket fixture's 108-byte path because this review set TMPDIR too long; an exclusive shorter cache root produces106 bytes, the exact unchanged isolated test passes, and the fresh full gate has no unrelated failure. The earlier transcript and isolated control are retained below.
Reviewer checklist and cleanup complete. All8 exact owned containers and4 outer control PIDs are absent; inner tracked service/shim cleanup reports remaining=0; ports4319/4320 are closed. Own build targets, comparison target, baseline source, copied artifacts and dedicated fixture roots are deleted. External evidence remains; tracked worktree is clean.
Final receipts:
Qualification receipts:
Full scripts/verify fast output, verbatim, head
6f09507172:Started round 3 on addhost-readd-r3, base
bed79b865a. Imported all five unchanged review test commits through9d1ba30d1. Addressing registry retirement admission fence, proven-ownership removal for all directories, and independent handoff unit journal. No deployment or owner live installation access.R2-2 inspection: remove_files recursively deletes both state and sessions (uninstall.rs:752), while the service oracle itself creates state/readd-kept independently and later requires state to disappear (readd_service_tests.rs:393,565). This conflicts with the round-3 proven-creation rule. Removal will preserve/report nonempty unproven directories and remove only checked slots, setup entries and empty known layout directories. The functional oracle will require the independent sentinel to survive cleanup and a truthful leftover report, alongside unchanged 20+20 replacements and retained-shim retirement. A completed cleanup remains a no-op even when unproven data remains. No pathname/uid alone is a creation receipt.
R2-1 implementation boundary: publish per-identity registry retirement ownership before probing. An admission attempt atomically vetoes/unmarks its whole batch before ordinary admission proceeds; finalizer rollback is mandatory even if the attempt later fails. In-flight admission (including priming/plugin attach) prevents starting retirement. After all write drains, one atomic veto-check/seal switches matching admissions to retryable WouldBlock until COMMIT/publication completes. Temporary revocation cuts are scoped and reversible; permanent revocations remain irreversible. RAII handles every precommit error/cancellation; the owned finalizer carries the fence across COMMIT. No unrelated identity lock is held across a probe, drain or commit. R2-3 publishes a hard link to an independent copied unit, not the live inode; legacy shared-inode journals are refused and preserved. These refine contracts/bootstrap.md without changing the frozen upgrade protocol.
Completed contract step
d89915c90: registry admission fence/veto, independent unit journal, and nonrecursive state/session preservation, as proposed above. git diff --check passes. Direct shipped-shell P2 reproduction on reviewed production: recovery_exit=0, independent_edit_preserved=true, journal_preserved=false. receipt. Native unchanged review tests continue compiling dependencies through build-slot; implementation patch is saved separately until the red run completes. No acceptance/performance claim yet.R2-1 reproduced on reviewed production before applying repairs: re-add module 10 passed / 2 failed, exactly the unchanged writer-probe and retirement-drain assertions, both reporting a freshly answering duplicate revoked with Ok(()). native QUIC/SQLite receipt. Repairs now being qualified; temporary cancellation cannot clear independent permanent revocation, and in-flight admission spans priming/plugin attachment. No dependency or engine change. TypeScript check passes after installing this checkout's frozen dependencies. Final static/service/browser gates remain.
Author check found an additional R2-3 edge before committing the copy repair: shell command substitution strips trailing newlines from both compared units. A separate copied journal plus an independent appended newline returned recovery_exit=0 and erased that edit (edit_preserved=false, journal_preserved=false). failing real-file assertion. Extending the actual publication test with trailing-newline and NUL-byte edits; compare normalized unit bytes with sha256sum, already mandatory for bootstrap uploads, and fail closed if hashing is unavailable. No new dependency or engine. Current earlier qualification passes readd12, retirement12(+1 ignored diagnostic), uninstall24 and installer102(+1 existing ignored); byte-level repair and rerun remain.
Completed logical fixes
bc6ae4026(registry retirement fence + scoped temporary cuts) and087b32b7e(nonrecursive state/session removal). Strict workspace all-target Clippy and fmt passed; re-add12/12, retirement12/12 (+1 opt-in diagnostic), uninstall24/24, kernel16/16 (2+6+1+7), ownership-shell35/35 and recovery11 ordinary passed. These commits are local until the requested final green push/fast-forward.The latest uncommitted refinements report an already-in-progress admission as already-added with its exact UUID, without taking the global host-map lock, and compare recovery unit byte streams using the existing mandatory checksum tool. Six direct handoff controls pass, including newline/NUL edits, missing checksum tool and unverifiable shared inode; unchanged valid recovery succeeds. Full iteration gate is queued; service40, browser10, paired static size and final fast remain. No deployment or owner fixture access.
readd-green.log
retirement-green.log
uninstall-green.log
kernel-ownership.log
handoff-byte-checks.json
R2-3 author refinement before commit: the original unit alone does not record which new marker was intended. A valid but independently changed marker is therefore normalized away and overwritten during recovery (exit0, edit_preserved=false, journal_preserved=false). handoff-marker-edit-red.log
The independent journal will bind its planned next UUID in its filename, retaining the original unit bytes unchanged. Recovery permits only the recorded old/next markers and hashes raw live-unit bytes against the original or its one planned marker rewrite. This also avoids normalizing away end-of-file changes on the live unit. Legacy journals without that binding are unverifiable: preserve/report rather than restore over them. The existing publication-boundary assertions remain unchanged; extend the actual publication test with a foreign marker and missing-final-newline case. This is internal local recovery metadata, not a frozen upgrade-wire change; no new tool/dependency.
Author P1 concurrency refinement: a writer-side probe reacquires the global registry after its correlated reply. Node attachment can hold that registry while waiting on SQLite, so the writer/probe path must not request it. A new native QUIC regression holds the actual registry mutex after the second management Call (writer-side), sends the real authenticated Result and requires reconciliation to finish before releasing the mutex. It fails at the intended assertion after the bounded wait; peer/task cleanup precedes the assertion. registry-lock-red.log
Capture actor + live authority pairs under the identity fence before writer admission; use only that captured state during the final probe. Any admission veto cancels blocked probing/writer acquisition immediately. This preserves expiry/revocation checks while removing the registry/store lock dependency; no production pause hook or new dependency. The earlier full iteration gate passed every row. Final refinement checks are queued before static/service qualification.
Retirement-fence diagnostic: production module compiled with opt-level=s, 1,000 retiring identities plus 1,000 independent admissions per batch, 31 batches. On infraternal-perf-test (4 CPUs), load 0.00/0.11/0.66, locked CPUWeight=10000 scope: median 646,338 ns/batch (646 ns/admission), maximum 950,853 ns/batch. No per-frame work; all marks and admission counters absent after dropping owners. This isolates the module rather than claiming daemon latency; linked tokio/uuid dependencies use the native test profile. admission-perf.log
The current handoff implementation passes 51 private real-file cases: original/unit/owner phases, with and without final newline; unknown settings, appended/removed newline, NUL byte, foreign marker, missing checksum support and unknown unit/owner temporaries are preserved and refused. The copied journal name binds the intended next UUID, preventing a foreign marker from being mistaken for our rewrite. Existing interruption assertions remain; an additional assertion checks removal of the new journal filename after successful recovery. Focused Rust gates are queued through the host-wide wrapper before commit. handoff-ownership-matrix.json
Completed local atomic steps:
766b7aa90captures actor/authority before SQLite writer admission; its new lock regression is red-before/green-after, all 13 re-add tests and 13 retirement checks pass (one opt-in diagnostic).c4b451c50publishes independent, planned-identity unit journals: installer 102 passed, 1 existing ignored. Shared shell 35 cases pass; recovery 11 pass plus minimal-host case awaiting static helper. Fmt and strict workspace all-target Clippy pass. Browser ten, both static builds, shipping removal, paired x86 base and 40 service cases follow; no deployment or owner fixture changes.registry-lock-green.log
readd-final.log
retirement-final.log
installer-final.log
ownership-shell-final.log
recovery-final.log
Functional production-build browser checks: 10 passed, unique TRACER_TEST_PORT=4337 (upstream 4338). Six replacement captions across ink/paper and 1440/393/375 widths, plus four earlier-install Replace/account review states at 1440/393. Imported settled-capture assertions unchanged. Captures below await independent visual review; local runner durations are not performance evidence. Static builds and real-service qualification are in progress.
browser-ten.log










Completed
d24a4f43c: the public service oracle now requires its independently created state sentinel to survive with a leftover report. All original UUID/key, executable, PTY/shim, single-live-record and process assertions remain; imported reviewer tests are unchanged.Exact shipping x86 SHA256 dd76e6d72286d70d4333e135fed6152ed223a1d147f2427b5fbfad32be695166. On infraternal-perf-test (4 CPUs), separately locked CPUWeight=10000 rootless/rootful containers: 20+20 re-adds pass, plus removed-host replacement and resumed/repeated removal in both modes. Rootless p50/observed max 2660286/2698399 us, load before 0.250/0.168/0.153 and after 0.417/0.240/0.181. Rootful p50/observed max 2856465/2959131 us, load before 0.139/0.190/0.168 and after 0.367/0.244/0.190. This uses the explicit sparse one-shot behavioral fixture, not a historical executable. Both exact containers absent, all recorded service/shim/control PIDs gone. Copied receipts match their remote hashes.
An earlier setup-only launch used an unrelocated native runner and produced zero samples; its container/control PIDs were removed. It is excluded from qualification. ARM, minimal-host/shipping-removal controls, paired static size and final fast gate remain.
root-service.log
root-summary.json
root-cleanup.json
rootless-service.log
rootless-summary.json
rootless-cleanup.json
artifact-manifest.json
Additional ownership finding in the new snapshot copy: cp could truncate an independent unit.new created after validation. A real-utility regression inserts that file after the final marker grep: red on the copied-journal implementation, green after using cat with the existing set -C exclusive shell redirection. The test requires the temporary and live unit to remain byte-for-byte unchanged and adoption to refuse. No new dependency; snapshot semantics otherwise unchanged. Both static builds, minimal-host/shipping controls and the 40-service qualification will be refreshed for the final exact artifact. The previous 40-pass receipts remain interim evidence, not the final artifact claim.
handoff-exclusive-red.log
handoff-exclusive-green.log
Paired shipping control confirms R2-2: independently rebuilt
bed79b865static x86 (21239632 bytes) deletes a foreign-owned recreated state/operator-notes and reports success, so the unchanged directory-selecting reviewer fixture fails as intended. The removal fix preserves it and reports Left; bin likewise preserves/reports, while foreign-owned sessions refuses before kernel/socket traversal and preserves the file. Exact disposable containers are absent. Minimal-host recovery passes using the static helper (12/12 recovery including 11 ordinary cases). These interim shipping controls will be refreshed after the exclusive-copy build; the baseline control remains unchanged.removal-baseline-state-red.log
removal-shipping-state.log
removal-shipping-bin.log
removal-shipping-sessions.log
recovery-minimal-final.log
Completed
8de701f3e: snapshot creation now uses the existing exclusive shell redirection, so a temporary arriving after validation cannot be overwritten. New red/green real-utility regression checks temporary/live unit/owner preservation and no journal publication. Fmt and strict workspace all-target Clippy pass; installer 103 passed (1 existing ignored); shell oracle explicitly 35 passed; recovery 11 ordinary passed; all 13 re-add cases pass again. Final x86/ARM artifacts are rebuilding, followed by refreshed static-helper controls, 40 service cases, exact size caps and branch-head fast gate.installer-exclusive.log
ownership-shell-35-exclusive.log
readd-exclusive.log
D243 final artifacts: stripped static x86 21265648 bytes versus independently rebuilt
bed79b86521239632 bytes: +26016 bytes. ARM 19483904 bytes versus that base's recorded 19460512: +23392 bytes (ARM control is recorded, not a paired rebuild). Same release recipe/profiles/features/dependencies. Both exact ceilings are updated with zero slack; exact/one-byte-over/downward-ratchet checks pass.The increases exceed 16 KiB and remain below 64 KiB. They buy registry admission lifetime/fencing, reversible write cuts, captured liveness authority, nonrecursive state/session cleanup and independent byte-proven unit journals. SQL-only rechecks and shared-inode proof fail the unchanged native/ownership regressions. At 1,000 represented retiring identities the production-module diagnostic measured a median 646338 ns per 1,000 admissions (646 ns/admission) on the named 4-CPU perf VM, load 0.00/0.11/0.66, locked CPUWeight=10000. It is a module diagnostic, not daemon latency. No per-frame work or new background timer/dependency/profile cost. These measured correctness costs justify the growth; final whole-branch fast gate follows on the cap commit.
static-size-comparison.json
static-sizes-exclusive.txt
static-hashes-exclusive.txt
size-cap-check.log
baseline-static-x86.log
Final refreshed artifact qualification after
8de701f3e: exact shipping x86 SHA256 e4da1abed127b2e6029b5a60310bf81043035faf364f7a08fe3d58b2f0bd722f. On the named 4-CPU perf VM, separate locked CPUWeight=10000 runs pass 20 rootless +20 rootful re-adds, removed-host replacement, resumed/repeated removal, independent-state preservation and every original identity/key/executable/PTY/shim/single-live-record assertion. These supersede the earlier interim artifact receipts.Rootless p50/observed max 2951067/3035461 us; load before 0/0/0, after 0.273/0.086/0.028. Rootful p50/observed max 3214730/3281014 us; load before 0.070/0.063/0.021, after 0.120/0.100/0.036. These are behavioral-fixture oracle measurements, not a historical binary or a paired old/new latency claim. Both exact containers absent, all recorded service/shim/control PIDs gone, both scopes inactive, owned VM directory removed after hash-verified receipt copy.
Final static-helper minimal-host recovery passes (12 total recovery cases). Final shipping CLI controls preserve recreated bin/state with Left reports and refuse foreign-owned sessions without traversal; all exact local fixture containers removed. Cap commit
58760f49drecords x86 21265648 (+26016 paired) / ARM 19483904 (+23392 recorded-base); zero-slack size boundary checks pass. Branch-head verify fast is running.root-service.log
root-summary.json
root-cleanup.json
rootless-service.log
rootless-summary.json
rootless-cleanup.json
artifact-manifest.json
perf-exclusive-cleanup.log
recovery-minimal-exclusive.log
removal-shipping-exclusive-state.log
removal-shipping-exclusive-sessions.log
removal-shipping-exclusive-bin.log
Finished #231/#235 round 3. Head:
58760f49d585220be7706d5b9b2d97b36198b03b.Pushed
addhost-readd-r3and atomically fast-forwardedaddhost-readdfrombed79b865to this head; both remote refs verified. All five reviewer test-only commits are imported; no reviewer assertion weakened. Atomic implementation, tests, contract/docs and exact-size commits remain separate. No deployment or owner live-install access.R2-1: identity retirement fencing covers registry admission, fresh probes and COMMIT; reversible cuts and scoped ownership cover rollback/cancellation/shutdown. Captured actor/authority probes avoid the registry/SQLite lock cycle. R2-2: unproven populated state/session directories and replacement symlinks remain and are reported/refused safely. R2-3: independent unit bytes plus planned UUID detect edits; exclusive snapshot creation preserves late independent temporaries.
Final qualification: 40 service re-adds (20 rootless +20 rootful), plus removed-host replacement and resumed/repeated removal in both modes; 16 real-kernel ownership; uninstall 24; installer 103 (1 existing ignored); shell 35; recovery 12 including the explicitly run minimal-host case; browser 10; protocol 37. Final service/size/diagnostic receipts and all ten settled screenshots are linked in the preceding comments. Author checklist completed; visual quality remains for independent review of those captures.
D243: stripped static x86 21,265,648 vs independently rebuilt base 21,239,632: +26,016 bytes. ARM 19,483,904 vs recorded base 19,460,512: +23,392 bytes. Exact caps, no slack; above-16-KiB measured correctness justification recorded here. No dependency/profile/feature change. Final x86 SHA256 e4da1abed127b2e6029b5a60310bf81043035faf364f7a08fe3d58b2f0bd722f matches the final service artifact. All owned containers/scopes/control PIDs and browser ports are gone; own build targets, baseline checkout, artifact staging and fixture roots removed; worktree clean. Evidence retained outside checkout.
scripts/verify fast: exit 0 on this head, no load exceptions. Complete output below is verbatim; the unmodified transcript, exit receipt, checklist, remote refs and cleanup proof are also attached.verify-fast-final.log
verify-fast-exit.txt
final-self-review.txt
remote-heads.txt
push.log
final-static-hashes.txt
local-cleanup.json
browser-cleanup.log
Starting delta correctness review round 3 on review-addhost-readd-r3 at
58760f49d5; delta bed79b865..58760f49d. Read #231/#235 history and prior review findings. Test-only changes; registry cancellation/concurrency, removal receipts, handoff interruption/edit detection, static size attribution and existing qualification. No deploy or owner installation access.P1 / HOLD, new round-3 interruption gap: install.rs:426 creates unit.new before the journal link at :428. Interrupt the real cat after it finishes, before ln. The original unit and temporary are byte-identical; no journal exists. Repeated Replace refuses exit 72, so this interruption cannot recover through retry. The new real-file installer assertion fails at the intended retry check after valid setup. Separate rollback case and remaining qualification continue; no production change or owner fixture access. handoff-gap-focused.log
P0 residual guarantee-2 failure, pre-existing deletion block: resumed public cleanup deletes an independently replaced bin/live when the original bin/current link survives. Native real-file fixture starts after unit/launcher unlink, replaces the old live file with independent bytes, then calls cleanup. Result Ok([]), replacement file absent; new preservation assertion fails. uninstall.rs:751-756 checks only current -> live pathname, with no live-file creation/uid/content proof. This block is unchanged from
bed79b865, so it is not a newly introduced round-3 regression. Shipping foreign-uid CLI and rebuilt baseline controls are pending. removal-slot-focused-v2.logR3-1 confirmed through both recovery paths: rollback returns Ok(()), yet subsequent Replace still refuses exit 72; direct retry does likewise. Installer 104 pass / 2 new intended failures / 1 existing opt-in ignored. The new independent-unit-edit matrix passes all 20 combinations (5 journaled phases × in-place/replacement × inspection/rollback), preserving both unit and journal. Reconciliation14/14 pass, including both round-2 native proofs and cancellation/concurrency. The actual enrolled client retries a real TCP refusal while the registry is sealed and becomes online after release; functional check only, no latency claim. Kernel16, shell35 and ordinary recovery11 pass. Shipping40, minimal-host, static attribution, Clippy/browser and final fast remain. installer-final.log
retirement-final.log
readd-final.log
Completed functional browser qualification: 10/10 production-build add-host cases pass (6 replacement captions across themes/viewports, 4 earlier-install/account cases). Workspace all-target Clippy, fmt and bun run check pass. Ports4283/4284 are closed after the run. Selected captures are attached for independent visual review; no UI source changed and no build-host timing is performance evidence. Normalized Cargo feature graphs on base/subject are identical. Paired static builds and shipping ownership controls are waiting for a build slot.




browser-ten.log
review-clippy.log
browser-check.log
feature-comparison.txt
Three atomic test-only commits pushed on review-addhost-readd-r3:
952a8b4902: unproven live-slot deletion, native + foreign-uid shipping fixture. Uninstall24 existing pass /1 intended new failure.d81cc95eb8: snapshot gap through direct retry and rollback; 20 journaled unit-edit combinations. Installer104 pass /2 intended new failures /1 existing ignored; strengthened gap cases reproduce with private identity metadata and no journal.1d179fa3b5: cancellation/concurrent re-add/runtime shutdown/normal client retry. Reconciliation14 pass; native retirement3 pass/1 opt-in ignored; fence5 pass/1 opt-in ignored.Workspace all-target Clippy and fmt pass; TypeScript check and browser10 pass. Static head/base builds are running with linker maps. Shipping40, paired CLI controls, minimal-host recovery and final fast still pending. No production source behavior, merge, deploy or owner fixture access.
uninstall-qualified.log
handoff-gap-qualified.log
fence-qualified.log
Head static diagnostic builds complete at pushed test-only head
1d179fa3b: x86 21,265,648 B and ARM 19,483,904 B, both exactly the existing caps and no PT_INTERP. Existing release profile/toolchain and INFRATERNAL_RELEASE_BUILD=1 retained; only linker-map output added. Base builds with the same recipe are still running, so no independent delta claimed yet. Head x86 contains two complete 3,945-byte SETUP_GUARD preambles; base counts and net attribution follow. Ordinary shipping builds/CLI40 controls and final fast remain.subject-map-identities.json
embedded-shell-copies.json
build-environment.json
P0 strengthened with the map-built static head CLI (21,265,648 B, SHA256 93d8e71d593d6fa8095f333ec40ec400589269f6821bf27dc81fc0fa7e2b5592): root-owned bin + surviving original current link; independently recreated bin/live is uid1000. --bootstrap-uninstall exits0, deletes that file, prints “infraternal was removed from this machine.” and no Left report. New CLI fixture assertion fails as intended. Exact disposable systemd container is absent after cleanup. Rebuilt base and ordinary-release artifact controls remain pending; no owner installation accessed. cli-bound-live-interim.log
P2 / R3-3 — duplicated shell recovery preamble (pre-existing pattern amplified by round3). install.rs:20-27 embeds SETUP_GUARD independently and again as the prefix of SETUP_LOCK. Both head binaries contain two full 3,945-byte preambles; rebuilt x86 base contains two 2,726-byte preambles. Round3 therefore spends 2,438 additional string bytes across those copies. Concrete trim: retain one SETUP_GUARD constant, let SETUP_LOCK contain only setup_lock.sh, and compose guard+lock at the existing command-construction sites. This offers removal of one 3,945-byte duplicate before composition-code costs; no net trim or runtime result claimed without building/measuring that follow-up. No implementation change in this review.
Paired x86 static result: base21,239,632 -> head21,265,648 = +26,016 B. .text+15,360; .rodata+4,096; .eh_frame+1,984; .gcc_except_table+1,068; .eh_frame_hdr+232; .data.rel.ro+224; remaining file growth is alignment. .relro_padding is NOBITS and does not contribute file bytes.
Largest direct named growth: commit_reconciliation finalizer+2,074; completed future+1,897; Fences::admitting+1,606; RemoteHosts::retiring+1,393; Fence::cancelled+1,281; Fence drop glue+876; remove_files+764; captured probe closure+759, probe_retiring+712 and probe_actors+700. Old first_live(-2,998) is replaced by first_live_actors(+2,502), net-496. A +19,177 new_inner entry accompanies -19,895 in its router caller: unchanged source construction paths, consistent with compiler outlining rather than new feature cost. Debug formatter text totals335,482 B on both after normalizing compiler clone ordinals; no debug-format growth or new dependency feature found. ARM base/attribution still pending.
section-diff-x86.txt
symbol-diff-x86.txt
duplicate-preamble.json
debug-format-comparison.txt
cli-bound-live-base-interim.log
Independent paired static controls complete at test-only head1d179fa3b (subject implementation58760f49d), both architectures, same locked release recipe with external linker-map output. All four images are stripped/static with no PT_INTERP; dependency feature graphs/profile files are unchanged.
bed79b865bytesARM sections: .text+15,360; .rodata+4,096; .eh_frame+1,960; .gcc_except_table+1,472; .eh_frame_hdr+232; .data.rel.ro+224; remaining file alignment48B. Largest direct ARM names: finalizer+1,768, completion+1,544, admitting+1,376, retiring+1,304, cancellation+1,256, Fence drop+764, captured-probe closure+692, probe_retiring+652, remove_files+624, probe_actors+620. first_live refactor nets-420. X86 contributors/normalized clone handling are in the preceding comment.
P2 duplication confirmed on ARM as well: base has two2,726B recovery/guard preambles; head has two3,945B copies. Concrete shared-preamble trim remains a candidate, not a measured fix. No production change or cap adjustment. Ordinary release/CLI/service40 and final gate are now running through build-slot.
static-manifest.json
section-diff-arm.txt
symbol-diff-arm.txt
duplicate-preamble.json
subject-x86.map.gz
base-x86.map.gz
subject-arm.map.gz
base-arm.map.gz
Completed ordinary-release functional qualification on unchanged pushed head
1d179fa3b. Ordinary x86/ARM images are byte-identical to their map builds; x86 SHA256 93d8e71d593d6fa8095f333ec40ec400589269f6821bf27dc81fc0fa7e2b5592.Real SSH/systemd: 20 rootless + 20 rootful re-adds pass, preserving UUID/key/PTY/shim, one active record and the exact candidate MainPID image. Both modes also pass removed-host Replace and resumed/repeated removal with the independent state sentinel preserved/reported. Both exact containers are absent; all recorded service/shim/control PIDs are gone. The old process is the documented one-shot sparse behavioral fixture, not historical executable bytes. Functional checks only; no build-host latency claim.
CLI controls: independent bin/state data preserved with Left reports; foreign-owned sessions refused before traversal and preserved. Both head/base still delete independent bound bin/live and exit0: the new assertions fail as intended. All exact CLI fixture containers removed. Shell oracle 35/35 passes; a first direct invocation omitted its required helper environment and was a setup error, corrected without code changes (the Rust wrapper oracle had already passed).
Full workspace run and final verify fast are in progress.
shipping-manifest.json
rootless-service.log
rootless-summary.json
rootless-cleanup.json
root-service.log
root-summary.json
root-cleanup.json
ownership-shell-direct-v2.log
shipping-bin.log
shipping-state.log
shipping-sessions.log
shipping-bound-live.log
baseline-bound-live.log
Additional gate observations, not attributed to this delta: first canonical fast attempt stopped at ssh_askpass::real_cli_askpass_refuses_unregistered_parent_and_cleans_helper with ExecutableFileBusy (Text file busy). Second stopped at plugin_control::tests::retained_runtime_registry_keeps_lifetime_ownership_after_listener_abort, final probe.try_lock assertion. Both passed in the full workspace audit and pass direct replays (askpass2/2 ordinary, lifetime1/1). Both source files are unchanged across bed79b865..58760f49d. No assertions or concurrency setting changed, and no load waiver applied. A further canonical fast run is in progress. The extra complete-workspace mouse error was a missing pinned Zig PATH in that extra invocation; corrected native replay passes, with evidence outside the checkout.
verify-fast.log
verify-fast-attempt2.log
askpass-replay.log
lifetime-replay.log
mouse-qualified.log
workspace-test-counts.json
Round 3 finished: HOLD.
Head:
1d179fa3b5, pushed on review-addhost-readd-r3. Reviewed bed79b865..58760f49d. Three test-only commits:952a8b4902,d81cc95eb8,1d179fa3b5. No production fixes or deployment.Findings:
bed79b865and still present: resumed removal deletes an independently recreated bin/live when the original current link survives. uninstall.rs:751-756 proves the link target pathname, not ownership of the live entry. Real shipping CLI fixture returns exit 0, deletes the uid1000 independent file, and reports successful removal without a Left report. New preservation test fails. Ordinary foreign bin/state/sessions entries remain preserved.Exact same-recipe stripped static sizes: x86 21,239,632 -> 21,265,648 B (+26,016); ARM 19,460,512 -> 19,483,904 B (+23,392). Ordinary release images equal the linker-map images byte-for-byte. Section and symbol tables and all four compressed maps were attached in earlier comments. Top direct x86 contributors: finalizer +2,074; completed future +1,897; admitting +1,606; retiring +1,393; cancelled +1,281; fence drop +876 B. ARM: +1,768/+1,544/+1,376/+1,304/+1,256/+764 B respectively. Normalized dependency features are unchanged; Debug formatter text size is unchanged; large unchanged-source new_inner/router changes net -718 B from outlining redistribution. The duplicated preamble accounts for 2,438 B of added duplicated text.
Functional qualification: 40 real SSH/systemd service re-adds (20 rootless +20 rootful), 16 kernel ownership, 35 ownership shell, 12 recovery_support including the minimal host without Python, and 10 production-build browser cases passed. Existing 14 reconciliation cases, both round-2 reconnect windows, cancellation/contention/shutdown fencing, and real normal-client retry through a refused connection passed. Installer: 104 passed, 2 intended new failures, 1 existing ignored. Uninstall: 24 existing passed, 1 intended new failure. No latency evidence is claimed from the build host.
Final scripts/verify fast: exit 1. Its only failure is the new preservation assertion review_r3_resumed_cleanup_preserves_a_replaced_live_slot. All other final gate rows pass. The dispatcher stops before TypeScript on Rust failure; the separate complete TypeScript phase passed (UI 260, protocol 37, metadata 2, check/build/transfer budgets). Earlier gate attempts exposed unchanged askpass Text file busy and retained-runtime try_lock failures; both passed direct replay and the complete workspace audit. Those attempts remain attached; neither is waived. The workspace audit also demonstrated both new snapshot-gap failures. Its unrelated mouse fixture setup error passed replay with the pinned Zig PATH restored.
Reviewer checklist completed. Nine owned containers, four recorded control processes, inner fixture service/shim processes, and ports 4283/4284 are gone. Own build targets, comparison checkout, copied artifacts, and short fixture root removed. Worktree clean. No owner installation was touched. Issues remain open.
Final evidence:
verify-fast-final.log
verify-fast-final-exit.txt
typescript-complete.log
final-artifact-identities.json
cleanup.json
self-review.txt
findings.md
Full final scripts/verify fast output, verbatim (head
1d179fa3b5, exit 1):Starting round 4 on addhost-readd-r4 from
58760f49d5. Imported unchanged review test commits as7c8e6930a,4a068a765,ef2032c0c. Continuing #231/#235 history and round-3 findings. Structural scope: install-time identity manifest for removal; disk-recoverable idempotent handoff; generated interruption boundaries, independent edits/recreation, unchanged registry fences. No deploy or owner live fixture access. Final push is limited to addhost-readd-r4 and fast-forward addhost-readd after green qualification.Round-4 design before implementation (#231/#235, D17/D198/D243): removal consumes only an atomic install-time .bootstrap-manifest in the private marked directory. Rows bind type, uid, device/inode, SHA256 for regular files and hex-encoded paths; ancestors are checked through no-follow directory descriptors. Unknown/changed entries stay and are reported; no recursive removal. Legacy installs without a manifest cannot authorize deletion. Uncreated directory anchors fence traversal without authorizing rmdir.
Handoff uses one private intent whose atomic name binds old/new identity, original hash and public inode anchors before any temporary write. Prepared public files are links to private recorded inodes; recovery validates all states before changing anything. A retired phase preserves final identities while recovery deletes its own anchors. Unmatched temporary files stay/refuse. Generated command boundaries exercise post-operation interruptions rather than a manually maintained phase list. Existing reviewer assertions remain unchanged. No new dependency/engine or live fixture access.
Confirmed unchanged native R3-2 before repair: review_r3_resumed_cleanup_preserves_a_replaced_live_slot: 0 passed / 1 failed; cleanup returned Ok([]), independent replacement bytes absent. Initial package-local invocation lacked test-support and tokio multithread features; corrected invocation reached the intended assertion. Direct old-shell R3-1: interruption -15 after cat, unit.new equals original, repeated Replace exit72.
review-removal-red2.log
handoff-direct-red.log
Fixture-location correction: a delegated cross-filesystem functional check created 28 temporary /dev/shm/infraternal-h4-* directories instead of using the permitted job-cache scratch root. They were removed by their fixture contexts; no mounts or owner state were touched. This violated the scratch-location constraint. The approach is stopped; further cross-filesystem fixtures will use owned disposable containers or private namespaces rooted under the permitted job cache. No performance claim uses this check.
Round-4 structural review found rollback still deleting a changed public state tree before manifest checks; the isolated exact-shell reproduction returned success and removed the independent file. The correction now preflights manifest identity/ancestors and moves only matching artifacts to the private transaction before restoring backups. Review also found destination-filesystem inode changes and missing inherited-parent anchors; destination-local preparation and explicit ancestor/creation receipts now address those paths. Verification is ongoing; no implementation completion claim.
Largest generated root setup command after removing the repeated nested guard: 119409 bytes (<131072); rootless 81069.
findings.md
rollback-independent-state.json
command-size5.log
Additive #231/#235 removal lifecycle contract before implementation (D17, D198): an active
.bootstrap-manifestalways means removal must resume, even after the owner marker and service entrypoints have disappeared. This prevents an interruption with retained data from being mistaken for completed cleanup.After checked deletion attempts and assembling the leftover report, removal with leftovers atomically retires the active authority to
.bootstrap-removed-UID-DEV-INO-SHA256inside the private marked base. The terminal name binds the exact manifest inode and bytes. Publication uses a pinned parent descriptor andrenameat2(RENAME_NOREPLACE)after identity/content revalidation: a changed source or occupied terminal name is retained and reported, never overwritten. Public cleanup treats terminal-only state as the existing completed no-op; a removal without leftovers can still unlink its checked authority and empty created directories.Native qualification will observe every actual unlink and terminal rename, inject interruption at each observed mutation boundary, independently recreate recorded paths, and resume/repeat public cleanup. Existing reviewer assertions remain unchanged. A direct test helper may load only a validated identity-bound terminal receipt to finish empty original directories after independently retained fixture data is removed; this does not change public completed-cleanup behavior. Implementation and final verification receipts follow.
Publication/rollback module completed at
600c449b4(Refs #231, #235). The previous stage-only preparation recorded unit, launcher and enablement-link inodes on the data filesystem; real cross-filesystem moves copied them, so every final identity differed from its deletion receipt. The new module prepares each artifact in a private directory on its destination filesystem, records identity before rename, and retains original unit/launcher hardlinks for inode-preserving rollback. Unknown temporary contents and replaced bound inodes are refused.Raw real-shell qualification: 96 discovered fresh activation/cleanup mutation cuts and 110 discovered upgrade/restore/cleanup cuts all resume through repeated cleanup. A disposable read-only, network-isolated container uses four distinct tmpfs filesystems for data, unit, launcher and enablement link: all published receipt rows match final dev/inode, and rollback restores the exact original unit and launcher inodes. The named container is absent after completion. These are correctness checks, not build-host latency claims; no deployment or owner installation access. Full branch verification remains pending.
publication-native-oracle.log
publication-upgrade-native-oracle.log
activation-crossfs-red.log
activation-crossfs-upgrade.log
activation-crossfs-upgrade-absent.log
Completed structural first-base creation step on addhost-readd-r4, module commit edb9e02b1 (integration wiring and focused regression remain in the working tree for the root job). The public base now arrives atomically with its owner, fresh transaction and two install-time creation rows. Each prepared inode is bound before publication; the initial stage retains the complete binding so recovery can adopt only the unchanged same-host/same-transaction state after the parent intent is gone. Unknown private contents are preserved and refused.
The exact-shell original gap returned 71 on both retry and rollback after the first public mkdir. The focused native oracle also caught malformed row separators (four fields instead of six); the corrected regression verifies UID, device, inode, pathname and external owner SHA256. It discovers 23 actual generated mutation boundaries, replays each interruption, preserves inserted unknown intent contents, and repeats recovery and initial-stage adoption.
Verification for this module:
/bin/sh -n crates/plugins/ssh/src/base_creation.shpasses. Focused native output, verbatim:Evidence attachments:
stage-base-before-owner.json
base-creation-stage-native-red.log
base-creation-stage-native-green.log
No final fast gate, complete activation matrix or D243 static size result is claimed for this step; those remain with the root job. This issue remains open.
Remote component committed locally on
addhost-readd-r4:8ab3536dffb75f2d4e032f4dfbc402456c063ae2(fix(remote): require creation receipts before bootstrap removal). This atomic commit contains onlycrates/plugins/remote/src/uninstall.rsand the newuninstall_manifest.rs; its body records the problem, chosen creation proofs, rejected weak alternatives, D17/D218 andRefs: #231.Cleanup now requires install-time type/uid/device/inode/content receipts and pins validated directory ancestors. Changed or unrecorded data is retained and reported. Runtime plans carry their producer's inode/hash proof through a hard-link witness; no-clobber publication and consumption refuse an independently recreated same-byte plan. An active manifest always forces recovery. Intentional internal leftovers finish by a no-clobber rename to an inode/hash-bound terminal receipt; pending external-entrypoint mismatches keep active recovery. The terminal receipt's host, uid and base identity are validated before a public completed-cleanup no-op.
All original reviewer assertions remain unchanged. Initial component checkpoint, verbatim:
Final commit qualification, verbatim selected output (complete raw output attached):
The native observer runs the real public cleanup, interrupts immediately after each actual successful
unlinkator terminalrenameat2, independently recreates each candidate path at every cut, then resumes and repeats cleanup. It checks unchanged uid/device/inode/content, reports or refusal while authority remains active, and preserves the original intentional completed no-op behavior. Controls cover every cut without independent recreation as well. Touched all-target Clippy usedagent,test-support,tokio/rt-multi-threadwith-D warnings; packagecargo fmt -- --checkexited 0. The command sequence ran under the job lock and shared build slot.The earlier full component run had one unchanged retired-socket test return
ConnectionReset; its exact native replay passed, and the final full 48-test run passed. Retirement authentication/error handling was not relaxed. Producer-proof and terminal-lifecycle regressions were first recorded failing before implementation; those red receipts are attached.The commit remains local for parent integration. Branch-wide iterate/fast and shipping qualification remain with the parent job; this component comment does not close the issue. No owner installation or host fixture was accessed.
Round4 additive rollback contract (#231/#235): before activation changes a public path or stops a service, write an immutable bounded before-image receipt in the private setup transaction, and bind its inode and SHA256 in private metadata. Original files, symlinks and directory ancestors are retention-only rows; this receipt authorizes recognition and restoration, never deletion. Rollback must accept either an exact planned replacement or an exact original inode/bytes, including legacy installations without a creation manifest. Validate the enablement symlink against these receipts before manager disable. Unknown, partial or replaced receipts are refused. Copied state directories remain retention anchors unless an earlier creation receipt proves ownership; legacy owner markers remain retained unless their creation is proven. Existing review assertions remain unchanged.
Round4 fresh-cleanup state contract: internal restart preserves its original immutable creation proof until the same host/transaction durably transfers those rows to its next stage. Preserve is an explicit persisted phase, so a generic rollback cannot silently change that decision after an interruption.
The already-confirmed PreviousAttempt::start_fresh action supplies an explicit retire-preserved transition. That transition is recorded durably before any deletion; repeated cleanup then uses only original creation-bound state rows. A full generated private enrollment tree is recorded before its first public rename. Existing published state may use its original install-time manifest rows, preserving retained-row semantics. Unknown, edited, independently recreated or retention-only state remains and causes refusal. No public state is scanned to infer new ownership.
This extends the fresh-retirement proof state machine rather than adding another pathname unlink exception. Implementation and interrupted-transition evidence follow in the same issue.
Independent producer/rollback delta review found three concrete gaps: copied empty state directories were promoted to deletion authority; interrupted legacy rollback refused its exact original current inode without an older creation manifest; rollback manager disable removed an independent enablement symlink before checking its identity. Real shell failing evidence was captured before implementation. The wanted reproduction runs the actual rollback transaction body with only absent lease/orphan-proof no-ops and a deterministic manager adapter; it is not a full runtime recovery gate.
The fix is in progress: copied unproven directories remain anchors, a bound retention-only before-image recognizes original legacy inodes, and wanted mismatches refuse before manager calls. Owner publication now creates a new marker inode during upgrades through the existing publication journal and restores the original inode atomically on rollback, keeping creation authority separate. Exact shell replay now preserves the independent symlink, accepts the original restored inode, and distinguishes unproven versus previously proven directories. Native additive regression tests are queued behind the baseline release build; no native pass is claimed yet. All existing review assertions are unchanged.
delta-wanted-rollback-red.log
delta-wanted-rollback-green.log
delta-legacy-rollback-reentry.log
delta-legacy-rollback-green.log
delta-copied-state-directory.log
delta-copied-state-directory-green.log
Producer/rollback delta component is implemented and its focused native gate passes. The immutable before-image is checked before operational rollback, including a cut before activation, and exact original inode restoration now works for legacy installs without an earlier manifest. New upgrade owner markers use the existing publication journal; rollback atomically restores the original owner inode. Copied unproven empty state directories are retained anchors, while exact earlier directory creation receipts carry forward.
The first extended run exposed a symlink inode reuse edge (7 pass, 1 fail): removing/recreating a link could reuse the inode while changing its target. Rollback now checks canonical enablement targets before accepting any identity, matching the native consumer's existing validation. The independent-inode test also retains its original link and asserts distinct dev/inode values. No reviewer assertions changed.
Exact command (under the shared job flock and orchestrator build-slot):
Verbatim final output:
Shell syntax checks for the three changed shell modules and rustfmt for the additive test file also pass. Broad SSH/Clippy and branch gates remain with the parent job. These SSH changes are not committed yet; the existing remote manifest consumer component remains at 8ab3536dffb75f2d4e032f4dfbc402456c063ae2.
delta-rollback-inode-reuse-red.log
delta-rollback-final-native-green.log
Round4 shared phase-proof helper committed at
90596e810(standalonecreation_proof.sh; integration remains in the writer/consumer slice).Fresh rollback now has one immutable proof contract for original creation rows and validated private-stage inventory. Missing stage entries allow interrupted retirement; unknown or independently recreated entries refuse. Preserve persists until the exact host/transaction transfers original rows into a new bound stage, whose completion marker is durable before the outside proof retires. Transferred state is retained a/r/k data. An already-confirmed start-fresh action instead publishes an explicit retiring phase before deleting only original creation-bound rows; unknown or retained state is kept/refused. The existing four-field outer receipt remains unchanged.
Focused native generated-script cases each report 1 passed; 0 failed:
Exact-source shell syntax and small state-transition cases also pass, including proof-only recovery before the outer receipt and durable original-row transfer into a new stage. These are correctness cases, not installation latency benchmarks. The generated mutation matrices remain required explicit slice gates; no exhaustive partial-write-within-syscall claim is made. Full integration gate output will follow from the root job.
Evidence:
fresh-inventory-native-single.log
fresh-preserve-native-single.log
fresh-explicit-retirement-native-single.log
fresh-stage-inventory-single.log
fresh-stage-transition-single.log
fresh-preserve-transition-single.log
Round4 follow-up contract: copied state is classified by the existence of its original source path, irrespective of the transaction's fresh/upgrade label; copying never adopts preexisting data for deletion. Before-image construction records a private expected SHA256 intent before writing prepared bytes. Before operational phases begin, recovery may accept an unpublished prepared file only when its UID, type, private mode and full bytes match that intent; it then binds the observed inode using the existing proof. Partial, unexpected or foreign-UID artifacts are retained and refused. Once stopping/activation starts, only the inode-bound immutable receipt is accepted. This adds no public deletion authority and preserves the existing trusted-private-journal boundary.
Step: 0ac764f98 propagates the job-assigned TRACER_TEST_PORT into the owned service oracle container; current job uses 4384. This avoids the shared fixed-port fixture collision. Existing default retained for unassigned callers. Python AST syntax check passed; shipping binary delta is 0 bytes because this is a fixture-only script. Required full functional/gate runs are still pending.
Generated install interruption finding (incomplete run): fresh setup via separate commands discovered 177 actual mutation boundaries. Zero-based cuts 0–40 passed rollback twice, install retry twice and Replace twice. Cut 41 (ordinal42) creates an empty before-image-prepared through function redirection before its inode proof; rollback refused with exit71. The original snapshot log and generated event are retained below. The new pending-phase regression is addressing this exact gap; no pass claimed for remaining cuts.
activation-pristine-round4.log
Raw JSONL attachment was refused by Forgejo with HTTP422; retrying the unchanged data under .txt (not an authentication failure).
Before-image pre-write refinement: the generated pristine mutation oracle also observes the empty regular file created by shell redirection before printf executes. With exactly one valid owned private pending SHA intent, owned regular mode 600 / one hardlink / zero bytes at the unpublished prepared pathname, no prior inode proof and no stopping/activating phase, recovery recognizes a private empty preparation slot. This grants no public retention or deletion authority. The ordinary retirement inventory binds its identity before private cleanup. Nonempty partial/mismatched data, another UID, a symlink, nonprivate mode, additional hardlinks, operational phases, and any prior mismatched inode proof still refuse and retain the artifact. This is the explicit protected-private creation boundary, not a public pathname receipt.
Round4 follow-up finding and focused verification (integration edits remain uncommitted): repeated restart of a preserved fresh setup failed with exit71 because rollback could leave the replacement state in place while moving its saved previous state back. The regression first failed, then passes after retiring the proven replacement before restoring the saved tree. The manifest writer also now lets the current prepared row replace an older retained row with a different inode; original creation rows remain the first source when constructing the final cleanup proof.
Proof construction now publishes a private fresh-proof-intent before writing its immutable cleanup inventory. Interrupted canonical-prefix writes resume from original creation rows without replaying completed service restoration; independently recreated inventory files still refuse. This is an additional phase of the previously recorded 90596e810 helper contract, rather than retroactive ownership capture.
Focused native regression: 1 passed, 0 failed. Current-source direct proof-intent oracle: four expected outcomes (resume, missing-child idempotence, independently recreated same-byte private file refused71, proof-only recovery before outer receipt). Shell syntax checks and git diff --check passed. Command-size gate: 1 passed, 0 failed; Root [130380,80575,80501], Rootless [109975,67970,75160] bytes, below131072.
These focused receipts do not claim the exhaustive generated mutation matrices or the final fast gate; those remain required in the serialized integration gate. The service-manager transition immediately before publishing fresh-proof-intent remains a separately tracked idempotence boundary in the parent integration work.
fresh-repeated-restart-red.log
fresh-repeated-restart-green.log
fresh-proof-intent-single.log
fresh-final-command-size.log
Publication follow-up contract: while an active, inode-bound private destination directory is preparing an artifact, an unbound owned mode-600 regular file with one hardlink may contain any prefix of that role's exact canonical content, including zero bytes. This private preparation phase grants no authority over a public target. Before retirement, cleanup records an explicit abandoned UID/device/inode/SHA256 receipt for an unfinished prefix; full canonical artifacts keep the existing artifact receipt. Once either receipt exists, every retry requires that exact inode and bytes. Unexpected non-prefix data, another UID, a symlink, nonprivate mode, extra links before first binding, or any mismatched bound receipt is retained and refused. Unit and owner public publication still require full canonical bytes.
Round4 manager-stop reentry finding and structural fix (integration edits remain uncommitted). A native regression interrupted rollback immediately after the installed unit moved into quarantine. The inert manager correctly rejected a second stop with exit5 because the public unit was absent; the original program therefore could not resume before publishing its final fresh proof.
Rollback now creates a hardlink from the validated planned-manifest to a private rollback-stopped-manifest only after manager stop succeeds. Both links stay on the stage filesystem. Cleanup validates the exact same-inode, private600, two-link pair and the already-bound plan digest before reusing that acknowledgement; the plan file and stage directory are fsynced before any public retirement. Existing public-artifact preflight still precedes acknowledgement use. The pair survives destination publication cleanup, then the immutable fresh inventory governs its final retirement. A similarly named file alone is insufficient.
Latest native regression: 1 passed, 0 failed (5.50s). It verifies stop occurs exactly once, a same-byte independently recreated acknowledgement refuses twice without consuming that file, and an edited shared plan refuses. Restoring the original witness permits completion. Existing stop-refusal regression also passes: 1 passed, 0 failed (4.85s), preserving refusal behavior.
A disposable read-only/networkless container with separate stage/unit/launcher tmpfs devices86/88/87 ran the actual generated activation and rollback bodies: interruption99 after the cross-filesystem unit move, then successful retry with exactly one stop and safe witness retirement. The container was removed. These inert-manager fixtures are correctness receipts, not a live-service or performance claim.
The added file/directory durability checks expose the existing transport-size constraint: unchanged command-size test RED at Root131109 bytes against131072. Parent integration is independently fixing the Root wrapper and will report its final cap and whole-gate results. Exhaustive matrices and fast gate remain pending.
fresh-manager-stop-red.log
fresh-manager-stop-refusal-green.log
fresh-manager-stop-crossfs.log
fresh-manager-stop-command-size.log
fresh-manager-stop-green.log
Finding: the first real static x86_64 build rejects nix::fcntl::renameat2/RenameFlags because the existing dependency exposes that wrapper only for GNU libc. This was not caught by native glibc unit tests. Reusing the existing safe linkat/unlinkat APIs avoids a dependency or new native boundary: terminal publication is an atomic no-clobber hard link, fsync, then active receipt unlink and fsync. The two-link intermediate state is accepted only for the exact active/terminal pair with the original UID/dev/inode/hash; arbitrary second or third links refuse. Native removal gate now has 49 passing tests and generates 42 actual mutation cuts (22 clean +20 with internal retained data), 966 independent recreations across 23 path candidates, and 2016 resume/repeat calls. Static rebuild and final gate remain pending.
The unchanged first install-boundary JSONL is also attached under .txt because Forgejo refused its original extension: activation-first-boundaries.txt
Additional round4 findings and implementation proposal before code. Current-source isolated replay: pre-activation private fresh setup emits STALE (exit0); the same setup after actual ACTIVATE, with valid planned manifest and no active lease, exits71 during SSH inspection because bin/current exists. The final tree gate also rejects its public manifest and state before an outside fresh cleanup proof exists. The current generated pristine activation matrix exercises direct rollback, not inspection of each interrupted state.
Implementation proposal: inspection will reuse the production rollback identity/ancestor, original before-image and published-plan checks. It will verify current fixed public artifacts and planned state against their existing original/prepared receipts, without learning deletion authority from current public contents. Fresh journals retain the existing exact recovery coordinates. Interrupted upgrade journals need a distinct fixed classification carrying original coordinates and original installed host identity, so recovery restores the old installation rather than allocating a new host or deleting its retained state. A live original terminal remains retained; a live setup lease remains busy73. The activation oracle will add inspection and same-coordinate recovery before its existing direct rollback/retry checks, retaining strict foreign-file assertions.
Separate required #235 finding, to be implemented in the parent lane: native completed removal with retained data publishes a bound .bootstrap-removed-UID-DEV-INO-SHA256 receipt and removes the owner. Current SSH inspection and staging both require that missing owner whenever base remains, blocking re-add. The replay constructs the exact terminal receipt shape from the actual install manifest and verifies original receipt inode/hash; it does not claim native helper execution on the same fixture. #235 history explicitly requires re-add after uninstall while CA/joined-node data remains. A distinct validated terminal-completion classification can admit the next setup while retaining independent data and without resurrecting old deletion authority. This second fix is separate from the bound-journal reader.
inspection-review-direct.log
inspection-readonly-findings.md
D243 design before implementation: first candidate is 21406320 bytes versus merge-base21265648 (+140672), with rodata+65536 and text+69824. This exceeds the64KiB limit and is not an acceptable result. Native removal helpers are being outlined and shared sort/parser/hash paths measured. For fixed shell literals, reuse the current compile-time source transform and intern127 repeated byte words into one shared static dictionary; decode each program once with the existing standard-library OnceLock. This is an internal representation for trusted compiled text, not a new transport/dependency or externally supplied format. All expanded bytes must match the existing program exactly; functional interruption/identity assertions stay unchanged. Probe over85246 compact standalone-source bytes yields45632 stream+wordstorage (39614 fewerbytes; final linkeddelta pending). Heapcost is one expanded copy shared by all50 concurrent setup flows perprocess, ratherthan50 copies; cold/warm construction latency andactualmemory will be measured on the namedperfVM before acceptance. No budgetincrease requested orassumed.
Round 4 producer follow-up findings and focused verification (shared worktree, implementation pending final gate/commit):
Copied or retained staged state children now default to retention (
r/k/a) for both fresh restaging and upgrades. Only the production enrollment writer'sidentity.jsonreceives regular-file deletion authority. An original source disappearing after JOIN cannot turn its copied bytes into new creation authority. Later prepared rows replace stale transferred metadata; priordcreation authority survives a laterarow only for the same UID/device/inode/hash.Before-image creation records a bounded SHA intent in an owned private empty directory before opening the snapshot file. An interrupted empty preparation slot or completed canonical write can recover before operations start; it grants no public ownership. Nonempty partial bytes, another UID, mismatched earlier inode receipts, or an operational phase are retained/refused. Regular publication similarly recognizes only canonical private prefixes before first binding, writes an explicit abandoned inode/hash receipt before retirement, and keeps full canonical validation for public publication.
Focused rollback native output, verbatim:
The publication functions additionally passed 16 direct scenarios covering unit/owner prefixes, unexpected bytes, extra hardlinks, retired ready/abandoned journals, same-byte replacement and repeated cleanup. The native publication tests are queued behind the shared build slot; this comment does not claim a full gate or final size result.
Evidence:
followup-fresh-copy-shell-red.log
followup-fresh-copy-shell-green.log
followup-snapshot-gap-shell-red.log
followup-snapshot-gap-shell-green.log
followup-dedup-shell-red.log
followup-dedup-shell-green.log
followup-empty-slot-shell-red.log
followup-empty-slot-shell-green.log
followup-source-disappearance-shell-red.log
followup-source-disappearance-shell-green.log
conservative-state-native-green.log
publication-prefix-shell-red.log
publication-prefix-shell-green.log
publication-prefix-function-scenarios.log
Completed atomic steps: 5b7f66828 replaces the GNU-only no-replace rename with portable no-clobber linkat +active unlink. The actual removal observer now covers both operations:49 uninstall tests pass;42 cuts,966 independent recreations,2016 resume/repeat calls. Touched remote all-target Clippy -D warnings and formatting pass; x86_64 musl remote compilation passes.
b4bb409d4 adds the compile-time comment/indent compaction helper as a separate module; its literal-byte/line-ending unit test and touched SSH all-target Clippy -D warnings pass. Adoption and the later fixed-word storage optimization are still uncommitted integration work. No full-gate or final-size pass claimed.
remote-terminal-link-gate.log
candidate-build1.log
Publication private-prefix follow-up native tests completed after the shared build slot became available. Command:
cargo test --locked -p infraternal-plugin-ssh --test install publication_round4:: -- --nocapture. Output verbatim:These tests exercise 16 unit/owner cases covering canonical prefixes, unexpected bytes, extra hardlinks, ready/abandoned retirement interruption, same-byte independent recreation and repeated cleanup. Public publication still requires complete canonical content and exact bound identity.
publication-prefix-native-green.log
Native manifest size follow-up in the shared worktree: pre-LTO attribution identified duplicate stable depth-sort instantiations (12 functions, 3,318 LLVM IR instructions). This is IR attribution, not final linked byte measurement. One shared non-inlined unstable depth sorter now preserves child-before-parent order; equal-depth paths cannot be ancestors. Exact owner/authority final ordering remains explicit. Six tab fields are parsed on the stack with missing/extra fields refused, and SHA256 receipts use fixed 32-byte arrays with the same lowercase-hex and exact-length checks. No deletion-proof check was removed.
Native command:
cargo test --locked -p infraternal-plugin-remote --features agent,test-support,tokio/rt-multi-thread uninstall -- --nocapture. Output verbatim:Clippy requested the equivalent key-sort spelling in the shared helper; after that spelling change,
cargo clippy --locked -p infraternal-plugin-remote --all-targets --features agent,test-support,tokio/rt-multi-thread -- -D warningsexited zero (Finished dev profile ... in 2.00s). Touched rustfmt check exited zero. Final static size measurement and branch gate are still pending with the parent job. No follow-up commit or push has been made.manifest-size-native-green.log
manifest-size-clippy-green.log
remote-size-attribution.txt
Base-creation partial private-record recovery contract: the active creation intent and its private prepared directories precede every record write. Before a file's inode-binding marker exists, an owned mode-600, single-link regular file inside that private phase may contain exactly any prefix (including zero bytes) of its reconstructible canonical record. Recovery may complete those canonical bytes before recording its inode. This phase grants no public deletion or replacement authority. A bound record must retain its exact UID/device/inode and complete canonical SHA256; its bytes are never repaired. Retired or public records, unexpected non-prefix bytes, another UID, symlinks, loose permissions, or extra unbound hardlinks are preserved and refused. This handles arbitrary multiwrite interruption rather than treating only empty files specially.
Generated syscall reproduction before the change: successful openat cut 4 in prepare_base_creation leaves prepared/.bootstrap-owner at zero bytes; recover_base_creation exits 71. Actual trace and failure are in base-prefix-generated-red.log. No production implementation has changed yet.
Static x86_64 same-recipe candidate: 21,352,592 bytes (SHA256 7927e67b958a22a2dfba824be6cc9257136208d7f3a84f33a9be05c02291e084), versus merge-base 21,265,648 bytes: +86,944 bytes. Previous unoptimized candidate was 21,406,320 bytes (+140,672). Shared fixed-text interning plus native parsing/sorting changes save 53,728 bytes against that candidate, but growth still exceeds D243's 64 KiB ceiling by 21,408 bytes. No size cap has been raised. Further measured reduction is required before handoff. Functional gates and full interruption matrices remain pending.
Retained-base re-add design (#235): completed removal can retain state/CA/joined-node data with no owner marker. Reuse base creation custody rather than treating that ownerless pathname as fresh deletion authority. A shared read-only checker requires the original private base inode plus the terminal manifest whose filename binds uid/device/inode/SHA256 and whose original a/d row names that exact base. The initial creation intent will name that terminal before preparing a new owner and stage outside the base; each public rename uses its already-recorded prepared inode and the intent survives until both finish. The stage records original base as a (retention), original terminal as r, new owner as f, plus an empty retained-base- phase marker. Fresh rollback leaves the original base/state/data/terminal and retires only exact new creation entries. Admission additionally requires reserved activation targets absent so completion never authorizes overwriting an independently recreated live slot/unit/launcher. Existing manifest row meanings and four-field rollback receipt stay unchanged. New standalone checker tests pass for original custody and preserve/refuse recreated base, recreated same-byte terminal, edited terminal and extra hardlink. Integration and generated interruption coverage are still pending.
Retained-base re-add contract: explicit
.bootstrap-create-retained-HOST-TXand.bootstrap-created-retained-HOST-TX-BINDINGintents identify retention custody from their first mkdir, including the intent-only interruption. The existing immutable terminal manifest must validate this exact original private base before preparing any new owner or stage. An empty intent marker records the terminal basename before private artifact creation. New artifacts are prepared in a separate inode-bound capsule, with individual receipts written before no-clobber publication into the retained base. Recovery chooses a public destination only when the corresponding prepared source is gone and its prepublication inode receipt matches; retired cleanup additionally validates the complete final binding before any mutation. Retained base and terminal rows remainaandr; only the newly created owner receivesfauthority. Existing retained data is never adopted or deleted. Keep the private capsule until both destinations publish; retire its empty directory before deleting its capsule inode marker. A final stage marker binds the retained terminal name for subsequent adoption. Bound mismatches and any other-UID private replacement are refused and retained. Before first private binding, the protected unbound preparation phase cannot independently distinguish an identical same-UID replacement; it grants no authority over existing public candidates.Before-change actual function regression:
prepare_base_creation retainedagainst a valid terminal and original retained base exits71, while independent notes and original identities remain. Evidence base-retained-red.log. Native prefix strict-shell replay has passed3/3 before this extension.Additive retained-base cleanup state machine (#231/#235)
Native removal leaves an immutable filename-bound terminal manifest and its exact original base. Re-add retains those objects: its private capsule publishes a fresh stage with original base
a, original terminalr, and newly prepared ownerf; an emptyretained-base-<terminal basename>marker identifies this retention phase. No public scan grants ownership.Inspection validates this marker through the shared removed_base validator before a plan exists; once a plan is bound it reuses original/prepared rollback rows. The original retained root and data are retained, while reserved activation targets still require recorded authority. The immutable fresh proof carries the original base/terminal rows through retirement. Cleanup validates both against that proof before touching any creation-bound artifacts, removes only matching
f/dcandidates, and leaves inherited data and the original terminal. An absent owner plus exact terminal custody is CLEAR only after the stage/admission artifacts retire. Any changed/recreated base, terminal or creation candidate is preserved and refused. Missing already-retired candidates are idempotent. Existing four-field rollback receipts remain unchanged.Focused tests will exercise retained cleanup twice, inspection before activation/after rollback, and independent terminal/base/creation replacements. Whole generated mutation gates remain the parent serialized slice gate.
Bound-journal inspection now shares production rollback proof/identity readers instead of a second receipt parser. Fresh activation recovers its original coordinates; upgrade classification preserves original installed identity and live old runtime, and exact rollback restores the original inodes. Unknown/recreated public files and original private backup roots are refused unchanged. An already accepted Replace authorizes that exact interrupted-upgrade rollback without asking a second time.
Focused native gates (integration uncommitted; whole serialized gates pending):
The separate completed-removal retained-base re-add gap remains tracked and is being implemented through original terminal/base custody; these focused results do not claim that second flow or every generated mutation cut.
inspection-fresh-native-green.log
inspection-upgrade-native-red.log
inspection-upgrade-native-green.log
inspection-upgrade-flow-red.log
inspection-upgrade-flow-green.log
inspection-recovery-command-size.log
Private record recovery and retained-base capsule focused results (shared worktree, no follow-up commit yet):
The actual syscall observer first reproduced an empty owner record at successful openat cut4. My first helper fixture omitted production noclobber (
-C); the full install observer exposed that omission. With productionset -euC, recovery reproduced exit2/File exists. The completion branch now uses>|only after owned600/single-link/private/active/unbound and canonical-prefix checks. Initial creation retains noclobber. Strict generated empty and real multiwrite cuts now pass; the multiwrite prefix was22,528/22,529 bytes and retained the same UID/device/inode. Unexpected data, extra links, bound-prefix changes, public/retired prefixes and same-byte recreated bound records remain refused.Retained re-add now has explicit retained intent prefixes from its first mkdir. Original base/terminal identities provide retention-only custody; a separate private capsule records new owner/stage identities before no-clobber publication. It keeps that capsule until both destinations publish and retires the empty capsule before its own inode marker. Final stage adoption validates the original-base binding, so the temporary capsule can be absent. Original base and terminal rows are a/r; only the new owner is f.
Focused command:
cargo test --locked -p infraternal-plugin-ssh --test install base_creation_round4:: -- --nocapture. Output verbatim:The original23 mutation assertions are unchanged. Retained28 cuts resume and repeat while preserving original base/terminal/notes, and independently recreated bound owner/stage destinations are refused. These counts are shell-observer cuts; a syscall-observer replay of the retained module is still pending. Touched fmt and sh-n passed. SSH Clippy currently reports only two too_many_lines errors in concurrent fresh_cleanup_round4 test work; that owner has the diagnostics. This is not a branch gate or final completion claim.
The immutable sortedVec manifest candidate independently passed49 removal native tests and touched Clippy. Its final byte/performance benefit remains unproven because the static build also contained concurrent source changes; parent will run a frozen A/B before accepting it.
base-prefix-generated-strict-red.log
base-prefix-generated-strict-green.log
base-prefix-multiwrite-strict-green.log
base-prefix-native-strict-green.log
base-retained-red.log
base-retained-green.log
base-retained-native-green.log
manifest-vec-native-green.log
manifest-vec-clippy-green.log
Retained-base cleanup focused control RED exit72 on the original basea row; current direct actual-source test GREEN1/0 (0.50s). It preserves exact original base/terminal and notes, removes only original creator owner/bin, refuses independently recreated terminal/owner/base unchanged, and inspects ownerless completion CLEAR twice.
Activated re-add exposed two additional integration gaps: protected copied original data with mode664 was rejected during private retirement inventory (trace exact stage/replaced-state/retained-data); the explicit retained serializer policy now records those already-admitted copy identities without relaxing new-tree admission. More concretely, actual successful activation+rollback with inert manager left its exact created enablement link: native RED1/0 failure at
creation-bound wanted link survived rollback(5.49s). Re-add admission correctly refused that unproven leftover. The fix keeps original wanted links and explicitly retires only exact prepared wanted identity after manager disable, with original preflight still before any manager side effect. Full activated/repeated re-add replay pending.Both command cap controls remain GREEN2/0 (0.43s): longest253-byteDNS Root125970, rootless126196 bytes, limit131072. INSPECT/fresh/upgrade recovery Root [74463,104723,104472], rootless [74309,104569,104318]. Whole serialized slice gates remain pending.
retained-cleanup-native-red.log
retained-cleanup-native-green.log
retained-wanted-native-red.log
retained-command-size.log
Structural removal review found another pathname-derived authority path: remove_protocol_link observes an arbitrary current-UID symlink at the reserved runtime plan pathname, creates FileProof from that observation and unlinks it. The link target is safe, but the independently created link itself is not preserved as the round-4 requirement demands. Proposed additive safety behavior: unbound runtime protocol paths (including symlinks) are kept and refuse plan creation/consumption; only the existing creator-issued hardlink proof authorizes retirement. The earlier planted-plan regression will retain its original target-untouched/refusal assertions and add exact link-identity preservation, with explicit fixture cleanup between independent scenarios. The three r3 test-only commits remain unchanged. New failing preservation test precedes the fix; this is pending implementation and gates.
Runtime uninstall protocol retention contract delta (#231/#235): the structural creation-proof requirement supersedes the earlier convenience of replacing an unknown owned symlink at
.uninstall-planor.uninstall-plan.staged. Unknown links must retain their UID/device/inode and target, with the operation refused; their targets are never followed or changed. Only an existing creator proof can authorize cleanup. Public-path metadata discovered during removal never creates ownership authority. The original planted-plan review is strengthened to preserve link identity/refuse both consumption and replacement while retaining its original refusal and untouched-target assertions; test code explicitly removes its own link between the independent cases. No R3 review assertion is changed. New PLAN/STAGED preservation regressions run before the production change. This follows the owner brief's stronger retention rule and requires no new permission.Fixed-text storage candidate measurement (component only, not end-to-end setup): bounded backward copies over the existing compile-time word stream, no dependency addition. Actual fixed shell corpus: 53,547 encoded word bytes -> 26,671 stored bytes before decoder code. On named 4-vCPU perf VM, under perf lock and CPUWeight10000, load 0.32/0.22/0.43 before and after; 10 isolated processes per representation, each constructing 50 pooled text copies. Added first-use local decode median 0.284304 ms, range 0.239264–0.337729 ms, once for the entire corpus, not per host. Pool construction medians plain 1.612169 ms vs decoded 1.458613 ms; ranges overlap, so no warm-speed improvement claimed. Temporary decoded word storage is 53,547 bytes; production releases that intermediate after expanding the existing shared raw text cache. Benchmark deliberately retained it during 50 copies (2,677,350 bytes) to observe the component: VmRSS ranges plain 3360–3424 KiB, local 3376–3484 KiB. This is justification to evaluate linked size, not acceptance of the final binary or a performance-budget claim. Prototype exact-byte tests cover all fixed sources and 4,096 deterministic sample arrays. Planned implementation stays internal to trusted compiled constants; external input never enters this representation.
local-copy-perf-vm.log
The activated retained-base restart regression exposed a proof-generation omission: the before-image retained the original state directory inode but omitted its original children. After rollback restored that original directory, fresh-proof generation filled child paths from the replacement manifest, binding copied inodes. The next preserve/restart correctly refused the mismatch. Raw trace excerpt shows the same original root inode with different original-versus-proof child inodes.
The before-image writer now records bounded original descendants BEFORE operational changes through the shared serializer, all as retention-only a/r/k. This cannot authorize deletion of inherited state and avoids retroactively capturing public paths after rollback. The existing private inode/hash journal binds these rows. The full production retained activation/inspection/re-add/preserve-restart sequence is green under diagnostic tracing; normal focused replay and final whole gates remain pending.
retained-original-state-proof-red-excerpt.log
Retained-base focused flow now passes on actual production generated commands. The new immutable before-image contains original retention-only descendant identities; preserve/restage carries exact terminal custody, and rollback removes only the exact prepared enablement link when there was no original link.
Final focused native output (normal, without diagnostic tracing):
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 156 filtered out; finished in 17.00sThis exercises activation → original-coordinate inspection/recovery → CLEAR twice → re-add → same-transaction preserve/restart → rollback → CLEAR twice. Original base, terminal, state directory and retained mode664 file keep the same device/inode; retained bytes survive and new owner/stage/enablement link retire.
Original upgraded installation regression after the shared reader/serializer changes:
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 156 filtered out; finished in 10.21sIt retains the old host identity/live original UUID listener, restores original public inodes, and refuses independently recreated or symlinked original private state backups plus unrecorded new public data unchanged.
Both argument-size controls:
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 155 filtered out; finished in 0.11sLongest253-byteDNS installation commands Root126693/rootless126919 bytes, below131072. INSPECT/fresh/upgrade recovery Root [74550,105021,104770], rootless [74396,104867,104616]. Owned shell syntax and
git diff --checkpass. Full serialized iteration/fast/static/generated matrices remain the parent integration gate; these focused receipts do not claim them complete. No integration commit or push from this lane.retained-activation-native-green.log
retained-command-size-final.log
inspection-upgrade-native-final.log
Additive private phase admission (#231/#235)
Review controls show an empty original snapshot cannot recover and a 30-byte stopping flag is admitted; rollback also unlinks payload before inventory admission. All cleanup paths must admit typed private phase before their first unlink/manager action, including upgrade. Zero-byte operational flags are exact; transaction/kind canonical bytes and UID/mode/type are checked. Bound payload/prepared/original artifacts use existing identity/hash receipts. A new upload intent names authenticated expected hash/size before private creation; an inode/hash record follows completed verified upload. Only that explicitly unbound private upload interval permits mutable partial bytes, with owned private node and bounded size; it grants no public deletion authority. Later private enrollment state is mutable only before a bound plan and behind a verified payload. A bound plan fixes prepared/public and original backup identities; no later inventory may bless unexpected or foreign private paths.
A shared pure private-prefix predicate takes a byte-emitter function. Only active protected unbound slots may match canonical prefixes; bound/retired files always require original identity+complete hash. Snapshot streams preserve original bytes including trailing newlines. Handoff recovery validates incomplete original/prepared/owner/manifest slots against already bound original sources, then retires them after the whole preflight. This does not grant authority to public suffix files.
Failing native regressions precede source changes. Required actual syscall Replace matrices cover both pristine recovery and foreign-edit preservation; command argument cap stays131072. Whole gates remain serialized by the parent build slot.
Committed the atomic runtime protocol-link retention fix as
c898c1cad162e082da7bb3ec64e9429a41628ed0(not pushed). Unknown PLAN/STAGED links now retain UID/device/inode/target and refuse publication/consumption. Cleanup no longer captures current pathname metadata as ownership authority; regular creator-bound receipts remain required. The original planted-plan review keeps its refusal and untouched-target assertions, adds exact link/target retention, and explicitly removes the fixture-owned link between independent cases. No R3 review assertion changed.Before implementation both new preservation regressions failed. For the atomic commit gate, the module was temporarily set to HEAD plus only the symlink policy hunk under the shared flock/build slot; pending container/hash/sort/cold work was restored byte-for-byte in an EXIT trap before unlocking. Thus the gate tests the exact staged source, not the combined size experiment.
Commands: touched
rustfmt --check;cargo test --locked -p infraternal-plugin-remote --features agent,test-support,tokio/rt-multi-thread uninstall -- --nocapture;cargo clippy --locked -p infraternal-plugin-remote --all-targets --features agent,test-support,tokio/rt-multi-thread -- -D warnings. Verbatim gate output:The full raw output is attached; fmt and wrapper exited zero. Full branch gate, final binary size and newly reported active-manifest reload authority finding remain parent-job work.
runtime-unbound-symlink-red.log
runtime-unbound-symlink-atomic-gate.log
Exact raw gate excerpt for
c898c1cad162e082da7bb3ec64e9429a41628ed0below. The earlier completion comment abbreviated the Clippy path and formatting; these are the literal lines from the attached atomic gate log.Additive creation-receipt contract (#231/#235): an active manifest's content is not proof that setup created its inode. The failing restart regression copies identical valid bytes into a new owned private inode and currently authorizes deletion (active-manifest-reload-red.log: 0 passed; 1 failed).
Setup will bind the complete prepared receipt before publication with an immutable selfnamed hardlink
.bootstrap-manifest-UID-DEV-INO-SHA256. The fixed active name must refer to that exact inode. Native recovery validates the encoded identity and digest before accepting active, anchor-only interrupted retirement, or completion transitions. Only exact known peer links explain link counts; unknown aliases and identical independent replacements are retained/refused. Terminal publication is link/fsync/unlink; a mature terminal retains its original selfnamed proof.Private manifest writes will have intended complete SHA recorded before creation and an inode/digest proof before public mutation. Canonical prefixes are recognized only in an explicitly unbound protected preparation phase and never authorize public deletion. Planned/ready copies have their own inode proofs. Rollback restores a creator-bound original inode where available; observing or copying a legacy manifest grants no deletion authority. Old anchors retire only from previously bound journal identities. This extends D17/D243/D273 without a new dependency or protocol parser.
Creation-receipt reload finding: native RED reproduced independently recreated identical manifest bytes gaining authority after restart:
test result: FAILED. 0 passed; 1 failed.The additive creator-anchor contract posted above is now implemented in the writer/consumer working tree. Actual-function checks pass for selfnamed anchor publication, refusal of an identical independently recreated active receipt, canonical unbound manifest prefixes at 0/1/31/128 bytes, and refusal of an identical-byte replacement of the bound planned copy. The exact original/replacement inode identities remain intact. Shared reader admission uses immutable inode/hash bindings; pending canonical-prefix admission is restricted to protected preparation.
These function checks are preliminary evidence. Native restart GREEN, typed private admission, full rollback/handoff matrices, Clippy and size/cap gates remain pending; no completion claim or push.
Additive compatibility choice (#231/#235): a valid legacy receipt without a creator anchor is retention-only evidence. Host handoff will persist
boundversuslegacyin its intent/retired phase name before writes. An exact preexisting creator alias permits inherited creation rows to remain; the legacy branch downgrades inherited f→r, d→a and l→k. Only the newly prepared, identity-bound unit and owner receive new f rows. No-manifest legacy handoff remains supported.Recovery uses the persisted choice and never strengthens legacy authority because a new alias now exists. The canonical transform validates the header, allowed paths and record grammar before emitting either branch. This preserves legacy upgrade compatibility without retroactively adopting existing data for deletion. New regressions will cover anchored preservation and unanchored downgrade; gates remain pending.
P2 repeated-removal reporting reproduced at the intended assertion:
role unit: [],test result: FAILED. 0 passed; 1 failed(terminal-reserved-report-red2.log). A valid completion receipt prevented any later reserved entrypoint from being reported. The read-only completion path will retain and report present unit/wanted/launcher/current and other reserved protocol paths on every repeat; completion confers no deletion authority or service-manager action. Ordinary retained data preserves the established completed no-op.The P1 current-source restart regression is now GREEN:
test result: ok. 1 passed; 0 failed(active-manifest-reload-green2.log). Full native generated-cut coverage and combined producer/private-reader gates remain pending. An earlier intermediate fixture-only anchor hash mismatch was corrected at fixture publication before these intended RED/GREEN runs; it is not counted as behavioral RED evidence.terminal-reserved-report-red2.log
active-manifest-reload-green2.log
Round 4 private-phase follow-up: a focused real generated enrollment fixture withholds the reply after JOIN created its private state, then adds an independent same-UID private child. Current rollback succeeds and removes that child. This is a confirmed gap beyond zero-byte flag validation; evidence/private-workspace-native-red.log records the failure (0.89s).
The protected upload/enrollment phase must admit only its producer's known identity slots plus retained copies proven by an immutable pre-copy original receipt. Unknown descendants must refuse before any cleanup or manager mutation, rather than being inventoried from their current bytes as a new deletion proof. Bound prepared/published trees continue to require their exact inode/hash receipts. The proposed early before-image for the separately confirmed stale-copy race provides original retention custody without granting original data deletion authority. No public scan or byte-identical inode recreation can acquire creator proof.
The earlier actual syscall Replace properties passed all 45 observed cuts each (pristine 737.18s; independent variants 793.98s); those receipts predate the final creator-alias integration and are not the final candidate gate. Final properties will run in resumable short batches with per-cut receipts and the same assertions.
P1 copy-lineage finding: a real JOIN copied retained state version one, then the original public file changed to version two before ACTIVATE. The current late before-image treated version two as an original backup and commit deleted it while retaining stale copied version one. Native RED:
commit retired version two and retained stale version-one copy(private-copy-lineage-native-red2.log).Fix contract: publish the immutable retention-only before-image BEFORE JOIN copies public state, then require every original public identity/content/ancestor to match that snapshot before activation can stop the service or replace public artifacts. Activation never refreshes the snapshot. A changed original refuses and remains intact; observing an original file grants no deletion authority. Canonical snapshot emission is shared with recovery and remains bounded. Unbound private prefixes remain restricted to their protected preparation phase.
private-copy-lineage-native-red2.log
The original/copy race is confirmed with exact real-file evidence. After generated JOIN copied retained state, the fixture changed the original public file to version two before ACTIVATE. The original was UID1001, device2049, inode6684684, SHA25611f6d299bf06d45dd2c4440abce3edd26bb2dc36e87b72c5dfaaad8f7e2e33fd. The copied version one was UID1001, device2049, inode6684705, SHA25687ce22890d2a86a380640b00317f4f8edb96362cf90d7a319b04e6321561aceb. Both were private600 fixture files.
Current commit succeeded and retired the original version two, retaining stale version one. Exact native regression: fresh_cleanup_round4::private_preflight::original_changes_after_private_copy_never_disappear_on_commit; RED, 0passed/1failed, 6.00s; assertion
commit retired version two and retained its stale version-one copy. Raw receipt: evidence/private-copy-lineage-native-red3.log.The proposed correction publishes the original retention-only before-image before the private copy and revalidates that original proof before activation can stop the manager or replace public artifacts. It must not refresh that proof from later observed bytes. Original data remains retention-only; this change creates no new deletion authority.
Step committed: c26725c85 (fixed-source storage only). Exact commit tree checked in a private mount namespace: fmt, 4 source/storage tests, 1 embedded-source invariant test, and all-target SSH clippy passed. Concurrent recovery edits were excluded from that commit. The target-machine component measurement remains recorded above; setup budgets require the real service oracle.
Production browser gate: 10/10 existing replacement/review cases passed on infraternal-perf-test under the measurement lock and CPUWeight=10000. Build source c898c1cad, production bundle with the existing clusters-preview flag. Phone widths375/393 and desktop1440 covered in existing cases; owned ports4384/4385 both closed after the run. Browser plugin unavailable, existing Playwright used. Raw receipts and selected screenshots for external review:
storage-atomic-gate.log




browser-ten-vm.log
Remaining work: creator-anchor integration and native full suite, original-copy lineage fix, real native enrollment interruption protocol, complete generated Root/Rootless matrices, service40/remaining gates, final size and final verify fast. No finish claim.
Manifest writer finding during P1 integration: a small actual-function oracle inserts an independent regular file at
stage/planned-manifestafter the initial absence check and immediately before copying. The existingcpoverwrites its bytes and setup returns zero, then binds that unrelated inode. RED: manifest-copy-clobber-red.log (writer exit=0; independent bytes replaced by receipt body).The writer will create regular snapshot/planned copies with canonical bytes through the existing strict-shell noclobber redirection instead of overwriting copy semantics. A competing destination must refuse unchanged; no later inode binding may adopt it. Legacy original-inode backup already uses no-clobber hardlink publication. This is part of the creator-bound receipt contract, not an expansion of deletion authority.
Round 4 native producer contract proposal: enrollment currently writes a named identity-UUID.pending regular file with write_all. A short write or interruption can leave an opaque private prefix that SSH cannot safely distinguish from an unrelated file. A filename pattern or current-directory inventory cannot create ownership proof.
Use the existing Linux anonymous regular-file primitive (O_TMPFILE), without a new dependency or storage engine. Write and fsync the identity while unnamed. A failed/short/interrupted write closes an unnamed inode; no partial secret file has a cleanup pathname. After the complete bytes are checked, persist expected nonce/role/size/digest and the actual UID/device/inode proof before linking the completed inode under its canonical private/public preparation name. Publication remains no-clobber; replacement validates the earlier identity before rename. The outer setup retains this creator proof until its own manifest has consumed the exact identity inode. Unexpected/recreated named files are preserved/refused. Unsupported anonymous-file publication fails explicitly before replacing the existing identity; no named partial-write fallback.
Rootless owned-fixture probe is GREEN at UID1001: O_TMPFILE600, full write+fsync, linkat via /proc/self/fd with AT_SYMLINK_FOLLOW preserved exact inode; an EEXIST collision retained the independent file; a targeted child wrote seven bytes then was killed, leaving no named partial inode. Receipt evidence/native-anonymous-file-probe.log. The superseded secret-in-symlink proposal is rejected because normal path diagnostics could disclose its target. No secret bytes enter argv, logs, journal filenames or symlink targets.
Next gates: actual native writer short-write/link/rename interruption tests, strict independent-replacement variants, filesystem support/refusal coverage, and syscall/latency/size measurement. This is a proposal plus successful primitive probe, not a completed native producer implementation.
Round 4 native producer contract proposal: enrollment currently writes a named identity-UUID.pending regular file with write_all. A short write or interruption can leave an opaque private prefix that SSH cannot safely distinguish from an unrelated file. A filename pattern or current-directory inventory cannot create ownership proof.
Use the existing Linux anonymous regular-file primitive (O_TMPFILE), without a new dependency or storage engine. Write and fsync the identity while unnamed. A failed/short/interrupted write closes an unnamed inode; no partial secret file has a cleanup pathname. After the complete bytes are checked, persist expected nonce/role/size/digest and the actual UID/device/inode proof before linking the completed inode under its canonical private/public preparation name. Publication remains no-clobber; replacement validates the earlier identity before rename. The outer setup retains this creator proof until its own manifest has consumed the exact identity inode. Unexpected/recreated named files are preserved/refused. Unsupported anonymous-file publication fails explicitly before replacing the existing identity; no named partial-write fallback.
Rootless owned-fixture probe is GREEN at UID1001: O_TMPFILE600, full write+fsync, linkat via /proc/self/fd with AT_SYMLINK_FOLLOW preserved exact inode; an EEXIST collision retained the independent file; a targeted child wrote seven bytes then was killed, leaving no named partial inode. Receipt evidence/native-anonymous-file-probe.log. The superseded secret-in-symlink proposal is rejected because normal path diagnostics could disclose its target. No secret bytes enter argv, logs, journal filenames or symlink targets.
Next gates: actual native writer short-write/link/rename interruption tests, strict independent-replacement variants, filesystem support/refusal coverage, and syscall/latency/size measurement. This is a proposal plus successful primitive probe, not a completed native producer implementation.
Approved implementation placement/API: reuse infraternal-plugin-remote::identity_journal behind its existing agent feature, which already enables nix/fs, openssl and uuid. No Cargo dependency or new crate/engine is introduced. Native join_with_journal accepts an optional public transaction directory path; the hidden bootstrap_journal CLI input is declared through existing action definitions. Journal::prepare probes anonymous creation/proc-fd no-clobber linking before invitation redemption. Journal::publish receives complete bytes plus a callback revalidating the previous copied identity before replacement. The isolated recovery-helper invokes this same shipping writer for generated fixture enrollment, rather than imitating anonymous writes in shell. Ordinary non-bootstrap publish/replace behavior stays compatible.
Current native uninstall consumer gate:
The generated matrix now includes the creator anchor and identical valid receipt copies at every actual cut, alongside unexpected-byte recreation. The restart-origin and repeated completed-entrypoint reporting regressions pass. Creation-time fixture adapters publish the chosen receipt/ancestor rows before each scenario and the no-receipt legacy fixture removes both receipt names; original preservation/no-op assertions remain intact.
Actual-function checks also pass for initial and manual-ready prefixes, strict planned-copy identity, early source-v2/copy-v1 refusal with both inode/hash pairs retained, and refusal of a late independent planned-copy destination. Touched-crate Clippy and combined producer/reader integration gates remain pending; no completion claim or push.
manifest-origin-native-full3.log
manifest-origin-functions-green2.log
manifest-copy-clobber-red.log
manifest-copy-clobber-green.log
Creation-receipt binding finding reproduced by actual writer functions: after the intended SHA was recorded, a sync barrier appended a valid f row for independent data to the unbound manifest. The writer captured the changed digest as its inode proof and published the unrelated path:
writer exit=0; unknown path adopted=True, uid1001/device2049/inode3578556/SHA256 2d9c3dfbd45d7cc3f116121ac8a5801b29d108d3176097b8d2d4b96595c2e877 (manifest-pending-binding-red.log).The common binding operation must compare the complete file digest with the immutable pending intended digest BEFORE creating an inode proof. It will cover initial, planned, ready and before-image receipts; original snapshot copies must likewise match the original bound digest before their own copy-inode proof. Unknown bytes remain unchanged and refuse publication. A valid-looking current row cannot override the intended canonical stream.
Native producer implementation is now present in the existing remote plugin's agent feature; no dependency or new engine was added. The internal join_with_journal/hidden bootstrap_journal path opts in, probes anonymous-file/proc-link capability before enrollment redemption, and preserves ordinary writer compatibility. The isolated recovery-helper delegates to the same shipping Journal writer, so subsequent generated syscall coverage can observe the real anonymous writer rather than a shell imitation.
Focused native outcomes: fresh+replacement creator-proof ordering passed1/failed0, 0.14s; an actual seven-byte anonymous write followed by injected WriteZero passed1/failed0 with no named opaque prefix; independent destination collision and injected unsupported capability passed1/failed0, preserving the original identity. Rootless primitive probe also covered targeted writer-child SIGKILL. Current candidate still needs rebuilt helper, generated every-boundary products, native all-target compilation/Clippy, static size and paired latency measurement; these focused results do not establish completion.
The Linux documentation supports the chosen semantics: open(2), O_TMPFILE documents unnamed inode reclamation and proc-fd publication without CAP_DAC_READ_SEARCH; link(2) states that an existing destination is not overwritten. Root saved the primary-source receipt at evidence/linux-open-source.md. O_EXCL is deliberately absent because it would prevent later linking.
Native runtime-plan preparation gap reproduced: interrupt immediately after actual
.uninstall-plan.stagedcreation, before bytes or creator anchor. The next request is blocked by the unbound reserved file. RED:interrupted preparation left unbound reserved bytes,0 passed; 1 failed(runtime-plan-create-red.log).Preparation will reuse the shared anonymous-inode primitive: write and sync through an unnamed descriptor, compute the creator UID/device/inode/digest there, publish its selfnamed creator anchor first, then link the reserved staged name without replacement. Any interrupted short write has no named artifact. Unarmed staged plans may retire only through their original selfnamed creator proof and exact local context; unknown reserved regular files and symlinks remain unchanged/refused. Armed plans retain their existing acknowledgement/consumer contract. Generated native protocol-operation cuts will cover creation, writing, syncing, linking, arming and consumption in addition to the existing cleanup matrix; no exhaustive preparation claim precedes that gate.
Confirmed another entrypoint to the same private-preflight invariant. Actual restart_setup_with on a fresh private JOIN stage, after adding independent nonempty activating bytes, returned refusal only AFTER moving the state tree into the public base. Native regression restart_retention_admits_complete_private_phase_before_moving_state fails
retained before admission: flag(0passed/1failed,0.98s); evidence/private-restart-retain-native-red.log. The regression also covers an independent private state child.The correction places the SAME complete pure phase validator before orphan-proof retirement or retain/inventory/move actions. An already retired/preserved stage uses its immutable original inventory admission rather than trying to mint a new private proof. This is an ordering correction to the existing strict contract, not a per-flag exception or new deletion authority.
Step committed: 6fef7d4f1 (bounded compile-time word lookup). Expanded shared recovery source hit Rust's default constant-evaluation limit. A compile-only first-byte index removes the repeated binary search; no runtime input/decoder change and no limit suppression. The 54,272-byte regression fails compilation with the previous lookup and passes now. Actual expanded shared prelude also compiled (57,626 decoded bytes at probe). Exact commit-tree fmt, 5 storage/source tests, embedded-source invariant, and all-target SSH clippy passed.
Additional source-framing correction proposed before implementation: keep remote source bounded by the kernel's existing one-program limit (131,071 bytes including allowance for the terminating NUL), use that same constant at sender and generated reader, and check complete length before exec. The current unrelated65,536-byte source-frame guard rejects expanded valid setup code; the existing declared-transfer fixture fails immediately at Upload. The wire record shape remains paired generated script-length+source; binary/private invitation still follow only the existing verified transfer protocol. Source heredocs must retain exact bytes rather than pass through the plain-source comment compactor. Malformed, oversized and incomplete frames will be tested before source execution; D255 prompt budgets still require target-machine verification.
Also captured unchanged full argument cap assertion failing on the older compiled expanded candidate: Rootless144,287 bytes exceeds131,072. WIP literal step-body bindings remove an escaping layer; the literal/stdio and one-layer growth unit passes. Actual full cap+framed tests pending current-source compile. These changes address two separate limits; neither r3 test assertion is weakened.
Browser artifact identities (production build c898c1cad, ten target-machine cases already passed):
browser-artifact-identities.txt
Focused round4 private-phase regressions now have direct red/green receipts: commit/commit_after modified activating bytes were accepted before the fix and are now refused before recursive cleanup (1passed/0failed,3.59s); retained-state original-v2/stale-copy-v1 loss reproduced and now refuses before activation (1/0,5.82s); unbound enrollment unknown child was deleted before the fix and is now preserved/refused (1/0,1.25s); restart_setup_with moved private state into public base before admission and now performs the same complete pure preflight before orphan-proof retirement/retain (1/0,3.17s). The restart regression checks both a noncanonical flag and an independent child, not a per-flag exception.
The legacy-present-manifest handoff regression now passes (1/0,7.04s): durable bound|legacy authority choice is fixed in the intent name; unanchored inherited f/d/l rows become r/a/k, while newly prepared unit/owner rows remain creator-bound f. Existing anchored handoff keeps other row bytes/order unchanged. These focused receipts precede the final full generated candidate gates and do not replace them.
Actual ACTIVATE entrypoint gap confirmed: after successful generated JOIN, the fixture inserts an independent same-UID600 child into private staged state before ACTIVATE. Current enroll_and_start succeeds, records the current child in its planned receipt and moves it to public state. Native regression activation_admits_private_workspace_before_minting_a_public_plan fails
activation adopted an independent child into its planned receipt(0passed/1failed,2.04s), evidence/private-activation-capture-native-red.log.The original-public before-image check alone cannot prevent adoption of unrelated private inputs. ACTIVATE must run the same complete pure private-phase validator before its first journal/manager/public mutation or new planned inventory. The planned source factoring shares these readers once with inspection/rollback/commit/restart, rather than introducing another parser or per-child exception. Unknown files remain preserved/refused; the writer cannot observe them into new ownership authority.
Manifest creator-proof and runtime-plan progress, current uncommitted round4 tree (base includes c898c1c and storage 6fef7d4).
The anonymous runtime plan producer now completes and syncs an unnamed file, publishes its selfnamed creator-proof anchor first, then publishes the staged pathname without overwrite. A killed partial write leaves no named opaque prefix. Recovery retires only exact same-context creator-proven unarmed plans or orphan anchors; unknown/recreated reserved paths remain unchanged and cause refusal. The new regression first failed with
interrupted preparation left unbound reserved bytes(0 passed, 1 failed), then passed after the structural change.The prepared manifest binding now additionally requires its digest to equal the complete pending intent recorded before the first write. The actual-function RED appended a syntactically valid row for an independent file between write and binding: old writer exited 0 and adopted it. GREEN exits 71 and preserves the independent file. This does not grant any deletion authority to private prefixes.
Focused gate output, verbatim:
The producer gate rebuilds recovery-helper before the four actual generated setup tests. The native gate includes same-byte independent active-receipt replacement after reload, post-terminal reserved entrypoint reporting twice, every generated cleanup mutation cut, and every generated protocol preparation/arm/cancel/consume operation cut. Protocol coverage is operation-level; partial anonymous writes and unsupported filesystems are additionally covered by identity_journal tests. Existing R3 assertions remain intact.
Whole-tree format check found only the concurrent stdin-test chain in install.rs:2127; its owner is formatting it. Whole-job verify fast, full SSH matrices, static size and performance gates remain with the parent job. This is a progress receipt, not completion or an exhaustive syscall claim.
runtime-plan-create-red.log
runtime-plan-create-green.log
runtime-protocol-boundaries2.log
manifest-final-native.log
manifest-final-producer.log
manifest-final-remote-clippy.log
manifest-pending-binding-red.log
manifest-pending-binding-green.log
#231/#235 source composition finding and bounded continuation choice (D243/D255)
Sharing the complete pure phase reader and publication definitions removes their duplicated bodies, but the actual restarted command still measures 135436 raw / 139633 shell-encoded bytes, exceeding Linux's 131072-byte per-argument bound. The other four generated command classes remain below the bound (largest read-only check: 127715 encoded bytes). Evidence: shared-phase-command-cap2.log.
Continue restart through the existing separately guarded rollback operation, then the existing fresh transfer/setup operation. Disk phases already survive the intervening command gap; upload must reacquire and revalidate the guard. This uses the existing transport and preserves strict per-command bounds instead of adding another quoting layer or a new source-pipe transport. The additional SSH exec occurs after the early terminal prompt; its background cost still requires measurement on the perf VM before completion.
The checked continuation source currently exceeds its old 65536-byte implementation limit. Keep the canonical length-prefixed record and exact dd reader, derive the public-source maximum from the 131071-byte sh argument capacity, preserve literal trailing newlines, and verify the entire declared byte count before any execution. A short frame must never execute its complete-looking prefix. No private input enters argv or source storage.
The stricter private-source admission exposed a legitimate intermediate state: the generated retained-state cp has created an empty/short private destination, but has not completed its write. A focused JOIN cp control leaves the exact empty destination shape after open; rollback currently refuses71 despite the immutable original remaining unchanged. Regression interrupted_retained_copy_prefixes_recover_without_adopting_changed_bytes is RED (0passed/1failed,3.89s); evidence/private-copy-prefix-native-red.log. Its remaining cases cover a seven-byte canonical prefix and independently changed bytes. The syscall oracle will additionally exercise the real cp creation boundary.
The explicit unbound copy phase may compare a private destination prefix with its exact immutable before-image source. The original source must still match its UID/device/inode/hash; no current public scan creates authority. Only protected newly copied files can use this exception, with private current-owner600/700 mode before retained attributes are applied. Completed/bound native outputs, prepared artifacts and original backups retain exact inode/hash checks and never fall back to prefix admission. Unmatched bytes/unknown children/foreign owners remain preserved and refused. The existing canonical-prefix helper will be reused in the find child, without another parser or a new external dependency.
Independent structural review found two remaining cleanup gaps. commit()/commit_after() validate the active stage then recursively retire it without a durable commit-retirement phase (install.rs:1215-1219,1264-1268); interruption after transaction/activating removal cannot resume active admission. A new owned600 stage/unit containing 31 independent bytes passes current fresh_stage_phase (private_phase.sh:184-185), while validate_bound_stage has no unit binding. Isolated receipt: evidence/review-commit-unit/result.txt, exit=0 and ACCEPTED unrelated_unit_bytes=31. Implementing a shared immutable private-retirement inventory and checked individual removal; root retains installation glue. Branch addhost-readd-r4, head recorded by the parent job; no deployment.
Checked-source reader correctness finding: a declared 100-byte source frame ending early with
printf unexpected-executionwas executed successfully by the previous dd reader. Actual Rust regression RED: 0 passed / 1 failed,dd executed a short frame. The continuation now checks canonical bounded length and the complete byte count before exec, preserving all trailing newlines with a sentinel. Both reader modes pass the incomplete-frame and 131071-byte literal-code/private-stdin cases (2 passed / 0 failed); private input includes zero and non-UTF-8 bytes and remains outside source/argv. This is a functional result, not latency evidence.Restart source has been split into two existing guarded operations after the early prompt; each reacquires and revalidates its disk phase. Full generated-command size and transfer regression gates are queued through the shared slot. The extra background exec still needs perf-VM measurement. Independent private-retirement findings and their RED controls are being handled before any completion claim.
checked-source-completeness-red.log
checked-source-reader-green.log
shared-phase-command-cap2.log
rollback-role-native-green.log
Independent review found an early native-producer admission gap: after the journal root binding and before its original/prepared records, an arbitrary owned600 private identity was accepted. The original review receipt is evidence/review-identity-preintent/result.txt. This violates preservation of independently edited or byte-identically recreated files.
The existing producer protocol now gains a prior copied-identity creator record: immediately after copying the unchanged before-image, JOIN records UID/device/inode/SHA before native preparation/redemption. The native producer validates that exact record before creating any journal directory, then persists its original record before nonce/probe/enrollment effects. Replacing a removed host explicitly records the removal decision before unlinking only that bound copy. No secret bytes appear in metadata. The pure reader requires this same creator proof throughout the early root-only journal states; owned mode and pathname alone confer no authority.
Direct current-source replay: eight cases (before/after root binding × unchanged/edit/recreate/unrecorded) passed; unchanged copies returned0, all modified/unrecorded cases returned71 with inode+bytes preserved. Native regression and generated boundary replays remain pending the serialized build slot. This is a focused result, not an exhaustive coverage claim.
Private-retirement structural slice, uncommitted on addhost-readd-r4 at 6fef7d4f1b96ba9ad72c9ba45b64e1c7e379e859: new private_retirement.sh binds a complete stage inventory before individual unlink/rmdir, with outside file identity/hash plus pending-directory identity preserved through partial cleanup. Parent observed the real commit interruption regression fail before integration (private-commit-retirement-red.log). Standalone production-shell checks pass: 10 discovered actual deletion boundaries, 20 resume calls, 7 independent changed/recreated/unknown-object controls; canonical pending prefixes 0,1,31,full resume and unexpected bytes refuse with exit72. No timing claims. Receipts: deletion and preservation, pending prefixes. Source sh -n, targeted rustfmt and git diff --check pass. Seven registered native regressions and full integrated gates remain pending; this is not completion or exhaustive acceptance.
Generated-source follow-up: current focused restart gate reproduces actual E2BIG in three real recovery scenarios as the shared pure reader grows (ssh-source-gate.log). The existing fixed per-argument size regression remains strict. Cleanup has no invitation, upload, or other subsequent stdin bytes. Run that public program through the existing SSH input pipe and a fixed
sh -slauncher (root uses the same fixed noninteractive sudo choice), rather than copying the complete cleanup into argv. This adds no transport engine, dependency, source file or SSH round trip. Enrollment and upload retain their separate private stdin framing. Public cleanup source must remain bounded and never include private values. Actual functional recovery, exact owned-child cancellation and both privilege modes remain gates. D243/D255, #231/#235.Atomic reader step committed 2ac2681df582933f8920888653deee2207da584e. Incomplete public source now refuses before execution; maximum-sized literal source keeps the following private stdin intact. The exact commit-only tree ran fmt, two source-reader tests, two declared-transfer tests, and touched SSH all-target Clippy.
reader-atomic-gate.log
The shared-target isolated gate exposed a Cargo timestamp-cache issue: mounting the older source tree left a newer artifact without the current module export. Current crate roots have been touched without content changes to force compilation; final whole-head verification will use freshly compiled current sources. Future exact-tree gates must refresh source timestamps on both transitions. No integration result from a stale artifact is accepted.
Private commit retirement regression is now GREEN (one actual Installation test, 1 passed/0 failed); broader integration and required final gates remain pending. No push or deployment.
Two current-source actual installer regressions are RED after rebuilding the native helper from the correct source:
commit_preserves_an_independent_obsolete_private_unit: after successful setup, an unrelated owned600 stage/unit is created. Commit succeeds and deletes it (asserted refusal fails). Result:0 passed/1 failed,10.34s; evidence/private-obsolete-unit-native-red2.log.activation_never_promotes_an_independent_copy_prefix: upgrade JOIN completes a copy of original full retained data; a wrapper independently truncates only that private copy to its exact8-byte canonical source prefix. ACTIVATE succeeds (asserted refusal fails), proving rollback's legitimate copy-prefix admission was also being used before publishing replacement custody. Result:0 passed/1 failed,10.17s; evidence/private-copy-prefix-capture-native-red2.log.The first fix rejects obsolete stage unit/launcher/retired-public roles; current public quarantines instead return to their already-bound destination-local publication artifact slot, preserving dev/inode across filesystems. Private fresh-proof has a pure canonical-intent/prefix-or-immutable-peer validator before manager actions. The second needs a durable copy-completion boundary: original-bound canonical prefixes remain recoverable before completion, while activation must use complete original-matching creator-bound copies. No unrelated current bytes become a receipt. Green regressions and generated boundary replays remain pending; no exhaustive claim.
Required-oracle integration finding: the older ownership Python oracle and recovery_support still scrape
const NAME: &str = r#...from install.rs and manually concatenate only the old handoff/guard/lease files. Fixed source is now encoded module composition. Actual single ownership control fails 127 instead of required71 (ownership-oracle-composition-red.log); the recovery reader's old literal marker no longer exists.Keep all existing ownership/recovery assertions. Replace source-text scraping with a debug-only, hidden fixture view of the exact compiled shared definitions and named operations, exported through the existing recovery-helper executable. This adds no dependency or Cargo feature and is absent from release builds. Test runners will feed large public programs through shell stdin; the lease birth corpus alone needs stdin for its records, so it uses only the exact compiled lease definitions. No copied parser or ownership logic is added. D243/D262, #231/#235.
Native bootstrap producer module step committed as afc30c11c. Scope: opt-in anonymous identity writer/probe/creator bindings using existing dependencies; ordinary enrollment writer remains unchanged. The exact committed module tree was reconstructed from git, mounted privately at the normal source path, checked using the ONE shared target, and then the actual crate roots were refreshed to invalidate overlaid artifacts. This is a module gate, not completion of the wider installer or exhaustive syscall product.
Exact committed-tree gate output:
Additional actual source-contract finding: the early native bridge calls sessions::state at session_bridge.rs89 before SESSION output at168. sessions.rs197-201 creates/validates runtime and nested session directories using700, without touching setup created-dirs. Therefore these directories must enter retry custody only as retention anchors, never fabricated creator rows. The actual live_retry regression failed when the immutable preserve proof lacked those anchors (private-copy-completion-native-green.log final test is RED). The narrow fix snapshots existing runtime roots/lifetime as a/r before JOIN, revalidates only runtime anchors present in that original immutable receipt, and carries those same retention rows into preservation. The fixture now creates the directories before JOIN to match the native ordering, while adding its independent sentinel only after failure. No assertions are removed. The original-state v1/v2 comparison stays strict. Actual regression replay is queued.
Structural copy-completion and early-runtime retention steps now pass the focused actual generated installer regressions. No original assertions were removed.
Copy state machine: before completion, only rollback admits canonical prefixes of unchanged original source rows. Full comparison against the immutable pre-copy before-image emits canonical new copied inode/hash rows. Empty700 copied-state-pending-SHA is durable before any receipt write; even that pending digest already fixes the complete copied tree identities. The owned600 copied-state receipt may contain only its canonical prefix until snapshot-copied-state-UID:DEV:INO-SHA binds its completed inode. Native enrollment starts only after that binding. ACTIVATE requires it for inherited state, and all copied paths remain exact except identity.json when the native producer journal supplies its exact replacement creator. This reuses the existing rollback row parser. Unknown children, same-byte inode replacement, partial independent data edits and changed originals refuse before manager/public publication.
Early runtime is retention-only: source session_bridge.rs89 calls native sessions::state before its SESSION168 receipt; sessions.rs197-201 creates/validates root/nested directories without any setup creator rows. Their existing a/r anchors are therefore captured in the original before-JOIN receipt and carried unchanged into preservation. Revalidation compares only originally captured runtime anchors. The live fixture now models that actual pre-JOIN directory ordering; its independent sentinel is still created after failure and every original assertion remains.
Actual current-source gates (private-copy-completion-native-green2.log):
The obsolete private unit regression also changed actualRED→GREEN1/0,2.49s. The native pre-intent copy reader passed8 direct states plus its compiled unit; the committed anonymous producer passes4 native tests. These are focused gates, not a claim that the final exhaustive syscall products or wider fast gate are complete. Performance runs remain confined to the performance VM; the build host only compiled the ignored benchmark.
Native bootstrap identity journal benchmark on infraternal-perf-test (4 CPUs, Linux 6.12.111; exclusive perf lock, CPUWeight=10000). Artifact SHA256 12ae312f4c9376f45ac03fc77d00b0ab10362b35f1fc07bf09732436bdb59dab. 20 alternating ordinary/bootstrap publication pairs per file size, real target filesystem and durability calls.
1024 bytes: ordinary p50/p95 25.719/38.207 ms; bootstrap 148.845/191.269 ms. 8192 bytes: ordinary 23.874/30.034 ms; bootstrap 141.634/173.543 ms. The extra durable creator/phase records cost 117.760–123.126 ms at these medians. They bind identity before named publication and make interrupted writes recoverable; this is component cost, not an end-to-end prompt result. No new crate or feature. End-to-end service/prompt verification remains pending.
Load before 0.00/0.07/0.04; after 0.16/0.10/0.05. One test passed; fixture directory empty afterward and lock released. Raw target-machine receipt.
The refreshed ownership shell oracle passes all 35 existing cases with every assertion retained. Fixture source now comes from the compiled DEBUG-only source view, delivered via otherwise-unused stdin; install-time creation identities are recorded during fixture assembly. Three legacy private-stage refusal cases explicitly retain the original four-field legacy fixture. The minimal-host/recovery cases are still being refreshed. Kernel ownership suite passed all 16 functional cases in private namespaces in required-recovery-gate.log; that combined gate still has earlier fixture failures and is not a completion gate.
Review finding: two fresh-state retirement branches used recursive removal after initial inventory validation. Reproduction added an independent child between validation and deletion: status 0; both independent and original entries were removed. The fix reuses private_retirement_worker for a complete read-only pass and individual identity-checked unlink/rmdir operations. Same reproduction now returns 72 and preserves both entries. Added permanent coverage for a newly added child, edited original file and identical-byte recreation after initial validation; its compiled Rust gate is queued. No native recursive cleanup is introduced.
ownership-oracle-final.log
fresh-state-late-entry-red.log
fresh-state-late-entry-green.log
Recovery oracle migration, current branch
fix/addhost-readd-r4, native HEAD066a7a4e8: the original recovery fixtures predate immutable creation receipts, so their manually assembled fresh base/owner/sessions now require original creation identities. Those rows are captured only during fixture assembly, before the first inspection or cleanup; the minimal-image variant captures after its explicit fixture-only chown and maps paths to/fixture. The partial-stage lock case also records its original stage/kind/lifetime-lock at construction. No cleanup-time scan manufactures creator authority, and all existing exit/status/retention assertions remain unchanged.The compiled shipping source is read through the DEBUG fixture accessor and streamed on stdin, avoiding legacy source-literal extraction and kernel argument limits. The minimal image still uses only the static native runtime helper and its existing shell utilities. Current ordinary eleven plus ignored minimal-image case are queued under the shared build lock; no green claim yet.
Independent pure
private_write.shmodule check:private_write actual module: 15 cases passed; original trailing newlines preserved. This covers empty/selected partial/full canonical content, changed canonical source, unrelated content, appended/changed trailing bytes, symlink/directory rejection, noncanonical mode and extra hardlink rejection, and the explicit copy-role executable mode. It is a functional check, not exhaustive syscall coverage. Exact module-only projection with fmt and SSH all-target Clippy is queued.Correction to the fixture-assembly note: the branch is
addhost-readd-r4(without afix/prefix); native HEAD066a7a4e8is unchanged.Recovery oracle migration is green on the current working source, native HEAD
066a7a4e8, branchaddhost-readd-r4. All original assertions remain unchanged. Original base/owner/sessions identities are captured during assembly, after the explicit minimal-image UID mapping and before inspection/cleanup; the partial-stage lock case additionally records the original stage/kind/lifetime lock. This models production creation receipts without learning authority during cleanup. The compiled source accessor is streamed on stdin rather than extracted from Rust literals or sent through a largesh -cargument.Ordinary tests use the freshly built debug shipping runtime helper. The ignored minimal-image test was run explicitly with the existing static runtime helper and the debug source accessor on the test host, without Python in the image. Functional gate output:
The raw helper build and all case names/statuses are in the attached
recovery-fixture-current.log. This is a focused functional gate, not the final branch gate or a performance measurement. Oracle changes remain uncommitted for the shared fixture-accessor integration slice.Focused recovery fixture lint gate also passed on the current source:
The original eleven ordinary assertions and explicit minimal-image case are green as recorded above. Fixture source is ready for the shared compiled-source accessor/oracle commit; this does not replace the final branch gate.
Independent review found two further gaps, retained as regressions rather than weakening existing assertions.
Fresh state retirement fenced ancestry at state, omitting the base after initial validation. A late base rename plus symlink to the original base let original state disappear through the link. Worker now fences at base for each state path; retained a-directory rows are permitted only as traversal ancestors, never deletion leaves. Added base-symlink and recreated-base cases to the new late-change regression (five variants total); helper-first native gate queued.
Completed native removal used a hand-maintained report list that omitted bin/live. RED: first removal preserved/reported the changed binary, first repeat returned an empty report. GREEN focused regression: all three calls preserve inode/bytes and report it. Completion now derives remaining file/link and changed-directory reports from the original manifest; unchanged directories still permit the established ordinary-data no-op. Existing recreated-reserved-path test extended with live; generated removal matrix assertion strengthened to require a nonempty report for every independent recreation when cleanup succeeds. Exact module projection is queued for the whole native suite.
A separate existing fresh-preserve regression failed inspection71 on its original manifest creator alias. Inspection now uses the original immutable row for new creation artifacts rather than another pathname case. Its existing explicit-start-fresh test is GREEN; all assertions retained.
repeated-live-report-red.log
repeated-live-report-green.log
result.txt
D243 candidate, proposed before any production-tree implementation: the corrected LLD-map build is 21,375,216 stripped x86_64 bytes versus 21,265,648 at the merge base: +109,568 bytes. The identity cold/outline change alone is insufficient. This remains over the 64 KiB ceiling and is not publishable.
A whole remote-package s/z profile would also change frame read/write, UDP routing and transport polling; it is not a management-only package. Instead, measuring a scratch-only internal compilation boundary for the existing identity_journal, uninstall/uninstall_manifest and runtime_lock implementation in infraternal-host-management. Remote would re-export the same modules, types, UNINSTALL and NODE_DESCRIPTOR; shared descriptor fields would have one definition. Agent-disabled builds keep metadata only. No action ID, role dependency, protocol bytes, external library/engine selection or runtime task behavior changes are proposed. Only already-selected dependency versions/features may be used; feature-closure comparison is required. This is an existing-implementation packaging/optimization candidate, not a new filesystem engine.
Measure s/z for that cold implementation while leaving transport and cryptographic dependencies at their current profiles. Generic shipping callbacks must cross a non-generic cold boundary without heap allocation; existing fault controls remain. Before adopting: exact-tree native suites, descriptor/re-export/feature checks, stripped-size A/B, target-machine enrollment/runtime-lock/removal latency at scale, then the service and end-to-end gates. Candidate savings and latency are unknown; no production change has been chosen.
Latest structural WIP size check remains blocked: stripped static x86_64 is 21,375,216 bytes versus the
58760f49dbaseline 21,265,648, delta +109,568 bytes. SHA256 fce4e1ddd40e76e99483a4de9a09015d8cf12227a0ef2efceb8e2969b0afbfd6. This exceeds the 64 KiB band; no cap changed and no publication is ready. Five native identity-journal tests and touched-crate Clippy pass in the same receipt.candidate-cold-journal-size2.log
The isolated compilation-boundary candidate is now queued: matched source, unchanged external package versions/features, functional checks first, then control and narrow package profiles 3/s/z. Adoption depends on actual size and perf-VM behavior; ordinary transport stays at its existing profile. The current iteration run found two new test-code Clippy errors, both corrected; that run is not green.
Independent focused review of the new fresh-state ancestor fence passed 6/6 current-source cases: exact d-base/d-state and retained a-base/new d-state retire successfully; both parent kinds replaced by a symlink or a new directory refuse with exit 72 and preserve the original state/file. This is focused evidence, not the full generated install matrix.
result.json
Native generated removal also exposed an additional completed-retry gap at cut 15: bin/live independently recreated after all receipts and the base had retired produced an empty report. The updated fallback checks the same reserved-path list as terminal completion, and reports an existing unmarked base as left behind. The strengthened generated assertion now requires a nonempty report for every surviving independently recreated candidate; its exact atomic projection is queued for rerun.
Completed native manifest-consumer step in atomic commit 2ba4f42341553d8fcf659e59bd6f480ee6d40a78. The checked snapshot contains only uninstall_manifest.rs and its uninstall.rs consumer/report integration; anonymous runtime-plan production and protocol tests remain a separate change. Original R3 assertions remain intact. No push until the entire brief is green.
manifest-atomic-gate4.log
Exact-projection functional gate: fmt passed; touched-crate all-target Clippy passed. Generated cleanup discovered 44 actual link/unlink boundaries, 24 candidate paths per flow, 1,188 independent recreations and 2,464 resume/repeat calls. Gate output verbatim:
Separate full iteration run is RED (158 SSH install passes, 21 failures plus two now-corrected Clippy errors). Failures include obsolete test interception of recursive teardown, error classification, private-copy/retirement compatibility and one observer deadline. These are being handled; no acceptance claim. Additional same-kind/in-place/foreign-owner native matrix coverage is being added without weakening the existing 1,188-case matrix.
Current iterate compatibility findings (#231/#235), same branch and atomic HEAD as parent job.
The existing followup_fresh_attempt_retains_preexisting_state_data regression fails with exit71 after completing its copied-state inode receipt. The exact generated shell trace identifies the generic fresh-stage scan rejecting inherited state/independent-empty with mode0755; copied retained data must use the same per-entry original/copy proofs as upgrade state. Proposed fix preserves protected private roots and requires the complete typed state validator BEFORE pruning those state roles from the generic private0600/0700 metadata scan. It does not adopt current public paths or unknown descendants.
Two fixture protocols also need to follow the current shipping producer. The invitation test's raw unjournaled state/invitation writer will become a real Journal writer; a separate isolated input receipt records the same delivered bytes after Journal::prepare, outside installation state. The partial-full-upload test currently manually recreates a completed bound payload; that is correctly refused by identity checks. Its setup will instead interrupt the real restaging tee after seven bytes, after the actual new upload intent has been published. All existing bridge, input equality, unknown-byte preservation and nonexecution assertions remain.
Focused verification, including changed-prefix, byte-identical recreation, source-lineage and unknown-child refusal regressions, is queued behind the shared build lock. No performance numbers or completion claim yet.
Fixture isolation finding during the 21-failure iteration triage: diagnostic/ReceiptBudget wrappers prepend commands before the public-cleanup launcher marker. Local::public_cleanup_input used starts_with, so those wrappers bypassed the private path rewrite for stdin-fed source; that source could address the caller HOME. The outer-only trace does not establish whether earlier guard recovery had effects; no owner fixture was inspected or changed to investigate.
Fix in WIP tests/install.rs: recognise the exact marker line anywhere after a diagnostic prefix, retain normal public-source mapping, centralise fixture child launch with inherited HOME removed (legitimate references already become explicit fixture paths), and put ReceiptBudget's printf interception inside the actual stdin-fed child. New regression verifies wrapped child source maps to its private fixture and HOME is absent in ordinary/stream children. Full fixture replay is queued. No production permission check was relaxed.
Independent argv gate is now green without changing its 131072 assertion: fixed JOIN prefix uses the existing source compactor before runtime URL quoting, and eleven identical private-directory predicates reuse bc_directory with no inode-authority argument. Maximum encoded argument across nine commands, both modes and both server lengths:130063 bytes.
argv RED argv GREEN
Additive retained-copy recovery clarification (#231/#235): the existing disappearing-source regression models original state children disappearing after a complete copy. Direct shipping functions reproduce exit71 from the later full before-image digest comparison, although the immutable copied-tree receipt and copied bytes remain intact. A vanished original does not authorize deletion of its retained copy.
The reader will allow only absent ORIGINAL STATE DESCENDANT rows after validating the complete creator-bound private copy, including every current inode/hash and the native identity producer. Still-present originals must retain their original identities/bytes, every non-state artifact remains exact, and extra current rows refuse. Pending/unbound copies do not qualify. The existing before-image and copied-tree receipt remain immutable. The original v1/v2 lineage and independently recreated copy regressions will be rerun unchanged.
Completed shared private-prefix reader step, head
56d8974fe36ed00b3648d9b6d21de993074610e7. Atomic commit adds the pure reader and permanent regressions; integration into the disk phases remains separate. Exact isolated projection gate:sh -n, 15 direct shell cases, formatting, SSH all-target Clippy, and:Every byte prefix (including original trailing newlines) is admitted only against its previously recorded complete digest and private role. Extra links, replaced kinds, permissions and changed source digests are refused. Gate transcript. Whole branch is still under construction; no final gate or push.
Additional exact-kind removal matrix RED: 56 passed, 1 failed, 1 ignored (new strict matrix). At actual mutation cut 2, unit and wanted were removed; helper returned Interrupted before launcher removal. Test then moved original .local subtree (including launcher, base, active manifest and creator anchor) to an independently held sibling and recreated .local as an empty directory with the original kind. Both original subtree and replacement were preserved, but repeated cleanup returned Ok(empty report). New test: crates/plugins/remote/src/uninstall_ownership_tests.rs:360. Source path: cleanup entrypoint order uninstall.rs:39 and :828; removed() sees all original reserved paths/base absent and returns empty at :915. This is a restart observability limitation: original durable receipts moved with the ancestor, so no current-path reconstruction may infer original identities. Root is assessing conservative reporting; no deletion failure observed, no assertion weakened. Raw receipt: /home/kayg/.cache/codex-scratch/addhost-readd-r4/evidence/native-ownership-first-red.log. Existing independent-recreation matrix remains green: 44 actual cuts, 1188 recreation cases, 2464 resume/repeat calls.
Contract clarification for #235, proposed before updating the older command-count test: restaging after the early prompt now uses exactly two SSH operations, (1) public cleanup streamed through stdin, then (2) one compound cache/transfer/enrollment command. Each reacquires and validates the same durable phase. The old concatenated command exceeds the kernel single-argument limit once the shared ownership state machine is included; treating its truncated or rejected source as recoverable would be incorrect. The early prompt is already live before either operation.
The existing test
session_restaging_uses_one_compound_commandwill become an ordered boundary assertion: exactly cleanup then exactly one compound transfer, preserving the full-image equality and commit assertions. No separate cache, upload or enrollment operations are added. Kernel argument coverage stays fixed at 131072 bytes; latest focused gate maximum is 130913. The extra SSH round trip must be measured on the perf VM with the required early-prompt timeline before final acceptance. No budget is raised and no R3 test changes.Structural completion correction proposed before code changes (#231/#235): the new every-cut exact-kind/byte-edit matrix preserved all changed objects but exposed244 silent reports (1192 actual changed cases across44 current removal mutations). Moving a created ancestor can relocate the only manifest; after final authority deletion, a new external directory is also indistinguishable from normal inherited parents. Reporting current pathnames as ownership would be wrong. Controls prove successful removal with7 retained-a external parents must still repeat as a no-op.
Retain the existing original authenticated terminal receipt on EVERY completed removal, including an otherwise empty installation. Its marked base and exact control ancestor chain stay solely to make completion durable; operational units, launchers, slots and proven runtime files still retire. The existing terminal reader validates its original uid/device/inode/hash/link count. Repeated calls use that positive completion proof and report changed recorded candidates. If no original manifest/terminal is reachable and the expected base is absent, report the unverified expected base instead of silently claiming success. No deletion authority is inferred from absence or a new directory. Existing removed-install re-add already consumes the original terminal through creator proof; that path must remain green.
This is a state-machine choice, not a pathname exception. Update only physical control-retirement expectations to require the original durable terminal and its unchanged control parents; keep every identity, changed-object preservation, original R3 and repeated-report assertion. Add first/repeated no-op controls for both created-d and retained-a external parents. Independent structural review agrees this resolves the missing disk evidence without outside authority. Raw RED matrix will be attached with the fix. Current whole branch remains unfinished and unpublished.
Extended exact-kind/same-inode native removal matrix completed strict RED: 44 actual syscall cuts, 24 candidate paths, 2112 attempted cases, 1192 applied changes (1056 exact-kind recreations, 136 regular same-inode edits); 535 absent-edit and 385 nonregular skips. All preservation assertions passed across 2384 repeated calls; 1638 explicit reports, 502 refusals, 244 silent reports fail the strict zero-silence assertion. Changed external created-d ancestors become undiscoverable once their subtree contains all original receipt paths, or after final authority retirement. No current-path recapture is permitted. Baseline controls: original created-d fixture removes all 7 external parents, first/repeat reports0; retained-a fixture keeps all 7 unchanged external parents with base absent, first/repeat reports0. This distinguishes retention from created paths; .local in the RED is created-d. Parent proposed permanent original terminal receipt plus conservative no-authority reporting separately before production edits. New identity/preservation assertions remain strong. Literal UID1002 writer smoke admitted natural f/d/l recreation and regular same-inode edit, UID1001 test caps0x3 and writer caps0x2; root/artifact mounts readonly, network only lo, /work tmpfs, all owned PIDs/container reaped and removed. Full foreign matrix remains pending. Reproducible scratch harness attached; no production edits in this test slice.
native-ownership-full-red.log
literal-foreign-writer-smoke3.log
ownership-foreign_writer.py.txt
ownership-run_container.py.txt
ownership-stage_artifact.py.txt
ownership-native-gate.sh.txt
Completed native helper-plan publication step, head
fe5f7e06fdfde5e02041576d25386d87ed200753. Named partial plans are eliminated: anonymous write+fsync → creator anchor+directory sync → staged link → armed link → consumption. Same-context unarmed retry uses the original creator binding. Cancellation preserves independently replaced names.Exact isolated commit gate passed fmt, remote all-target Clippy and:
Raw gate. The separately proposed permanent completion-terminal correction and expanded ordinary/foreign ownership matrices are still WIP; this is not the final branch gate. No push/deploy.
Literal separate-UID removal matrix completed against immutable pre-fix native ELF: strict RED on 300 silent reports, with every preservation assertion passing. 44 actual cuts, 24 paths, 3168 attempts; 1713 applied changes = 1056 natural UID1002 same-kind exact-byte/target recreations + 136 UID1002-writer edits preserving original UID1001 inode + 521 original-inode owner changes to UID1002. Explicit skips: absent edit535, absent owner535, nonregular edit385. Repeated calls3426 = explicit reports1970 + refusals1156 + silent reports300. Separate writer UID1002 has only CAP_DAC_OVERRIDE (all cap sets0x2); test UID1001 checks all cap sets0x3 (CHOWN+DAC_OVERRIDE). Kernel receipts record readonly root and artifact mounts, only lo network interface, /work tmpfs and namespace IDs. Original staged ELF SHA256 49d1ee9049a769e8f80df8f6b6c2172f68ec38e3b3a06964a66f4c180903750e remained unchanged. Owned container bda6219bbe2fca04f8c14701d0a9fcf97bddcf045c5149df3f65cbbb20abaa66 removed, inspect exit1; host client3933072 gone; namespace testPID9 and writerPID7 both reaped/gone (test101, writer0). Current production terminal correction and stronger completion tests are queued for full native gate, then identical foreign replay; no current-green claim.
native-ownership-foreign-red.log
ownership-foreign_writer.py.txt
Focused compatibility verification after fe5f7e06f plus the integrated WIP (no new integration commit):
All five iterate failures assigned to this lane now pass unchanged assertions: fresh preexisting-state retention, disappearing original-copy source, committed independent operator notes, partial full-upload bridge reuse, and buffered-head invitation delivery. The fresh-mode scan now follows complete typed state proof validation; inherited modes are not mistaken for private writer modes. Missing original state descendants qualify only after the entire bound copied tree revalidates. Still-present originals and all non-state artifacts stay exact.
The partial-upload fixture now interrupts the actual restaging writer after seven bytes and its prior upload intent; it no longer fabricates recreation of a completed bound payload. The invitation fixture uses the shipping Journal producer and records delivered synthetic input outside installation state after capability probing. Its buffered head implementation still models read-through buffering for -c and delegates unrelated metadata options. All original bridge/input/nonexecution assertions remain.
Strict controls also pass: modified copied prefix, byte-identical copied recreation, newer original-v2 lineage, unknown enrollment children, empty/partial/mismatched interrupted copy variants, and the new missing-original-plus-independent-child preservation case (activation and rollback twice refuse, both trees retained). Transaction-content mismatch now keeps the existing Upload72 refusal after ownership/type/mode checks; unreadable metadata and kind mismatches retain71.
Verbatim focused gate results:
Maximum generated argument130913bytes, under the unchanged131072 ceiling (Rootless maximum130799). After fixing only four test octal-separator lints in the independent observer, the full SSH all-target check reports:
These are functional gate receipts, not host performance measurements. The parent lane still owns the complete final verify-fast gate, release-size blocker, real service/VM evidence and integration commits. The matched management-only compilation candidate remains scratch-only pending size and perf-VM measurements; no profile adoption has been made.
Permanent-terminal follow-up actual-cut regression RED before ordering fix: every_actual_cut_finishes_retiring_noncontrol_created_parents. Cut14 resumes active+creator-anchor+original-terminal and incorrectly reports independent base contents; cut15 resumes creator-anchor+original-terminal and does the same. All peer identities are original; recognition must require exact terminal receipt, never prefix/path alone. Cut16 resumes after terminal becomes sole authority; cleanup returns completed no-op while original created .config parent still exists. Assertion at crates/plugins/remote/src/uninstall_ownership_tests.rs:472 fails; unchanged base+terminal identities passed before it. Source cause: remove_internal called finish_completion before parent_order, while subsequent completed() paths intentionally never delete. Root is moving original non-control created parent retirement before terminal publication; matching original control ancestors remain, replacements never skip. Both failures have actual RED receipts; no assertion weakened.
native-parent-retirement-red.log
native-parent-retirement-cut-red.log
Completed pure removed-install custody reader, head
373925ac5efff54cd1b01a7303bd068c6c5a2f9c. Integration remains separate. The reader accepts only the original private base and terminal uid/device/inode/hash with one link; it never derives deletion authority from retained contents. It refuses independently present activation destinations before preparing another owner.Exact isolated module gate: shell syntax, fmt, all-target SSH Clippy;13 real-shell controls (original custody, five identity/content/link changes, seven independent activation destinations), all preserving data/inodes. Source SHA256
30233fdeb0d7bdf931e23d7881a44df79c1e029eb1efa048fe0e08e9eb9ae76c.Gate, exact direct control runner. Whole branch still unfinished; no final gate/push.
Compatibility follow-up:14 distinct focused regressions now replay green (11 in first run plus3 corrected/exact-filter replays); touched SSH all-target Clippy and fmt pass. Coverage includes public-cleanup fixture HOME isolation, incomplete creator transaction, resumed acquisition retirement, stale socket, earlier cache refresh, exact cleanup→compound-transfer ordering, receipt budget, activation inspection, partial private retirement, late ready/owner files and stopped-unit restoration. The first run's2 red fixtures and its accidentally empty inspection filter remain visible in the raw log; the replay fixes both and uses the exact inspection name.
Fixture changes follow actual current producer phases: acquisition transaction remains in the protected prepared capsule; the sealed private retirement proof survives final stage unlink; stopped units use destination-local quarantine. Runtime directory identities are recorded before fresh-proof sealing, rather than inventing later ownership. Partial retirement stops after the real planned-manifest unlink, then preserves/reports a same-byte independently recreated still-bound transaction file. Original R3 assertions were not changed.
The fixture adapter now detects public-source markers through diagnostic prefixes and drops inherited HOME for every owned child; the permanent regression covers run and stream. See the earlier fixture-isolation finding for why this matters.
First diagnostic run, 3 corrected/exact replays, HOME guard regression. Full iterate/fast gates remain outstanding; these are functional test receipts, not performance acceptance numbers.
Native ownership test slice GREEN after permanent original terminal correction (working-tree tests; parent owns atomic integration and final branch gate). Fmt and all-target remote Clippy pass. Focused unmodified resume/repeat now completes all 21 actual cuts, retires every original non-control created parent and retains original terminal/base identities. Controls: original created-d parents retain only .local and .local/share (2/7); inherited-a parents retain all7 exact original identities; first/repeated reports0. Full uninstall gate: 59 passed; 0 failed; 1 ignored (separately required foreign slice). Ordinary strict matrix:42 actual cuts,2016 attempts,1164 changes (1008 same-kind exact-byte/target recreations +156 original-inode regular edits),492 absent-edit and360 nonregular skips;2328 repeats=1880 reports+448 refusals, silent0. Original matrix remains unchanged except terminal transition count:42 actualcuts,1134 independent recreations,2352 resume/repeatcalls. Runtime protocol matrix also passes:48 actual operations,336 independent recreations,768 resume/repeatcalls.
Literal separate-user matrix GREEN on exact immutably staged ELF:42 cuts,3024 attempts,1680 changes (1008 natural UID1002 same-kind recreations +156 UID1002-writer original-inode edits +516 original-inode owner changes to UID1002); absent edit492/owner492,nonregular360.3360 repeats=2104 reports+1256 refusals,silent0. NativePID9 UID1001 all capability sets0x3 (CHOWN,DAC_OVERRIDE); separate writerPID7 UID1002 all sets0x2 (DAC_OVERRIDE only). Readonly root/artifact mounts, network only lo, /work tmpfs and namespace IDs recorded. Container9f394e43dc5a3245a12dddac3118b50bd3da9c09a0c514d8284dc27068b787c9 removed/inspect1; hostclient4047639 gone, both namespacechildren reaped/gone, all exits0. Original source ELF SHA3fe77e352a2f25f3c3f6376d9af76133e50e117d934b8aae28cdf1df4de8cd7c unchanged during staging; staged ELF SHAa57eb3613001afce6dd3b09ce31378880d6afd3669f25bb6a2b9a5245904e787 unchanged across replay.
Reproduction after rebuilding via attached native-gate.sh: flock JOB/build.lock build-slot python3 JOB/ownership-harness/run_container.py --artifact JOB/ownership-artifacts --executable ownership-tests. Exact harness/loader bundler and receipts attached. No whole-branch acceptance claim; full scripts/verify fast and shell/install/Replace matrices remain parent work.
native-ownership-gate.log
native-ownership-artifact.json.txt
ownership-foreign_writer.py.txt
ownership-run_container.py.txt
ownership-stage_artifact.py.txt
ownership-stage-native.py.txt
ownership-native-gate.sh.txt
native-ownership-foreign-green.log
Completed durable removal-terminal correction, head
f12a11e6469b6401b9f0fad0d9f646d42b63e59b. Original completion evidence now persists even when all operational files retired. Non-control created parents retire before sole-terminal publication; the exact original three-link transition resumes without false leftovers. An absent base without original authority reports uncertainty and grants no deletion authority. The contract choice was posted before code changes.Exact isolated commit gate passes fmt, touched remote all-target Clippy and:
Exact commit gate. The required separate-user run also passed1680 changes/3360 repeats with zero silent reports; its literal UID/capability/isolation/cleanup receipts are in the independent review comment. Full install/Replace Cartesian proof, size and final gate still pending; no push/deploy.
#231/#235 observer diagnosis and measured scheduler equivalence (incomplete matrix)
Working branch
addhost-readd-r4, current HEADf12a11e6469b6401b9f0fad0d9f646d42b63e59b. No commits from this test slice.The exact empty-lease functional case reproduced Install97 under full ptrace. Retained metadata proves the absolute 55 s observer guard fired during active generic commit cleanup: 212,283 entry stops, 1,542 owned processes, last cut 239. All four recorded leases were already gone before the successful exact-stage flock. This is not evidence of a missed lease detach. The 55 s guard and shipping lease deadlines remain unchanged.
A single immutable fresh/separate Rootless workload pair ran on
perf-test-69-63under/var/lock/perf-bench.lockand a CPUWeight 10000 scope. Kernel/load, executable and loader SHA256/size and every command's observer statistics are in the summary. Full tracing took 76.028813293 s across the complete workload; filtered tracing took 14.160459156 s. Both executed 3,324 owned processes. Entry stops were 342,531 versus 9,172.The updated independent comparator was rerun on that VM and passed all 266 ordered actual mutation/durability cuts, 121 path roles, 84 inode relations, and 26 independently statted final mutable-namespace entries. It reconstructs 18 dynamic receipts, one same-inode canonical prefix, one canonical six-inode base binding, and three exact public links.
unsupported_content_ignored=false. Original trace-shape and unsupported-schema REDs remain retained locally; positive, edited and forged parser controls cover the new comparisons. These retrospective comparison schemas never authorize adoption at an earlier interruption cut.The one discovered branch has 121 candidate paths and 73 durability cuts. Its requested preservation product is 266 × 121 × 3 = 96,558 cases, plus 532 pristine recovery-route cases. This product has NOT been executed. Other seven branches, foreign-UID products, complete syscall interruption products and batch throughput projections remain incomplete. Filtered tracing is being selected only for the now-validated fresh/separate empty-lease functional case; remaining default/matrix observers stay full.
Evidence:
observer-vm-pair2-validated-summary.json
observer-pair2-validated-vm.log
observer-vm-full-actual-mutations.log
observer-vm-seccomp-actual-mutations.log
P1 structural creator-origin gap confirmed in shipping shell functions. Control with an independent public base/state directory+file and unmodified original created-dirs refuses72 and preserves both. Append valid d/f rows for those unrelated objects to the same original created-dirs inode: validate_private_stage accepts, publish_fresh_proof promotes the current rows into immutable cleanup authority, and explicit fresh retirement exits0 deleting independent file and base. Replayed with canonical original base-created-SHA marker binding all 6 initial inodes exactly as base_creation.sh:105; only regular content changed, not journal inode. Sources: private_phase.sh:268-270 checks syntax/uid/mode only, fresh_proof_expected:199 prioritizes every current created-dirs row; base-created marker binds rows inode but not later content. Original fixture receipts in evidence/review-creator-rows-a4fd099f27564457809078e842e2b87d/result.json. Permanent strict regression now added near private preflight; actual fixture gate is queued. Proposed structural fix: immutable creator snapshot heads with original inode/hash bindings, predecessor-bound pending successor digest before writes, canonical private-source role recipes, all publications after stable successor proof; created-dirs becomes verified derived cache, never independent authority. No production edits in review slice.
review-creator-rows.py.txt
review-creator-rows-result.json.txt
The scoped fresh/separate accelerated empty-lease functional gate is green. The 55 s observer guard remains unchanged, as do all live-lock, malformed-record and repeated-rollback assertions. Full and filtered observer self-checks each passed 33/33; install-test Clippy with
-D warningspassed. The actual native helper was copied to an immutable file before the unit ran. Parser controls passed 9 tests with the foreign-UID container test explicitly ignored here.Verbatim focused test result (raw functional gate output, not a performance measurement):
The complete product remains incomplete. Final immutable inventory and additional producer-phase work wait for the replacement creator-ledger provenance; the old six-inode base aggregate comparison grants no authority over mutable ledger bytes. All other default/matrix observers remain full.
activation-observer-functional-gate.log
observer-contract-equivalence-controls.log
Provenance correction for the scratch-only D243 management compilation candidate:
The first moved-crate static build failed with the actual compiler diagnostic:
The source exists in the private snapshot mounted at the normal checkout path. The inherited RUSTC_WRAPPER is the long-lived shared sccache process, whose server does not inherit that private mount namespace. A new crate makes the mismatched source view visible; older paths could instead refer to the ordinary checkout. This is a build-provenance finding, not a shipping recovery defect.
The earlier control artifact (21,375,152 bytes, SHA256 489abbe5c96ff8db8f3caf492ae6c538a8fb2620a6123ca10befc30303c7459c) and earlier functional receipts are retained as provisional diagnostics only. They establish no accepted size/performance comparison. No candidate profile has been adopted, and no host benchmark was executed.
Every candidate snapshot gate now unsets RUSTC_WRAPPER and RUSTC_WORKSPACE_WRAPPER inside its owned mount namespace. This does not stop or change the shared compiler-cache daemon. The functional gate and all four matched static builds are being replayed with the same direct compiler setup, ordinary UID, one shared target, and independent serialized build locks. The parent lane is auditing earlier exact projection gates for the same provenance concern. Later acceptance will use only the corrected receipts.
management-3-size-before-cache-isolation.log
#231/#235 creator-ledger implementation design before code
Taking over the shared creator-ledger module on
addhost-readd-r4atf12a11e6469b6401b9f0fad0d9f646d42b63e59b. Boundary harness work is frozen. Root owns existing production callsites; this slice owns the new shell module and direct focused tests. No new dependency or engine is selected.The original seed remains canonical row-only bytes, preserving the base-creation file identity contract. An immutable original seed anchor and every predecessor anchor remain until private retirement. Each successor contains one header with a typed role and exact predecessor UID/device/inode/SHA binding, followed by the complete canonical accumulated row body. Readers validate the current fixed hardlink view, original anchored head, all predecessor identities/hashes and a bounded chain; they strip the successor header when emitting rows. They never complete files or repair links. Limits are 64 predecessor hops and 1 MiB per complete record.
The writer records ROLE, predecessor binding and the complete independently emitted successor SHA in an owned empty pending directory before writing successor bytes. It initializes one typed predecessor marker, then atomically renames the pending directory to a shorter name that binds its UID/device/inode and successor SHA. Only this bound protected phase admits a canonical prefix. Complete successor inode/hash is anchored before a temporary hardlink view is atomically renamed over created-dirs. Stable head links are exactly two, an explicit prepared publication peer permits exactly three, and retained predecessors have exactly one. Unknown entries, changed bytes or identities, unexpected links and mismatched roles refuse.
APIs: creation_rows_seed EMITTER [args...]; creation_rows_origin sets the validated original seed path; creation_rows_validate and creation_rows_emit are pure readers; creation_rows_update ROLE SOURCE DEST checks exact appended rows from the integration-owned creation_rows_recipe callback. Recovery may call that callback with ROLE only to derive the still-private source and fixed destination. Updates finish pending cleanup before returning; public publication follows. Existing anchored rows make exact repeats idempotent, while reused roles with different rows refuse. Reader and writer blocks are partitioned to keep inspection source small. Pending names are split across directory and typed marker names so 20-digit UID/device/inode fields remain below 255 bytes.
Direct tests will enumerate actual writer mutation and durability boundaries, resume twice, and preserve changed records/unknown pending children. Tests use isolated owned fixtures. Any compiled isolated snapshot gate clears RUSTC_WRAPPER so an external compiler daemon cannot resolve the wrong source mount.
Independent review follow-up, additional P1 phase gap: the private retirement loader verifies its outside proof, but its later worker reads current proof rows without checking the original digest again. A real-function control adds an unrecorded private file between the read-only and deleting find passes: unchanged proof refuses72/preserves it; changing the same original proof inode to include that file makes the old worker finish0 and remove it. The final proof unlink also lacked a new original-identity check. This affects the shared state-retirement worker too.
Original control/result JSON, exact replay source. Permanent regression
private_retirement_round4::retirement_proof_is_rechecked_after_the_initial_inventorycovers current-byte edit, identical-byte replacement and extra alias, twice each, preserving all original stage files and receipts.Correction is WIP: share complete-bound-file predicates with manifest readers, capture the validated original binding once, pass it and the exact expected link count into every worker, verify after each row read and before unlink, and verify final proof retirement. Fresh-proof row consumers follow the same original-binding rule. Focused gate is queued/running; no GREEN claim yet. The separate creator-ledger origin problem is being implemented as immutable anchored snapshots, not a syntax-only row check.
Corrected scratch-candidate functional replay is GREEN. The receipt begins with
NAMESPACE ordinary_uid=1001andCOMPILER_NAMESPACE local_source_wrapper=disabled. The gate uses an isolated network namespace with private loopback and serial fixtures; the legacy short runtime fixture pathname is bound to a directory under this job, so its real socket checks do not write elsewhere.The management suite passed 80 tests with 5 expected ignores (the ignores include VM-only probes), remote transport passed 67 with 13 expected ignores, and the CLI enrollment filter ran 15 with 1 expected ignore. Formatting, all four remote feature-route checks, and all-target Clippy with
-D warningsfor management, remote, and CLI also passed. No assertions changed. A prior parallel host-network run had one legacy listener/drop refusal; that unchanged test passed five isolated replays and the complete isolated serial gate. Both earlier receipts are retained.This verifies only the frozen candidate implementation before the later creator-ledger proof-reader changes. The four matched direct-compiler static builds are still pending, no profile is selected, no benchmark has run on the build host, and no current size/performance acceptance is claimed. Final adoption requires an identical current-ledger refresh, release artifacts, and locked perf-VM evidence.
management-functional.log
Proof-reader correction in progress at HEAD f12a11e6469b6401b9f0fad0d9f646d42b63e59b (uncommitted integration). Current direct-compiler checks: 9 private-retirement cases pass, including the new same-inode byte edit / same-byte inode replacement / extra-hardlink variants; late state-retirement variants and explicit start-fresh pass. Restart slice is 7/8: retained-base Join refuses exit 71, under diagnosis. Existing argv gate found maximum 131835 bytes against unchanged 131072 ceiling. Shortened only private shell retirement symbols (exact map preserved outside checkout); fixed on-disk names, schema and test names unchanged. No completion claim; final gate, service cases, full generated boundary proof and size acceptance remain pending. Evidence: $HOME/.cache/codex-scratch/addhost-readd-r4/evidence/proof-reader-current-gate.log.
#231/#235 contract proposal: prepublication custody for missing installation parents.
Replace stage_mkdir public mkdir and volatile rows with the existing base-creation capsule. The highest missing fixed base prefix and every descendant to the base are prepared privately on the destination filesystem, their original directory bindings recorded before a single public rename. The original creator seed includes those parent rows before publication and remains the six-inode base-created marker input through creation_rows_origin. Capsule discovery scans deterministic names beside every fixed base prefix. The capsule binding covers the original existing ancestor and prepared chain; changed or unknown objects remain and refuse.
Lock transition holds the original nearest-existing safe ancestor lock and the prepared future immediate-parent inode lock before publication, then retains the final parent lock for ordinary setup. This fences entrants that begin before or after the parent chain becomes public. Root will integrate the STAGE_TRANSACTION call-site change; this lane owns base_creation.sh and new focused tests only. No dependency or foundational engine change. Existing first-base and retained-base interruption assertions remain.
#231/#235 additive proposal: upgrade transaction genesis uses the same base-creation capsule.
Add prepare_upgrade_stage: retain and bind the existing base and unchanged original owner; prepare only the new transaction/kind=upgrade and zero-row creator seed/origin privately, then publish only .bootstrap-lock by atomic rename. The original six-identity base-created recipe/order remains base, owner, stage, transaction, kind, original seed. Empty upgrade seed grants no public cleanup authority. Typed active/retired capsule phases cover the pre-anchor, publication and retirement cuts; new upgrade staging no longer writes a pathname-only acquiring marker or naked public stage mkdir. Existing legacy readers stay failclosed. Root integrates the simple call sequence; this module change does not alter enrollment or public artifact ownership.
Immutable creator ledger direct slice: the frozen first writer passed recovery and repeated update after all 24 discovered successful mutation/durability syscall cuts. The original seed inode is retained and successor heads have exact immutable predecessor/role bindings. Direct focused checks also cover changed bytes, same-byte fixed-view recreation, extra links, pending unknown children, and a read/capture interposition that must emit zero authority.
This is not complete install or full path/UID Cartesian coverage. The final ledger gate is being expanded with per-cut record edits/recreation; foreign-UID variants are opt-in only inside a newly owned UID-0 container. Production callsite integration belongs to the root worker. Host elapsed in the attached raw functional log is diagnostic only, not performance acceptance evidence.
creator-ledger-cuts1.log
creator-ledger-v1-receipt.json
#231/#235 finding and current module progress (not a completion claim).
STAGE_TRANSACTION's stage_mkdir created missing public parents before a private transaction existed and kept their rows only in created_dirs. Fresh prepare_base_creation already created .bootstrap-lock, so the subsequent existing-stage branch skipped the only created_dirs append. Missing parents therefore had neither prepublication custody nor durable creation rows. Upgrade stage genesis likewise wrote a pathname-only acquiring marker and naked public mkdir before its own inode proof.
base_creation.sh now prepares missing ancestors + base privately for one top-root rename, seeds original parent/base/owner rows before publication, and has explicit upgrade staging-only genesis with an immutable empty original seed. It retains the six-identity base-created recipe/order, and uses a separate self-bound capsule completion digest to prevent recreated capsule cleanup. Direct real-shell controls: fresh seed2 rows, missing-two-parent seed5 rows, upgrade seed0 rows; each recover/adopt twice passes and upgrade retains an unrelated existing base file. New generated mutation tests and independent recreated-parent/capsule variants are running through the shared build-slot wrapper; full acceptance remains pending.
Static source cost measured from current source: compact BC11728 ->24112 bytes before the root-path normalization adjustment (+12384). This is not a performance measurement or accepted size justification. The scratch cleanup partition moves5202 compact bytes out of ordinary setup while preserving all inspection/cleanup dependencies; final actual argv and binary gates remain required.
Completed shared bound-reader step: 445f05cf6. Original expected inode/digest and explicit peers are checked; bounded captured bytes are independently hashed before interpretation, with trailing newlines retained. Seven permanent real-shell tests and15 direct prefix cases pass; fmt and all-target SSH Clippy pass in the exact isolated snapshot with compiler wrappers disabled. First attempt exposed two test-only empty-assert Clippy lints; fixed without changing behavior, final gate green.
Provenance audit: all1827/1828/1829/1830 snapshot files and modes match their respective commit trees exactly. Replayed56d8974fe (3tests+15direct), fe5f7e06f (56uninstall),373925ac5 (49SSH/2expectedignores+13direct),f12a11e64 (59uninstall/1requiredforeignsliceignore) with compiler wrappers disabled inside source namespace; all their fmt/touched Clippy gates pass. Protocol replay observed44actual cuts/1188recreations/2464resume calls; completion replay42cuts/1134recreations/2352resume calls. The aggregate audit log ends with the two subsequently corrected NEW helper test lints, so its overall status was red; the four prior snapshot gates themselves were green.
atomic-provenance-audit.log
atomic-provenance-exact-trees.json
bound-reader-atomic-gate.log
Integration, full generated route matrix, final size and full fast gate remain pending. No push or deployment.
#231/#235 explicit custody scope for the new base-capsule module.
Capsule roots are self-bound by UID/device/inode and their stable/retired completion digests. Public parent/base/owner and immutable original seed identities are recorded before publication and rechecked; original six-inode base-created recipe/order remains unchanged.
Empty metadata directories such as path-N-ARTIFACTTUPLE and original role-ARTIFACTTUPLE encode the artifact binding, but do not individually encode their own metadata-directory inode. Their admission uses the original protected700 capsule, exact typed name, execution UID ownership, and emptiness. A canonical same-UID empty metadata replacement during an explicitly unbound private phase can therefore still match that phase. This is not an exhaustive claim of original-inode preservation for that role. Stable/retired authority never falls back to an unbound file prefix; full private inventory subsequently binds those metadata objects.
Required independent-UID variant coverage remains pending with the full generated matrix: replace/chown every observed metadata directory under literal other UID and verify preservation plus refusal on every route. These variants must be reported separately from allowed same-UID unbound canonical preparation. No additional recursive proof format was introduced in response to this interpretation.
Proposed additive source representation for #231 (D243), before implementation:
The new creator ledger and parent capsule make the shared public setup source about110KiB; binding it literally alongside the existing step bodies can exceed Linux's unchanged131072-byte individual argument limit. The decoded program bound remains131071 bytes. Raising either bound, dropping source, changing runtime values, and adding a compressor/library are rejected.
For public source bindings at least32KiB, reuse the existing shell_source word dictionary as a lossless printable wire form: dictionary words0..126 become lowercase
~00..~7e, literal tilde becomes~ff, and every other UTF-8 byte stays literal. The existing in-binary Program storage codec remains byte-identical. Smaller bindings keep the current literal heredoc. Paths, URL fragments, punctuation, and all trailing newlines must remain exact; private enrollment/stdin bytes never enter this representation.A self-contained POSIX awk decoder uses the same quoted word bytes under LC_ALL=C. It buffers and validates the entire blob before emitting any source: strict lowercase token syntax, only known words or~ff, canonical greedy representation, no NUL, exact declared decoded byte count, and at most131071 decoded bytes. A quoted heredoc supplies decoder input, leaving the original private stdin untouched. Successful output includes the existing final-dot sentinel so command substitution preserves every trailing newline. Decode failure makes the assignment fail with71 before eval/exec, without emitting partial code.
The reusable binding API returns an explicit error for invalid source/identifier/length; the caller will emit a fixed visible refusal marker plus71 rather than elide source. Tests precede the implementation and cover exact decoded bytes before execution, all dictionary words, public UTF-8/punctuation/control bytes supported by shell variables, literal tilde, every trailing newline, malformed/truncated/reserved/noncanonical/oversized blobs, original stdin, and filename/URL fragment values. The existing argument-cap assertions stay unchanged and will also forbid source-refusal markers for legitimate workflows.
This is reuse of an existing source representation, with no new crate, dependency, feature, engine, or public protocol. Byte savings and encode/decode overhead will be measured later on the locked perf VM using release artifacts; no host timing will be used as performance evidence. The held management-profile candidate remains unchanged and unadopted.
#231/#235 focused new-upgrade phase control found a prebinding gap before final acceptance.
Cut: after initial upgrade intent mkdir, before any original owner/base record. Independently recreate the owner with identical bytes and mode under the same UID. Original inode6040395, recreated inode6040399. Current recovery returned0 and published the stage. This is an admission gap even though the upgrade seed has no public deletion authority.
Correction: the initial upgrade intent name must include a digest of the original base UID/device/inode plus original owner UID/device/inode/hash, computed before mkdir. Resume compares that disk-name digest before writing any self or phase metadata; any independently changed/recreated original stays and refuses. This applies the existing handoff design to upgrade genesis. Retired completion format and the six-identity base-created recipe/order remain unchanged. A permanent regression will cover the first cut with owner recreation and base recreation. All full acceptance gates remain pending.
#231/#235 new parent-capsule concurrency control found a lock-transition race before acceptance.
Controlled sequence: entrant opens the original ancestor and pauses before flock; holder publishes the missing chain, switches fd9 to the future immediate parent, and keeps that lock; entrant resumes its precomputed ancestor flock after the holder releases the ancestor. Current entrant status0 bypassed the still-held final-parent lock. Controlled entrantPID998446 and holderPID998459 were both reaped.
Correction: after acquiring the selected existing ancestor lock, recheck the immediate parent. If publication made it public and fd9 names a different inode, acquire that immediate-parent inode on fd8 before switching fd9; an active holder makes this return73. Keep both descriptors through that handoff. Add a permanent two-process pipe-synchronized test; no timing threshold or load generator. Earlier generated producer matrices did not prove this concurrency case. Final module gate remains provisional until this fix and control pass.
#231/#235 analogous first-parent-intent origin control, before final acceptance.
After the initial empty parent intent mkdir, independently recreate the existing ancestor while moving the original empty capsule intact to the new ancestor. Original ancestor inode5157344, recreated5157347. Current recovery0 published the base, since the anchor tuple was first recorded after that cut.
Correction: initial parent intent name includes the original existing-ancestor UID/device/inode digest computed before mkdir; recovery compares it before self/anchor metadata writes. Retired completion already binds the original ancestor and stays unchanged. The empty metadata phase remains separately qualified as previously posted; this change binds an already-existing public original, not recursive metadata records. Add a permanent generated first-intent regression and retain all earlier assertions.
#231/#235 mechanical source partition queued after focused BC gate.
The current BC source and new controls pass11/11: fresh30, retained35, missing-parent33, upgrade30 observed producer cuts, each recover/adopt twice; first-intent original-public replacement controls and the pipe-synchronized guard-transition control also pass. Existing canonical-prefix/ownership assertions remain. The current crate Clippy retry is pending concurrent source-wire integration; no branch completion claim.
Move only eight byte-identical producer entrypoints to new stage_creation.sh: BC prepare_install_parent/prepare_base_creation/prepare_upgrade_stage/adopt_base_creation, and preserved-stage preserved_write/prepare_preserved_stage/adopt_preserved_stage/admit_preserved_creation. Root will carry this module first only in STAGE_TRANSACTION; common keeps every BC/parent recovery helper, canonical emitter, preserved-stage marker/validation reader and fresh-proof retirement function. Standalone BC fixtures load the same extracted module, with every assertion retained.
Measured compact text moved:5698 bytes (BC2963, preserved2735). This removes irrelevant producer entrypoints from inspection and other non-stage commands without weakening their recovery. Existing argv131072 and checked-source131071 caps stay unchanged. No dependency/profile/engine change. A separate scratch-only dependency report identifies6622 bytes potentially excludable only from inspection, but that recommendation is not implemented here; creation_rows_seed remains required by BC guard recovery.
#231/#235 mechanical producer partition applied; branch acceptance still pending.
New crates/plugins/ssh/src/stage_creation.sh contains exactly the eight previously listed producer entrypoints. Their function bodies are byte-identical to the pre-extraction source (per-function SHA256 recorded in source-scope/stage-extraction-identity.json); only definitions moved. Shared readers retain every recovery helper and canonical emitter. STAGE_TRANSACTION inclusion is root integration; standalone BC loader includes the same new file. Compact common text removed5698 bytes; no cap changed.
Before extraction the frozen BC source passed11/11 focused tests: fresh30, retained35, parent33, upgrade30 observed producer cuts, every cut resumed/adopted twice; original-public first-intent replacements and guard-transition concurrency controls pass. Both controlled children1083486/1083490 were reaped and ps reported no surviving PID. The same gate's all-target SSH Clippy failed only three concurrent source-wire test assertion lints, subsequently fixed by root. A fresh11-case/fmt/Clippy gate for the extracted source is queued under the shared job/build slot; no final-green claim yet. Explicit independent-UID/full-product coverage remains pending with the full boundary matrix as previously qualified.
Completed parser-sharing step at 0e7d54ff55150225bc47aad57525fdfbd6f46473: the private and public creator proofs now use one unchanged row grammar. Exact-commit snapshot: 15 equivalence cases, 49 SSH library tests (2 expected ignores), fmt and all-target SSH Clippy passed with compiler wrappers disabled. This does not complete round 4; integration, exhaustive interrupted recovery and final size/gates remain open.
Gate: https://git.kayg.org/attachments/cd422a56-7429-4893-bdf0-0a004f98ad27
Fixture isolation update for #231/#235: generated programs now carry canonical public source through a checked AWK decoder. Plaintext path substitution must preserve the decoder dictionary and heredoc unchanged; fixture tools/awk will run /usr/bin/awk, propagate any failure with no stdout, and rewrite only successful decoded public output. HOME remains absent, with FT_ROOT carrying the isolated case path. Signal-read and delayed lease hooks apply only to public source, with signal selection scoped to each command environment. A new harmless regression decodes the real generated inspection source without executing its filesystem code, then verifies mapped fixture paths. No production limits or private stdin handling change.
Creator ledger direct writer findings and current coverage (#231/#235):
The pending-directory bind had a no-clobber gap: an independent empty directory introduced after the absence check was replaced by mv -T. The direct control captured RED while preserving that independent inode in its assertion. The writer now uses mv -Tn and requires both disappearance of the original unbound name and subsequent validation of the identity-bound pending name, so a skipped move cannot authorize writes. Focused control is GREEN; fixed head replacement remains intentional.
Immutable prior-candidate direct gates: new-head discovery/replay covered 24 actual mutation/durability cuts, with 40 edit, 59 bound-record recreation and 45 unexpected-child variants. Its owned-container replay additionally covered 85 literal UID1002 variants. Prefix-repair discovery/replay separately covered 16 actual cuts, including the existing nonempty candidate O_TRUNC path, with 32 edit, 43 recreation and 36 unexpected-child variants. The owned-container prefix-repair replay is now GREEN with 68 literal UID1002 variants. Each pristine cut recovered twice. No host ownership changes were used.
The final source also replaces literal quoted LF source lines with a sentinel-preserved newline variable, retaining exact canonical bytes while satisfying source compaction invariants. Frozen v5 creator_ledger.sh SHA256: 3422fdc0eef210b21b493d3ae13a630a0cf533c8b1b414f59b7d0623f4dfc24f. Syntax and per-line compaction controls pass; its complete direct replay is queued, not yet claimed green. Previous-candidate receipts remain labeled accordingly. These are direct ledger gates, not completion of the full generated-install Cartesian matrix.
Local raw receipts: creator-ledger-pending-destination-red.log; creator-ledger-pending-destination-green.log; creator-ledger-no-clobber-prefix.log; creator-ledger-cuts2-shell.log; creator-ledger-container.log; creator-ledger-repair3.log; creator-ledger-repair-container.log. Host elapsed values in raw output are functional diagnostics only, not performance acceptance evidence.
Creation producer partition: all eight extracted function bodies are byte-identical to their source snapshots; 5,698 compact bytes leave the shared guard and occur only in STAGE_TRANSACTION (BC 2,963; preserved-stage 2,735). identity comparison
Focused extracted-module result: 11 passed, 0 failed. Generated mutation cuts remain fresh 30, retained 35, missing-parent 33 (66 repeated resume calls), upgrade 30 (60 repeated resume calls). Parent-lock entrant PID1335180 and holder PID1335185 were reaped; ps -p reports neither. All-target Clippy in that transcript failed on concurrent shell_wire.rs:316 empty-array type inference; the source owner corrected it separately. This is a module result, not the final branch gate. full module gate transcript
Encoded fixture isolation regression is RED before its hook: the harmless real production decoder emits unchanged HOME references, so exact expected fixture-source comparison fails. The test never executes the decoded filesystem program. The hook now preserves the decoder/heredoc, maps only successful real AWK output, scopes signal hooks per command and retains synthetic private stdin; focused GREEN and targeted Clippy are queued. RED summary
Concurrent work remains uncommitted under the owning root job; no completion or full-gate claim.
Completed bounded public-source representation step at c385b1a3baf819e7817c163306e55b687c5b689a. Exact three-file HEAD projection: fmt, 57 SSH library tests (2 expected ignores), all-target SSH Clippy pass with compiler wrappers disabled. Fourteen focused canonical/byte/stdin controls pass. This slice adds no dependency or source-cap increase.
Gate: https://git.kayg.org/attachments/23b28c7f-3298-46c4-952d-d3b4b7172a9a
Projection: https://git.kayg.org/attachments/a07eda4d-455f-47b6-a52c-995ef13d0a9c
Integration remains RED: current-source-cap2.log records Rootless composed argument lengths 167399, 158526, 168085 and 134613 against unchanged 131072. The next candidate avoids redundant encoding and chooses smaller exact quoted bindings; no cap is raised. The first separate perf-VM component sample also shows material decoder cost (plain/wire median 5.89/102.99 ms for 105919 decoded bytes, 19014 command bytes saved). Final source, memory measurement and decoder optimization are still open; these are not acceptance results.
Wire component measurement for c385b1a3baf819e7817c163306e55b687c5b689a (D243/D255, #231): exact HEAD projection passed fmt, SSH library tests (57 passed, 2 ignored), and SSH all-target Clippy with -D warnings. The eight new wire tests retain the original 131071-byte decoded limit, canonical accept/refuse checks, no output on malformed blobs, exact trailing newlines and original private stdin.
The first paired component measurement ran only on infraternal-perf-test (four CPUs, CPUWeight=10000, shared perf lock; initial load 0.00/0.21/0.27). It used an existing compiled real common source of 105919 bytes, SHA256 ea047a607a58a8dd17785de3bf9300d297f0a47ca6fda43ae19729e1d994ac50. Each variant bound exactly those same bytes and validated original synthetic stdin before any timing. The probe executes the binding and benign validation suffix; it does not eval setup source or measure network/setup completion.
Plain command106132 bytes; wire87118 bytes: 19014 bytes (17.9%) less. Twenty interleaved samples each: plain median/p95 wall5.89/6.47 ms versus wire102.99/119.04 ms; median CPU5.74 versus102.85 ms. Five forty-process batches each: median wall76.75 versus1175.59 ms; median aggregate CPU229.74 versus4579.12 ms. Release Rust encoder (opt-level3, 15 samples, 200 warmed calls/sample) median2.60 ms/call, cold median2.76 ms.
This exposes a material decoder cost; it is not performance acceptance. Initial wait4 RSS is dominated by the Python launcher's inherited high water and is explicitly excluded from memory claims. A small launcher correction and a scratch literal-run canonical validator are next; candidate acceptance must preserve all parser decisions and pass differential controls before another paired VM measurement. Final current common and whole forty-service/network behavior remain separate required gates.
Raw VM receipt, all samples (initial RSS excluded), source/artifact manifest.
Mechanical source partition for the existing argv ceiling (D243, #231/#235): move only publication_cleanup and manifest_retire_journal into publication_retirement.sh, and manifest_before_image into before_image.sh. All three function bodies remain byte-identical. Inspection keeps publication validation, canonical expected-byte emitters, manifest journal validation and before-image readers; mutation callsites explicitly assemble the extracted producers. This removes no recovery admission or expected-byte check. The direct publication fixture also needs the retirement module plus its existing cl_exists dependency; root owns that loader/glue change. No ledger, predicate, BC or source-cap changes are included in this extraction.
Mechanical inspection source partition completed in the uncommitted working snapshot based on c385b1a3baf819e7817c163306e55b687c5b689a: publication_cleanup (971 compact bytes) + manifest_retire_journal (168) now live in publication_retirement.sh; manifest_before_image (964) now lives in before_image.sh. Total removed from shared inspection source: 2,103 compact bytes. No other functions or predicates changed; canonical emitters, validators and expected-byte readers remain shared. All three moved bodies are byte-identical by SHA256. body identity receipt
/bin/sh -n passes individually for publication.sh, manifest_authority.sh, publication_retirement.sh and before_image.sh. source hashes and syntax receipt
Root owns Rust assembly integration and the direct publication fixture dependency update, then the actual unchanged-cap gate. No branch-green or completion claim.
Encoded fixture isolation now passes its narrow real-production-decoder test and the existing diagnostic cleanup/HOME test: 2 passed, 0 failed. The new case decodes but never executes the production filesystem source, compares all decoded bytes after mapping, preserves synthetic stdin including NUL/tab/newline, and requires invalid encoded input to return failure with no stdout. functional output, verbatim
Local commands retain HOME removal and carry only their own FT_ROOT. All plaintext hooks preserve complete generated decoder/heredoc envelopes; the per-fixture AWK hook forwards ordinary calls unchanged and maps public output only after /usr/bin/awk succeeds. Owned-root destination mappings require the admitted fixture marker/UID0. Signal-read selection is per-command environment. Complete nested bindings remain opaque until their own decoder validates them; root is fixing outer splitting so these bindings cannot be fragmented.
Formatting passes. Initial targeted Clippy found only Fixture::new length127/100; moving the byte-identical hook into a documented constant corrects that without an allow. Hook SHA256=2559b8595ee3ac4fbbd16aaad46091920aaf79504615e3c94ef86fd25baf3ded. Corrected lint is covered by root's already-running current-assembly all-target Clippy; the duplicate queued child command was cancelled before execution. source/identity receipt
ps -p 1440827,1682155,1335180,1335185 lists no remaining processes (cancelled duplicate child gates and reaped parent-lock controls). No broad fixture suite was started by this child; final branch gate and commits remain with root.
Wire component RSS correction (#231, follow-up to the initial receipt): a small C launcher now forks the shell after exec, avoiding the Python process's inherited RSS high water. The matched source is unchanged (105919 B, SHA256 ea047a607a58a8dd17785de3bf9300d297f0a47ca6fda43ae19729e1d994ac50); source and original stdin validate exactly before measuring. Perf VM only, CPUWeight10000/shared lock, initial load0.01/0.19/0.36; the lock is released.
Twenty interleaved samples each: plain/wire median shell-tree peak RSS2460/2640 KiB (+180 KiB); p95 2548/2696 KiB. Five actual forty-process batches each: median summed peak upper bounds94648/103008 KiB (+8360 KiB). These sums are explicitly not simultaneous PSS. Corrected fork+shell median wall7.72/110.77 ms (p95 11.28/119.70 ms); median CPU7.34/110.51 ms. Forty-process median wall122.03/1214.42 ms; aggregate CPU257.12/4613.26 ms. Release encoder warm median2.53 ms, cold2.80 ms.
The new receipt supersedes only the initial invalid RSS values; both independent paired runs show the material decoder CPU/latency cost. A scratch optimization is queued behind required recovery gates, with canonical behavior compared against the committed decoder at every dictionary-word internal split and additional malformed/UTF8/boundary controls. No optimization is adopted and no full workflow/network acceptance is claimed.
Corrected VM receipt, all corrected samples, exact artifact/source manifest.
Read-only activation audit (pending real-fixture RED): setup_scripts.rs:84 validates the original before-image once; unit backup is made at :133; service stop executes at :144/:149; manifest publication at :155 checks the original manifest but does not repeat the complete original-target comparison; :178 then replaces the unit pathname. publication_validate checks the prepared unit and retained original hardlink. An in-place edit changes that hardlink's bytes and should refuse; moving the original inode aside and creating a new unit pathname leaves the retained hardlink valid and may let the final mv overwrite an independent file. Fresh creation into an originally absent unit slot has the same target-absence question.
New unregistered tests/install/late_publication_round4.rs contains three real functional cases: fresh stop-time unit creation, upgrade stop-time recreation (old inode retained aside to prevent reuse), and the in-place-edit refusal control. The one-shot stop hook delegates all calls to the unchanged original fixture systemctl, requires a marker proving the real stop boundary, and records only UID/device/inode. Desired assertion requires refusal plus identical independent bytes/inode at the original public path. Formatting passes. No production code or existing review assertion changed. No heavy gate queued; root will register/run after ordinary fixture diagnostics succeed. This is static reasoning and test preparation, not yet a demonstrated runtime finding.
Final immutable creator-ledger direct gates are GREEN for source SHA256 3422fdc0eef210b21b493d3ae13a630a0cf533c8b1b414f59b7d0623f4dfc24f (inert module commit 25d8cc6780e53386ac22e8fddcc5b728b13a9e25).
The final source passed all 24 new-head and 16 nonempty-prefix repair actual mutation/durability cuts, twice-repeated recovery, and the focused reader/publication controls. Changed-record variants total 72 edits, 102 bound-record recreations and 81 unexpected children. The newly owned read-only-source container replay additionally passed 153 literal UID1002 variants (85 new-head, 68 repair); no host chown was used.
Final native raw output:
Final owned-container raw output:
Native full log, owned-container full log, frozen source/dependency/test hashes.
Elapsed values are included only as verbatim functional output, not performance acceptance. This completes the direct module slice; it does not complete the generated-install Cartesian matrix. The independent ledger/expanded-base phase oracle is now being validated before that matrix can run. All install recovery routes, including same-transaction restart and supplemental manual-ready/signal-gated completion, remain explicit required coverage.
Completed immutable creator-ledger module step at 25d8cc6780e53386ac22e8fddcc5b728b13a9e25 (module integration follows separately). Exact HEAD projection: nine direct controls with committed helper/parser dependencies, 57 SSH library tests (2 expected ignores), fmt and all-target SSH Clippy pass.
Final module SHA256 3422fdc0eef210b21b493d3ae13a630a0cf533c8b1b414f59b7d0623f4dfc24f. Generated 24 successor +16 repair boundaries; each resumed twice. Strict variants: 72 edits, 102 bound-record recreations, 81 unknown-child additions. Separate owned-container run adds 85+68=153 literal UID1002 changes, all kept/refused.
Exact-commit gate: https://git.kayg.org/attachments/ee3acc12-194f-4038-8aa2-848252c6aa5a
Final direct replay: https://git.kayg.org/attachments/3d649f6d-673f-4205-82f1-e3f1cfb1d0b2
Final container replay: https://git.kayg.org/attachments/7c345364-4b92-4ecc-9daf-1d6a2a6fe61e
Integration is still open: the first assembly gate passed the ordinary lease/staging case, but the full command-size gate remains RED and a concurrent unfinished test-parser edit blocked later rows. The next assembly gate uses an immutable complete source projection. Full path-by-boundary installer/Replace/removal workflows, final size, service re-add and final verify fast remain outstanding.
Confirmed real-fixture RED on unchanged activation source (setup_scripts.rs SHA256 5b29d733ba1c1c55f17e60b700225498e130b32618e272d4f7dcc3670914b846): fresh stop-time independent unit creation reports refused=false/kept=false, identity 1001:2049:2526795 becomes 1001:2049:2667522; upgrade recreation likewise reports false/false, 1001:2049:2497101 becomes 1001:2049:2667590. The in-place edit control passes: refused=true/kept=true, 1001:2049:2667539 unchanged. Result: 1 passed, 2 failed. Every case proves stop_hook=yes. RED output, source identity
Structural fix proposal before implementation: each public backup/move/replacement consults captured original before-image rows authenticated by its original marker plus private_read, with ancestor custody from those original rows and the immutable creator ledger. An original target row requires the same type/UID/device/inode/hash; an originally absent target must remain absent. Backups cannot derive new original authority from current tuples. Moving an admitted original aside is followed by no-clobber publication into the expected-empty slot and source-absence verification; unit/owner/launcher replacement rechecks immediately before replacement. Existing rollback/private-phase formats remain unchanged. Original existing ancestor rows for absent named leaves need additive capture at initial before-image preparation, never later recapture. Production edit ownership now delegated to this child; root owns assembly glue and final gates. No dependencies or source limits change.
Frozen full WIP projection at base25d8cc678: SSH library63passed/2ignored. Assembly/recovery gate remains RED: Root short-host argv131257 >131072; Rootless largest131039. Existing compound upload hits its unchanged60s deadline. These functional host durations are not performance evidence. Separate VM profiling is pending; no timeout/cap waiver.
Five private-retirement direct controls failed from a stale fixture binding name; corrected, replay pending. Base-retirement interruption hook missed changed rmdir argument shape; restored original production call shape, assertions unchanged. Repeated fresh Replace exits Upload71 and is being traced using public source only. The new late-unlink control targeted ready before commit (absent); corrected to actual manifest unlink and added a hook-hit assertion. Twelve new oracle Clippy findings are being resolved. None is accepted as green.
Immutable source manifest: $HOME/.cache/codex-scratch/addhost-readd-r4/assembly2-source.json. Raw gate:
current-assembly2-gate.log
Focused frozen candidate exposed an early admission regression, before any late-stop hook: all 6 late controls failed initial activation or hook admission with exit 71; the 4 original direct publication cases passed. No late preservation verdict is claimed from that run.
Real immutable zero-row creator seed + original before-image reproduction isolates publication_parents: it required a row for an ancestor that had never existed. RED: expected-absent missing/unit.service parent had no row and publication_original exited 71. RED.
Candidate now allows only unrecorded-and-currently-absent parents; any recorded parent still requires exact identity. Added permanent original_authority_distinguishes_absent_and_recorded_parents test without changing existing assertions. Direct real-producer controls: absent exit=0; unknown-present exit=71 kept=true; recorded-missing exit=71; recorded-recreated exit=71 kept=true. controls. Module SHA256 3ea57927bc65f16e03b63bc434ccc4b08add53d0eb33d3cb2f867a7e7e3d2062; test SHA256 6851ae404c34b6c586ab9a4c53bf9086c534dc78cd01304b30347f0bde55c044. Shell syntax and touched-test formatting pass. Fresh frozen end-to-end rerun pending; no overall gate claim.
Atomic step e95b33a3f5ebe5bef9fa113b06407893dc7c9a58: retune three shared words, preserving 127 tokens/ordering and exact decoded sources. Exact HEAD projection passed fmt, 57 SSH library tests (2 ignored) and all-target Clippy. Independent 32 differential controls passed on host and VM.
Matched perf-VM component measurement (4 vCPU, CPUWeight10000, load average recorded in raw log), unchanged 105919-byte common SHA ea047a607a58a8dd17785de3bf9300d297f0a47ca6fda43ae19729e1d994ac50: command 87118→83585 bytes (−3533); median 100.33→97.30ms; p95 120.74→115.31ms; 40-bind median 1177.37→1126.61ms, aggregate CPU 4419.70→4282.51ms. RSS medians 2680→2512KiB; 40-reader summed peak 103536→99244KiB is an upper bound, not PSS. Component source predates final assembly; this is not whole-install acceptance.
No cap increase; final actual-command bounds and static-size delta remain open. Prefix-index candidate and metadata batching are separate uncommitted measurements. Nothing pushed/deployed.
dictionary-atomic-gate.log
shell-wire-dictionary-vm.log
shell-wire-dictionary-functional.log
dictionary-projection.json
Scratch canonical wire decoder candidate: group dictionary lookups by their first four bytes, preserving the original greedy dictionary order. No parser grammar, declared-size ceiling, partial-output behavior, source bytes, private stdin, or production dependency changes. This is independent of the D1 dictionary already committed.
Strict host Clippy and 32 differential controls pass; the same 32 controls pass on the perf VM after artifact verification. They include literal/word/token boundaries, malformed and late-invalid blobs with no output, exact limits, UTF-8/punctuation, and original trailing newlines. Host gate, VM gate and measured summary.
Matched perf-VM component sample uses the identical 105,919-byte real setup common source, SHA256 ea047a607a58a8dd17785de3bf9300d297f0a47ca6fda43ae19729e1d994ac50. With D1 on both sides, original versus indexed canonical decoder: median 62.35→43.90ms, p95 69.21→46.00ms; forty concurrent bindings 696.12→497.26ms, aggregate CPU 2668.93→1874.06ms. Median shell-tree peak RSS 2512→2432KiB; forty summed peaks 98,780→98,928KiB (conservative bound, not simultaneous PSS). Warm release encoder 1.596→1.602ms. Command representation grows 326 bytes, 83,585→83,911 including the identical test suffix. Three warmups, twenty interleaved single samples, five interleaved forty-process batches, CPUWeight=10000, exclusive shared perf lock. Raw measurements, source/artifact manifest.
Candidate shell_wire.rs SHA256 39e1801ad0eead11a77490b1dad7434d89cd2efbcc40ff48b8815f31661aa49b is frozen in scratch only. This supports a narrowly scoped projection for review; it does not establish final workflow latency, final argv headroom, or static-size acceptance. Parent still owns those gates and adoption. No production source changed by this measurement.
Revised frozen candidate: real fresh late-unit control reached stop, refused and retained exact identity 1001:2049:4227149; all 5 direct publication controls passed. Five upgrade controls passed initial install+commit+upgrade staging, then refused before the actual stop hook, so they provide no late-upgrade preservation verdict.
Real immutable creator seed + before-image + original launcher reproduction isolates the second admission regression: original symlink row hash is the dash placeholder. Formatting produced UID:DEV:INO--HASH while the actual captured source is UID:DEV:INO-HASH; backup refused 71. RED.
Corrected publication_backup placeholder removal only (
%--), preserving the captured original UID/device/inode and fixed expected link hash. New permanent original_launcher_backup_uses_the_captured_symlink_identity regression; existing cases/assertions retained. Real direct backup+validation now passes with original identity retained. control. publication.sh SHA256 5e1ce9f099ebe4cfdd3e1b867c4b77e6f71b93d9456addbbb77a4aaa8b8ea2a5; test SHA256 905d1c224c9bd5c37ff0da5153fcafdce45a7082e5ca8b556afceebc6dac3f4b. Shell syntax and touched-test formatting pass. End-to-end upgrade replay remains pending.Test-oracle finding for #231/#235: the kernel observer decoded canonical row-only receipts but treated the new
infraternal-created-v1successor header as opaque. That prevents justified inode/hash normalization when comparing complete full-ptrace and filtered-scheduler executions.Added an exact completed-receipt schema for the declared creator roles and canonical UID/device/inode+SHA predecessor. Unknown roles, malformed predecessors, partial rows and opaque fields remain undecodable. The comparison re-emits the complete canonical bytes and checks the original SHA/size before normalization. This metadata decoder is not used to grant authority at an earlier interrupted cut; the independent Rust phase classifier remains responsible for admission.
Permanent controls captured RED before implementation and GREEN afterward: two decoder controls and one actual full/filtered observer comparison. The latter now includes a creator successor and retains all existing cut/path/UID/durability/final-tree rejection controls. These are functional controls, not performance evidence or equivalence for all shipping install paths.
Decoder RED, decoder GREEN, actual observer comparison GREEN.
The immutable18 parser gate remains queued. The declared empty role-source phase has a separate actual-writer RED control queued; its immutable-row publication verifier is not implemented yet. All shipping all8 inventories/equivalence and full cut×path×variant×recovery products remain incomplete.
Fixture-only dispatcher step: tools/awk now uses POSIX shell to inspect the same any-adjacent
-v infraternal_wire=1predicate. Ordinary calls exec /usr/bin/awk unchanged; only decoder calls exec tools/awk-wire. The Python mapper remains byte-identical (SHA256 2559b8595ee3ac4fbbd16aaad46091920aaf79504615e3c94ef86fd25baf3ded), retaining validation-before-output, private stdin, owned-root checks and nested bindings. No production code or timeout changed.Direct semantic controls pass: native argv/stdin identical; unpaired marker remains native; later decoder marker maps; native refusal preserves status/stdout/stderr. controls. Added permanent native argv/stdin plus real checked-binding nonfirst-marker control; old assertions unchanged. Formatting passes. Cargo semantic control and final integration gate pending. No performance number or performance acceptance claimed from the build host.
Independent phase parser checkpoint, frozen source artifact
activation-oracle18-source.json:Targeted install Clippy and all18 focused controls passed:16 BC/ledger oracle controls, one ledger durability unit, and one declared-destination/extra-alias unit. The parser validates original six-inode seed provenance, full immutable predecessor chains, exact role recipes and pending peers, canonical prefix bytes, original ownership, retained binding history, and exact canonical BC retirement tuples. New negative controls reject forged pending records, unrelated seed rows, bound-record recreation, unknown children, forged terminal hashes, undeclared public aliases, and invented fresh-retirement
prepareddirectories. Empty immutable metadata stays empty after legitimate relocation.The real shipping ledger continuation exposed an oracle ordering error: the writer fsyncs complete value bytes before publishing the value-ID marker. The narrow ledger proof now accepts that actual order only with the exact complete SHA on the original descriptor and no later data mutation before use. The control also rejects unrelated/global sync evidence and writes after the last complete fsync. Other phase durability checks were unchanged. The actual captured continuation has17 mutation/durability events; these are an observed continuation proof, not a full cut-replay matrix. Its complete fsync is sequence16, inode-binding marker18, immutable anchor30, and fixed-view replacement57.
Full focused gate, frozen source hashes, metadata proof summary, actual syscall trace, actual durability controls.
This checkpoint changes test-oracle code only and does not change the three r3 test commits. It is not a final gate or exhaustive install claim. Exact empty prepared role-source admission needs a separate immutable-row publication proof; an actual-writer RED control is queued for that next slice. Root/Rootless all8 inventories, supplemental Manual/After and same-transaction Resume products, every path×cut×edit/recreation/foreign-UID case, and VM performance projections remain incomplete.
Atomic step 3d9882b37056855f385ff2497fc81162d2c362f5: canonical word lookup now uses ordered exact-prefix chains and preserves the lowest original token index across short/long candidates. Full canonical re-encoding still precedes any output. Added permanent every-word literal/split rejection controls.
Exact commit projection: fmt, 58 SSH library tests (2 ignored), all-target Clippy GREEN. Independent host 32 and VM 32 differential controls plus the paired D1 source/measurement manifests were posted in the preceding decoder measurement comment. On that same 105919-byte public source, median 62.35→43.90ms; 40-bind median 696.12→497.26ms. Adds 326 command bytes, without changing limits or private stdin. Final static size and full assembly remain open; no push/deploy.
prefix-index-atomic.log
prefix-index-projection.json
Per-unlink preservation control: after both original file rows have passed whole-inventory admission, the actual first rm hook edits the next original file. Whole-inventory-only control returns0 and loses independent bytes; current per-unlink proof check returns72, keeps those bytes and reports the left path. Both runs reached the hook and removed only the first original file. This is a matched safety control, not a historical commit replay.
The full permanent late_lifetime_edit_between_public_unlinks_is_preserved test is now GREEN in immutable recovery-diagnostic4-source (including explicit hook-hit assertion). Original review_restart_recovers_cleanup_after_base_retirement is GREEN with original assertions; private-retirement direct controls/10 generated delete cuts/20 resumes are passing while two final commit cases remain running. The diagnostic aggregate remains RED from an early test-helper missing-parent assumption; corrected diagnostic queued, original retained Replace Upload71 remains unresolved. No full-product/final acceptance claim.
late-unlink-control.log
late-unlink-control.py.txt
Creator-ledger attribution and scratch metadata candidate, with no cached authority or new production protocol.
All measurements below ran on the isolated perf VM under the exclusive shared perf lock, CPUWeight=10000, mapped UID1001. They invoke the actual unchanged immutable-ledger writer/readers. The stress fixture extends only its finite test recipe to1/8/16/64 unique directory rows; it does not add production roles. Forty concurrent readers share one unchanged immutable fixture, rather than forty independent host filesystems. Raw source/artifact manifests and all measurements.
Unchanged-reader baseline, median milliseconds:
These diagnostic counts identify repeated metadata subprocesses as a substantial cost. Trace lines from concurrent pipelines may interleave, so these are attribution receipts, not a complete syscall census. The original metadata predicate calls three stat subprocesses per private_binding.
The scratch candidate pins a checked regular owned inode in scoped FD3; one descriptor stat supplies mode600, bounded size, dev:inode before hashing that same FD. After hashing it explicitly requires a regular owned non-symlink pathname still naming the pinned inode. Existing explicit link counts, complete expected bindings, captured-byte digest authentication and both bound rechecks remain. The caller's different FD3 and its offset are restored; setup/runtime FDs6-9 and private stdin are untouched. Exact candidate diff.
Matched control→candidate emit medians:1 hop83.05→61.60ms;8 hops262.07→211.91ms;16 hops476.22→381.32ms. Diagnostic stat processes become42→22,126→64,222→112 respectively. All before/after fixture identities and bytes are unchanged. At16 hops, the first randomized forty-way sample had a reversed pooled median during strong temporal drift; that complete result is retained in the raw receipt. A balanced AB/BA repeat gives four adjacent candidate/control wall ratios0.770,0.799,0.746,0.783, median0.7766. Balanced forty-way wall5439.08→4223.78ms, aggregate CPU21177.88→16385.85ms. Summed peak RSS171092→171122KiB is a conservative upper bound, not simultaneous PSS. Balanced per-batch log.
Original seven Rust reader tests,15-prefix checks, formatting and focused Clippy pass in the frozen ordinary-UID mount snapshot with wrappers unset. Direct controls additionally cover late same-byte regular replacement, a symlink to the held original inode, a directory swap, restored-original captured-byte mismatch, and caller FD identity/offset preservation. A disposable rootless read-only container verifies foreign UID refusal without host chown. Rust gate, direct controls, foreign UID controls.
Candidate SHA25602886371886952da63872a8724c06733fa95762a7a0baf9986ee67448379ff6e adds409 compact source bytes and370 bytes to the indexed wire binding of the fixed real common component. Parent now owns separate permanent-regression and helper projections; final argv/static-size/workflow gates remain required. This component result does not establish final setup latency or whole-workflow acceptance. No creator-row cache was implemented.
Frozen recovery-diagnostic4 slice completed: all 9 private-retirement controls GREEN, including actual commit interruption/resume and unrecorded private-unit preservation; generated private deletion boundaries 10, resume calls 20. Late-lifetime mutation control and original R3 base-retirement restart control also GREEN, assertions preserved.
Aggregate remains RED: retained-restart trace helper panicked on a missing initial fixture parent before setup, so that row produced no Replace verdict. Corrected diagnostic is queued against coherent later source plus fast fixture AWK dispatch. Original retained Replace Upload71 and compound upload 60s failure remain open.
Projection base e95b33a3f5ebe5bef9fa113b06407893dc7c9a58; immutable overlay manifest attached. These raw host durations are functional gate receipts, not performance evidence. No full-product or final acceptance claim.
recovery-diagnostic4.log
recovery-diagnostic4-source.json
Immutable late-publication v2 result (intermediate candidate, not final):
LATE_PUBLICATION_GATE_V2 exit=1. Fresh late-unit real hook reached/refused/retained exact identity; direct publication cases 5/5 pass. Upgrade late cases 0/5 reach their late hook; direct symlink backup reproduction isolated the formatting defect and its correction is in queued v3.Ordinary fresh/re-add control separately failed at frozen tests/install.rs:1444, the second fresh enroll after successful rollback (71). That remains UNRESOLVED; do not attribute it to the upgrade symlink defect without replay. No preservation verdict for the five upgrade late variants yet.
Verbatim v2 gate log, immutable source hash receipt. Hashes before/after agree. v3 late6/direct6/library Clippy queued; coherent ordinary replay with the native AWK fixture dispatcher follows. No timeout, prior assertion or production authority weakened.
Finding: the unused legacy .bootstrap-acquiring cleanup path authenticated canonical bytes/mode but had no original inode row. Direct execution of the real fresh_cleanup.sh function removed an independently created 600 marker and returned0. The new path keeps the exact uid/dev/inode/bytes, reports the path and returns72; absent marker remains a no-op. Permanent Rust regression added before the fix. CLEANUP now also refuses this unrecorded marker and removes its obsolete pathname-only stage/acquisition fallback. No current constructor writes this legacy marker.
Before, after. Functional direct checks only; full frozen install replay remains pending.
New-module projection readiness: exact-shipping-byte standalone runner passes 12/12 real shell controls: stage4 (fresh,missing parents,upgrade,retained), before-image3 (valid,changed original,recreated bound snapshot), retirement5 (canonical-prefix cleanup twice,unknown bytes,bound artifact recreation,manifest anchor retirement,recreated anchor). Stage origins retain their inode across recovery/adoption; rows2/5/0/3; upgrade owner unchanged and retained data kept. Refused recreated artifact/anchor retains exact UID/device/inode and bytes.
Runner source SHA256 ebc5d82a03ac6ba9947668e79e0ce87ec03c6bee06b71aa29d963cf6c8d17a86; output; shipping/support source hashes. Shipping modules are stage_creation.sh, before_image.sh and publication_retirement.sh; all support functions come from the immutable v3 source. Existing tracked BC/proof replacement waits for caller wiring. These smoke controls cover BC entrypoints, not the four preserved-stage functions; those retain their byte-identical extraction proof and still require caller integration gates. No exhaustive-install or final-gate claim.
Immutable late-publication v3: ALL 6 actual late controls PASS, each with the real stop hook reached, refusal and independent object kept: fresh unit recreation, upgrade unit recreation/in-place edit, upgrade binary/state/launcher recreation. Unit identities in the log are unchanged. Library Clippy PASS; direct publication 5/6. Overall
LATE_PUBLICATION_GATE_V3 exit=1, because the NEW isolated launcher-backup test created a parent with native umask002 (mode775), correctly refused by publication_prepare. Exact mode control confirms775 alone produces71; only that test setup now explicitly makes its parent700, with preservation assertions unchanged. No production change for this fixture correction.Verbatim v3 gate, immutable source receipt. Production publication SHA256 5e1ce9f099ebe4cfdd3e1b867c4b77e6f71b93d9456addbbb77a4aaa8b8ea2a5; original authority SHA256 3ea57927bc65f16e03b63bc434ccc4b08add53d0eb33d3cb2f867a7e7e3d2062; before/after hashes agree.
Separate ordinary second-fresh enroll71 remains UNRESOLVED. A coherent replay now queues the exact v3 production plus ONLY fixture native-AWK dispatch and the new launcher-test parent-mode correction; no live reader/parser WIP or private/enrollment trace is included. Full integration/size/final gate remain pending.
Independent declared-source oracle checkpoint, after frozen eighteen-control GREEN in #issuecomment-59842.
The separate immutable RED source ran five controls: three failures and two passes. The failures are the expected refusal of (1) an existing declared empty runtime-directory and (2) its absent slot before creation, plus (3) acceptance of a same-byte regular-file rewrite after its last completed fsync. Unknown role/source/child and historical-original-binding controls passed. These are test-oracle findings; this receipt is not a shipping behavior or exhaustive-coverage claim.
The new parser is now independently checking the original immutable head and reconstructing the exact successor from the pinned candidate and fixed role destination. Its public-use proof requires completed data fsync, original pending-directory binding, candidate row/hash binding, immutable anchor, fixed head view, pending removal and scoped stage/source durability before rename. Direct public rename and an invented otherwise matching new receipt have separate negative controls. Strict preservation remains the default. Targeted Clippy and the combined focused controls are queued under the shared build lock against an immutable source projection; no GREEN is claimed yet. Literal foreign-UID execution remains a separate owned-container companion.
activation-creator-red.log
activation-creator-red3-source.json
Completed atomic permanent-reader controls: a6e10cc48284bd7c64acec78963e246edb47b2ee. Exact HEAD projection contains only tests/private_write.rs: all9 tests pass against the original reader, fmt and touched-test Clippy pass. Tests verify a different caller FD3 retains its identity/read offset and three hash-time pathname swaps refuse while preserving original and independent nodes.
Gate, exact projection. The optimized module is a separate queued atomic gate; no full-lane completion claim.
Fixture dispatcher refinement: direct semantic control found its initial loop variables changed exported environment variables named previous/argument before native AWK. RED. Replaced assignments with a function-local positional-argument scan; original caller argv remains intact, with the same any-adjacent decoder marker predicate. Added the environment case to the permanent semantic test. No production or timeout change.
Direct controls: native argv/stdin, ambient environment, unpaired marker, refusal status/stdout/stderr all identical; decoder marker after another option maps correctly. Python mapper body remains SHA256 2559b8595ee3ac4fbbd16aaad46091920aaf79504615e3c94ef86fd25baf3ded unchanged. Live tests/install.rs SHA256 33d9f6cf54d889a0d2f151cd2af95503caf9c8f9bf2fd09a0c37efd72cb1da67; formatting passes. Already-queued ordinary-fast snapshot intentionally retains its earlier immutable fixture version; final helper Cargo verification remains pending.
Retained restart remains a real failure on immutable retained5: first restart returns Upload71 after preserve cleanup succeeds; framed upload separately reaches its unchanged60s deadline (not a permitted load waiver). Gate, source, public cleanup trace. Host functional durations are not performance evidence.
Confirmed missing staging dependency: prepare_preserved_stage calls fresh_state_matches, but its two reader definitions had moved to cleanup_admission and were absent from setup/staging. The frozen original staging-definition closure returns127; extracting unchanged reader functions into fresh_proof_match.sh and composing them in staging plus cleanup makes the closure pass. Functions SHA a5aa5d673f515e3de2d5f79cb7517f4362c20e8aaf411ecefc1970006149182a is byte-identical; common setup definitions do not grow. Closure before, after.
Retained7 now queues the real replay with exactly that three-file production composition delta and public-only diagnostics. Retained6 was cancelled before starting and has no verdict. No full recovery or framed-deadline success is claimed.
Frozen ordinary replay against unchanged late-publication v3 production: ordinary fresh_failure_removes_owned_artifacts_and_success_can_rejoin PASS, direct publication6/6 PASS, install-test Clippy PASS, fmt PASS. This coherent replay resolves the earlier second-fresh enroll71; its earlier cause is not independently attributed. Launcher direct setup now uses private mode700 before capturing original parent identity; all prior assertions remain.
Overall ORDINARY_FAST_GATE_V1 exit=1: only the two fixture helper tests failed at their assumed program_a binding find, before decoding. Exact frozen generated-source shape diagnostics are queued; no isolation assertions are weakened. Final positional native-AWK dispatcher is separately direct5/5, not this snapshot's initial dispatcher.
Raw gate, source receipt. Candidate publication.sh SHA5e1ce9f099ebe4cfdd3e1b867c4b77e6f71b93d9456addbbb77a4aaa8b8ea2a5, publication_authority.sh SHA3ea57927bc65f16e03b63bc434ccc4b08add53d0eb33d3cb2f867a7e7e3d2062. No full branch gate claim.
New concrete authority-read finding: manifest_emit authenticates previous-manifest once (manifest_authority.sh205–213), then manifest_directory42/113/130 and manifest_state33 reread its pathname with grep. A real-producer scratch control (upgrade capsule, immutable origin seed, before-image, original/saved/anchor bindings, real typed owner/launcher/unit preparation) transiently appends one d row during raw grep, restoring the exact original bytes and inode afterward. manifest_initial_emit returns0 and emits original_d_authority=no changed_d_authority=yes restored_binding=yes. An inherited parent gains deletion authority absent from its admitted original receipt. No authority checks are stubbed.
RED output, support source hashes. Proposal before code: capture bound receipt bytes with existing private_read, consume only captured bytes in parent emitters, and have each find worker receive the existing bounded private_write_program plus original binding and private_read once per batch. Never pass full receipt rows in argv. Investigate analogous rollback/private-phase consumers with concrete controls. D243/D255, #231/#235. Root owns the independent ready-manifest fix; its hunks remain separate.
Step committed: 3671f88aaee3ae3a34b1a74de03845951bde46b3. The private reader keeps the original file descriptor and checks pathname identity again after hashing, while preserving caller fd3 and its read position. Exact HEAD+one-file projection: shell syntax, fmt, 15 direct prefix controls, all 9 permanent reader tests and library/test clippy passed.
Gate, checked projection. Previously attached VM balanced-pair receipt: 16-hop median candidate/control ratio 0.7766; pooled 40-session wall 5439.08 → 4223.78 ms. This measures the reader component, not final workflow acceptance.
Retained restart composition finding resolved in the frozen retained7 projection: the unchanged fresh_state_matches/fresh_rows_match readers are composed into both staging and cleanup. The real repeated_fresh_restart_restores_the_previous_state_before_replacing_it test passes both restarts, original identity/state preservation, distinct backup and final cleanup (1 passed; host functional duration 211.29 s, not performance evidence). Temporary diagnostics were removed from the live test; original assertions remain.
Gate, source, trace receipt. Caller/module changes remain uncommitted pending assembly gates.
New manual-completion finding: manifest_ready authenticated the original manifest before preparation but used an unconditional final rename after ready-ledger updates. A real sync-step hook recreated the manifest there: old producer returned 0 and overwrote the independent inode. The fix rechecks the original binding and all original ancestor identities immediately before publication; the same control now refuses (71) and preserves exact bytes/uid/device/inode. Separately, raw ready-row capture accepted changed rows when the original bytes were restored afterward; authenticated private_read capture now refuses (71), emits zero bytes, and leaves the original restored. Unchanged real producer completion still passes.
Publication RED, GREEN, capture RED, GREEN, unchanged positive. Permanent real commit_manual and read-capture regressions are queued in isolated manual-ready-source-v1; no full-test claim yet.
Step committed: 62665e56dcb76e786662cc92bad407b00cab17f1, original public-row snapshot producer as its own module before caller composition. Exact HEAD3671 plus only before_image.sh: shell syntax, fmt, all 3 pinned real-producer controls (original rows, changed originals, same-byte snapshot recreation), and SSH library clippy passed. No running command changes in this module-only commit.
Gate, checked projection.
Matched refreshed static-size comparison: control 21,398,448 B; extracted cold-management opt3 21,403,760 B (+5,312); opts 21,364,688 B (−33,760); optz 21,358,064 B (−40,384). Against round-three target58760 at21,265,648 B, z remains +92,416 B: no candidate accepted, no budget raised. Sources/features matched, wrappers disabled inside source namespaces. A separate one-allocation boxed cold-removal future experiment is queued, and the origin/dev merge base
c00c6364e6will receive its own identical-recipe baseline build.Profile comparison, z build. Scratch-only; no production adoption or timing acceptance.
Frozen manual-ready-source-v1 gate GREEN: both permanent regressions pass, including real commit_manual after enroll/activation and the changed/restored manifest-row capture. Shell syntax, workspace fmt and install-test clippy also pass. Host functional duration59.44s is not performance evidence. The original path identity and original-byte assertions remain; source overlay is restricted to the reviewed private reader, ready producer, ready-row capture function and regressions.
Gate, source receipt. No final branch-gate claim; assembly and rollback captured-row work remain pending.
Step committed: 00025b06279ca4cf4120410aba0e6fc70d13b7e9, staging constructors as a separate fixed module before caller composition. Exact HEAD62665+one module: syntax, fmt, four real-producer controls (fresh, missing parents, upgrade, retained base), and SSH library clippy pass. Existing original seeds and retained bytes remain unchanged.
Gate, source projection.
Further concrete RED: after real manifest_initial_emit, manifest_bind, anchor/published proof and rollback_plan_bound, a transient changed/restored raw AWK read of planned-manifest makes actual rollback_retire move an independently recreated public binary into private replaced-binary. Status0; final original plan binding still validates. Destructive RED. Fix in progress: retain admitted original/planned/copied bytes and bindings; parent checks use those bytes, worker checks use original binding and existing private_read once per batch. No current tuple becomes new authority.
Manifest producer real-constructor controls: RED3 shows parent and find worker promote a→d, and changed capture is accepted. Candidate3 retains a→a and refuses changed/restored bytes during capture with71+hookhit. These are direct semantic controls, not the final branch gate.
Correction to prior fixture diagnosis: original panic lines347/421 were final program_c sentinel lookups, not program_a start lookups. Exact serialized source119151B SHA98a410ca87ede6819c86107492ae3723963fa7e649cddb07287eab8b0568405f has program_a=true, wire=true, literal=true, empty_c=true, refused=false. Extractor now preserves the generator's actual empty final binding. Both original semantic isolation controls and install-test Clippy pass; FIXTURE_SHAPE_GATE_V3 exit=0. No cap/timeouts/assertions weakened; final native dispatcher ambient-environment control included.
Independent retired base-created metadata control captured the planned RED: one authenticated-marker positive failed after the base-creation capsule had retired; one strict negative control passed. This is an oracle false refusal, not evidence of public authority being granted.
The narrow follow-up derives the exact original six-inode marker from the retained original creator seed, checks the typed current ledger/stage context and capsule absence, and admits only the exact owned700 empty metadata directory. A second marker, unknown capsule, unknown child, permission mismatch, foreign UID or historical binding continues to refuse. The actual base-writer companion also checks later child refusal. The combined immutable GREEN3 Clippy/native/container gate is pending; no GREEN or exhaustive claim is made here.
activation-retired-marker-red.log
Factual correction to the earlier component benchmark memory wording (including the FD reader’s balanced 16-hop forty-way figures 171092→171122 KiB).
The C launcher’s Linux wait4 ru_maxrss records the largest waited process/descendant RSS. The sum across forty calls is a sum of those individual maxima; it is not a whole-process-tree upper bound, simultaneous RSS/PSS, or a heap-allocation figure. This corrects the earlier phrase “conservative upper bound” and the historical raw field maxrss_kib_upper_bound_sum. The Linux man-page explicitly distinguishes the largest child from the process tree: getrusage(2).
The same scope applies to earlier wire decoder and creator-ledger receipts from this launcher. Original raw values, artifact hashes, CPU/wall samples and functional gates are retained unchanged. They do not establish whole-workflow memory acceptance. Future summaries will use the corrected scope; this annotation records the affected receipt hashes.
Affected immutable receipts and metric annotation.
Frozen independent prepared-source / retired-marker oracle slice GREEN, exit0, after the recorded semantic REDs (#issuecomment-59863, #issuecomment-59906).
Targeted install Clippy passed with -D warnings. Native oracle filter: 25 passed, zero failed, one explicit foreign-UID control ignored there. Separate durability control: one passed. Separate undeclared-alias control: one passed. The literal UID1002 companion then passed inside one newly owned root container with immutable binaries, read-only source/Nix/artifact mounts and private writable fixture state. Total: 27 native controls plus one literal foreign-UID control; this is not a full Cartesian execution.
Actual writer controls include the original head→pending prefix→complete data fsync→value binding→immutable anchor→fixed view→pending retirement→stage/source fsync→public rename sequence, plus actual base creation followed by authenticated marker admission after capsule retirement and later-child refusal. The directory writer trace contains 27 observed mutation/durability boundaries, including 12 scoped durability cuts; these are discovery observations, not 27 separately replayed interruption cases. Missing/invented public bindings, unknown role/source/context, historically bound source recreation, noncanonical metadata and stale fsync after rewrite remain refusal controls.
GREEN3 test-source SHAs: activation_creator_phases.rs 3aa114c34327867565e7f8823159e599aebd030dad45b73065b555255302b19d; activation_ledger_phases.rs 1da392d324a94378c10ed61c0cb487471411031b55e5857ac796b66ce0d3d912; activation_phases.rs 7807c04f2958c92f90556e419d365502f904ce03f63d5f7c86a32fd2305719ea. Complete source manifest attached.
All-eight actual full/filtered scheduler comparison is now queued against a separate nonfinal immutable snapshot with the selected dictionary-only overlay and unchanged command-cap preflight. That snapshot predates the later retained-copy count fix / rollback raw-reader audit. No all-eight equivalence, final performance or exhaustive-coverage result is claimed yet.
activation-creator-green3.log
activation-creator-green3-source.json
activation-creator-green3-proof.json
i24d89b69284a-directory-producer-trace.log
i24d89b69284a-directory-producer-controls.log
Receipt-read follow-up, exact constructors: (1) preserving final newlines added an empty row to the completed-copy count. Real bind_copied_state wrote3 valid rows but refused71; counting captured bytes without appending another newline now succeeds0. (2) the remaining before-image fallback accepted an independently changed original when only raw AWK reads received changed rows, then the exact original receipt bytes were restored. Reproduction: control=refused, changed_original=accepted, original binding valid, hook hit. The candidate captures before-image bytes once through private_read, uses them for ancestor membership and compares original/current streams without reopening the receipt; identical control now refuses the changed original. A completed copy with a genuinely missing original child still succeeds.
Copy-count RED, GREEN, before-image RED, GREEN, missing-child positive. The standalone hook clears command lookup after installing its wrapper; the earlier inconclusive probe did not reach the hook and is not RED evidence.
All9 permanent captured-receipt cases are queued for a coherent Cargo replay plus fmt/clippy; frozen source. These controls are functional, not VM performance acceptance.
Scratch optimization result: authenticated creator-record header parsing can remove two
cutpipelines and one formatting substitution per successor record, retaining final exact header equality and every original file/UID/inode/link/hash/captured-body check. A quoted literal TAB remains on one source line under the shipping compactor. No cache or authority change is proposed.The exact candidate compacts 10 bytes smaller (quoted common binding 9 bytes smaller on the frozen125875-byte source). Gate: strict Clippy; 100 actual
cl_recorddifferential cases (17 accepted); nine existing ledger invariant tests per variant; 15 source/wire/storage tests. These passed. The two exhaustive writer-boundary tests were not part of this optimization gate.Perf VM only, balanced C,A,A,C,A,C,C,A batches, 40 concurrent independent fixtures: at8 hops median batch wall3691.49→3253.12ms, all four adjacent ratios0.845–0.899; at16 hops6334.87→5414.85ms, all four ratios0.735–0.951, aggregateCPU24658.10→21050.23ms. Single emission median373.39→353.06ms at8,531.36→458.93ms at16. Diagnostic
cutcounts16→0 /32→0; stat counts unchanged. At1 hop the concurrent pooled result regressed872.68→1039.41ms (adjacent ratio median1.070);0-hop has no changed header path and noisy apparent gains, so this is not evidence of a universal latency improvement.The VM memory fields are largest-waited-descendant RSS from
wait4, not whole-tree RSS/PSS/heap or a concurrency memory upper bound. The earlier additive memory-scope correction applies; no memory acceptance claim is made. This scratch result is not final workflow/cap/size acceptance and no shipping source was changed.Summary, gate, exact diff, 8-hop raw samples, 16-hop raw samples.
Step committed: 677ad55d5298ccf34bcdcbdbc9673a6fb4e7cf91, one publication/manifest-alias retirement module before separate caller composition. Exact HEAD00025 +one module: syntax, fmt, five real-producer controls and SSH library clippy pass. Unknown bytes, recreated bound artifacts and recreated manifest anchors are retained/refused; canonical repeated cleanup passes.
Gate, source projection.
Exact same-recipe dev merge-base
c00c6364e6x86_64 static baseline:21,225,744 B SHA5d410fee58870fcdbfcd5aba655de9e80e326ac051478b356cdd3522f19b9293. Round-three branch point58760 remains21,265,648 B. Scratch cold-management z+boxed cleanup candidate:21,349,232 B SHA6970b92171109817cce6d78d8c15ded5d2a561e034d83bf3ab87b05d868d8bb7: +83,584 B for this job, +123,488 cumulative from dev merge base; still not accepted. Exact native80 tests pass,5 explicit required/VM companions remain separately pending.Baseline build, baseline source, candidate functional/build, candidate delta. Next scratch experiment reuses canonical path order for child-before-parent cleanup and removes duplicate async states/readers, without changing transport profile or adding dependencies. No final size claim.
Additive manager-observation coverage is being prepared without changing baseline partitions or production behavior. The previous shared Fixture provider ignored explicit initial booleans: both is-enabled and is-active returned 1 for the configured enabled+active case (RED receipt). The exact emitted opt-in provider shell now passes the corresponding functional control (shell receipt); Rust provider controls and install-target Clippy are queued behind the shared build lock, not yet claimed passing.
Each fixture has immutable initial controller booleans outside candidate authority. Successful manager actions append typed transitions to the existing exact witness sink; unsuccessful actions and raw witness lines cannot advance state. The absent-option Fixture branch retains its existing behavior. No global environment mutation, observer exclusion expansion, production callsite changes, or hand-selected interruption ordinals are involved.
The unchanged 24 baseline completion partitions are supplemented by 72 partitions: enabled-only, active-only and enabled+active observations × ordinary/manual/after completion × separate/framed × fresh/upgrade × Root/Rootless. Of those, 36 begin after a genuine original installation; the other 36 are explicitly synthetic fresh manager-cache observations, not a claim about original real service state. Shared discovery verifies the actual was-enabled/was-active create events and derives all mutation cuts and pathname products. Pristine upgrade rollback asserts restoration of initial observations; successful same-transaction resume/commit and repeated Replace assert enabled+active desired state. Synthetic fresh rollback records state with restoration_claim=false.
The full observed cut counts and Cartesian fixture counts remain unknown until actual current-source discovery. Full installation runs remain held: the prior eight-flow scheduler diagnostic stopped at the unchanged argument cap (131815 encoded bytes), before any comparison began. No full product, all-eight equivalence, real systemd, or performance acceptance claim is made here.
Current-source argument finding and scratch representation candidate: the coherent
captured-receipts-source-v1produces 36 setup commands across both modes and short/253-byte DNS names. There are no source-refusal stubs. The longest existing D1 argument is 134,850 bytes, over the unchanged 131,072-byte kernel limit. The common source is 127,886 bytes; the 10,093-byte upload body remains literal. Its 869 dictionary matches cannot be credited as actual argument savings on that branch.The complete 127-token table reports actual token contributions and marginal removal costs on every wire-bound source. A bounded joint search also includes observed syntax fragments, not only identifier prefixes. Accounting includes dictionary descriptors and the existing transport quotation. Exact full-source and independent component scans agree; the actual Rust D1 emitter reproduces the captured binder byte for byte.
The earlier THREE candidate would produce 133,360 bytes for the longest Rootless command; FOUR would produce 132,609. The new joint candidate keeps 127 entries and changes seven total entries. Four additions beyond THREE are
" ] || exit,printf '%s\\n,private_, andstat -c '%; they replacefresh_inspection_proof,manifest_before_contents,preserved_path, andprevious_transaction. The byte model estimates 130,444 bytes, a 627-byte margin. This is not yet a passing dynamic cap result. Strict canonical controls, current generated cap tests, storage attribution, and matched VM measurements remain pending. Shipping source and limits are unchanged.Complete token table, joint search, actual 36-command capture, exact Rust binder accounting.
Receipt capture step: coherent captured-receipts-source-v2 passes all 9 permanent real-constructor regressions, fmt and install-target Clippy. The v1 tests passed but its new helper failed Clippy; v2 changes only that helper to write!, with production bytes and assertions identical. These tests cover inherited parents/find workers, changed/restored receipt reads, copied row counts/missing original children, and destructive rollback using later raw rows.
Gate: https://git.kayg.org/attachments/aa4b4f4e-9cd6-4926-9666-76cf13bb7a8d
Source: https://git.kayg.org/attachments/eaf39fd9-39e2-4063-869a-40d8bd47be57
Compiler-reported test binary SHA256 9203e4bd1ed55d3daa0e23aa4c71e65bd6b689e666335456b32fa8b7ac0a7609, preserved before releasing the build lock: https://git.kayg.org/attachments/5dfd79f1-d1be-479f-8fc3-e9bd9a3fff5e
Native scratch candidate4: 80 tests pass (5 explicit ignored); stripped static x86_64 is 21,342,832 bytes, SHA c47bcd0b0763430b653b730ba314d521ebe2cd5634bc83c8b45fd2d122f860f0. This saves 6,400 bytes against candidate3 but still adds 77,184 against round3 branchpoint (11,648 above 64KiB), before later shell changes. Not adopted; no final size claim. Gate https://git.kayg.org/attachments/dd398e8a-3be0-4834-bd67-5c132ccb95ca source https://git.kayg.org/attachments/edda31ae-afda-4483-ade4-faace8997c35
Read-only existing-codec accounting found no sufficient new storage path: best joined ordering saves 10,179 bytes gross; bounded 2KiB shared seed saves 4,254 after seed storage, excluding decoder/index overhead. Exact roundtrips pass; no new format chosen: https://git.kayg.org/attachments/075c08e5-1d0d-4794-9675-35db2435835d
Completed ready-manifest module step at ac824bfb789290b6115de80f754ba1a29a07ed2d. Exact HEAD+one-module projection passes sh syntax, fmt, SSH library Clippy and 2 actual manual-producer controls: unchanged completion succeeds; sync-time independent manifest recreation refuses71 and preserves both original and independent bytes/inodes. This is module-context verification; caller integration remains pending.
Gate https://git.kayg.org/attachments/9ccafee4-6a54-458e-95a7-b5da063daa18
Projection https://git.kayg.org/attachments/9e91b123-338d-402e-8005-4b406f417453
Native candidate5 static measurement invalidated: the release log did not compile the moved cold crate. Its changed source timestamp preceded queued candidate4 compilation, so Cargo reused candidate4 objects and reproduced its ELF. The 80 ordinary-UID debug tests did compile candidate5 and remain valid; no candidate5 size saving/equality is established. Gates now touch the cold crate entry immediately before static compilation, in addition to existing namespace/cache isolation. Correction receipt: https://git.kayg.org/attachments/aeadc057-850b-400b-8a33-f32377884534
Candidate6 was superseded before execution (empty log/no child) by coherent candidate7: exact StoredIdentity derive/codec placement plus one typed erased enrollment connection-driver future. No external dependencies or grammar/validation changes. Candidate5 static refresh will provide attribution; neither candidate is adopted.
Current head ac824bfb789290b6115de80f754ba1a29a07ed2d. Ready-manifest module committed with its exact projection/context controls; captured-receipt v2 9/9 + fmt/Clippy recorded above. Further module commits await their gate.
The next exact module projection is waiting for a global build slot; its log remains empty, wrapper PID1575973. Corrected dictionary strict/cap gates and service3 controls queue behind the same job lock. No new passing result is claimed. First dictionary scratch files had a generator syntax error and were replaced before any cap execution; corrected dictionary source SHA c5699cce03256aa2fbd2d9195bf3763340544078f09c2db5037f14638924db49.
Native candidates6/7 were superseded before starting; candidate8 freezes unchanged identity JSON grammar in the existing proposed cold compilation unit and shares the two identical CLI HTTP driver bodies, retaining each existing abort owner. No external dependency or runtime transport change. Cold crate entry freshness is forced before its static build following candidate5 correction. Size/performance acceptance remains pending.
Completed crates/plugins/ssh/src/manifest_authority.sh module step at 939407e9fc8fd5633cc0edd0b96822f3173c509b. Source SHA256 b5b76683b11ffed332813bef3473e3e7d0d23bdfac388adb8233278cdb8c33aa. Exact HEAD+one-module syntax/fmt/SSH library Clippy pass; all 9 permanent real-constructor receipt regressions pass with byte-identical module in pinned compiled v2 context (binary SHA9203e4bd1ed55d3daa0e23aa4c71e65bd6b689e666335456b32fa8b7ac0a7609). Caller integration remains pending.
manifest-authority-module-atomic.log
manifest-authority-module-commit-source.json
Focused service gate3 actual results: install-target Clippy passed; all three opt-in provider controls passed (per-fixture isolation/transitions, failed-action witness handling, and actual syscalls confined to the existing witness sink). The production retirement-writer classifier control then failed before classification with observer exit97: syscall83 attempted a filesystem mutation outside its isolated fixture. Complete gate, observer refusal.
The direct control had used mkdir -p with an absolute fixture path, which attempts existing ancestors while traversing from the filesystem root. Test setup now prepares its protected owned parent before tracing and the observed program uses explicit scoped mkdir calls for base, stage and nested directory. The observer's outside-write guard is unchanged. Frozen service4 is queued; the retirement classifier is not yet claimed passing.
The prospective all-eight source snapshot was not executed and is explicitly superseded before cap preflight: it included the source3 setup defect, and the independently confirmed legacy handoff authority defect requires a new coherent production candidate. The all-eight scheduler comparisons remain 0/8 on this candidate. The planned 96 partitions retain all cut/path/variant/recovery dimensions, with actual cut/path/product counts still unknown until discovery.
SEVEN dictionary candidate: matched byte, cap and perf-VM gates are GREEN; selected for a separate atomic projection, with no live dictionary change in this step. This reuses the existing 127-word representation and canonical decoder; decoded public source, parser rules and the 131072-byte argument ceiling are unchanged.
Exact candidate
shell_words.rsSHA256:c5699cce03256aa2fbd2d9195bf3763340544078f09c2db5037f14638924db49. The matched public common source is 127886 bytes, SHA2565fb04f27cf8c6a8e3b9191fa10acd26d03ca58cc5de97ee8c3f5d2f11d77cc2c. Manifest SHA256:83c50b990ca84ee5abcbd3c6cf0f8c0b8a9f5f45ed5e3adf14901b09efbdb783.Functional results: strict standalone Clippy and all 35 unchanged canonical/byte controls pass. Actual regenerated setup caps pass across all nine commands, both privilege modes and both normal/253-byte DNS cases. Group maxima are 130207, 129781, 130444 and 130018 bytes; overall maximum 130444, leaving 627 bytes below MAX_CHECKED=131071. Inspection/recovery caps also pass (largest 121624 bytes). All 36 captured commands contain zero source-refusal stubs. These results use frozen captured-receipts-source-v1 with only the dictionary and a new capture-only test changed; existing assertions are unchanged.
Matched perf-VM results (same source, verified manifest, CPUWeight=10000, serialized perf lock): plain binding 128099 bytes, D1 indexed wire 104831, SEVEN 100706. Single bind/decode/execute median changes 86.0715→79.4321ms; p95 117.0005→100.0300ms. Forty-concurrent balanced batches change median wall 930.9454→763.2765ms and aggregate CPU 3522.1475→2878.9180ms. All four adjacent candidate/control wall ratios improve: 0.869319, 0.794153, 0.833866, 0.908560 (median paired ratio 0.851593). Release-z encoder warm median changes 3.8011→3.1862ms, cold 4.4653→3.4586ms. Plain median is 5.4365ms, so this is an improvement within the encoded representation required for argv limits, not a claim that encoding beats plain text. Setup code is never evaluated by this component probe; exact decoded source and original private stdin preservation are checked.
Measurement scope: this is the frozen v1 component, before the forthcoming legacy handoff/receipt fail-closed shrink. A fresh aggregate cap gate is still required after that fix, plus the separate atomic dictionary gate. This is not final workflow/performance/whole-static-size acceptance.
wait4ru_maxrss is the largest waited child/descendant RSS; sums across 40 invocations are not whole-tree RSS/PSS/heap or an upper bound. No memory acceptance is claimed; the earlier additive RSS-scope correction remains applicable. The valid fixed-literal storage sample reference suggests −972 bytes, but grouped Program/LTO/whole-ELF attribution is not established by that sample.Raw receipts: strict controls, actual cap gate, cap summary, VM samples, verified VM manifest, RSS scope correction.
The initial malformed scratch-generator attempt failed before tests/caps and remains superseded; these successful replay receipts are functional2/cap2. No production files were copied or committed by this measurement step.
Confirmed private-retirement late-control P1: the original pending directory identity was already encoded in the outside proof, but final pending cleanup did not recheck it. A deterministic hook after the actual read-only find pass replaced the directory with a same-UID canonical empty directory while holding the original inode. The old function deleted the independent directory, then returned72; a swap after peer unlink deleted it and returned0. This reproduces the current shipping helper behavior, not a synthetic parser model.
Bounded fix (uncommitted): shared control validation now rechecks the original outside proof inode/hash and exact link count, pending directory identity, and exact peer relationship immediately before each pending-proof unlink, pending rmdir and final outside-proof unlink. Missing completed controls remain resumable. Structural AWK consumes the authenticated captured private_bytes from retire_load rather than reopening the proof pathname. No format, cache, parser limit or argument ceiling changes.
Module design comments and two permanent Rust regressions were added before implementation: after-readonly and after-peer-unlink swaps, each empty/with-original-peer, retaining original inodes; and a parser-time raw-path edit/restore proving the structural parser uses its authenticated capture. Direct shell RED→GREEN: all four independent replacement variants now return72 and keep the exact replacement inode. Captured-parser probe now succeeds. Actual successful deletion discovery finds10 cuts; all20 repeated resume calls succeed. sh -n, narrow rustfmt and diff checks pass. Cargo/integration gates are not yet run; parent coherent v3 gate remains required. No commit was made in this step. Current module SHA256 a1e5615dd0775189757e45d734fce0283266008e41999d4c13ac2b8474c4e941.
Receipts: RED, GREEN exact preservation, 10 cuts /20 resumptions.
Focused service4 gate is GREEN (exit0): install-target Clippy passed, all three provider controls passed, and the actual production retire_prepare/retire_resume control passed. Gate output, proof summary, frozen source manifest.
The retirement control observed 28 actual mutation/durability boundaries and independently checked all 28 trace prefixes. Its observed calls are mkdir 4, openat 5, write 4, fsync 5, linkat 1, unlinkat 6, rmdir 3. The exact original stage inventory and canonical commit-intent digest select roll-forward; the parent directory barrier is tracked separately, so the mkdir→barrier interruption is not mislabeled as rollback authority. Selection survives complete stage/proof retirement. Empty trace, unknown binding schema, missing event, wrong host, forged intent digest and incomplete inventory all reject (six controls). Actual metadata-only trace. These 28 prefixes are a direct writer/schema control, not 28 replayed full installations.
The shared Scenario runner now keeps baseline 24 partitions and adds 72 service-observation partitions: 36 after a genuine existing installation and 36 explicitly synthetic fresh-cache cases. It verifies conditional was-enabled/was-active producers from actual discovery creates. Modeled pristine cases retain the stopped trace and selected recovery-phase metadata before recovery; existing-install rollback asserts initial service observations while rollback authority applies, and committed cuts/same-transaction completion/repeated Replace assert enabled+active desired state. Synthetic fresh rollback records observations with restoration_claim=false. Prepared 96-partition scope.
No shipping code was changed in this slice. No all-eight actual scheduler comparison, full Cartesian product, VM performance acceptance or final fast-gate completion is claimed. The prospective eight-flow snapshot is superseded without execution pending the independently identified legacy recovery authority fix, followed by a new coherent-source unchanged cap check. Actual full-product cut/path/count totals remain unknown until discovery.
Independent current-v2 review found four control paths that still bypass original identity authority. Full matrix held; no acceptance claim.
Design adjustment before implementation: the already-durable immutable fresh proof becomes the SOLE new-flow service-complete admission barrier. Remove redundant creation/reconstruction/deletion of the unbound four-field outer receipt. Existing legacy outer receipts remain untouched, reported and refused before mutation; proof-only recovery, preserve/staging phases and partial private retirement remain supported. This is a change to internal fresh-recovery representation; existing user-visible recovery outcomes remain. New actual-producer regression is added before the change: interrupt after successful base rmdir, independently create/recreate legacy outer file, repeat rollback twice and require same inode/bytes/proof retention. Existing fixtures will target the original immutable proof rather than silently consume legacy records.
Other repairs: legacy handoff fallback only retains/reports/refuses; fresh-proof derivation uses authenticated captured rows and ORIGINAL inode coordinates; all pending capsule/peer removals use one original-control check at each mutation. Coherent v3 compiled gates and complete generated matrix are still required.
Recovery v3 stopped before tests at Clippy unused_self in the new legacy fixture helper; v4 changes only that helper to an associated function and includes the already-proposed contract wording. Assertions and production source unchanged. V4 Clippy now passes; constructor/recovery tests pending.
Direct current-source probes: both fresh before-image/active-manifest constructors preserve the original r rows and exact complete output; before the repair each emitted a substituted f row. Both independent legacy outer-receipt cases refuse with exit72 and preserve uid/device/inode/hash, held original and any original fresh proof. These are narrow direct controls, not full matrix acceptance.
Native candidate8 static rebuild is valid (cold management crate explicitly recompiled): stripped x86_64 musl 21,327,760 bytes, SHA256 647ff9ec136166391f0bdf42fd093ab6d72798533208820c6713323f386a5214. Delta +62,112 against task branch point58760 (21,265,648); cumulative +102,016 against dev merge basec00c6364 (21,225,744). Candidate8 saves15,072 against valid candidate4. No per-step candidate5 size claim: its stale static result remains invalidated. Candidate8 has not been adopted; matched performance and final-source both-architecture sizes remain pending.
management8-shared-z-size.log
management8-shared-source.json
fresh-reader-before-green.json
fresh-reader-manifest-green.json
fresh-receipt-live-green.json
New focused v4 finding: repeated Replace validates a partly retired private stage before dispatching the original retirement intent. Actual production retire_prepare/retire_resume interrupted immediately after successful rm(kind) leaves original transaction/proof. Exact restart prelude + full rollback dispatcher returns71 for both commit:upgrade and rollback:upgrade; full rollback dispatcher alone resumes0 from identical disk. No function stubs. Added permanent generated deletion-boundary regression before changing production ordering; proposed repair dispatches the original authenticated retirement intent before ordinary stage admission.
result.json
review-v4-restart.py.txt
V4 compiled and passed install-target Clippy, but SSH library gate failed62 passed/2 failed/2 ignored: multiline quoted manifest child-worker violates existing compaction invariant; synthetic bounded-step fixture used retired dictionary word fresh_inspection_proof. Preserve assertions: child worker now stays on one physical quoted line, and fixture uses retained manifest_before_parent (same22bytes, same124,800-byte body and unchanged limits/behavior checks).
Focused fresh-proof-only review found validate_retired_stage retained unreachable legacy-schema fallback. Both real callers already require immutable proof; disappearance must refuse. Permanent missing-proof regression added before repair; direct real-helper RED0 -> GREEN72 preserves original stage/inodes/bytes. Removed fallback rather than inferring new authority. New retained restart regression enumerates actual rm/rmdir boundaries for commit/rollbackupgrade and repeats restart twice. Direct kind-deletion reproducer now restart0 for both actions with original intent dispatched ahead of ordinary stage checks. Compiled pre-fix regressions and coherent v5 integrated gate remain pending.
recovery-v4.log
recovery-v3-v4-delta.json
missing-fresh-admission-red.json
missing-fresh-admission-green.json
retained-restart-v5-direct.json
Resumable checkpoint, HEAD939407e9fc8fd5633cc0edd0b96822f3173c509b; implementation is still WIP, not final. Reconstruct either frozen source by git archive939407e9 plus attached overlay archive (SOURCE-MANIFEST.json lists original HEAD/deletions/source hashes). Pre-fix v4 regression source archive SHA2569f56b77fb3b0bb17593200375c90411be1604ac892a06f4fdee4b13db5b9967d; coherent v6 SHA256dc61a9b958a8e0133fea26b488b24ee8822f4e491740f2cbe814b613579d044c. V5 superseded before execution after compaction coverage was strengthened for all new module sources.
Native control functional gate now running; pre-fix new retirement regressions and v6 critical gate queued sequentially through job lock/global slots. New direct v6 controls pass fresh recovery with kind/transaction/entire-stage missing and both captured-row constructors. Full96 partition matrix, current service40, shell35/recovery12, final native/profile qualification, both final static images, atomic integration and branch-head fast remain outstanding. Browser10 historical asset/source evidence remains separate; no UI source delta. Checklist attached distinguishes stale/failed receipts from acceptance. No push/deploy.
recovery-v4-regression-source.tar.gz
recovery-v6-source.tar.gz
completion-checklist.md
Candidate8 matched performance preparation: no live implementation adoption and no performance result yet. Frozen control source is management2-control-source; candidate8 is management8-shared-source-z. Both new probe trees preserve their size-comparison source and feature manifests, with only the ignored lifecycle probe, its module declaration and corresponding typed-codec adapter added. Release artifacts will be rebuilt in the one shared target, with cache wrappers unset inside the ordinary-UID source namespace and all relevant local crate entrypoints refreshed before each Cargo build. No old candidate3 test ELF will be reused.
The first control functional gate is RED overall, with these valid subsets: native tests147passed/18ignored; CLI remote tests15passed/3ignored; native all-target ClippyGREEN. Final CLI Clippy found manual_assert_eq only in the new scratch probe token assertion. Ignored timing probes were not run on the build host. V1 source/log are retained. Matched v2 changes only the assertion form to bind the exact same equality predicate and assert that predicate, keeping invitation fields out of Debug failure output. Common v2 probe SHA256: 2e4c59d878fbfb36fc69dd6ac38fbdddfb964e33d2a7133faff5a96202d84048. Rustfmt/shell/Python syntax checks pass; v2 Cargo gates have not run yet and wait behind critical recovery gates.
The forthcoming release-only VM pair covers typed JSON1024/8192 bytes and refusal grammar; verified TLS with actual redeem, ordinary join and journaled join, success/HTTP403 on current-thread and two-worker runtimes; existing actual manifest cleanup/runtime-lock/transport probes. The shared HTTP driver adds one temporary explicit box per connection. Process memory observations cannot establish allocator-exclusive bytes, persistent per-host/session cost or whole-tree RSS/PSS. No such claim is made.
The existing frozen candidate8 static artifact is21327760bytes, SHA256647ff9ec136166391f0bdf42fd093ab6d72798533208820c6713323f386a5214. Its+62112bytes versus587 and+102016versus the development base remain disclosed, provisional source accounting; neither final size acceptance nor broader correctness/performance acceptance follows from that artifact. Final shell-source refresh/contributor accounting remains required.
Receipts: control functional RED, valid subsets retained, matched v2 provenance.
Checkpoint at HEAD939407e9; still WIP/unpushed. Corrected compiled pre-fix regressions now demonstrate intended failures: repeated retained restart exits72 at an actual private deletion cut; retired-stage admission without immutable proof incorrectly succeeds0. Initial fixture incorrectly loaded guard before initializing base; that earlier failure was fixture-only and is not production evidence. Corrected source changes only fixture initialization order. Other focused rows pass:11 captured-receipt,2 legacy handoff (20 same-byte inode variants,40 repeats), actual recreated legacy outer, setup/recovery caps. Largest checked ordinary command129590 including253-byte DNS; unchanged cap131071.
V6 gate canceled by exact own waiting PID2382944 before execution; v7 draft never ran. V8 integrated gate stopped before tests at new recovery fixture expect_used lint; v9 fixes only accessor diagnostic form (same invariant), queued full SSH all-target Clippy/library/full install/ownership+ordinary recovery. New reporting control: recreated pending directory retained72 but no Left report; direct GREEN now preserves same identity and reports its exact path. Shared private-retirement admission/control refusals use one reporter, retaining their original status, without another process.
Ownership/recovery fixture migration now keeps modern partial-stage tests on actual immutable inventory checks, with original stage/proof/bytes retained; only old-format controls create legacy outer receipts. Three legacy75 expectations explicitly become modern inventory71; all R3 assertions unchanged. Runtime replay still pending the current compiled helper.
recovery-v4-regression2.log
recovery-v8.log
result.json
private-pending-report-green.json
ownership-recovery-fixture-migration-audit.md
Frozen v9 pristine observer Upload exit 71 diagnosed as a fixture environment regression. The compiled install pin is
4a6584550f61c81b1379680f0ad601184e7ed22f19801405a3eb359320aad4f5; helper pin is6a5aafc37968e420865b8623e9aef8611012640a55ac7b7c4ea33dfdaf24ff28.Boundaries.runstarts its Python observer with PATH but omits the per-fixture FT_ROOT binding used by ordinary Local commands. The exact fixture decoder dispatch therefore tries/tools/awk-wireand exits 127. The generated checked public-source assignment converts that decoder failure to exit 71, before payload/lease mutation. A lightweight control using the exact frozen v9 dispatcher and mapper returned 71 without FT_ROOT and 0 with FT_ROOT. This is a fixture transport defect; the control does not claim a full installation replay or a shipping admission failure.Raw public-source-only control. No source or assertions changed during diagnosis. The broader matrix remains held: 0/8 current-source comparisons, no full Cartesian execution. Proposed correction is to match Local's explicit fixture environment on the observer command, then replay the unchanged exact unit under the serialized gate.
Integrated frozen9: checked_staging_survives_a_buffering_payload_reader_and_reuses_the_cache fails before receipt (install.rs3216). Exact frozen fixture head ignores named-file arguments: public control head -c 4 -- PUBLIC_FILE returns stdin bytes, whereas native head returns file bytes. The new authenticated proof reader uses that named-file shape, so the fixture consumes transfer stdin during a metadata read.
Narrow test-tool correction: buffer only exact anonymous -c N; delegate all other shapes to installed head. Applied to the two buffered readers and streaming reader. No production or test-assertion changes. Exact named-file and anonymous controls now pass; unchanged compiled regressions pending.
red control
corrected controls
Separate ordinary interrupted-lock cleanup/retry failure is being diagnosed; no successful full install gate claimed.
Frozen v9 interrupted parent-capsule retry failure reproduced with the exact STAGE_TRANSACTION, SETUP_GUARD, LEASE, FRESH_CLEANUP and ROLLBACK_TRANSACTION programs dumped by pinned helper
6a5aafc37968e420865b8623e9aef8611012640a55ac7b7c4ea33dfdaf24ff28. No invitation or payload/private content was supplied.The real mkdir followed by fixture exit produces status 42. Original rollback returns 0 while the public parent remains absent and the original ancestor capsule remains. A new transaction then recovers and publishes that original capsule, but staging returns 71 because the original transaction record cannot authorize the new transaction. The guard invokes recover_base_creation only inside its parent-exists branch; rollback then takes its base-absent no-op branch. This is distinct from the observer FT_ROOT defect and confirms the parent-recovery dispatch gap.
Metadata-only receipt retains role/type/UID/device/inode/mode/hash snapshots after all three steps. No private bytes, shell source, source changes, assertion changes, or extra heavy gate. The existing ordinary retry test remains unchanged. Parent owns the production repair; full matrix remains held.
The narrow setup_guard correction now selects the recorded capsule ancestor when the immediate parent is absent, validates and locks it before recovery, then rejoins an already-published public parent by original fd identity before any recovery. It runs the existing recovery machine, never a constructor. Only setup_guard.sh changed for this production repair; SHA256
0555e9664db42cc1405880041f85fb920a5f6705a8f8d3b7d983d9e56f599d39. Shell syntax passes. The separate observer-environment fix remains frozen atop unmodified source9 in its queued focused gate.The exact pinned9 program control replaced only the original setup_guard definition; reversing that replacement reproduces the original dump byte-for-byte. Original interrupted stage returns 42; with an independent capsule entry, rollback refuses 71 and preserves its original inode/hash; after the controller removes only its sentinel, original rollback returns 0 and removes the capsule/base; new-transaction staging returns 0; final rollback returns 0. Metadata-only control. The original retry refusal is separately traced to the correctly strict original transaction binding, metadata-only predicate witness.
Reporting remains unresolved: the unknown capsule entry is preserved and refused, but the existing base-creation reader emits no Left line. This control is not full-contract GREEN. No assertions, source limits, or interruption cases were removed; the complete matrix remains held.
Additional test-oracle correction while investigating the buffered-reader failure: streaming.rs hash wrapper marks image progress after any stdin hash byte. Public metadata-only input reproduced that false witness (marker created before image input). New admission buffers exactly the public fixture image header (10 bytes), forwards it to the real hash child and acknowledges progress only for that image header. Metadata negative control now has no marker; image positive control has one. Original streaming assertions, transfer-tail barrier, sample size and deadlines unchanged; no production change.
negative control before correction
metadata and image controls after correction
Queued compiled buffered-reader gate now selects immutable buffered-readers-v9b-source; v9 draft was superseded before execution. All three exact compiled regression counts must be one and pass. Full install9 is still running with known failures; no final qualification claimed.
Direct-source guard and reporting repair qualification for #231 / #235; this is not a Cargo or full-matrix result.
The missing-parent guard now locks the recorded capsule ancestor before original recovery, then validates and acquires a published parent by exact fd identity if publication raced ancestor selection. It invokes the existing recovery machine and never constructs a new transaction during inspection/rollback. setup_guard.sh SHA256
0555e9664db42cc1405880041f85fb920a5f6705a8f8d3b7d983d9e56f599d39. Guard-only direct control: interrupted real mkdir42 → original rollback0 with capsule/base removed → new transaction stage0 → rollback0. Its separate unknown-entry witness was preserved/refused but exposed the missing report before the reporting repair.Base-creation custody checks now reuse shared fresh_refuse PATH 71. One bc_empty helper reports exact unknown children; existing schema/type/UID/inode checks and refusal status remain. The single failed bc_parent_rows capture forwards its existing public producer output, preserving Left diagnostics including path newlines; successful rows stay captured. Producer-closure audit found only generated identity/hash/hexpath rows and retention reports, no file contents or private input. base_creation.sh SHA256
c62a59fef0f4e44b817434d57cf5ffd99f4c74518b6087d546c871c422362005.Direct reporting flow: statuses42,71,71,0,0,0, with exact sentinel Left path and unchanged inode/bytes on both refusals. Custody and captured-report controls: eight repeated custody controls (edited record, identical recreated record, bound-directory recreation, unknown child ×2), plus two actual parent-row capture controls retaining a newline-containing child path and its exact report. The corresponding permanent tests were added to the existing base_creation_round4 module; their Cargo gate is pending. No old assertions or thresholds changed.
Read-only review: bc_empty is an ordinary function, so its fresh_refuse terminates the current shell even in conditional/errexit-suppressed contexts; its dedicated loop variable does not overwrite callers. Failed captured rows are printed through literal
%s, never evaluated, and the branch still exits71. Exact compiled caps and relevant concurrency/recovery gates remain required. The separate observer FT_ROOT correction is frozen against source9 and queued behind the existing jobs. All broader comparisons remain held: 0/8 current-source pairs; all96 partitions remain planned, with actual cut/path counts and the full Cartesian product unexecuted. Full preservation acceptance must check Left reports as well as retained identity/bytes.Confirmed fixture-phase diagnosis and test-only migration (Cargo qualification pending).
The earlier-cache recovery fixture called real
old.stage, which already publishes the runtime root and seals its creator row. Its factory then appended a duplicate runtime row directly to the immutablecreated-dirsinode. A broadrollback().is_err()assertion accepted that early ledger refusal, leaving the setup lease alive; later inspection correctly reported Busy. The intended case was a later foreign-root refusal after durable fresh cleanup.A direct disposable control using the pinned v9 helper (
6a5aafc37968e420865b8623e9aef8611012640a55ac7b7c4ea33dfdaf24ff28) confirms the distinction: original raw append -> ledger refusal, rollback72, no fresh proof, exact lease still live; corrected original-production row -> rollback72 with fresh proof present, transaction/socket retired, foreign sentinel preserved. Original diagnosis, corrected control.The Rust fixture now asserts that real staging created the runtime root, keeps its dead socket/cache replacement checks, and additionally requires the immutable fresh proof after the expected rollback error. Remaining raw-append factories were migrated without changing their preservation assertions: readiness uses real enrollment and
commit_manual, interrupted immediately after the real readiness rename; nested rendezvous publication calls compiledSHARED's existing typed producer over public-source stdin. The raw append helper is removed; no reset/reseed/new producer role or current-path ownership capture was added.Direct production-source controls reached rendezvous producer0 and its intended durable fresh phase while preserving the stale nested socket. The readiness control reached JOIN0/activation0, exact post-readiness-rename cut99 with canonical nonce, then rollback0 with base absent. Rendezvous control, readiness control. These are bounded direct shell/source controls, not a compiled Rust fixture-suite verdict. The helper source file is rustfmt-clean; the modified Cargo tests remain pending the shared gate. No shipping behavior changed and no host performance numbers are claimed.
Structural diagnostic fix: shared fresh_refuse currently writes stdout, so a nested inventory capture can swallow its exact Left report despite retaining/refusing the independent path. Direct actual-reporter control, including a newline in the public fixture path: exit71, unchanged inode/bytes, no outward report before correction.
All seven existing Left sites now use stderr (legacy handoff already did); status and message bytes are unchanged. Failed canonical-row captures no longer need per-assignment forwarding or emit partial rows. Production parser review found no Left stdout consumer: setup/transfer/linger/check readers consume named receipts, while command failures preserve numeric status with allowlisted stderr classification.
red captured-reporter control
green exact newline-path stderr, clean stdout, same identity/bytes
New round4 exact-report assertions are moving to stderr with added stdout-empty checks; status/identity/bytes assertions retained. The generated preservation oracle is adding a per-probe matcher over both output streams, retaining only an exact known-path boolean, reset every attempt; arbitrary process output and private stdin are never recorded. Negative controls must reject retained+nonzero without an exact report and stale witness reuse. Cargo/current integrated gates remain pending; frozen9 is unchanged and still running.
Additional standalone fixture dependency correction:
legacy_acquisition_bytes_do_not_authorize_an_unrecorded_inodeloadedfresh_cleanup.shwithout the sharedcreation_proof.shreporter. Thus it returned127 (fresh_refuse: not found) before its intended refusal assertion. The test now includes the real shared module; expected status72 and original byte/UID/device/inode preservation assertions are unchanged. No shipping behavior changed.Direct real-module control: omitted dependency127; complete dependency72; both retain the exact original marker; corrected diagnostic uses stderr and stdout remains empty. This is a bounded direct source control and rustfmt check, with the compiled Cargo fixture verdict still pending the next shared gate.
Retention reporting qualification update for #231 / #235. The earlier stdout-forwarding proposal is superseded by centralized terminal diagnostics on stderr, which also keeps STEP/FAIL stdout clean and carries exact reports through command substitutions without a new channel or line parser.
Direct-source controls splice the current shared fresh_refuse function into pinned9 definitions; they do not assume the old helper already contains the channel change. Eight repeated custody controls plus two actual captured/newline-path controls pass with exact stderr reporting and empty stdout. Current shared guard control passes six cases: mode775 and symlink refuse71 with exact stderr, owned755 succeeds0, each repeated twice with unchanged UID/device/inode/mode/link count. Permanent counterparts are added to the existing test module. These are direct-source results, not Cargo or full-matrix acceptance.
The test transport now has a per-probe in-memory retention witness shared with the original interrupted transaction. Local's existing execution core accepts an optional matcher, and Boundaries observes both channels before failure mapping, including its stopped-to-Local route. It saves only canonical expected public path prefixes and a boolean, never arbitrary failed output or private stdin. Every inspect/rollback/restart/commit/Replace attempt resets evidence. Strict preservation keeps every original identity/byte assertion and additionally requires a fresh exact Left report; typed producer adoption retains its independent binding/durability proof. Only a verified live own lease73 may defer reporting until the mandatory inactive inspection. Expected paths are the candidate plus independently changed descendants; no ancestor or pathname-prefix exemption was added.
The exact std-only matcher control exposed a whitespace-only reason false positive (RED), then passed after requiring actual reason bytes before the closing newline (GREEN1). It also covers wrong paths, incomplete reports, embedded path newlines, both output channels and stale evidence. A real-transport retained+nonzero/no-report negative control, private-stdin non-evidence control and unchanged-descendant exclusion control are added but await integrated Cargo qualification. File hashes and scope record.
The environment-only frozen9 gate remains queued behind existing serialized jobs. No new heavy gate, v10 source capture, or broad matrix run started. Current-source comparison count remains0/8; all96 partitions remain required, with actual Cartesian counts and VM feasibility measurements pending.
R4 parent refusal reporting: the actual setup guard refused an owned mode-775 parent with exit 71 but omitted its retained path. A shared bc_guard_directory predicate now preserves the existing ownership/type/non-writable-parent checks and reports the exact retained path; strict private-directory mode-700 admission is unchanged. Actual guard controls: GREEN 4 (two repeated unsafe-parent refusals, accepted owned mode-755 parent, rejected symlink); sentinel UID/device/inode/bytes unchanged. The two incomplete positive fixtures omitted required context and are excluded from production evidence. Compiled qualification remains pending.
RED GREEN Excluded fixture attempts
R4 new production finding: upgrade rollback admits its private stage before manager calls, then retire_prepare/retire_contents observes the current tree after those calls without re-admitting the typed phase. Actual pinned-v9 producer replay: fresh stage/join/activate/commit all 0, upgrade stage/join/activate all 0; daemon-reload callback creates an independent mode-600 child and records its UID/device/inode outside stage; rollback returns 0 and deletes it, repeated rollback also returns 0. No raw receipt edits or producer stubs. Compiled regression is queued.
Chosen structural correction: at the shared retirement-publication boundary capture rows, admit the complete typed private phase, require a second inventory to equal those captured rows, and publish only the original captured stream. This fences every retirement caller rather than adding checks around individual manager calls. Unknown or changed entries remain and must be reported. Pending/existing immutable retirement phases retain their original digest authority.
Actual producer RED
The standalone
native_preintent_identity_uses_its_prior_copy_creatortest also had incomplete source composition: it loaded the identity admission module but omitted the sharedbc_directory,fresh_refuse, andcl_existsdefinitions. The full9 run therefore returned127 before its intended successful original-identity case.Only test dependencies changed: real creation-proof, base-creation, and creator-ledger module definitions now precede the existing admission modules. Loading them invokes no producer. All original status and identity/inode/byte-preservation assertions remain unchanged. Direct unchanged eight-case matrix: incomplete source gives eight127 results; complete source gives0/71/71/71 for both bound-root variants, preserving every original observed identity. The original FD stays open during same-byte independent recreation. Rustfmt is clean; Cargo qualification is pending the shared gate. No production behavior or performance claim changed.
Prepared complete-matrix feasibility accounting while the genuine late-private retirement fix remains in progress. No new build, actual discovery or VM run was launched.
The planned set remains all 96 partitions: both modes × fresh/genuine-upgrade × framed/separate × ordinary/manual/after × four manager observations. The 36 fresh service supplements remain explicitly synthetic cache observations; the 36 upgrade supplements start from a genuine installation.
For each independently discovered partition with C actual syscall/durability cuts and P named candidate paths, the required product is 3CP mutation tuples, two preservation workflows (6CP logical route-equivalents), plus 3C pristine recovery routes. Actual fixture allocations are recorded separately because strict unchanged-tree batching can reuse original cut identities; every group with legitimate mutations/adoption falls back to both original fresh-fixture workflows in full. Discarded batch work is overhead, never counted completion.
The explicit accounting checker requires all 96 distinct source/artifact/trace/universe-pinned inventories and verifies observed trace/path counts and product arithmetic. Its synthetic controls passed: complete-set arithmetic, and rejection of missing partition, duplicate partition, changed receipt hash and changed trace count. This is accounting qualification only; current-source cut/path counts and runtime projections remain unknown.
The prepared pilot preserves every required final case. It first compares the same finite diagnostic cases through isolated and strict-batch routes, requiring unchanged original tree/identities and exact reset-per-operation Left reports. It then measures an actual whole cut with all P×3 cases when bounded measurement fits the perf-VM lock, recording actual four-worker throughput, fallback groups, original-upgrade warmups, guardian teardown and route counts. All performance projections must use that matched-source VM evidence and actual complete inventories, never the shared-host full-suite duration or obsolete observer samples. Existing START_CUT suffix runs remain diagnostic; final resumed acceptance requires a source/trace/universe-bound union of complete cut receipts.
Raw preparation files remain outside checkout: activation-matrix-feasibility-plan.json, account-activation-product.py and evidence/activation-product-accounting-unit.json. Complete actual matrix execution and current-source observer equivalence remain pending.
Prepared matrix orchestration against the immutable recovery-v10 source only; no build, fixture execution or comparison was launched.
Verified all 72 parent-manifest source hashes. Source manifest SHA256: ad9f6f2e57f7a7e9b33448d7998ff99b32be30054bf03c392c23b61570016dea. Retirement module SHA256: a7716f99f6ba345289a5f5749f6c00cb9a538b207f7296fd13f8f9803d320ffb. Frozen observer environment and per-attempt report witness match the prepared source. The genuine late-private test requires refusal, the original UID/device/inode and bytes, and a fresh exact report on both rollback attempts.
Read-only review confirmed retirement preparation retains the first row capture through typed admission and identical recapture; the low-level inventory writer receives those original bytes, and publication compares the original argument to the current capture before writing. Consumer fixtures supply their own synthetic inventory without substituting for whole-setup admission. This is source review, not a claim that the v10 regression passed.
The prepared runner refuses missing compiler pins or artifact-bound critical results. After the parent critical gate succeeds and scheduling releases, it runs the unchanged setup and cleanup argument-cap controls before all eight matched full/filtered observer comparisons, with immutable staged executables and checkpointed ordered-equivalence receipts. All 96 complete partitions remain planned. Python syntax and shell parsing checks passed for the orchestration scripts; compilation, caps, current-source equivalence, counts and Cartesian execution remain pending.
Current structural correction is frozen as recovery-v10 (72 changed source files, base939407e9fc8fd5633cc0edd0b96822f3173c509b). Retirement preparation captures rows before complete typed-phase admission, requires an identical recapture, and passes the first admitted bytes to publication. Pending/repeated retirement remains bound to the original on-disk digest. Unknown private roots identify their exact retained path. Genuine regression requires nonzero refusal, original UID/device/inode/bytes, and a fresh exact Left report on both rollback attempts. Consumer-only fixtures now explicitly supply their fixed synthetic inventory to the low-level writer; none overrides setup admission.
An intermediate direct overlay preserved the independent file on both attempts (75); it did not qualify reporting or current-source compiled acceptance. A subsequent diagnostic expired before initial activation completed and is explicitly excluded. Current compiled gate is queued, not green. Full-v9 suite also found a fresh-restart success regression (none variant71), now under diagnosis and included in the focused gate.
Current source manifest Intermediate preservation control Excluded control Scope/qualification
Correction to the immediately preceding v10 checkpoint: repeated_fresh_restart_restores_the_previous_state_before_replacing_it passed. The failing
nonevariant71 belongs to the following retained_base_cleanup_keeps_original_data_and_refuses_recreated_custody test. The standalone finish_fresh fixture composition is being diagnosed. Both are included in the focused v10 gate. No production conclusion follows from the earlier mistaken label.A further standalone fixture composition fix is now a test-only delta after frozen source10.
retained_base_cleanup_keeps_original_data_and_refuses_recreated_custodyomitted the real private-reader and manifest-helper modules from its directfinish_freshprogram, causing its unchanged successful-original case to return71.Only
private_write.shandmanifest_authority.shdependencies were added. All original successful-cleanup, retained-data, independent-recreation, and immutable-proof assertions remain unchanged. Direct four-case control: incomplete source returns71 for all cases; complete source gives0/71/72/72 for unchanged/terminal/owner/base. The unchanged case removes only the originally created owner/bin/proof; every replacement case preserves its original proof and retained data. Original rows are recorded during fixture construction before mutation, with no later ownership capture. Rustfmt is clean; Cargo qualification remains pending. No production code changed.Resumable R4 source checkpoint: HEAD939407e9fc8fd5633cc0edd0b96822f3173c509b remains unpublished. The72-file source11 overlay is attached (351660B, SHA25656fd3a0bcdf46e821c4d821f2504a938c3a8df394fdcd21e3c6010941c5a5274); reconstruct with git archive that base plus overlay and embedded manifest. It contains current structural retirement admission/reporting and all diagnosed fixture migrations, not a qualified final head. Source11 differs from10 only in the retained-base standalone fixture reader imports. Source10 was canceled before execution (empty log/no children).
Full frozen9 remains running and has9 actual runner failures so far; they are diagnosed old-source guard/fixture cases, covered by current fixes. Its64 library tests and SSH all-target Clippy passed; 2 library diagnostics remain explicitly ignored. Source11 syntax/fmt pass (27 shell modules); new46 file role headers verified. Source11 critical gate queued: gate-recovery-v11.sh,21 selected filters including all raw/private retirement cases, exact reporting, manual-ready/cache/rendezvous factories, retained-base and repeated-restart controls. Compiler pins, matrix caps/eight comparisons/full96 product, final static sizes and final fast are still pending. No push/deploy/completion claim.
Source overlay Archive identity Source manifest Source11 delta Canceled10 receipt
Direct retirement reporting controls reproduced two gaps on the immutable v11 production module (private_retirement.sh SHA256 a7716f99f6ba345289a5f5749f6c00cb9a538b207f7296fd13f8f9803d320ffb). No source/assertion changes or build were made.
The actual low-level writer was stopped by killing only its own proven controller child after its real parent-directory sync, immediately after pending-directory creation and before any proof write. The fixed synthetic consumer inventory was the permanent fixture helper; whole-stage admission was not stubbed. The unchanged pending control recovered with status0. Independent edit, identical-byte inode recreation with original held, and a newly added newline-containing child each refused twice with status72 and retained UID/device/inode/mode/link-count/SHA exactly, but emitted only Left for the stage ancestor. The strict exact-child report witness is RED. A new owned rootless Podman container repeated those controls and added literal UID1002: the foreign-UID child also remained intact on both refusals and was never reported exactly. No host chown or host system-path mutation occurred.
A separate actual complete inventory publication then recreated the proof with identical bytes at the real second-find worker boundary. The first recovery refused72 and retained the recreated proof and all original stage entries, but emitted no Left diagnostic. The second attempt refused71 and the loader did report the proof exactly. This executed the worker private_read failure; the final private_bound-before-unlink silent exit is a source-review finding, not a separately executed control.
A digest-only pending intent cannot identify which descendant changed. A possible correct reporting-only response enumerates all current retained stage entries with an accurate whole-inventory authentication reason on existing stderr, without reading file contents, following symlinks, deleting, or granting any custody. The strict oracle must not accept arbitrary ancestor reports. Output size grows with pathname count and length; silently truncating unknown entries would not satisfy exact reporting. The worker can reuse one small local reporter for proof-read, proof-bound and identity failures without importing whole setup authority. Implementation and current-source Cargo/full Cartesian verification remain pending.
The same direct retirement reporting controls are GREEN against a separate immutable five-file repair projection; original RED receipts remain retained. No build, shipping-source edit or oracle relaxation was made by this test slice.
Projection manifest SHA256 c1179cd1192bdff4ce8746b2e3cba79def99a5d1a18c58c4c43487f34e39b059 binds the four actual modules plus permanent consumer fixture. Repaired private_retirement.sh SHA256 is 9375c58fb45c673bc9a3498dfd79ddbc57df0a889786d268b959b1ac21655c39. All five file hashes and the original harness hashes were checked again after execution.
Host pending controls: four variants, seven recovery attempts. Newly owned rootless Podman controls: five variants, nine attempts, including literal UID1002. Unchanged pending recovery still succeeds0. Each edited, identical-byte recreated and newly added newline-containing child, plus the foreign-UID child, now remains exact in UID/device/inode/mode/link-count/SHA and receives an exact Left report on both refusals. No host chown or host system-path mutation occurred.
The worker proof-recreation control now reports the exact proof on BOTH attempts (72 then71), with the recreated proof retained. An independently strengthened replay checked every original stage entry’s UID/device/inode/mode/link-count/SHA: unchanged on both old-source RED and repaired-source GREEN controls. The old worker’s first attempt still reproduces silent refusal under those stronger checks.
Qualification remains limited to fixed small low-level synthetic consumer inventories, not whole manager transactions or every actual cut/path/phase. The final private_bound-before-unlink interposition was not separately executed. No bounded-stderr limit was changed, and these small fixtures do not establish a worst-case diagnostic bound. Current-source compilation, argument caps, generated full/filtered equivalence and the full Cartesian route products remain required.
The frozen recovery-v9 failure in
interrupted_acquisition_cleanup_receipt_can_resumeis a real missing-parent recovery difference, not an obsolete fixture hook. The actual mkdir producer reaches its acquisition cut (42), leaving an authenticated ancestor capsule before.local/shareis public. V9setup_guardonly invokes capsule recovery when the immediate parent already exists; rollback therefore returns 0 without touching the capsule or reaching the retirement unlink hook. Both the original pinned test and the matching direct producer control reproduce it.Source11 already contains the ancestor-capsule discovery/locking correction. A bounded diagnostic overlay of ONLY that guard plus its existing directory-admission definition on the pinned v9 real producer yields acquisition42, rollback71 at the original retirement-proof unlink hook, original fresh/outside retirement proofs retained, stage absent, then resume0, retry-stage0 and retry-cleanup0. All original assertions remain appropriate; no test/source changes were made for this finding. This is a direct exact-function control, not a coherent source11 Cargo-gate claim.
Receipts:
evidence/acquisition-parent-v9-direct.json,evidence/acquisition-v9-exact.log,evidence/acquisition-guard-v11-direct.json. Pinned helper SHA2566a5aafc37968e420865b8623e9aef8611012640a55ac7b7c4ea33dfdaf24ff28; overlaid source11 guard SHA256441c2f68e4a16f14faaa257c47736c15f1c3a948513a5fd38a6e4398a20b4d38. Full coherent source11 regression is pending the parent gate.Attached: v9 actual missing-parent control, source11 guard differential, pinned v9 exact regression.
Exact-test provenance correction: the definitive pinned v9 replay is acquisition-v9-exact-pinned.log. It explicitly sets the authorized short fixture scratch root and both program/runtime helper paths to the immutable v9 bundle; the same original rollback-Err assertion fails. Its trace confirms missing-parent guard recovery is skipped. The first exact replay omitted the explicit scratch/helper environment and is superseded for provenance. The separately attached direct missing-parent RED and source11-guard differential GREEN already used explicit authorized fixture paths and the pinned helper and are unchanged. No live source or assertions changed.
A new producer-backed direct control confirms a separate common-admission reporting gap before the next source freeze. No build or source change was made.
The immutable compiled9 helper supplied its actual SHARED and STAGE_TRANSACTION programs and created a genuine protected stage and immutable creator ledger (status0). The complete CURRENT private-phase validator plus 16 real dependency modules admitted the unchanged stage0. No phase helper, producer receipt or ledger was stubbed. The genuine kind record was independently changed in bytes, mode640, or symlink type. Every variant refused twice71 and retained the exact candidate UID/device/inode/mode/link count/hash or link target, while the original ledger stayed unchanged. None of the six attempts emitted any Left report on either channel. Restoring the original kind restored admission0. The shipping exact lease-retirement helper completed0 during cleanup. This uses an existing canonical record; no activation or invented zero flag was needed.
The proposed subshell reporting wrapper needs care with POSIX shell failure propagation. A second actual producer-backed diagnostic introduced an independent symlink at the public manifest path: normal current admission refused71, but the SAME validator called inside an if condition returned0 and reached a success marker. The candidate remained untouched, restoration admitted0, and the exact owned lease was retired0. This is a diagnostic of the proposed conditional call shape, not a claim that shipping callers currently make that conditional call. The nested manifest_public_validate subshell fails, but its bare invocation in validate_bound_stage is followed by successful checks when errexit is suppressed. An EXIT trap only sees the final status. Adding set-e or guarding only the top-level admission calls does not establish propagation through the whole nested admission closure.
A static caller audit found no documented required exports from the phase scratch globals: creator writers revalidate their own immutable chain, fresh proof derives authenticated rows itself, rollback/inspection rebuild their own original/plan bindings, and retained inspection reclassifies its own retained phase. Status-only isolation appears consistent with those inspected callsites, but positive retained/restart/inspection/rollback execution remains required after any change. All existing exact-path report and custody assertions remain strict. Foreign UID and actual activation-zero-flag cases were not executed in this admission-specific slice; complete generated routes remain pending.
Admission reporting design is now in module docs and source: run the existing fatal admission body as a standalone subshell, with an EXIT reporter that preserves its exact status. This isolates the caller's lifecycle traps and keeps the original unconditionally invoked errexit model; no conditional wrapper was introduced. No phase globals are consumed outside admission (call-site audit recorded previously). A shared report-only traversal names retained private entries without following links or creating deletion authority; pending retirement uses the same reporter.
Actual pinned9 producer + current complete source dependencies: 6/6 changed kind refusals (bytes/mode/type, twice each) now report the exact candidate on stderr, preserve candidate identity/mode/hash and original ledger, and return71. Unchanged/restored admissions0; exact owned lease cleanup0. receipt.
This is a direct functional control, not a current Cargo/full-route qualification or performance result. The diagnostic conditional-call hazard remains outside the supported call shape; do not claim it was fixed by isolation. Permanent real-producer and caller-trap tests are being added before the next coherent compile.
private_phase SHA256 0fcd856f981b0c2ea079d67241814ded3bb665ce24ffa266c8c704ff35bb815e; creation_proof SHA256 69928af9029add9edbb7e3df8b117cf07620edff77a508e0555957a8a2b3619f.
The obsolete frozen recovery-v9 sweep was explicitly canceled after known failures, preserving its raw output. This is canceled-known-RED, not a full-suite pass. At final cancellation, the install target had started189/283 tests:155 passed,12 failed,21 ignored,1 interrupted,94 undispatched. The earlier assessment was187 started/96 undispatched; two additional tests started before the process tree was frozen. The preceding66 library tests are excluded from these install-only counts.
Cancellation verified the running ELF against the pinned immutable v9 artifact, then checked original PID/start-time and UID for each individually stopped/terminated descendant. No process-group or broad signals were used. The sole current fixture was reached from the test process's held directory descriptor, and its original lease PID/start-time/fd7 matched that exact private stage. The unchanged shipping lease reader retired it successfully and acquired its stage flock; the lease process is absent afterward. Fixture paths/data were retained. Queued independent diagnostic gates and other jobs were untouched. A first read-only descendant snapshot hit a
/procpermission race after stopping only the exact root; the continuation used permission-tolerant metadata collection and is disclosed in the receipt.The coherent current-source suite will run with the separately audited four-worker configuration. Remaining known failing/obsolete v9 fixtures are not waived by cancellation.
Evidence: exact identities, individual signals and lease cleanup, partial install-only summary, complete raw canceled log.
Completed independent module crates/plugins/ssh/src/manifest_authority.sh at 6ecc3a9787e464b63dd90b972d4067bb1722d0fe. SHA256 f3ae54dac42a3d07fb779130161d0b4aac28a9dd3c7484ebcc6d7ad2a0f76bd1. Exact HEAD+module syntax/fmt/SSH library Clippy and all selected real constructor regressions pass (filters ['raw_authority_round4::']); compiled test artifact 4a6584550f61c81b1379680f0ad601184e7ed22f19801405a3eb359320aad4f5, source context recovery-v9, helper 6a5aafc37968e420865b8623e9aef8611012640a55ac7b7c4ea33dfdaf24ff28. This module is byte-identical to that context; caller composition/final-head acceptance remain pending.
atomic-v9-manifest-authority.log
atomic-v9-manifest-authority-source.json
Added the permanent real-producer admission regression only in private_preflight_round4.rs: whole_stage_admission_reports_each_retained_kind_and_preserves_caller_traps. File SHA256 1b9a41b1d50d9e0af592d6f0241cfb2d3ba8d427db96aa0cb18133e5237e1465. All preexisting tests in that module remain byte-identical to frozen11.
The test uses actual Fixture.stage and obtains the complete compiled SHARED program through common::program_helper. It reuses Local environment/path mapping and sends public source on stdin. Genuine kind bytes/mode/type are each changed independently and refused twice with exact stderr Left, empty stdout, and unchanged UID/device/inode/mode/link-count/body images for both candidate and original creator ledger. It restores the original and requires admission0 after every variant. Its caller-trap control requires the outer EXIT sentinel on success0 and nested public-manifest refusal71 twice, no continuation after failure, and the private-root retention report; it does not invent a requirement for public-manifest reporting.
Independent frozen12 review confirms the original validator check body is byte-identical after removing the single new local EXIT-trap line. The body runs unconditionally in its own subshell, preserving the existing normal errexit call shape and keeping the caller lifecycle trap outside. Audited consumers rederive their own creator/rollback/retained bindings; no required phase-global export was found. This is source audit, not all-route execution proof. The synthetic conditional-context RED remains explicitly unsupported and is not claimed fixed. The new subshell cost still needs actual VM route measurement.
Rebound all held orchestration to immutable source12 (manifest dfb65f6af891352b2fea8122e9c504ef4985608a37418f2da2754883bb44df20), independently verified 72 manifest paths and 1883 full-projection files. Exactly five files differ from frozen11: the three shared production reporting/admission modules and two test modules. Pin preparation requires artifact-bound critical GREEN including the new selector; unchanged caps precede any eight observer comparisons. No build, fixture test, compiler pin or matrix comparison was launched by this slice. Rustfmt/source syntax checks passed only; current-source compilation, critical execution, counts and full products remain pending.
Frozen buffered-reader9b failed before the staged-channel receipt although its compiler artifact/helper pin was correct and production sources were byte-identical to9. The fixture's blanket
$HOMEreplacement modified canonical encoded dictionary/source bytes before validation; a direct exact encoder+wrapper control returns71/no output, while the unchanged source decodes successfully.SingleCheckChannelalso bypassed the existing Local command setup, omittingFT_ROOTrequired by the post-validation mapper.The test-only correction now reuses Local command/isolation and the existing protected mapper for checked-channel shell children. The same mapper serves AWK decoded output and shell public source; complete encoded bindings stay untouched until their decoder admits them. All four old blanket shell wrappers now use this path. Buffering, cache reuse, stream count, payload/bridge bytes and all deadlines/assertions remain unchanged. No shipping code changes.
Direct controls now pass exact decoded-public+private-stdin preservation, malformed binding rejection with zero output, ordinary AWK behavior, and shell-stdin passthrough. Rustfmt checks pass. Full coherent Rust slice qualification remains PENDING the parent source13 gate; these direct controls are not a claim that the three original integration tests pass.
Evidence: old exact wire-wrapper failure, new shared mapper controls.
Scratch-only matched native candidate8 functional qualification is GREEN under ordinary namespace UID1001 with compiler cache wrappers unset and all relevant entrypoints refreshed before Cargo. Candidate moved-management tests:80 passed/5 ignored; remaining remote lib:67 passed/13 ignored; CLI remote:15 passed/3 ignored. Formatting and management, remote, and CLI all-target Clippy pass. Control completion now also passes formatting/CLI Clippy; the explicitly proven byte-identical control production and one ignored assertion-only change retain its previously passed147-native/15-CLI subsets, rather than reclassifying the earlier whole red gate as green.
The driver released the job/build locks between gates and queued matched release-test probe compilation. Ignored timing probes are compiled ONLY on the build host and will run ONLY on the perf VM. No native8 live adoption, matched performance acceptance, memory acceptance, or final current-source size acceptance is claimed. Existing static candidate8 remains21,327,760 bytes (+62,112 versus named task-base587; +102,016 cumulative versus devc00), provisional until current-source/both-architecture qualification and matched VM results.
Evidence: candidate functional gate, control completion.
The frozen env-only9 focused regression compiled with its minimal environment correction, then failed97 during discovery activation. The selected empty-lease cut and rollback assertions were never reached. This result remains RED; it is not a source12 result.
Retained observer metadata identifies the exact origin: RuntimeError from the unchanged configured 55-second observer alarm, mapped by the Python observer to exit97. The failing command was already using the filtered scheduler. It recorded 68,149 entry stops, 68,147 exit stops, 26,366 process roles and 213 mutation/durability cuts before refusal; last global ordinal376 follows creator-head rename375 and the stage fsync for the rendezvous-dir successor. The next pending cleanup mutation had not occurred. The exact generated control flow places subsequent reader validation there; this location is an inference from the last completed boundary, not a per-function profiler result.
Outstanding actors were the main shell and an active execve descendant, neither with fd7. Their retained executable identities map to sh/dash and stat respectively (one deadline sample only). Proven detached leases were already excluded from the traced actor set; all three recorded lease PIDs were verified gone after fixture teardown. No processes were signaled by this read-only investigation. The observer source hash c155e52f263e64ba43abf34474231ad2e40e9c66cc97ad44d14b249bd4f6c331 is identical in the env-only9 and frozen12 source contexts.
Process roles are not exec counts: the counter increments for the root and traced fork/vfork/clone children, not exec. Existing logs contain only fixture-scoped exec records. Across four commands they show tools/awk3172, awk-wire4, payload4, runtime-helper4 and systemctl3. A strict lower bound assigned to the failing command after prior ordinal163 is 2641 AWK executions in2641 distinct roles, plus one each of systemctl/payload/runtime-helper. Twenty-nine scoped AWK execs occur after the final head rename. System cut/stat/SHA/etc executions and function identifiers were never retained, so their histogram and the counts/fraction attributable to cl_validate versus cl_binding_valid cannot be recovered. Nine creator successor roles are visible; these do not count repeated reader calls.
These are host functional guard receipts and metadata counts, not VM benchmark or runtime-projection evidence. No rerun, source change, guard extension or proof-cache change was made. Current-source critical compilation and the complete matched VM observer/case pilots remain required before any performance conclusion or full matrix claim.
Completed independent module crates/plugins/ssh/src/rollback_identity.sh at 622ecfacc6b5ecaa873408dc91efdc95b849a1b7. SHA256 49cdc72fffeec664081763f13c151f811cf6a0dac233b6c75180bf9d016c5c26. Exact HEAD+module syntax/fmt/SSH library Clippy and all selected real constructor regressions pass (filters ['raw_authority_round4::']); compiled test artifact 4a6584550f61c81b1379680f0ad601184e7ed22f19801405a3eb359320aad4f5, source context recovery-v9, helper 6a5aafc37968e420865b8623e9aef8611012640a55ac7b7c4ea33dfdaf24ff28. This module is byte-identical to that context; caller composition/final-head acceptance remain pending.
atomic-v9-rollback-identity.log
atomic-v9-rollback-identity-source.json
The first frozen v9 diagnostic projection did not run tests: its added fixed-category fixture observation crossed the existing100-line Clippy limit. That failed source/log remain unchanged. A separate immutable v2 adds only a documented, diagnostic-local allowance; production is byte-identical to v9, transport execution/receipts/assertions are unchanged, and the original60s process deadline remains.
Both exact test filters then executed from one compiler-pinned v2 artifact SHA256
167fd52e68acc53abbaed835951daf52f5e7933dd5f4107cf418ffa9992ca6e8:full_payload_restaging_preserves_the_running_session_build: GREEN, all original bridge/payload/commit assertions retained; fixed observation saw upload/join/install/start/linger. No arbitrary process messages/private input are logged. This one replay does not erase the prior frozen9 timeout or establish a performance budget.late_publication_round4::upgrade_rollback_keeps_private_data_created_during_manager_reload: expected actual old-source RED; rollback returns Ok and deletes the independent private file (refused=false kept=false). The wrapper accumulates failures and confirms BOTH filters executed, exit1. The parent owns the current-source admission fix and its separate qualification.These are diagnostic functional results, not build-host performance acceptance or a full-suite pass.
Evidence: original Clippy failure, both exact filter results, immutable v2 source identity/delta.
Completed independent module crates/plugins/ssh/src/rollback_proof.sh at f370e00b3582f3e2b0b8ae300ab925d7941d8ab9. SHA256 547b271402cd6f53aa9be1da2a191d6c317fe0089b09823f7cbcef0f1c449afd. Exact HEAD+module syntax/fmt/SSH library Clippy and all selected real constructor regressions pass (filters ['raw_authority_round4::']); compiled test artifact 4a6584550f61c81b1379680f0ad601184e7ed22f19801405a3eb359320aad4f5, source context recovery-v9, helper 6a5aafc37968e420865b8623e9aef8611012640a55ac7b7c4ea33dfdaf24ff28. This module is byte-identical to that context; caller composition/final-head acceptance remain pending.
atomic-v9-rollback-proof.log
atomic-v9-rollback-proof-source.json
Prepared current13 VM owned-container staging plan only; no VM connection, ELF patch, container, build or measurement was executed. Source manifest SHA256
08fa1ba5f8ab4d81ac56b40ddc6b7723aa6e0e5c2e990cc66075175f1aef0c7e; compiler-pinned install5ef30252b469c665d367fba2a381a04d8179181793a217c50f8121168adf5279, helper7ac6ac684583390b6003d42e628a5d0c517e42d8609ced9086249321ec59b505.The plan preserves originals and records future patched-copy/ELF-provider hashes separately. A fixture-copied helper requires absolute interpreter AND library search path
/opt/readd/lib; a relative search path beside the executable fails after the fixture relocates it. Both observer variants must use identical native helper bytes and complete ordered-cut/tree equivalence across all eight baseline flows. Current optimized private_write remains fixed in any future grammar-only comparison; no cache was adopted.Qualification remains explicit: ordinary UID1001 execution is planned, but the existing foreign-UID mutation harness requires a UID0 controller. It does not establish creator1001→foreign1002 coverage. Patched SHA/provider closure, all-eight comparison, actual96-partition inventory/product, and VM timings remain unexecuted. Critical current13 controls must finish GREEN before any execution release.
Preparation receipt
Producer-backed current13 regression diagnosis:
private_retirement_round4::commit_resumes_after_active_transaction_files_begin_retiringfails on its THIRD commit, after the second commit successfully resumes retirement and the original stage-absence assertion passes. It is not a failure to resume the active retirement.The pinned13 exact test trace shows: first commit reaches the original real activating-unlink interruption; second commit validates the immutable retirement proof, finishes all individual removals, and exits0; third commit validates the active manifest's exact binding/creator alias, then asks
rollback_match_oneto read$base/.bootstrap-manifest. The captured receipt selector has no public-active role, returns1, and completed idempotent commit returns71. Existing line523 assertion is correct and remains unchanged.Recommendation to the parent implementation owner: capture the already creator-bound active receipt through the existing authenticated
private_readand pass those captured rows through the existing inline row reader. Do not restore a generic raw-path fallback. No production or assertion changes were made in this diagnosis; a current-source fix/qualification remains pending.Separate correction: an initial chat diagnosis of two other private-retirement failures as stdout/stderr fixture adapters was wrong. Their existing stderr assertions correctly expose exact retained-path mismatches; those assertions must remain exact. The parent is addressing reporting at the shared control fence.
Evidence: phase/cause and pinned-source identity, final selector trace, original exact test failure. Diagnostic host execution duration is not performance acceptance.
Additive literal-writer test slice prepared; production unchanged by this slice. Shared pipe client now serves remote ownership tests and SSH fixtures, using the existing owned-container helper/protocol. ForeignEdit/ForeignRecreate preserve the original UID1001 inode and use a real UID1002 writer (DAC_OVERRIDE only). The controller retains capabilities0x3 for observation/restoration; production fixture child exec drops effective/permitted/inheritable/ambient capabilities and sets NoNewPrivs1. CapBnd remains0x3, explicitly distinguished from effective privileges. Root UID0 cases stay separately labeled.
Direct owned-container helper control: old helper rejects the exact install fixture family (RED); updated helper passes file same-inode edits, recursive same-content directory recreation without following symlinks, link/socket recreations and distinct namespace edits, newline paths, and five malformed/out-of-scope request controls. Original/foreign actors were reaped; all owned containers removed. No host fixture chown. The existing remote helper smoke still passes.
Receipts/accounting now require five additive variants: edit, recreate, owner change, foreign edit, foreign recreate. Required total is
2*K*C*P+3*C, K=5. Synthetic96 accounting accepts that arithmetic and rejects old three-variant receipts; these are synthetic controls, not actual discovery. New foreign cases require every actually changed descendant's exact fresh Left report. Existing three-variant assertions remain. Selected rustfmt and diff checks pass; Python helper/launcher compile checks pass. Rust integration has NOT been Cargo-qualified; parent source14 gate will compile/replay it.Separate source13 VM staging-only control passes with immutable original install SHA5ef30252…f5279, original helper7ac6ac68…9b505 and patched helperf62d4f53…27cbb. Exact glibc2.44/library providers verified. Helper executes directly from its original staged location and after private relocation; actual relocated anonymous identity writer succeeds under UID1001 on container overlayfs with mode600/nlink1. The install executable lists tests via the explicit loader. First extra identity probe used a data path beside stage and correctly failed71; the retained v2 control uses shipping-required stage/state. No timing, observer workload, all-eight equivalence or full Cartesian execution occurred. Source13 critical observer/workflow failures remain separate unresolved evidence.
Source/artifact hashes
Original helper RED
Updated helper GREEN
Synthetic five-variant accounting
VM staging functional control
Bounded independent read-only review of recovery-v14-source (HEAD ancestry
497e03657). Root-supplied 72-path freeze manifest SHA256:3bfa85b8006a34845d853144ea51eed3151a08a581b40a97ba48d61411809727. Verified file SHA256 values:P1, source-only counterexample: private_retirement.sh:68 reconstructs the expected pending pathname, but leaves retire_pending empty if absent at admission. Recreate that exact empty directory afterward: retire_intent returns immediately and subsequent parent/child controls cannot detect or report it. This reviewer ran no mutating fixture; the root job assigned a focused regression and fix.
Source-only fresh-state follow-up: fresh_cleanup.sh:89 supplies empty pending/base control coordinates to retire_worker. Original base rows are checked in the ancestor walk, but the final pre-unlink control predicate checks only the outside proof. Replacement during that last proof check needs a focused control; no end-to-end failure is claimed. Assigned to the root job's boundary worker.
P2, pre-existing grammar behavior: two canonical binding strings separated by a newline return success in both v13 and v14 cl_binding_valid (pure-shell checks: status 0). V14's bounded shell-local cache intentionally preserves v13's rowwise grammar for the matched comparison; this is not introduced by the cache. Later file predicates still run. Canonical single-record tightening belongs to a separately tested logical fix after that comparison.
No additional finding in install.rs:1760-1767's completed no-stage inline reader: its rows come from the checked captured body and it exits without restoring a generic current-path reader. Supplied current-green-v2 evidence covers 8/8 direct controls with exact diagnostics and unchanged stage/control objects; this is not whole-matrix evidence.
D243: the brief requires comparison against the branch merge base, not a new allowance over the round-4 starting SHA. Reported unadopted native8 candidate: +62,112 B versus
58760f49d, +102,016 B versus dev merge basec00c6364. Historical round-3 growth is already included in PROCESS section 7's exact ceilings and supplies no credit. The cumulative result exceeds the 64 KB band; no implicit exception or size compliance is claimed. Further reduction is required.No production edits, builds, remote sessions or final completion claim from this review. Remaining controls and full gates stay with the root job; issues remain open.
Round4 checkpoint; incomplete, no push/deploy. Head497e036577b94d2960176f01155eee415cfdbc84. Source13 critical artifact5ef30252b469c665d367fba2a381a04d8179181793a217c50f8121168adf5279:42/48 pass,6 fail; full raw failure logs attached below. Three are observer/workflow deadlines, three are retirement exact-path/completed-third-commit failures. Assertions/deadlines unchanged. Current immutable14c includes shared base/pending/proof checks before each worker mutation, a captured-inline completed-state reader, stronger stage-identity regressions, additive literal1001→1002 controls and bounded pure-grammar memoization. Direct original13 vs current shared controls: old5/8 exact reports and6/8 unchanged stages; current8/8 exact reports, unchanged stages and independent controls. These are narrow controls, not the full matrix. Independent review subsequently found proof-only missing-pending-coordinate gap; failing real retirement regression now reproduced; subsequent fix excluded from14c.
Resumable72-path source overlay361,509B SHA2569b25a08eba6b67d651a7b99c9b929671c356f42aa0b303521594f93b4f72a88e; manifestd8773eec4d75ad2109d3ff0fb638ed7e9fc46f772576492e0273c26c8ff9a183. Reconstruct git archive497e036577b94d2960176f01155eee415cfdbc84 plus overlay. Earlier checkpoint SHAs remain mapped by tree-preserving unpublished-message repair: full map.38/38 commit bodies now end Refs231/235; every rewritten commit tree identical. Latest3 module commits
ad707e0(compaction invariant),d7eca624(rollback identity),497e036 (rollback proof) each passed exact-projection fmt/shell syntax/Clippy and11 pinned raw-authority regressions, as recorded in their step comments.14/14b stopped before artifact pins on3 equivalent test-only lint issues; corrected without changing assertion meaning.14c SSH all-target Clippy passes; remote gate first lacked its existing test-support and tokio/rt-multi-thread test closure, now rerunning with that closure. Matched cache control differs only creator_ledger.sh; compiler pins and whole-flow VM A/B pending. No current full8/full96 Cartesian qualification, final static size or final fast gate claimed.
recovery-v14c-source-overlay.tar.gz
recovery-v14c-checkpoint.json
recovery-v14c-source.json
recovery-v13-critical-results.json
private-control-fence-v13-red.json
private-control-fence-current-green-v2.json
recovery-v13-activation_boundaries-generated_empty_lease_requires_exact_kernel_lock_retirement.log
recovery-v13-earlier_binary_cache_is_refreshed_before_owned_recovery.log
recovery-v13-negotiated_transfer_delivers_the_invitation_after_a_buffering_head.log
recovery-v13-private_retirement_round4-commit_resumes_after_active_transaction_files_begin_retiring.log
recovery-v13-private_retirement_round4-late_pending_recreation_is_kept_at_each_control_retirement_step.log
recovery-v13-private_retirement_round4-retirement_proof_is_rechecked_after_the_initial_inventory.log
Pure-grammar memoization experiment, current private_write bytes identical between variants; no filesystem decisions cached. Perf VM4CPU/CPUWeight10000, actual immutable writer-created ledgers,40 concurrent readers ×4 samples/variant:8-hop control/candidate medians2.285498/2.059122s, CPU8.833575/7.971554s;64-hop15.484816/14.255225s, CPU60.574813/55.452651s. Balanced adjacent wall ratios0.899198/0.914618. Individual9-sample emit medians206.906/190.550ms and1388.069/1305.933ms.651 grammar samples+176 warmed keys pass reference equivalence; edited/recreated filesystem objects still refuse. Cache bound8192B/process (conditional40shells327680B retained syntax storage, excluding shell/allocator overhead). wait4 maxima are largest-descendant maxima, NOT whole-tree RSS/PSS or aggregate bounds. Reader benefit alone does not establish whole setup/observer acceptance. Existing rowwise newline grammar defect predates cache, tracked separately by review.
measured summary, functional corpus, 8-hop raw JSON, 8-hop raw log, 64-hop raw JSON, 64-hop raw log.
Separate grammar correction proposal, before source edits: original and cached cl_binding_valid accept embedded newlines and alternate colon/dash separator placements although every producer and immutable filename uses one canonical uid:device:inode-hash record. Review reproduced a two-line value accepted in both13 and14; later filesystem checks still refuse, no removal bypass demonstrated. Tighten this validator to exactly one canonical ASCII record, retain20-digit nonnegative UID/device and nonzero inode bounds plus64 lowercase hash digits. Producers/storage/action contracts remain unchanged; accepted unexpected-input set becomes narrower. Add failing permanent samples before the change. Implement with bounded quoted shell field operations, without integer arithmetic on20-digit fields or another external process/library. This is separate from immutable14c pure-cache A/B; no performance acceptance inferred. All current filesystem observations remain in place. Rejected: silently changing grammar inside the cache experiment, or retaining the known multiline acceptance solely to save source changes. D17/D198/D243; #231/#235.
Matched native candidate8 measurement is complete; the candidate remains unadopted.
The six immutable release-test ELFs from the matched control/candidate sources ran on the owned performance VM in ABBA then BAAB order. All136 fresh-process runs across17 dimensions exited0: typed codec1024/8192, actual verifiedTLS redemption/join and refusals on both runtime kinds, durable identity publication, runtime inspect/retire at0/50/1000 sessions, manifest cleanup at0/50/1000/bounded2766 objects and independent recreation, receive adapter, and two1000-node authenticated health cases. Each VM process held the fair performance lock with CPUWeight10000; artifacts were staged beforehand. No host timing is used.
Costs are disclosed, not inferred away:8KiB encoding increased6.113→15.821µs (2.59x). Actual two-worker journaled join median127.014→128.764ms (1.014x); current-thread130.069→125.343ms (0.964x). Bounded2766-object cleanup187.592→189.852ms (1.012x). At1000 sessions inspect1.333→1.352ms and retirement1.360→1.367ms. Receive callback55.216→56.443ns (1.022x), pooledp9559.707→61.252ns; this adapter-only probe excludes authentication and physical I/O. Both health cases maintained1000/1000 live and zero guard exits in every process. Their elapsed fresh-process medians were authenticated mesh8.744→9.235s and adaptive8.214→8.228s; these are health-test durations, not packet-latency distributions. Journal filesystem probe8KiB medians of four reportedprocessp50s81.335→82.663ms; medians of reportedprocessp95s93.635→99.782ms, with no pooledp95 claim.
Memory scope remains narrow: explicitly owned Manifest/Vec/PathBuf capacities were identical, max733254B per transient removal helper (conditional40simultaneoushelpers29330160B). This excludes allocator/kernel/fixture memory and does not describe resident daemons. Rusage records the largest waited child/descendant peak, not whole-treeRSS/PSS, allocator-exclusive bytes, or per-session memory. The sharedHTTPdriver adds one temporary box per connection; RSS does not establish its allocation cost.
Provenance correction: the first v2 harness refused execution126 before any benchmark because root extraction preserved hostUID1001/mode500, unmapped inside the ordinaryUID namespace. That refusal is retained. The v3 staging fix uses --no-same-owner; all six ELF/probe-source hashes remain unchanged and ordinaryUID1001 admission is explicit. No failedv2 timing is counted.
D243 correction to my earlier task-base interpretation: candidate static21327760B SHA647ff9ec136166391f0bdf42fd093ab6d72798533208820c6713323f386a5214 is+62112B versus namedtaskbase587, but+102016B cumulatively versus devmergebasec00. The latter exceeds65536B by36480B. Passing component measurements does not authorize adoption, and final source/dictionary/helper changes still require refreshed both-architecture exact bytes and contributor accounting. No profile or compilation-boundary change has entered live source.
All136 raw case logs, staging/source manifests and harness, final remaining-case summary, per-file SHA inventory. The archive also contains earlier codec/TLS/cleanup/runtime summaries with exact sample scopes.
Completed independent module crates/plugins/ssh/src/private_phase.sh at
fdd3ee41bb. SHA256 0fcd856f981b0c2ea079d67241814ded3bb665ce24ffa266c8c704ff35bb815e. Exact HEAD+module syntax/fmt/SSH library Clippy and all selected real constructor regressions pass (filters ['raw_authority_round4::copied_state_rows_never_reread_the_raw_path_after_admission', 'raw_authority_round4::completed_copy_preserves_admission_after_an_original_child_disappears']); compiled test artifact e4c52705f6f815a097f955198cbc2b4a542d72540028f7830303cddaf89e26be, source context recovery-v14c, helper fed12208dd3aaacb62e97efc805213d6a4712c7c4de4c900dc8c90502dfc7769. This module is byte-identical to that context; caller composition/final-head acceptance remain pending.atomic-v14c-private-phase.log
atomic-v14c-private-phase-source.json
Completed independent module crates/plugins/ssh/src/cleanup_admission.sh at
45a88c5b6c. SHA256 d90bee9133f3632cbe033576364bd73a549091aa464b2a61cf7e16228cc5ea53. Exact HEAD+module syntax/fmt/SSH library Clippy and all selected real constructor regressions pass (filters ['raw_authority_round4::', 'retired_stage_never_falls_back_after_its_immutable_proof_disappears']); compiled test artifact e4c52705f6f815a097f955198cbc2b4a542d72540028f7830303cddaf89e26be, source context recovery-v14c, helper fed12208dd3aaacb62e97efc805213d6a4712c7c4de4c900dc8c90502dfc7769. This module is byte-identical to that context; caller composition/final-head acceptance remain pending.atomic-v14c-cleanup-admission.log
atomic-v14c-cleanup-admission-source.json
Completed independent module crates/plugins/ssh/src/creator_recipes.sh at
7ee1993601. SHA256 6fe49aa977332d934ad114eb83ff558d75870b73ecce6159f7f71c11863d020a. Exact HEAD+module syntax/fmt/SSH library Clippy and all selected real constructor regressions pass (filters ['raw_authority_round4::', 'private_retirement_round4::pending_retirement_accepts_only_canonical_unpublished_prefixes']); compiled test artifact e4c52705f6f815a097f955198cbc2b4a542d72540028f7830303cddaf89e26be, source context recovery-v14c, helper fed12208dd3aaacb62e97efc805213d6a4712c7c4de4c900dc8c90502dfc7769. This module is byte-identical to that context; caller composition/final-head acceptance remain pending.atomic-v14c-creator-recipes.log
atomic-v14c-creator-recipes-source.json
Completed independent module crates/plugins/ssh/src/fresh_proof_match.sh at
901d1343ff. SHA256 0267eab30fd3b73c71a538ff1a9289412ae2e91bbc02046244d1986c92087f35. Exact HEAD+module syntax/fmt/SSH library Clippy and all selected real constructor regressions pass (filters ['private_retirement_round4::fresh_rollback_retires_private_peer_without_consuming_outer_fresh_proof', 'fresh_cleanup_round4::fresh_state_retirement_rechecks_each_entry_after_its_initial_inventory']); compiled test artifact e4c52705f6f815a097f955198cbc2b4a542d72540028f7830303cddaf89e26be, source context recovery-v14c, helper fed12208dd3aaacb62e97efc805213d6a4712c7c4de4c900dc8c90502dfc7769. This module is byte-identical to that context; caller composition/final-head acceptance remain pending.atomic-v14c-fresh-proof-match.log
atomic-v14c-fresh-proof-match-source.json
Completed independent module crates/plugins/ssh/src/install_manifest.sh at
28714f86c7. SHA256 cdfa130d491b24ff8220ee5a6085aaa5e64df8b546c6db4fd8a51a8753f72e53. Exact HEAD+module syntax/fmt/SSH library Clippy and all selected real constructor regressions pass (filters ['manifest::']); compiled test artifact e4c52705f6f815a097f955198cbc2b4a542d72540028f7830303cddaf89e26be, source context recovery-v14c, helper fed12208dd3aaacb62e97efc805213d6a4712c7c4de4c900dc8c90502dfc7769. This module is byte-identical to that context; caller composition/final-head acceptance remain pending.atomic-v14c-install-manifest.log
atomic-v14c-install-manifest-source.json
Shared retirement custody slice prepared on
addhost-readd-r4, current HEAD28714f86c73d3a7e7bb3d023234e6cd1d10fcd93; no commit by this worker. Only private_retirement.sh and private_retirement_round4.rs changed in this slice.Three actual direct controls establish the changes:
Final direct receipts: proof-only3 refusal attempts plus positive; fresh base/state6 refusal attempts plus positive; outside-proof edits/recreation/alias6 exact OUTSIDE reports; all10 discovered real rm/rmdir cuts resume twice (20 calls). All direct metadata/report assertions pass. Selected
sh -n,rustfmt --check, andgit diff --checkpass. This is direct-source consumer evidence, NOT Cargo/full-suite, full syscall matrix, or performance acceptance. Coherent source15 compiler/cap gates remain pending. Cleanup-only extra proof/base/state checks are unmeasured; no deadline/cap/cache relaxation.Final module SHA256
683707c67de6ffc8fd2ad6eb76bcc6635ee3a46d8dca9cf3be9872d2bdb5fc5f; test SHA2569bc78436af0bf53a614a29911b7c2cad4639d5f3b5ec88442d19cb9ee10507b8.Source-ready summary
Proof-only RED
Proof-only GREEN
Fresh scope RED
Fresh scope GREEN
Proof report RED
Proof report GREEN
Deletion-cut recovery
Whole-flow VM comparison of original versus syntax-cache creator-ledger readers is completed with explicit failures, not accepted as an optimization.
The exact v14c compiler manifests differ only in creator_ledger.sh. The two immutable install-test ELFs and program helpers used the same patched runtime-helper SHA9f22927488a5c45ffa158bea1b208bba8568855b7c08ca06cc04a8936b2340e2, identical library providers, ordinary UID1001, owned disk-backed fixtures, network-disabled disposable containers, fair VM performance lock and CPUWeight10000. ELF PT_INTERP/RUNPATH changes were recorded; no stripping occurred. Every owned container was removed and confirmed absent.
Fresh/separate/rootless ordered full-versus-filtered equivalence failed during the FIRST/full-observer installation in both arms at the unchanged55-second observer watchdog. Original:55.000194s,8607 processes,67 mutations at the failing step. Syntax-cache:55.000265s,8498 processes,82 mutations. Both returned Install97. These partial counts do not establish an end-to-end speedup, completed equivalence, or safety of the filtered scheduler. The seven remaining axes were held, rather than reporting a partial product as complete. The60-second process deadlines were unchanged as well.
The separate exact generated_empty_lease_requires_exact_kernel_lock_retirement test passed in both arms. It discovers the actual writer boundary, verifies busy73 and unchanged files while the exact lease remains held, refuses malformed PID/birth payloads after retirement, and completes repeated rollback. Total fresh-container durations were77.64s original and69.45s cache; these single functional runs are not latency acceptance.
The independently compiled v14d canonical pure-shell validator is now being tested against the same first branch and exact lease control, with the same common runtime bytes. It is not mixed into v14c provenance, and no deadline/cap/parser assertion is weakened.
Four raw test/trace/stat/control/lease receipts and immutable harness. The matched summary is attached alongside this archive. No production cache or native-profile adoption is claimed.
The separately pinned v14d canonical reader completed its two requested VM controls. This does not establish whole-flow equivalence or an end-to-end speedup.
Source comparison against v14c-cache confirms only creator_ledger.sh and its two ordinary test files differ. The install-test ELF SHA is177a509d2eb6f5e89b43945a6de054067d30c4b2ee542371b1b075e731afe497. All three source arms used the same patched native runtime SHA9f22927488a5c45ffa158bea1b208bba8568855b7c08ca06cc04a8936b2340e2, identical library providers, ordinary UID1001, owned disk-backed fixture directories, fair performance lock and CPUWeight10000. The native helper was the patched ELF itself with absolute PT_INTERP/RUNPATH, not a shell surrogate. Program helpers remained source-specific.
First fresh/separate/rootless full-observer installation returned Install97 at the unchanged55-second actor watchdog:55.000347s,7725 processes and71 recorded mutations at the failing install step. This is a partial failed execution; it cannot be compared as a completed timing against original/cache or authorize the filtered scheduler. The seven remaining axes were not started. The60-second process deadline was unchanged.
The exact generated_empty_lease_requires_exact_kernel_lock_retirement test passed. It preserves the real kernel-lock, busy73, malformed-byte refusal and repeated-cleanup assertions. Its total fresh-container duration was73.21s; this is a single functional run, not latency acceptance. Both owned containers were removed and confirmed absent, and the VM lock is released.
Raw test/trace/stat/control/lease receipts plus exact staging/harness, summary and per-file hashes. The prior original/cache failures are retained separately. No deadlines, source caps, assertions or live source were changed by this measurement.
Harness correction proposed before editing: current full-ptrace whole-flow controls for original/cache/canonical sources reach the NEW observer55s watchdog with roughly1million syscall entry/exit stops,7,725–8,607 processes and67–82 Install mutations. These are incomplete traces, not production latency or completed equivalence. The new syscall_observer.py55s is absent from owner prompt/CLAUDE/PROCESS/R3 changes; the historical60s Local negotiated transport deadline comes from74d3f095e and was copied around the new observer. Independent source/history review confirms this distinction.
Add an explicit full-install observer profile with finite150s per-actor watchdog and155s instrumented negotiated transport bound. Only Boundaries full-syscall mode selects it. Ordinary observer calls retain55s; filtered tracing retains55s/60s; normal Local remains60s; all R3 watchdogs and assertions remain unchanged. Full ordered syscall/path/stat receipts, exact metadata/final namespace comparison, original cut list and mutation preservation assertions remain mandatory. Real production sleep180 lease, acquisition60 and production attempt180 stay unchanged; lease expiry is still a failure, never normalized away. Complete VM control receipts and independent unobserved production measurements remain required. Reject extending shipping limits or treating slower tracing as product performance acceptance. Earlier root assumption that55s itself was an owner requirement was unsupported; retain every earlier RED receipt. D17/D243; #231/#235.
Completed independent module crates/plugins/ssh/src/publication_authority.sh at
ab4802145d. SHA256 3ea57927bc65f16e03b63bc434ccc4b08add53d0eb33d3cb2f867a7e7e3d2062. Exact HEAD+module syntax/fmt/SSH library Clippy and all selected real constructor regressions pass (filters ['late_publication_round4::']); compiled test artifact e4c52705f6f815a097f955198cbc2b4a542d72540028f7830303cddaf89e26be, source context recovery-v14c, helper fed12208dd3aaacb62e97efc805213d6a4712c7c4de4c900dc8c90502dfc7769. This module is byte-identical to that context; caller composition/final-head acceptance remain pending.atomic-v14c-publication-authority.log
atomic-v14c-publication-authority-source.json
Focused current controls, no full-product/size acceptance: literalUID1001 controller→UID1002 independent writer tests both pass from compiler-pinned14d install artifact177a509d2eb6f5e89b43945a6de054067d30c4b2ee542371b1b075e731afe497. The first proves ordinary child CapEff/Prm/Inh/Amb0 and NoNewPrivs1 while actual writer retains DAC_OVERRIDEonly; the second exercises restore/reapply across file/directory/link/socket and5 change variants. Each owned writer/test/client reaped and CID inspect absent, artifact unchanged. These are host functional controls, not timings or the installation Cartesian product.
Canonical binding correction: permanent multiline/mixed-separator regression RED before change, focused controls GREEN after;10,242 independent canonical-reference samples match (1,063 accepted/9,179 refused). Complete ordinary ledger gate14d and15:1passed/1explicitlyignored. Raw old failure retained. New full-install observer-profile configuration/mutation control passes; its first draft test used a wrong receipt-field name and that ERROR log is retained too. Whole profile source16 gate and VM equivalence remain pending.
Size candidate9 shared private-read helper REJECTED: actual stripped staticx86_64=21,328,016B SHA2567c9d574da6bba980ac658cdc0297fda9394ab4ac8acdffb68acfae0ebe219814,256B larger than exact native8(21,327,760B), despite59 native tests passing(3ignored). No runtime measurement/adoption for a non-reducing candidate. Independent enrollment outlines10 stopped on one needless reference in a moved helper;10b changes only that equivalent lint defect and is queued. Native8 itself remains unadopted because cumulative+102,016B exceeds64KiB; neither task-base comparison nor historical R3 approval supplies a new allowance.
Stable15 compiler artifactd501c074110969a4dd60a7f8f9432e9a04d492a09cc7142f39cf137bfa1c159d/helperab19015b370aed2483cc7fe58d7f77e0d3b1b7737abbe107bffc6b04dfeaf5d9: fmt+both affected all-target Clippy+64SSH library tests/2ignored+ledger ordinary+3 actual remote ownership tests/1ignored pass. Maximum generated argument130,317B (<131,071); corrected remote namespace positively requires3 tests, earlier14c zero-test filter is not proof. Focused15 critical regressions still running; no complete gate claim.
focused-controls-and-native9-rejection.json
literal-install-session-caps-v14d.log
literal-install-mutation-restore-v14d.log
canonical-binding-red.log
canonical-binding-green.log
canonical-binding-properties.json
observer-profile-functional.log
observer-profile-functional-v2.log
management9-shared-read-z-size.log
management9-shared-read-z-size.map.gz
Checkpoint at
ab4802145d. Source16b reconstructs from git archive28714f86c7plus attached overlay, SHA256 bb212f19a99c35c85d1e589d40809307c3989da7ddab07a1881ef96fff1ac105; source manifest 87ed6abe74a5ffa5df392b11d526898cae06fc344076d956afbc76c1af4e8f63. Production source is identical to source15. Only the new observer support changes: explicit full-install profile150s/negotiated155s; ordinary/filtered55s/60s unchanged; actual lease180s, production deadlines and all R3 assertions unchanged. Source16 first failed test-function Clippy104/100lines;16b outlines equivalent profile selection without an allowance. Its gate is queued; no16b VM success claimed.Source15 focused results53/54 pass: all17 private-retirement controls,11 raw-authority controls and ordinary workflow regressions pass. Only empty-lease full-observer55s timeout remains. Command maximum130317B below131071. SSH library64pass2ignored; ordinary ledger1pass1ignored; actual remote ownership selector3pass1ignored.
Canonical binding parser VM matched40-reader balanced batches:8-hop median wall2.5682394495→2.213723335s (paired ratio0.8619584);64-hop19.7389247505→16.9450847315s (paired0.8628459). Corpus10242/10242 agrees with canonical ASCII reference. Exact original filesystem/hash/link checks retained. This is reader-only evidence; prior full-flow55s failures remain recorded, and full eight-flow equivalence plus96-partition product are pending. Reported wait4 RSS is a largest-descendant maximum, not aggregate process memory.
M9 shared-read size experiment21328016B, +256 vsM8: rejected. M10b enrollment outline21331024B, +3264 vsM8: rejected. Neither adopted. Last dormant rollback_files gate also found2 failing14c controls; module not committed, diagnosis underway. Final branch gate and size compliance are pending.
recovery-v16b-source-overlay.tar.gz
recovery-v16b-resume-checkpoint.json
recovery-v16b-source.json
recovery-v15-critical-results.json
recovery-v16.log
canonical-binding-measured-summary.json
creator-ledger-canonical-8.json
creator-ledger-canonical-64.json
creator-ledger-canonical-8.log
creator-ledger-canonical-64.log
Completed shared literal-user test client at
1fe014108f. Exact HEAD-plus3-file projection: fmt, SSH/remote all-target Clippy pass; real ownership selector3pass1ignored. Explicit independentUID1002 writer slice1pass over42 actual mutation cuts/3024 attempted cases/1680 changed cases;1008 exact-kind recreations,156 in-place edits,516 same-inode owner changes,1884 repeated reports,1476 repeated refusals,0 silent reports. ControllerUID1001 capabilities3, independent writerUID1002 capabilities2; all owned child PIDs and container absent after run; unstripped ELF5e86e90d1b3aa949c90f2c34f4702513e7ddd5d5b4c95beed1f8e5c8e6790933 unchanged. Test support only; installer activation/oracle/final head gate remain pending.atomic-shared-writer.log
atomic-shared-writer-foreign.log
atomic-shared-writer-artifact.json
atomic-shared-writer-source.json
Three measured scratch-only reductions are rejected; none adopted. Against provisionalM8 staticx86=21327760B: M9 bounded private-reader sharing21328016B (+256); M10b enrollment outlines21331024B (+3264); M11 exceptional SSH-observation boxing21327536B (-224), insufficient benefit for an added exceptional-path allocation and extra review surface. M11 v2 fmt/all-targetSSHClippy/library64pass2ignored and named transport correctness targets pass, CLIClippy/static build pass. FirstM11 attempt failed two loopback socket tests because its harness mistakenly created an isolated network namespace with loopback down; v2 removes only that network namespace, preserving source and UID/mount isolation. Original failure retained. No size/performance acceptance or cap change claimed.
management9-shared-read-z-size.log
management10b-enrollment-outlines-z-size.log
management11-observation-outline-z-size.log
management11-observation-outline-z-size-v2.log
P2 finding and narrow correction from the independent v16b source review (#231/#235, D17/D134).
An upgrade's manifest_state producer built its prior-directory identity using stat -c with literal backslash-t characters, then compared it literally against canonical TAB-separated receipt rows. An original manifest-owned state subdirectory therefore became retention-only
ain the new copied-state manifest instead ofd; native removal would retain that install-created directory. No deletion of independent data was demonstrated.A permanent direct regression now runs the actual manifest_authority.sh producer and private_write.sh bound reader over real original/copied inodes. It verifies inherited
a, copied regularr, copied symlinkk, and identityfcontrols; the unchanged original-owned directory must transferdcustody to the new copied inode. A second case moves/recreates the original directory while retaining the immutable original receipt: the copied directory must remaina. Both cases preserve receipt bytes and directory fixtures.RED: frozen recovery-v16b-source manifest_authority.sh SHA256 f3ae54dac42a3d07fb779130161d0b4aac28a9dd3c7484ebcc6d7ad2a0f76bd1; 2 cases run, exactly the intended d-versus-a assertion fails (exit1). GREEN: current uncommitted correction SHA256 aed96408ed4329e95edd05fa53add825f3d38763960de8f6827948e83fd5f078; 2 cases pass (exit0). Same test bytes SHA256 75c0f87e973eec10130ff5aad1bbcfe5a3e51d653ab13075ceece6c33a92dc24. The correction uses real TABs and documents the canonical-field invariant; the quoted child source remains one physical line.
Files: crates/plugins/ssh/tests/manifest_state.rs, manifest_state_test.py; production correction only crates/plugins/ssh/src/manifest_authority.sh. Shell syntax and Rustfmt checks pass. This is a direct producer regression, not a completed end-to-end upgrade/removal or exhaustive interruption proof. The native wrapper has not yet been compiled; root owns the queued build/gate. Working branch addhost-readd-r4, observed HEAD
1fe014108f; correction is uncommitted and no final completion claim is made.Exact RED/GREEN hashes, RED output, GREEN output.
Completed independent module crates/plugins/ssh/src/private_retirement.sh at
eae8ebd740. SHA256 683707c67de6ffc8fd2ad6eb76bcc6635ee3a46d8dca9cf3be9872d2bdb5fc5f. Exact HEAD+module syntax/fmt/SSH library Clippy and all selected real constructor regressions pass (filters ['private_retirement_round4::', 'upgrade_rollback_keeps_private_data_created_during_manager_reload']); compiled test artifact 672fde800fc9d53383438aad8371bc6ffaede3183483ce45f7bcd025c527412a, source context recovery-v16b, helper ab19015b370aed2483cc7fe58d7f77e0d3b1b7737abbe107bffc6b04dfeaf5d9. This module is byte-identical to that context; caller composition/final-head acceptance remain pending.atomic-v16b-private-retirement.log
atomic-v16b-private-retirement-source.json
Test-only comparator allocation-generation proposal (#231/#235), before implementation.
The completed v16b VM traces each contain496 ordered mutations with identical syscall/process counts, but the global raw(uid,device,inode) bijection rejects a legal allocator history. At ordinal2 the full trace allocates empty directory self-marker2097232 (filtered2097265); successful rmdir49 removes it. Filtered capsule-root2097263 is separately removed by successful rmdir52. At ordinal53 a NEW empty lease regular file gets full2097232/filtered2097263, is unlinked68, then NEW runtime directory69 reuses those integers. Its rename94 preserves that new directory through sessions. These allocation lifetimes do not overlap. Rawtuple equality across dead allocations is not object identity.
Introduce a comparison-only lifetime index from successful recorded new-allocation births and actual alias mutations. mkdir/symlink/named creating-open/anonymous O_TMPFILE birth can introduce a new generation after prior named aliases have retired; mere pathname absence never does. Rename and hardlink transfer/add aliases to the existing generation, while FD-only continuation retains its original generation without a new birth. Validate simultaneous alias/type/link/content consistency and retain every generation rather than deleting old mappings. Unknown or ambiguous histories fail closed. New-birth evidence cannot excuse an existing live alias being rebound.
Pair generation identities bijectively across runs. Resolve original receipt rows through their recorded path/digest and allocation interval, not simply the currently reused rawtuple. Preserve historical receipt identities and SHA reconstruction, including predecessor bindings and prefixes; a prefix can match a completed receipt only in the same original allocation generation. Resolve identity-bearing marker/header fields from their original generation (and full digest where present), so a later allocation cannot rewrite an earlier manifest binding. Keep all existing UID/type/mode/nlink/digest/path/event/final-namespace checks.
Fail first with a permanent deterministic trace derived from directory-rmdir→file-create→unlink→directory, using different allocator reuse patterns in the two arms. Required controls include successful nonoverlapping reuse, preserved rename/hardlink identity, overlapping alias collapse refusal, retained live inode rebinding refusal, FD-only continuation refusal if rebound, and an improper historical manifest binding refusal. Run the unchanged existing selfchecks and replay the exact complete v16b raw payload before another VM comparison. No production/source/lease limit changes, no new dependencies, no incomplete-equivalence claim. Seven remaining axes remain held.
Completed independent module crates/plugins/ssh/src/base_creation.sh at
06ee8ba9ea. SHA256 f491ead96262941c4ef3b0460f2ef2ec142be5ae0363b47425e51e0496190a3c. Exact HEAD+module syntax/fmt/SSH library Clippy and all selected real constructor regressions pass (filters ['base_creation_round4::custody_refusals_report_exact_paths_and_preserve_repeated_reads', 'base_creation_round4::guard_directory_reports_unsafe_parents_and_accepts_owned_readable_parents', 'base_creation_round4::private_record_canonical_prefixes_complete_before_binding']); compiled test artifact 672fde800fc9d53383438aad8371bc6ffaede3183483ce45f7bcd025c527412a, source context recovery-v16b, helper ab19015b370aed2483cc7fe58d7f77e0d3b1b7737abbe107bffc6b04dfeaf5d9. This module is byte-identical to that context; caller composition/final-head acceptance remain pending.atomic-v16b-base-creation.log
atomic-v16b-base-creation-source.json
Source18 checkpoint (not final acceptance): manifest ec5486c2cd0fe848d71f366d582a1d351faf9d47778d5eb434be709d99763f0f. Production changes from16b ONLY canonical literal-TAB manifest_state correction, with independent RED/GREEN producer controls already attached. Test-only permanent retention_report and recovery_fixture extractions preserve implementation/assertions; original installation fixture no longer depends on the future mutation-observer/focused-test families. Two rollback controls now use genuine producer phase cuts instead of matching encoded-wire plaintext or directly editing immutable creator rows. Source17 first failed all-target Clippy similar_names(state/stage), before compiler pins; source18 names the new local transaction_dir, with no lint allowance/assertion change. Source18 full ordinary integration gate is queued. Existing16b compiled source remains immutable for matched observer work.
First16b full/filtered workflow both complete with identical mutation/process counts; comparator correctly remains RED pending lifetime-model correction: kernel reuses a freed directory inode for a lease file and then another directory; global rawinode bijection joins different lifetimes. Remaining7 axes held; recorded receipts/negative alias controls precede any comparator correction. No final matrix, performance, size or full-head gate claim.
recovery-v17.log
retention-report-extraction.json
recovery-fixture-extraction-ready.json
rollback-fixture-source17-ready.json
recovery-v18-source.json
Completed independent module crates/plugins/ssh/src/creation_proof.sh at
6b0ef7d243. SHA256 69928af9029add9edbb7e3df8b117cf07620edff77a508e0555957a8a2b3619f. Exact HEAD+module syntax/fmt/SSH library Clippy and all selected real constructor regressions pass (filters ['raw_authority_round4::', 'fresh_cleanup_round4::fresh_preserve_phase_survives_immutable_proof_publication']); compiled test artifact 672fde800fc9d53383438aad8371bc6ffaede3183483ce45f7bcd025c527412a, source context recovery-v16b, helper ab19015b370aed2483cc7fe58d7f77e0d3b1b7737abbe107bffc6b04dfeaf5d9. This module is byte-identical to that context; caller composition/final-head acceptance remain pending.atomic-v16b-creation-proof.log
atomic-v16b-creation-proof-source.json
Completed independent module crates/plugins/ssh/src/fresh_cleanup.sh at
622874eb83. SHA256 ef6dac493b7b7bc7732cfadae4009db2c0ff1ba463676f853b72f25f2968ae67. Exact HEAD+module syntax/fmt/SSH library Clippy and all selected real constructor regressions pass (filters ['fresh_cleanup_round4::fresh_cleanup_preserves_independent_ready_owner_and_runtime_files', 'fresh_cleanup_round4::retained_base_cleanup_keeps_original_data_and_refuses_recreated_custody', 'fresh_cleanup_round4::repeated_fresh_restart_restores_the_previous_state_before_replacing_it']); compiled test artifact 672fde800fc9d53383438aad8371bc6ffaede3183483ce45f7bcd025c527412a, source context recovery-v16b, helper ab19015b370aed2483cc7fe58d7f77e0d3b1b7737abbe107bffc6b04dfeaf5d9. This module is byte-identical to that context; caller composition/final-head acceptance remain pending.atomic-v16b-fresh-cleanup.log
atomic-v16b-fresh-cleanup-source.json
Correction and proposed same-execution filter coverage oracle
The v16b first Rootless/fresh/separate comparison completed both full and filtered workflows. Both recorded 496 actual mutation/durability boundaries. The original global inode bijection first failed because the allocator legitimately reused a retired inode for new directory/file/directory lifetimes. A generation-aware prototype passed that conflict and then correctly retained a second RED at ordinal 449: private_retirement::retire_resume uses find -depth and the independent fixture allocations enumerate different created-record names first. The earlier assumption that these independent executions must have identical total mutation order was incorrect. This is not a demonstrated production defect. Neither the raw order difference nor its receipts will be sorted, ignored, or normalized away. The remaining seven axes remain unexecuted.
Evidence: observer-v16b-first-comparison.json (the original 3,273,959-byte complete comparison), observer-v16b-identity-conflict.json, observer-v16b-retirement-order.json, observer-generation-red.log, observer-generation-existing-controls2.log, and observer-generation-v16b-replay-initial.log. Full actor install time was 142.500688 seconds under the explicitly approved test-only 150-second full-install profile; filtered install was 39.510868 seconds under its unchanged ordinary 55-second profile. These are instrumented functional durations, not production latency measurements. The actual lease remains 180 seconds.
Proposed stronger coverage claim
Run the independent full PTRACE_SYSCALL tracer with the EXACT existing install_prefilter() BPF installed in the same owned actor. Continue obtaining every ordinary entry/exit stop and serializing writers exactly as the full observer currently does. Also request PTRACE_O_TRACESECCOMP, so the kernel emits PTRACE_EVENT_SECCOMP only when that installed filter selects TRACE. Do not independently reimplement the BPF decision in Python.
For the owned bootstrap installation of the filter, require the actual successful PR_SET_SECCOMP return and a witnessed initial exec before admitting the workload. Every task inherits the same filter; existing ptrace fork/clone ancestry handling remains authoritative. At the ordinary full syscall entry, create a per-task monotonically increasing call identity and the original syscall number/effective arguments. The later SECCOMP stop must match that SAME in-flight call and may only mark it witnessed. It must never reclassify it, overwrite its pending operation, advance its call counter, release a writer, or add a boundary. Repeated/missing/mismatched/orphan witnesses fail closed. Raw argument values are compared in memory only, never written to receipts or logs. For the existing real short-write modifier, match the kernel's effective count after PTRACE_POKEUSER, retaining the requested/effective count receipt already in use.
Before recording or cutting ANY full-observed mutation/durability boundary, require the matching real kernel witness. This includes forced same-byte writes/renames, anonymous open/write/fsync/link, failed attempted path operations that produce a cut, and the full observer's dirty-inotify fallback for otherwise unclassified syscalls. Also require the witness on every classified mutation/durability attempt, even when a failure yields no cut. Thus an erroneously ALLOWed writer fails on its actual full entry/exit rather than disappearing with the filtered schedule. Every emitted cut retains its own exact order and carries a boolean witness plus an opaque task/call identity. No source contents, stdin, argv, or syscall pointer arguments are retained.
The filtered mode remains a separate independent complete generated workflow, under its existing scheduling/profile/deadline. Its production assertions and final typed public identity graph must match the intended completed outcome. This no longer asserts that raw readdir order is equal across independent allocations. Full same-execution coverage plus eight actual full/filtered completed workflows replaces that invalid cross-fixture-order assumption. Full 96-product interruption/preservation coverage is a separate required qualification and is not claimed by these eight cases.
Failing controls before implementation
Scope and qualification
This is test-only observer/integration-oracle work. Proposed files: syscall_observer.py, syscall_observer_test.py, observer_equivalence.py (retain strict ordered comparator as a diagnostic and complete generation controls), activation_equivalence.rs, and only the existing scheduler-session plumbing needed to opt into audited full tracing. No production ordering, parser, protocol, R3 assertion, ordinary 60-second transport, ordinary/filtered 55-second observer, approved 150/155-second full profile, or real 180-second lease changes. No new library, engine, or feature. The parent must approve the exact implementation scope before edits. Kernel event sequencing will be established by actual selfchecks on the supported Linux x86_64 fixture; no portability claim beyond it.
Exact source18b kernel empty-lease control PASS on named locked perf VM:1 actual selected test, unchanged filtered actor55s/transport60s and real lease180s, owned container removed, lock released; raw receipts attached. The build-host4-worker ordinary suite hit that newly authored tracing safety watchdog at discovery line307/status97. This is not a #118 baseline exception and is not claimed as a green host suite. Per owner requirement that instrumented timing budgets run only on the perf VM, this NEW test will be explicitly ignored by default with a required locked-VM gate; every assertion and budget remains unchanged, and future compiled source must execute it positively using --ignored. Existing R3 tests and annotations stay unchanged. Other new generated tracing matrices already use required explicit slice gates. This changes execution location, not acceptance criteria. Initial raw .tar upload received422, corrected to gzip without content changes; no authentication error.
observer-v18b-current-rootless-fresh-separate-lease.log
observer-v18b-current-rootless-fresh-separate-lease-receipts.tar.gz
observer-v18b-transfer.json
Test-only same-execution coverage implementation is ready for the next coherent compiler-pinned snapshot; this is not an eight-axis or full-product completion claim.
The previous independent-total-order assumption was incorrect. The original complete v16b raw comparison still refuses at ordinal 449, where legitimate directory enumeration selects a different private child. No production ordering was changed, and no recorded event was sorted or discarded. The allocator-generation change also retains live-alias, rename/link/FD continuation, historical receipt, and six-inode future-base binding refusal controls.
Full tracing now installs the exact existing BPF while retaining every PTRACE_SYSCALL entry/exit stop. A real kernel seccomp stop can only witness its exact pending owned task/call/number/effective arguments; it cannot reclassify or create a second cut. Every actual mutation attempt and recorded cut, including the dirty fallback and anonymous producer operations, requires the witness. A real test filter that incorrectly ALLOWs write causes refusal. Missing/duplicate/orphan/task/call/number/argument witness controls refuse. Per-command completed audit statistics detect omitted cut receipts. Independent filtered workflows must finish and their complete independently statted final identity graph must agree, including exact manifest target UID/inode/type/hash relations and reconstructed receipt bytes.
Final direct verification, verbatim:
Rust formatting and Python AST parsing also pass. No Cargo build or new VM workflow has executed for these four test-only files. The existing actual full/filtered shortened-write controls both pass; only the full observer claims exact effective-argument filter completeness. The old v16b data cannot be retroactively certified: it has no actual kernel audit witnesses/statistics and did not independently stat the fixture root.
Original R3 assertions, ordinary/filtered 55/60-second profiles, approved full 150/155-second profile, and actual 180-second lease are unchanged. Remaining seven axes and full interruption/preservation products remain pending compiler pins and VM qualification.
Receipts: initial kernel-witness RED, final 44-test log, exact four source hashes and retained RED/refusal replay, original complete v16b comparison, allocator lifetime proof, unchanged ordering RED, pre-code correction/design.
D243 measured experiment M12, no adoption: three narrow native8 outline candidates yielded+256/+3264/-224B; all rejected. Next measure ONLY the existing CLI binary package at opt-level=s. Default workspace/dependency profiles stay unchanged, including transport/mesh/crypto3 and existing server/agent/SSH settings. Hypothesis: operator dispatch/metadata contributes avoidable size. This is not assumed cold: independent source review is identifying concrete CLI steady data paths and required actual VM probes before any acceptance. No new library/engine/dependency, no changed limits or checks, no owner ceiling change. Frozen native8 control remains21327760B (+62112 taskbase587/+102016 devbasec00); final coherent x86/ARM, resolved features, all functional/latency/scale gates and cumulative size acceptance remain pending.
Source20 frozen: manifest SHA256 dc90372e6bb9b90e3bbfa48df8204df695fd835f2c23c52f95ab82bfd9e21a83. Production is byte-identical to18b/19. Two test-only corrections: precreate original700 ancestor chain so the interrupted-transaction hook selects the intended base capsule (all original recovery assertions retained, plus exit42); compute empty service-flag SHA instead of the incorrect62-character literal. Exact file-backed permanent service control is RED before/GREEN after: Enabled/Active/Both accept empty600 files and all3 refuse nonempty digest. Tiny standalone rustc harness executed exact current types/validator/control; compiled Cargo gate remains pending. Source20 full ordinary suite queued; source19 kernel-witness compile/profile and VM qualification remain separate. No final acceptance claim.
service-flag-digest-red.log
service-flag-digest-green.log
service-flag-digest-repair-ready.json
recovery-v20-source.json
Source20 gate scope refinement before execution (log empty): keep fmt/all-target Clippy, compiler pins/caps,44 observer controls and report/manifest controls; replace the duplicate broad ordinary suite with positive exact selectors for the interrupted-transaction fixture and the new file-backed service SHA control. Then run SSHlib/creator-ledger/previous-attempt/recovery-support targets that source18b set-e will skip. Production identical18b; source18b broad suite still running its final R3 edit test. The actual shipping activation projection will independently run every original installer integration test; final fast remains required at committedHEAD. This is no fullordinary-green claim or waived failure.
Source18b broad ordinary installer run finished non-green. All3 R3 installer regressions pass;272 passed,2 failed,23 ignored. The2 failures are generated_empty_lease_requires_exact_kernel_lock_retirement (55s observer watchdog on shared build host; exact18b case separately passed positive1 on locked perf VM, receipts already attached) and review_interrupted_transaction_receipt_allows_owned_cleanup (hook selected earlier parent capsule; original700 ancestors correction in immutable20, original assertions unchanged and exit42 added). No baseline exception or final acceptance claimed. Source19/current VM qualification and20 positive correction gate are queued.
Verbatim final gate result (functional host transcript; not performance evidence):
recovery-v18b.log
Completed independent module crates/plugins/ssh/src/publication.sh at
496ee82199. SHA256 5e1ce9f099ebe4cfdd3e1b867c4b77e6f71b93d9456addbbb77a4aaa8b8ea2a5. Exact HEAD+module syntax/fmt/SSH library Clippy and all selected real constructor regressions pass (filters ['publication_round4::']); compiled test artifact 672fde800fc9d53383438aad8371bc6ffaede3183483ce45f7bcd025c527412a, source context recovery-v16b, helper ab19015b370aed2483cc7fe58d7f77e0d3b1b7737abbe107bffc6b04dfeaf5d9. This module is byte-identical to that context; caller composition/final-head acceptance remain pending.atomic-v16b-publication.log
atomic-v16b-publication-source.json
Source19 compile/profile milestone GREEN (not shippingHEAD/VM/exhaustive acceptance). Both all-targetSSH and remote(agent,test-support,tokio/rt-multi-thread) Clippy pass; unchangedRoot/Rootless/longDNS argv cap;44 direct Pythonobserver controls; compiledselfcheck positive1; retentioncontrols3; realmanifestproducerRustwrapper1/directPython2. Installartifact SHA256 194cac45ad2e1b6d05fece458cb3d677cfe32c4c3ba6b49ac25d0dec9db1ff71 (82690280B); helper a1ed805e1aececb94f8af9cb07f2f44916a22133ed0fb1869cd9a87703086ce8; source manifest 2c2969aa3a2afdcfea729bd243fb1f8d02f4f05e8f5291694ae51edd468dd7d8. Marker RECOVERY_V19_WITNESS_COMPILE_PROFILE_GREEN. VM staging attempt failed on metadata KeyError:a before any transfer/lock/measurement; correcting onlystaging, exactsource/binarypins unchanged. All8VM qualification routes and96product remain pending.
recovery-v19.log
Completed independent module crates/plugins/ssh/src/stage_creation.sh at
fc3f9a21aa. SHA256 e76ab7d8d104be4b67fd4512e71509871694669b2426ea7e3a468e0ca41dccbd. Exact HEAD+module syntax/fmt/SSH library Clippy and all selected real constructor regressions pass (filters ['base_creation_round4::private_record_canonical_prefixes_complete_before_binding', 'base_creation_round4::unexpected_or_bound_private_records_are_never_repaired']); compiled test artifact 672fde800fc9d53383438aad8371bc6ffaede3183483ce45f7bcd025c527412a, source context recovery-v16b, helper ab19015b370aed2483cc7fe58d7f77e0d3b1b7737abbe107bffc6b04dfeaf5d9. This module is byte-identical to that context; caller composition/final-head acceptance remain pending.atomic-v16b-stage-creation.log
atomic-v16b-stage-creation-source.json
Source19 actual VM qualification stopped fail-closed before its first mutation: the full observer demanded a filter witness for a read-only terminal query. The exact lease control passed; the first full/filtered workflow is RED and the remaining seven remain unrun. No production latency or coverage acceptance follows.
A tiny actual syscall reproduction identifies nr16 ioctl(TCGETS, 0x5401) on watched regular fd3 opened O_RDONLY. The query fails ENOTTY, has force=false, changes neither original inode nor public bytes, and records zero mutation cuts. The existing exact filter intentionally ALLOWs this existing READ_ONLY_IOCTL member. The newly added unconditional attempted-mutation witness check incorrectly treated its watched descriptor as an attempted mutation. This is observer classification, not an omitted mutation syscall in the filter.
The bounded correction excludes only existing READ_ONLY_IOCTL members from that early attempted-mutation check. The record() check remains mandatory for every actual recorded cut, including any unexpected dirty ioctl fallback. All existing filter omission/spoof/args/task/call negative controls remain. Add a permanent real O_RDONLY/TCGETS/ENOTTY control followed by a real file write; require query identity/bytes preservation, no invented ioctl cut, and actual same-call kernel witness on the write and its replayed cut. Add a direct dirty-fallback witness refusal control. No source19 snapshot changes, no BPF policy change, no clock/lease change, no production edits.
Receipts: evidence/observer-v19-ioctl-tiny-red.json; failed first workflow archive SHA256 6baed9ef2802a9c1ffe449d13c824d23d75aafcb576bdd83b21f2fc2a2462dd8; lease archive SHA256 76bbdc653033853cbaa0c1d801419384c222dbec2e748752e71073810fdcae06. Both owned containers were removed and the VM performance lock was released between cases.
Completed independent module crates/plugins/ssh/src/creator_ledger.sh at
94915b8e0e. SHA256 5e2de902da6fa267711c52b58c18c3388e233f9e166f35b1e96c70f4453cb70a. Exact HEAD+module syntax/fmt/SSH library Clippy and all selected real constructor regressions pass (filters ['raw_authority_round4::']); compiled test artifact 672fde800fc9d53383438aad8371bc6ffaede3183483ce45f7bcd025c527412a, source context recovery-v16b, helper ab19015b370aed2483cc7fe58d7f77e0d3b1b7737abbe107bffc6b04dfeaf5d9. This module is byte-identical to that context; caller composition/final-head acceptance remain pending.atomic-v16b-creator-ledger.log
atomic-v16b-creator-ledger-source.json
Completed canonical state-directory producer correction at
69cd8a0502. Exact HEAD-plus3files gate passes fmt, all-target SSH Clippy, SSH library tests and actual producer2-case direct/Rust-wrapper gates. Original d custody survives to the newly copied inode; a/r/k/f controls unchanged; recreated original directory remains a, receipt/fixture identities preserved. Earlier RED/GREEN evidence is attached above. Activation/final-head acceptance remain pending.atomic-state-directory.log
atomic-state-directory-source.json
Completed independent retention witness at
b6f1e4f9e4. Exact projected fmt/all-target SSH Clippy and3 explicit witness controls pass. Exact path/reason/newline, stdout/stderr, per-attempt reset, every descendant and private-stdin negative assertions remain unchanged from source18b. No shipping behavior or future observer family activated; installer/final-head gates remain pending.atomic-retention-report.log
atomic-retention-report-source.json
Completed prerequisite dictionary at
727ef7b51b. Replace infrequent complete names with shared phase prefixes. Keep127 entries, the same canonical representation and exact decoded bytes. Reject widening the command budget or storing duplicate recovery programs. This is the dictionary-only prerequisite; active producer composition must independently pass its command caps. Exact projection fmt/all-target SSH Clippy/library and nonempty selected controls pass. Final active installer and branch-head acceptance remain pending.atomic-current-dictionary.log
atomic-current-dictionary-source.json
Source19 VM result: exact ignored lease control passed one actual test. The first full-witness/filtered workflow stopped fail-closed with status97 before its first mutation; zero of eight workflow axes qualify, remaining seven unrun, and full96 unexecuted. Exact source19 compiler test SHA194cac45ad2e1b6d05fece458cb3d677cfe32c4c3ba6b49ac25d0dec9db1ff71 and helper SHAa1ed805e1aececb94f8af9cb07f2f44916a22133ed0fb1869cd9a87703086ce8. Both owned containers were removed; each case released perf.lock before copying/hashing/analyzing receipts.
The permanent ioctl regression was run before the correction: four full-mode subcases failed missing-witness while filtered counterparts passed. The correction affects only the premature attempted-mutation check for existing READ_ONLY_IOCTL queries. The actual record() witness fence is unchanged. Real failed TCGETS/ENOTTY and successful FIONREAD on O_RDONLY regular descriptors now preserve original bytes/inodes; subsequent real writes and generated write-cut replays retain actual kernel witnesses in full and filtered schedulers. An independently changed image at the read-only ioctl fallback still refuses missing evidence before recording a cut. Omitted-write and task/call/nr/arguments/spoof negative controls remain strict.
Final serialized direct verification, verbatim:
No production/BPF/comparator/source19 snapshot edits. Source21 preparation contains only the corrected test observer and its regressions alongside separately coordinated test fixtures; all eight current workflow qualifications plus current lease qualification remain mandatory. New staging/watch scripts are prepared but explicitly disabled until the coherent source21 compiler/profile marker and exact pins arrive. Ordinary55/60, full150/155, and real lease180 are unchanged. Instrumented case times are functional harness results, not production latency. No memory acceptance claim.
Receipts:
observer-v19-current-rootless-fresh-separate-lease-receipts.tar.gz
observer-v19-current-rootless-fresh-separate-equivalence-receipts.tar.gz
observer-v19-ioctl-tiny-red.json
observer-v19-readonly-ioctl-regression-red.log
observer-v19-readonly-ioctl-final46.log
observer-v21-readonly-ioctl-ready.json
Reporting finding/proposal before code: actual source20 canonical inventory accepts132 owned nodes; editing kind triggers the real private admission refusal (71), leaves all132 nodes, and emits21,495 stderr bytes (14,103 with normal rootful prefix). This is direct producer/count admission, not fully generated-stage or real-transport proof. Real process::execute rejects >8192; Local non-Negotiated currently captures unbounded. Current reporter also traverses arbitrary independent additions before the late1024 check. Raw receipts below.
Chosen additive direction: one canonical typed whole-private-tree retention record at the fatal admission boundary, binding exact path-byte SHA256 and current directory UID/device/inode plus explicit ALL_CURRENT_DESCENDANTS semantics. This collectively reports that exact directory and all current descendants kept; it does not claim an enumerated-tree hash, original creation authority, or literal individual path output. No recursive reporting scan, path adoption, deletion, default8KiB increase or dependency addition. Nested diagnostics within this boundary are private/suppressed; one small fixed record plus a fixed public failure category replaces the unbounded transcript. Missing/non-directory roots cannot claim subtree coverage. Existing individual Left records remain valid elsewhere.
Tests retain every independent descendant held inode/type/UID/bytes assertion and all original exact-line negative controls. Collective coverage requires an explicitly known setup coordinate, exact path digest/root identity before and after refusal, no symlink referents or lexical-prefix/.. coverage, current-attempt reset, canonical bounded single record and no conflicting/duplicate scopes. It never licenses deletion. New malformed/recreated/unrelated-scope controls and fully generated-stage + real process transport RED precede producer changes. Human output uses only an allowlisted fixed explanation that the private setup directory and all its contents were kept; no raw remote diagnostic/path bytes enter public logs. All3 R3 tests remain unchanged. Final real-transport, command-cap, size and VM gates remain required. This is a reporting representation contract addition; no existing gate is relabeled green.
source20-stderr-report-producer.json
source20-stderr-report-producer.log
Completed prerequisite rollback at
f24414073b. Describe snapshot restoration, independent replacement refusal and private-anchor retirement from original typed records. Reentry retains the original before-image; reject pathname or equal copied bytes as fresh removal authority. This is a dormant module; activation is a separate producer-consumer change. Exact projection fmt/all-target SSH Clippy/library and nonempty selected controls pass. Final active installer and branch-head acceptance remain pending.atomic-current-rollback.log
atomic-current-rollback-source.json
Completed separate bootstrap contract documentation at
d60653a27f. One-file exact projection and whitespace gate pass. Contract design was proposed on this issue before implementation; matching producer-consumer activation remains pending and no runtime acceptance is inferred from this docs gate.atomic-bootstrap-contract.log
manifest.json
Authorized bounded independent diagnostic: source21 remains OVERALL RED because recovery_support::cleanup_holds_runtime_lock_until_all_receipts_retire exits72 while its synthetic creator-ledger phase migration is pending. This is not an overall GREEN substitute. The same immutable source21 passed both all-target Clippy gates, unchanged command caps, Python46 and compiled observer selfcheck, report controls, manifest-state control, and corrected main/service positive tests.
Use exact compiler pins and a separate subset receipt (evidence/observer-v21-diagnostic-subset.json) to execute ONLY a fresh source21 ignored lease control followed, if it passes, by the FIRST Rootless/fresh/separate full-witness+filtered-outcome workflow. The new diagnostic driver contains no remaining-seven loop. Other seven remain UNRUN regardless of diagnostic result. Final corrected22+ HEAD must still independently qualify all eight and the exact lease case. No source19 pass is reused.
Source21 manifest804a3d9e71354b43b0a05341075eb7caf009882f07e6fa4bf6bd9f8968e6498e; compiler manifest2199d7208b6f7958d9b594ece05138935bd3dfc87e65b1ec135e9cbb5612610a; test ELF17ec5c6f7660fd823ed6c7a864174467229c14297b5090eb88137963252b90fe; helpera1ed805e1aececb94f8af9cb07f2f44916a22133ed0fb1869cd9a87703086ce8. Production21 matches18b/19/20. No binaries/source snapshots modified.
Stopped only the original idle source21 watcher PID3559695/start73014590 through its identity-pinned pidfd, after verifying no children; no VM21 case had run. Separate diag1 scripts/staging paths preserve the failed overall gate and old watcher records. Artifact hashing/copy/staging occurs outside perf.lock. Each actual case has its own lock/ISO owner timestamp/CPUWeight10000, original55/60 ordinary+filtered and150/155 full profile, real lease180 unchanged, positive ignored test count mandatory. No production-latency/memory/full96 acceptance claim.
Permanent generated-stage + real bounded-process RED (#231/#235): the actual old install and upgrade JOIN generated a valid 158-node private stage from 128 retained state files. Admission succeeded before the independent kind edit. Its actual refusal producer emitted 27,517 stderr bytes/status 71; process::execute returned
NoneandThe SSH output exceeded its safety limit.All 158 independently held identities/types/metadata/bytes were unchanged before the expectedSome(71)regression failed. Small actual generated-stage control: 30 nodes, 6,013 bytes, status 71, 1/1 passed. Large: 0 passed / 1 intended failure; Clippy and matching artifact compiler gates passed.Frozen source21 + only the new test and scratch declaration: source manifest SHA256
742cb95b086b72fea8352f6a134f36df44a12136784e8ff1eeafbbf4313d7269; test SHA256487113d814d324e4d155447dea5642636c578ea07ed4ab2ef9a5c9bef18e26fb. Full helper/test ELF hashes are in the attached receipt. This qualifies only native initial whole-stage admission/refusal, with no production correction in this baseline; no global stderr, real SSH, VM timing, size, or completion claim. The bounded additive correction remains separately tracked.retention-transport-source21-red-v3-finding.md
retention-transport-source21-red-v3-gate.log
retention-transport-source21-red-v3-results.json
retention-transport-source21-red-v3-source.json
retention-transport-source21-red-v3-test.txt
Recovery fixture diagnosis and test-only correction; no production ownership relaxation.
The frozen source21 recovery_support target reported 10 passed, 1 failed, 1 ignored.
cleanup_holds_runtime_lock_until_all_receipts_retirereached both original live-runtime status73 assertions, then failed the original cleanup0 assertion with status72 after its holder exited.A pinned21 direct control separated authority stages: the old manually assembled stage contained only
kind. Its original factory proof passed inventory matching0, but pure stage admission failed72 becausefresh_stage_phaserequires the immutable creator ledger. Missing transaction/creator records must not be adopted. The live runtime lock still correctly returned73 for inspection and rollback; after release, cleanup72 preserved its proof.The corrected fixture runs the exact compiled STAGE_TRANSACTION prefix ending immediately before its final lease-start call, verifies real stage admission0, and captures all original flat genesis entries in the factory's completed immutable proof. The fixture's actual fd6 holder and original lock-held/status73/partial-receipt/socket/proof assertions remain unchanged. It now reaches cleanup0 and proof removal after holder exit. No schema stubs, invented creator anchors, current-path adoption or production changes are involved.
Qualified checks: exact frozen21 selected Rust test RED (cleanup72), exact corrected selected Rust test GREEN (1 passed, 0 failed, 11 filtered), plus paired pinned21 real shell/runtime-helper control. These are standalone rustc/dependency-ELF and direct-shell functional checks, not a full Cargo target or benchmark. Source22 must still execute the entire recovery_support target and normal gates.
Source SHA256:
b0b3d367e7d2656d9c21148b170dc0b9a67f91a6ba7260e5c849c7a98537b769.Direct pinned producer/lock receipt, isolated unit provenance, original unit RED, corrected unit GREEN.
M12 size comparison correction; no source/profile adoption.
The first M12 CLI-package
opt-level="s"artifact retained symbol tables: 24,550,048 B. Comparing it with stripped M8 was invalid. Distinctstrip --strip-allcopy: 19,832,168 B, SHA256 3eaae7566c32a20c17a2bccb976467c1ed4f9d0a006ef33c311f60407cbccd6f; M8 stripped: 21,327,760 B. The original artifact and failed comparison receipts remain.M12b adds only explicit
strip=trueto the existing CLI package override (workspace release already requests stripping). Same static shipping recipe now produces a stripped 19,832,176 B artifact, SHA256 2e550c42d130430389f33db8fb6e26e80cb44555072cd5b1fd6d775ab8c28178: -1,495,584 B versus M8; -1,433,472 B versus task base58760f49d; -1,393,568 B versus dev merge basec00c6364e.readelfconfirms no.symtabor.debug_info. Recipe gate endsMANAGEMENT12B_EXPLICIT_STRIP_RECIPE_GREEN. This is an experimental source, not the current branch or final D243 gate.Functional test harness corrections are separate: a current-user-only mount namespace makes system-root ancestors appear unmapped, so the immutable CLI unit ELF was replayed under the real UID/root metadata. The first outside replay inherited pin mode 0500 and failed its image-strip test; mode 0700 matches the private test artifact's required write permission. Same SHA256 throughout. Final replay: 101 passed, 0 failed, 2 ignored; the candidate graph-reading test separately passed once inside its exact source namespace. Both ignored timing measurements still need the VM. All earlier failures retained; no assertions skipped and no #118 exception claimed.
The broad CLI package profile changes hot entry wrappers. Size alone does not qualify it. Building one common pinned server test launcher next, then matched actual CLI measurements on the perf VM; existing runtime dimensions and uncovered server/removal workload gaps remain explicit.
management12b-cli-s-size.log
management12-cli-s-unit-outside-v3.log
management12-cli-s-stripped-size.json
management12-cli-s-unit-mode-correction.json
Completed parser-module step:
6da2af4f83. Adds the canonical borrowed collective-retention parser and public exports only; no producer/phase activation or remote-text exposure. Five permanent parser cases, exact numeric endpoints/overflow/canonical spelling/digest and every truncation. Exact HEAD projection: fmt GREEN; SSH all-target Clippy GREEN; library 63 passed, 0 failed, 2 ignored. Final fast/static/whole-workflow verification remains pending.atomic-setup-tree-parser-gate.log
atomic-setup-tree-parser-source.json
Completed two separate logical steps:
bbb4622f9e: fixed local classification sentence only; remote coordinates/digest/raw bytes never serialized, mixed/partial/duplicate and SSH connection failures cannot claim retention. Fmt + all-target SSH Clippy GREEN; library63pass/0fail/2ignored; classification1pass/0fail.002f64ad13: collective emitter only, no recursive scan. Nonfollowing current setup-directory UID/dev/inode fenced around raw-path hashing; missing/file/symlink/unrelated roots claim nothing. Fmt + shell syntax + all-target SSH Clippy GREEN; library63pass/0fail/2ignored; exact emitter1pass/0fail. Initial projected test had an extra final blank line: original fmt failure retained, corrected v2 gate passes.Admission stderr/descriptor isolation and actual generated bounded-process GREEN remain separate pending steps; no whole-command bound or final gate claim.
atomic-setup-tree-classification-gate.log
atomic-setup-tree-emitter-gate-v2.log
atomic-setup-tree-emitter-source-v2.json
DIAGNOSTIC21 finding: fresh exact lease control passed one actual ignored test. The first Rootless/fresh/separate full-witness workflow is RED at the unchanged150-second Install actor bound. It recorded415 actual mutation/durability cuts; filtered workflow never started and other7 axes remain UNRUN. Overall21 gate remains RED; full96 remains unexecuted. Owned containers were removed and perf.lock released before receipt inspection/copy/hashing.
Actual completed full commands before Install:0.318295s,12.062721s,3.495209s. Install actor stopped at150.000174s:26,298 owned processes;1,579,833 entry stops;1,553,535 exit stops;68,544 actual kernel filter witnesses;252 local cuts after163 earlier cuts. These are VM instrumented functional results, not production latency. No timer/lease was enlarged or normalized.
Immutable trace places the deadline after launcher publication cut414 and creation of replacing-unit flag cut415, before unit publication. Production path is ACTIVATE→publication_replace unit→publication_original/publication_authority_load, authenticating before-image and full creation_rows_emit/cl_validate. Retained owned exec controls total1279:1264 tools/awk,4 awk-wire,4 payload,4 runtime-helper,3 systemctl;163fsync and11flock controls. Last10 controlled execs are tools/awk. Exact external stat/sha/all-read syscall process families were not retained; they cannot be retrospectively invented. No same-artifact untraced whole Install VM completion measurement exists in these receipts, so the timeout alone cannot establish production slowness or quantify observer overhead.
Authorized next diagnostic: a scratch-only21 test projection (shipping source closure byte-identical21, explicit new test source+ELF pins) will exercise the same activate/complete workflow through true ordinary Local versus actual seccomp. It will retain static phase timings, outcomes/identity-graph proofs, exact source/artifact provenance and honest Linux wait4 RSS scope; no Bash DEBUG mode relabeled NONE. All original clocks/lease remain. Other7 and final22+ full8 qualification remain separate requirements.
Separate scratch-only capture-bookkeeping candidate: reuse syscall-info storage and parse validated-length fields directly, avoiding fresh ctypes buffers and repeated128-byte .raw copies on every stop. Keep every entry/exit stop, scheduler/serialization, witnesses, argument ownership, cuts and frame bounds. Add truncation/stale-tail/op/PID/args negative controls before considering any adoption. No LIVE optimization edits, mutable evidence cache, production change, or claimed saving.
Receipts:
observer-v21-diag1-current-rootless-fresh-separate-lease-receipts.tar.gz
observer-v21-diag1-current-rootless-fresh-separate-equivalence-receipts.tar.gz
observer-v21-diag1-attribution.json
observer-v21-diagnostic-subset.json
observer-v21-diag1-summary.json
Completed admission-report step
2cb59ceef4. Existing pure-admission subshell saves stderr locally, suppresses nested diagnostics and emits one collective record on failure. Original status, caller fd5 open/closed state, fd6-9 identities/locks and both EXIT traps all retained. Exact HEAD projection: fmt, shell syntax and all-target SSH Clippy GREEN; library63 passed/0 failed/2 ignored, real-shell descriptor+emitter2 passed/0 failed. No whole retirement-worker output bound claim.Coherent source22 first gate stopped at Clippy: new no-read-permission test used decimal0 in Permissions::from_mode. Corrected only to octal0o0, preserving the assertion and all production bytes; source22/RED log retained, immutable source23 replays the complete gate.
atomic-setup-tree-admission-gate.log
atomic-setup-tree-admission-source.json
Finding in the new stderr-isolation step: a retained non-directory
.bootstrap-lockcannot emit the directory-only collective frame, so suppression swallowed its original exact point report. Direct actual-shell RED: status71, stderr0B, original UID/dev/inode/mode and bytes unchanged. This is reporting loss, not deletion.Added a permanent regular-file/symlink control requiring an exact point report, no subtree claim, unchanged node identity/bytes and untouched independent referent. Candidate fallback captures only the bounded directory record; otherwise reports the exact retained setup node. Direct GREEN: both node types status71,179B point report, all identity/byte checks pass. Separate exact-HEAD permanent Rust RED/GREEN+Clippy gate queued; coherent23 does not include this subsequent correction. No missing/symlink root gains descendant coverage.
non-directory-retention-red.json
non-directory-retention-green.json
Actual shipping-CLI qualification stopped on a baseline functional failure; no M12b regression or performance acceptance claim.
The immutable pair was staged and fully hashed outside the perf lock: M8 SHA
647ff9ec136166391f0bdf42fd093ab6d72798533208820c6713323f386a5214(21,327,760B), M12b SHA2e550c42d130430389f33db8fb6e26e80cb44555072cd5b1fd6d775ab8c28178(19,832,176B). All1,883 source files match except the CLI package{opt-level="s",strip=true}Cargo profile. The common release server harness is unchanged SHA70d883d9ced1e77de5a2876eb0452b8d35169c15d6d148174345863062a8692f; its explicit loader/provider closure and frozen driver sources are pinned. Four primary selectors enumerated exactly once in the isolated rootless namespace.On the perf VM (4CPUs, MemTotal8,069,112KiB), the first unchanged M8
remote_cli_enrollment_and_browser_terminal_two_processescase failed before any benchmark metric. Two diagnostic-only repetitions retained no private argv/input/output: the actual shipping CLI launched, joined identity.json appeared, no runtime socket appeared, and canonical supervisor output reportedSome(NotFound)retries. The existing ten-second host-registration assertion failed at frozen remote_demo_tests.rs:360. No assertion or timeout was changed.The independent existing task-base58760 shipping artifact SHA
e4da1abed127b2e6029b5a60310bf81043035faf364f7a08fe3d58b2f0bd722f(21,265,648B) failed the SAME unchanged fixture and assertion with the SAME canonical NotFound retries. Four relevant source slices are byte-identical between task base and M8: runtime acquire_owned/acquire_bound, CLI remote::run, Service::start_retained/runtime acquisition, and the fixture CLI invocation.Source causality: the fixture passes
agent --data <owned Directory/data> --state <owned Directory/s> join <public local URL>, and never creates Directory/.bootstrap-owner. Both task-base and M8 treat explicit state as an installation Context; acquire_owned then requires that existing host marker before starting runtime sockets. This identifies a preexisting custom-state/managed-provenance contract issue, not a new M12b effect. The documented operator/test agent-join contract and hidden --state semantics still need resolution. No runtime observer manufactured a marker, no fixture/production source was changed, and no second build was performed.Qualification accounting: 0/56 primary cases completed successfully; M12b has not run; the remaining dimensions are unrun. The first regular M8 attempt and diagnostics are not substituted for the required matched cases. No latency/throughput/idle/RSS comparison is available. All recorded process births are gone, owned disk-backed fixture state is empty, and each shared lock/owner was released. The sequence remains held for contract diagnosis. Existing full-server traffic and whole-tree memory gaps remain.
Proposed next step (scratch common-driver fixture only, not executed): explicitly label these as managed remote CLI benchmarks. Publish the known public host marker once with create_new/owned600 checks in the original private700 fixture, before the first CLI launch and before its existing measurement timestamp. Restarts must assert and reuse the original marker without repair. Renewal setup already knows its original host. Preserve every workload/deadline/assertion and add existing-marker negative controls; keep the missing-marker VM RED. Both shipping CLI artifacts remain unchanged. This does not qualify the generic no-state operator path or installer performance. Parent owns the single rebuilt common-driver gate.
management12b-actual-cli-stage.json
management12b-cli-two-process-diagnostic2.log
management12b-cli-two-process-diagnostic2-receipt.json
management12b-taskbase-source-comparison.json
management12b-cli-taskbase-diagnostic.log
management12b-cli-taskbase-diagnostic-receipt.json
management12b-failed-baseline-cleanup.json
Coherent source23 compile/profile gate GREEN (not final HEAD/fast/exhaustive coverage). Source manifest 6e48eedea25d33632b198d3278a6089de2251590f3f75b9529cf595c37ac95e0; compiler-reported installer test SHA b8801640681fff63b7d9b890e89dcb3f3b06afaee6f34f31663b0f55ca794634; helper SHA 039f84051183f317a74d95da35b5080d7c376ebb0d95487a5fbb1f72e1970ecb.
Both SSH and remote all-target Clippy + fmt/shell syntax GREEN. Command caps GREEN both modes (largest Root command130303B). Python observer46, compiled observer selfcheck1, retention matcher16, actual bounded-process transport2, emitter/descriptor2, classifier1, manifest wrapper1/direct2, transaction-open cleanup1, service-flag1, library69/0/2ignored, creator ledger1/0/1ignored, shell wrapper1, recovery support11/0/1ignored. The ignored cases remain separate required slice gates where applicable; no Docker case was relabeled passed.
Actual fully generated upgrade regression now GREEN: successful pure admission before independent edit, all158 held private nodes checked unchanged, transcript138B and real bounded transport preserves status71. Previous exact-source RED:27517B and lost statusNone. Small control30nodes also138B/Some71. Host durations are functional receipts only, not performance evidence.
Final marker, verbatim:
The subsequently found retained non-directory point-report fallback is NOT in immutable23; its own permanent RED/GREEN gate is running. Retirement-worker reporting and full interruption-product execution remain open. No push, deployment or final gate claim.
recovery-v23.log
recovery-v23-retention-transport.log
recovery-v23-retention-report.log
manifest.json
Scratch-only diagnostic21 projection is compiled and pinned. All shipping source/features remain byte-identical immutable21 (base manifest804a3d9e71354b43b0a05341075eb7caf009882f07e6fa4bf6bd9f8968e6498e). New test source only adds true ordinary Local versus actual seccomp workflow measurement, and separately selectable original versus reusable syscall-info-buffer full observers. Each arm keeps the same activate/complete producer, existing clocks and lease180. Final identity/manifest checks happen after producer timing. No whole-head/eight-way qualification claim; original overall21 remains RED.
New source manifest275d4c46e077125bb978275693d397294a85b41dd2c95b62229c87e6d16f87c3. Compiler pin manifest e64d17ced01c2a843e23167e5a0229e4778e2ecf041269336d85ca159a24c288; new testELF0bf2ec7306e507b19ae4a85a77327f49d0be59ce6a24cbfed8071eafa7e01f61. Existing immutable21 helpera1ed805e1aececb94f8af9cb07f2f44916a22133ed0fb1869cd9a87703086ce8 is reused through verified unchanged shipping closure, not claimed newly compiled. fmt, install-target Clippy and test --no-run passed; no ignored workflow/benchmark ran on the build host.
The scratch buffer candidate avoids allocating/copying a128-byte syscall-info frame at every stop. It reuses per-Observer storage but returns independent owned scalar/argument tuples, validates common/op-specific returned lengths before any tail access, and changes no scheduling, stops, witnesses, cuts, paths, filesystem evidence or clocks. Actual kernel truncation control was RED on original (returned bytecount deliberately0 after real GETINFO fill; actor mutation continued) and GREEN on candidate (refused before mutation). Four ABI/truncation/stale-tail/PID/op/argument-ownership controls plus all46 original controls pass. No measured saving or adoption yet.
Preserved failed attempts: v1 diagnostic projection failed two test-only Clippy style checks; first standalone46 replay lacked two exact source fixture dependencies (other44+new4 passed). New immutable v2 and corrected controls2 replay pass; original failed receipts are retained, never relabeled.
VM staging/copy/provider verification occurs outside perf.lock. Each actual case uses its own lock, CPUWeight10000 and original bounds. Static seven command labels and wholeflow time are recorded only on VM. wait4 maxRSS is the largest individual waited descendant maximum, not whole-tree RSS, a summed bound, or per-host/session memory. Untraced process count remains unmeasured; actual seccomp process statistics remain separately scoped. VM results pending.
Completed separate commits:
917ab70680: preserve exact point reports for retained non-directory setup nodes without claiming descendant coverage. Permanent real-shell test RED on exact HEAD missing-report assertion, then GREEN with original UID/dev/inode/mode/bytes and referent unchanged. Fmt/syntax/all-target SSH Clippy GREEN; library63/0/2ignored and reporting3/0/0.204c11736d: additive bounded-directory reporting contract, documentation only; original surrounding contract bytes preserved and whitespace check GREEN.f08bdca0be: independent held-root reporting witness; original three controls remain byte-identical. Exact HEAD projection fmt/all-target SSH Clippy GREEN and16report tests GREEN. Root recreation/current identity, component/symlink boundaries, stdout/malformed/duplicate/earlier-attempt frames and absent descendants fail closed.No push/deployment or final fast gate. Full retirement-worker reporting remains open: exact23 actual post-admission controls reproduce missing second-leaf reporting and multi-batch output overflow; separate design/catalog correction underway.
atomic-setup-node-report-gate-v2.log
atomic-setup-node-report-red-v2.log
atomic-retention-scope-gate.log
bounded-retention-contract-gate.json
The new diagnostic21 VM projection is RED, with raw receipts retained. No current-head/eight-way qualification or paired performance/RSS result is accepted.
The actual unchanged shipping21 producer completed all seven commands in every saved record: untraced Local wholeflow24.539/24.630s, Install18.227/18.269s; seccomp wholeflow55.691/55.725s, Install40.813/40.554s. Each seccomp Install reports26299 actual processes/253 local cuts, and all seven command statistics finished. These are preliminary static phase records only, not a planned matched experiment: my new wrapper was named resource.py, shadowing Python's standard resource module during os.wait4 and accidentally reexecuting the module/test once before failing AttributeError. No usable RSS or whole-pair outcome result was produced. Both owned containers were removed and perf.lock released. Correction is a new wrapper filename and explicit main guard, not a deadline/lease change.
Independent final-graph refusal is also reproducible from each captured completed image: OutcomeComparison.prepare expects SHA256(readlink bytes) for manifest l rows. The existing writer intentionally records '-' for d/l and hashes only regular f/r files (manifest_authority.sh::manifest_row); actual source21 l UID/device/inode/type all match. First rejected role is bin/current. This is a test oracle contract error, not a shipping manifest failure. A scratch-only proposal requires literal '-' on l, keeps exact l UID/device/inode/type checks, and independently constrains all three native entrypoint target bytes from the matching public unit's host/base/mode/enablement coordinates. Actual selfgraph changes RED to GREEN26nodes; changed target, inode, type or non-'-' spelling remain rejected. Parent review is pending; no LIVE comparator edit/adoption.
Immutable raw archives: NONE45cc11d4359d3b8fab78fc6273a8f8c40ec8f67d66f94d594587701e69df25d9; seccompf539d6f5dae573570af01626c15cdf9f00ff6990759369cad90775c763940424. New source v2 manifest275d4c46e077125bb978275693d397294a85b41dd2c95b62229c87e6d16f87c3, testELF0bf2ec7306e507b19ae4a85a77327f49d0be59ce6a24cbfed8071eafa7e01f61. Helper source/producer stayed immutable21: originala1ed805e1aececb94f8af9cb07f2f44916a22133ed0fb1869cd9a87703086ce8, launch-only interpreter/RUNPATH relocated0474051e5ffbe4494b0cc1d4943b177a280924bb81920646a6027d60a8e1eb1d; no strip or source change. Other seven workflow axes and full96 product remain UNRUN.
Qualified post-admission installer cleanup REDs against exact source23, with genuine generated-stage admission/proof and actual bounded process + native rollback retry:
The SSH output exceeded its safety limit.All87 held identities/types/modes/link-counts/bytes remain unchanged after every pass.Exact selection:0passed/2intended failures/0skipped; both intended assertions were reached. Clippy/compiler gates passed. No source23 or LIVE production change. No real SSH, VM timing, final size, global reporting, or completion claim. The scratch regression source remains available unchanged for a later logical test slice.
Source manifest
3d9a34a10441ff2ac9429cc231a75ac971215d7ef1af5633a5ecb259811dc4e2; test ELFebbe013de4bc06513d24080d45bde4dbdd410e57f943887c9a68674294b13d1e; exact source23 helper039f84051183f317a74d95da35b5080d7c376ebb0d95487a5fbb1f72e1970ecb. Full provenance and raw producer bytes are attached. A bounded structured-report catalog is being drafted separately for review before implementation.worker-retention-source23-red-v2-finding.md
worker-retention-source23-red-v2-gate.log
worker-retention-source23-small-producer.txt
worker-retention-source23-long-producer.txt
worker-retention-source23-red-v2-results.json
worker-retention-source23-red-v2-test.txt
Managed actual-CLI experiment fixture is now compiler-pinned. This is a scratch-only managed installation context, not generic no-state join or installer performance. The known public original host marker is published once by the fixture before first CLI launch; create_new, original held inode, current UID/mode/link count and exact host bytes remain mandatory on every restart. No CLI/runtime source or either shipping artifact changed.
The new helper formatting check and selected server lib/tests strict Clippy passed (--no-deps). Three permanent scratch helper controls passed, including no-overwrite and changed/recreated-marker refusal. All four primary selectors enumerate exactly once. The initial broad dependency lint failure is retained separately; no dependency source was changed.
Common driver: 33,248,712 bytes, SHA256 ecc49eb2b825410559dfc5739aa39f7e2956a26e818cfbff15cafb1b7f7fbe84. Original common driver70d883d9 remains the missing-marker negative control. Approved four-file fixture patch67d47fc27ce0e7745c272cb50e94c394d1f2f6833ea678a43de807e8779d67d6.
Fresh VM bundle SHA256227dea43e122411730caf503c365ca1f3e483a0eb86450b56b734ea3d79c4a4f passed all-file/provider hashing and four exact-selector preflights outside the benchmark lock. The 56-case ABBA/BAAB run is starting from zero; prior failures/diagnostics are excluded. No timing/profile adoption claim follows from these functional controls. Every measurement uses the VM lock and CPUWeight10000; each case releases its lock. Actual server/shim scheduling will be checked before the idle windows.
management12b-managed-common-server-artifact.json
management12b-managed-fixture-ready.json
management12b-managed-fixture-controls.log
management12b-managed-common-server-gate-v2.log
Corrected scratch diagnostic21 pair is GREEN: one actual test execution each under true untraced Local and actual seccomp, all seven producer commands completed, exact three native l rows required, final26-node identity graphs matched with two reconstructed receipts and no ignored content. This is a newly compiled diagnostic-only testELF over unchanged immutable21 shipping closure; source21 overall remains RED, current source23/eight-way qualification and full96 product remain UNRUN. No deadline/lease changes.
VM observations (one diagnostic pair, not median/p95 or capacity acceptance): untraced wholeflow24.845600306s, Install18.554907229s; seccomp wholeflow56.046381508s, Install41.196920524s. Actual seccomp Install26299 processes/253 local cuts; all seven stats finished,496 total cuts. Untraced exact process count is unmeasured. wait4 CPU: untraced20.335718user/5.305278system seconds; seccomp35.960110user/16.688264system. wait4 maxRSS24592/33252KiB is Linux's largest individual waited descendant maximum, NOT whole-tree RSS, a summed bound, memory per host or persistent session cost. Postflow graph work is excluded from the producer timings and included in whole-test resource scope.
Source v4 manifest183080621ad18a85065b84fad6b0f8aaa24ec121d4306d9daf6c77770f2310e5. Compiler pin37ec2edceab790d393fc16fb6e415c267b91b76cc9434346a51675326c1e476d, testELF96a73464973f480eed180315ac839e60fecce5a7c9d6ff8279ebeec1a4d7043d. Stage363840f15109eafb642c9354ebca393ea6e6a5f481369cd74cf583c314d25e64, original21 helpera1ed805e… / interpreter-and-RUNPATH-only relocated0474051e… unchanged as documented. No strip/source/producer modification. New wrapper usage_probe.py has explicit main guard and uses the standard resource module; previous shadowing/double-execution RED receipts remain intact, excluded from accepted pair/RSS.
Typed graph correction preserves f/d historical checks and exact original negative assertions. Only manifests containing l rows derive role authority, from the two exact native fixture unit coordinates and their matching base/host/wanted. l requires literal '-' plus exact UID/device/inode/type and canonical current/launcher/wanted targets. Unknown roles/manifest/unit lookalikes cannot grant authority. Existing generic f-only negative remains unchanged. Gate: fmt +install-target Clippy +newELF compile +14 graph controls +46 original controls +4 ABI controls +46 candidate controls GREEN. V3 eager-role-check failure was preserved and corrected in new immutable v4, not edited/relabelled. Root coordinate parser positives are NOT actual Root workflow qualification.
Raw accepted pair archives: untraced34978a881ac5dbf72472990924b9fd5c47849c8541fe470203bd9f21bfab7738; seccomp341276e1dc1e48c690eb248fc95de519b9dc67c07b0b95b42188dbad2cc03f8b. Both owned containers removed, lock released between cases, CPUWeight10000 observed, all artifact/provider preflight hashing outside perf.lock. Full-original/full-buffer matched scratch observer pair is now pending under separate case locks, original150/155 full profile and180 lease; no candidate saving/adoption claim yet.
The managed M8 canary exposed two VM staging defects. Both failed runs are retained and excluded; no matched M12b performance case has run and the qualified comparison remains0/56.
The marker correction advanced genuine startup: original marker600, runtime700, original lifetime lock600 and plugin listener were observed, followed by actual shim children. The isolated namespace had replaced /home with tmpfs but omitted UID1001's passwd home /home/bench. Shipping Pty::spawn changes to that exact account directory before launching its shell. The namespace-only repair creates that private700 home and aligns HOME; it never accesses or writes the VM's real home. Both unchanged shipping CLIs then passed actual PTY open/echo/exit, including repeats under their own shared VM lock/CPUWeight10000. The earlier unlocked functional smoke is explicitly retained as such, with no timing credit.
The next M8 run reached its real daemon/terminal RSS check, then failed remote_demo_tests.rs458 with a canonical No-such-file category from its unchanged idle-canary launcher. The frozen18-file fixture closure lacked the EMPTY crates/infraternal-server directory that the compiler's literal crates/infraternal-server/../../scripts/idle_canary.py path must traverse. The normalized file existed; the literal path did not. A new immutable bundle adds only that directory, records directory types/modes, and positively checks the compiler directory plus literal idle-canary/flood helper paths. All18existing fixture file hashes, the common ECC49 ELF, both shipping CLIs, workloads, assertions and deadlines remain unchanged.
New bundle SHA25635a45bc73b65952e92fde84221f34d9405d08f387fb45c2c841c6f634c21a701 passed file/provider/directory/selector preflight outside the benchmark lock. Its locked functional smoke and fresh56 ABBA/BAAB sequence are queued fairly. These findings qualify staging, not performance or adoption of M8/M12b. No production/index/commit changes.
management12b-managed-diagnostic2-receipt.json
management12b-managed-diagnostic2.log
management12b-managed-v3-diagnostic.log
management12b-managed-v3-compiled-path-red.json
management12b-managed-v3-locked-smoke-receipt.json
management12b-actual-cli-v4-managed-stage.json
management12b-actual-cli-v4-managed-preflight.log
Step committed:
0c8aca9bac596c42b761dc463cd6ecf8510e7036extends the existing shared SSH robustness target with canonical retention-frame properties and adds an explicit synthetic seed-only mode. No dependency, feature or engine change.Exact projected HEAD: fmt, selected-target Clippy and compiler-reported target build GREEN (
ATOMIC_RETENTION_PARSER_PROPERTIES_BUILD_GREEN). All 148 public synthetic seeds classified: 3 accepted, 145 rejected. On the locked perf VM under CPUWeight=10000, the identical SHA-pinned ordinary target completed 10,000 fixed-count inputs without assertion failures (PARSER_PROPERTIES_FIXED_COUNT_GREEN). This target is not coverage-instrumented; no coverage, throughput or memory qualification is claimed. Parser/truncation/duplicate framing assertions remain strict.Build gate, seed classification, VM artifact provenance, VM fixed-count output.
Overall round4 remains incomplete. Actual worker-report REDs, full interruption matrix, runtime/size qualification and final branch-head fast gate are outstanding. No push/deploy.
Current actual-CLI comparison remains blocked at0/56. No M12b matched performance case has run, and no candidate/profile is accepted.
After the independently proven private-home and compiler-path staging corrections, the unchanged managed M8 two-process test reaches its real terminal and daemon idle check. Narrow locked VM diagnostics now distinguish two failures rather than attributing everything to idle:
All original deadlines/assertions remain. No browser pumping change, quiet-period extension, activation allowance, production source, new Cargo rebuild, index or commit has been made. A reusable bounded browser pump exists, but its possible fixture migration is a separate reviewable step and would not excuse the early zero-idle violations. Every known diagnostic CLI PID/birth is now gone, private fixture directories are empty, and the shared VM lock was released.
management12b-managed-v4-paired-M8.log
management12b-managed-v4-paired-Taskbase587.log
management12b-managed-v4-taskbase-source.json
management12b-managed-v4-diagnostic.log
management12b-managed-v4-diagnostic-cleanup.json
Atomic lease step committed:
1f76411b77d790c47dfed4f7a79e4b6c1e537c8b. Only lease-record parsing/retirement and an independent kernel regression are included; activation remains separate.Before fix: empty private lease plus an actual stage-lock holder returned 1 instead of the required 73. After fix: empty records confer no signal authority; unreaped children confer none after descriptor closure; recovery still takes the exact kernel stage flock. Live PID/birth/fd7 mismatches remain refusals. The original unreaped/live assertions are preserved, with three added empty-record controls. The test now lives once in
tests/setup_lease.rs, independently of the uncommitted activation harness.Exact projected index: fmt, shell syntax, all-target SSH Clippy, library
63 passed; 0 failed; 2 ignored, and real-kernel regression1 passed; 0 failed; 0 ignored. Marker:ATOMIC_SETUP_LEASE_green_GREEN. Initial test lint failure was corrected through the established test unwrap allowance, without changing assertions.Original RED, initial lint RED, exact-index GREEN. These are functional checks; their elapsed host times are not performance evidence. Overall round4 remains incomplete; no push/deploy.
Both full-observer diagnostic arms completed on the VM with original150/155/180 bounds, all seven producer phases, exact three native l rows,496 actual mutation/durability cuts with496 matching same-call real kernel witnesses, and matching final26-node identity graphs. No LIVE observer/source adoption has occurred. Original source21 overall remains RED; source23/current-head eight-way qualification and full96 Cartesian product remain UNRUN.
Single-pair observations only: original wholeflow201.752312798s /Install149.013719112s; reusable syscall-info-buffer candidate198.505643275s /147.047394153s. Ratios0.983908/0.986804 (~1.6%/~1.3% lower) are too small and insufficiently repeated to establish a decisive overhead fix or performance acceptance. Original earlier150s RED is retained; its now149.01s pass demonstrates proximity/variance near the same limit. Actual Install process counts26299/26299 and local cuts253/253. Every other actual cut remains witnessed; harmless entry/exit-read stop counts differ slightly between executions, never normalized/dropped.
Wait4 CPU: original136.484212user+48.361577system; candidate134.907275+46.968730 seconds. maxRSS34880/34692KiB is largest individual waited-descendant maximum only, NOT whole-tree RSS, a summed bound, per-host/session cost or established memory saving. Producer timings exclude postflow graph work; whole-test resource scope includes it. Raw archives a59d1f9440d5b4c8b5a3283a9e7501912301f8c33b4525e15c1d1222f0bb2ce6 /3448329de0dbf4115b40b10bf6d77277b17e700d092b1fe5cfc08591f5d51146. Both owned containers removed, perf.lock released after each case, CPUWeight10000 observed, all staging/preflight hashes outside lock. Full records/source pins accompany summary; no host timing evidence used.
Read-only attribution limitation: successful probe archives retain every mutation event and per-command counters, but their fixture exec-control history was removed by FixtureDrop. Earlier actual21 failed150s archive retains1453 controls:1279 watched execs (1264tools/awk,4awk-wire,4payload,4runtime-helper,3systemctl),163fsync,11flock. External /usr/bin stat/od/sha paths and shell-function origin were never logged, so exact per-family/call totals cannot be reconstructed. No inferred totals will be reported as measurements.
Existing trace confirms peak10 immutable ledger records/9 successors. Static unchanged-source accounting: one stable, nonpending creation_rows_emit at that depth performs18 cut utilities solely to extract two captured header fields;70stat,44sha256sum,10head and10row-grammar awk utility calls remain separately necessary under current checks. A narrowly safe scratch candidate replaces only the captured-header cut/format substitutions with literal-TAB parameter expansion and exact canonical reconstruction, preserving every original metadata/hash/link/captured-byte/source check. No mutable file/parse/admission cache. Refreshed exact21 controls pass100 differential actual cl_record cases (17accepted),11 unchanged focused ledger invariants per variant,15 exact source/wire/storage tests and strict standalone Clippy. Compact source shrinks10bytes. A new helper/testELF projection will compare actual full cuts/witness/final graph against the pinned original21 control before interpreting any timing; this is separate from buffered observer and no LIVE change is authorized yet.
Before the scratch browser fixture repair: existing ECC49 control ca_handoff::shipping_tests::browser_client::tests::probes_are_answered_without_assertion_reads_and_drop_closes_the_socket passed under its own shared VM lock/CPUWeight10000. The real TCP/WebSocket control sends correlated mux and transport probes and requires replies BEFORE the caller's first read, retains Ack42, and proves socket release on Drop. This is independent protocol-helper evidence, not a successful CLI comparison or an older-server runtime claim.
The current pull-based remote_demo browser replies only when next() is polled; its10-second canary and renewal's11-second waits leave it unpolled. The approved scratch-only correction will reuse that existing bounded actor (32commands/4096retained messages), generalize its socket transport for the existing OpenSSL connection, retain FIFO/data/Close/overflow/Drop checks and the original outer10-second read guard. No new wire protocol, production source, application traffic, workload reduction, deadline extension or assertion relaxation is planned.
The early canary activations already seen with BOTH taskbase and M8 remain distinct failing controls. After the pump correction, paired taskbase/M8 runs must still satisfy the unchanged zero-activation floor; any remaining wakeup requires causal ownership/readiness diagnosis. No extra settling or ignored activation will be introduced. Comparison remains0/56; M12b performance remains unrun.
management12b-protocol-control.log
management12b-protocol-control-source.json
Reviewed installer retention-message proposal, before implementation. Both previously posted real-process findings remain open: small preserved32nodes but omitted one retained-leaf report; long preserved87nodes while8266diagnostic bytes exceeded the8192reader limit. Exact immutable source23 baseline manifest:
6e48eedea25d33632b198d3278a6089de2251590f3f75b9529cf595c37ac95e0.The attached audit maps all72 literal reporting references in11production source files to exact configured coordinates/families, including pending/proof peers, fresh-state workers, prepared creator chains, public targets and destination capsules. Creator discovery scans every lexical base ancestor: the later64-level recovery limit does not bound discovery. One parent UID/device/inode cannot represent all those ancestors.
Proposed additive standalone V2: one canonical count+digest binding the complete independently registered coordinate/anchor catalog, fixed TREE/NODE/family semantics and explicit absence/blocked entries. Each exact parent contributes its own type/UID/device/inode and raw-path encoding to the digest; hashing an ancestor never covers unrelated children. Maximum frame144B (35+20+1+64+24), independent of depth, sibling count and worker batches. Original V1 and three point controls stay unchanged. Existing per-node held-descriptor, owner/type/byte and original assertions remain required; the message supplies no removal authority.
Two constraints are explicit: component-relative no-follow traversal is required (deep-path lstat alone follows intermediate links), and exact transaction namespaces must be captured independently rather than inherited from mutable helper globals. Source23 inspection starts with nil and passes previousT only as phase_transaction; a possible unbound-manifest inspection mismatch is under separate actual-producer diagnosis, not established by this source audit. No arbitrary-T family is proposed. Hash/current catalog comparison must allow legitimately retired owned anchors to become ABSENT while never allowing recreated required anchors to inherit a saved descriptor.
This is a review draft, not a global reporting or size qualification. Producer feasibility/no-follow availability still needs proof. Source23 command maximum130729B leaves only343B to the strict131072boundary; a small wire frame does not demonstrate source fit. No production/test/index changes, build, VM latency or final-size acceptance follows from this audit.
bounded-retention-catalog-audit-v2.md
bounded-retention-source23-callsites.json
Exact local source hashes:
bounded-retention-catalog-audit-v2.md:5ee15d1bdf8d336afdff2e4723a7835906fdd91811f2cf978f60579fdd7b532bbounded-retention-source23-callsites.json:c082e4075821f93ea3696d1a72fcc348293bb6ecee29601f5bb07acda5ba654dCatalog draft addendum from the exit-only caller audit:
Installation::prepare_recoveryat immutable source23 install.rs1119–1133 creates exactB.bootstrap-cache.recovery-T, outside both B and exact B.bootstrap-cache. If the future reporting scope includes that migration operation, this exact locally generated current-T coordinate and its directory contents must be registered too. The consumer does not scan arbitrarycache.recovery-*siblings, so no other-T family coverage is proposed. The attached revised audit includes this missing coordinate; its literal reporter inventory remains72references.Wire grammar/scalar parser are unchanged, maximum144B. Actual producer/catalog semantics, transaction inspection behavior and component-relative no-follow feasibility remain unqualified. No production/test/index changes or separate migration correctness claim.
bounded-retention-catalog-audit-v3.md
SHA256
4e61fddfff2ae6a932054fa976dc96e501a1333c19f9f4275a62015c307cb0de.Potential installer cleanup finding from source review, pending the actual API regression. At HEAD
73b6de0a863cfc9b6029a811bf440199ce8a580f,Installation::prepare_recoveryis byte-identical to the current/source23 method (SHA2566abb0df874d48a0574620e0fca6a0eff6978383559cf167c2b44d4ce3da00d25). Its parent/cache checks and upload digest do not authenticate the later objects removed by its EXIT trap: current$prepared/payload,$prepared/ownerand the current$prepareddirectory are removed by pathname. The trap has no original inode/type/UID/content comparison. A replaced empty prepared directory or independently recreated files at those names can therefore reach the final cleanup without a matching original creation receipt; the success path can retain status zero.The sole production caller is
Bootstrap::refresh_helper(source23 bootstrap.rs988), for a missing/earlier runtime helper. The existingearlier_binary_cache_is_refreshed_before_owned_recoverycovers ordinary refresh, not this independent change before cleanup. A scratch-only standalone regression is being prepared against the actual publicInstallation::prepare_recoveryAPI, using public fixture bytes, a private local directory, the real final move and a deterministic controller rendezvous before EXIT. It will hold recreated objects with nonfollowing descriptors and require their original path/type/UID/device/inode/mode/bytes to survive, plus a reported refusal. No production or live-test edits and no actual API RED claim yet.Separately, the reviewed scalar V2 parser draft has no source-level findings: exact 125–144-byte framing, borrowed digest, canonical u64 count syntax (including zero), and the entire original V1 five-test module unchanged. This review does not qualify catalog semantics, a producer, component-relative no-follow traversal, release size or VM behavior. Read-only review receipt:
evidence/catalog-parser-source-review.json.Scalar parser prerequisite committed:
73b6de0a863cfc9b6029a811bf440199ce8a580f. This implements only the additive grammar proposed above: one completeINFRATERNAL_RETAINED_V2 CATALOG_V1 COUNT SHA256 ALL_CURRENT_REGISTEREDframe with exactly one final LF, canonical u64 count and 64 lowercase hex digest. Maximum144B, constant storage, borrowed digest. Zero is valid scalar syntax; actual catalog count/meaning remains an independent consumer check.Original V1 accepted grammar and all five original test bodies are unchanged. New controls cover endpoint counts, overflow/noncanonical spelling, borrowed-pointer identity, digest alphabet/width, every truncated prefix, mixed/duplicate frames and extra bytes. Independent source review found no grammar issue. Its reviewed draft SHA differs from final only by a new-test empty-string constructor corrected for Clippy; no assertion/production change.
Exact projected index: fmt, all-target SSH Clippy, library
67 passed; 0 failed; 2 ignored, existing V1 classification1 passed; 0 failed; 0 ignored; markerATOMIC_CATALOG_SCALAR_PARSER_GREEN.Initial test lint RED, exact-index GREEN, source review.
This does not activate or qualify the producer, filesystem catalog, classifier or oracle. Transaction-context, no-follow traversal, command caps and genuine worker-report REDs remain outstanding. No final gate/push/deploy claim.
Scratch-only captured-header parsing comparison completed; no live adoption. This changes only
creator_ledger.shin source21: twocutpipelines and one canonical-header formatting substitution become literal-TAB shell field extraction plus the same final exact header equality. All original row grammar, binding, captured-byte, metadata, hash, alias, link, phase and directory checks remain in place; no mutable-evidence cache.The exact source manifest is
bd6e9708a35ed886405ab1550bf08e6b5fe914fb6bf0917f6aa99822a3ae6b4e; creator-ledger control5e2de902da6fa267711c52b58c18c3388e233f9e166f35b1e96c70f4453cb70a, candidate2d12d150eb8e43cb61ddbd09761cea79b005e5707529917b3524fe0652514644. Compacted source is 10 bytes smaller. Exact source manifest and patch.Before VM measurement, 100 authenticated-header differential cases (17 accepted), unchanged 11 inherited focused tests per variant, 15 compiled source/wire/storage tests, strict standalone Clippy, shell syntax, fresh-helper compilation and SSH all-target Clippy passed. Direct controls, fresh artifact gate. Final markers verbatim:
On the perf VM, the single original-observer control/candidate pair preserved all 496 actual mutation/durability cuts and all 496 same-call kernel witnesses, the exact three native entrypoint link rows, and the complete 26-node final identity graph (two reconstructed dynamic receipts; no ignored content). The common native runtime helper remains identical; each shell source has its own freshly pinned program-helper/test ELF. Full-install 150/155-second limits and production 180-second lease remain unchanged. Each case held the fair perf lock only for execution; staging/hashing/analysis stayed outside it and owned containers were removed.
Measured whole flow: 201.752313 → 191.079375 seconds (ratio 0.94710). Install: 149.013719 → 138.281938 seconds (ratio 0.92798). This is one diagnostic pair, not median/p95 or current-head acceptance. Actual process counts fell Install 26,299 → 22,281 and whole flow 34,584 → 30,013. All phase reductions are exact multiples of seven, consistent with removing seven shell/pipeline child processes per successor-header parse: 574 inferred Install parses and 653 inferred whole-flow parses. These parse counts are source/delta inference, not directly recorded utility-family totals.
Qualified summary, raw receipt archive (uncompressed SHA256
ef456d9202158e2d040f42c5f4c1be66bb2ec4cc747d7264ebd81b916ab54306). The qualified summary corrects an inherited driver label claiming unchanged source21: this candidate is source21 plus the explicit header delta, original observer, no buffer candidate. Source21 overall gate remains RED; current-head eight workflows and full96 remain UNRUN.Memory scope correction retained: wait4 maximum RSS 34,880/34,708 KiB is the largest individual maximum among waited descendants; it is neither whole-tree RSS nor a summed bound or per-host/session memory measurement. No memory improvement claim. Initial scratch staging path failures remain preserved separately and were corrected before any header VM measurement; no failed stage held the perf lock.
The minimal header parser now also passes an exact atomic projection on committed parent
2db7b1d8497d653ed155c98828e2910b29c19979. The archived HEAD has onlycrates/plugins/ssh/src/creator_ledger.shchanged to the already measured header candidate SHA2562d12d150eb8e43cb61ddbd09761cea79b005e5707529917b3524fe0652514644; source manifest SHA25607b607562140cfaca5e0026d32a1dd29ff0455d3f320efc4ead5c8d28c0acfbc. Its full file/symlink inventory was rechecked unchanged after the gate.Gate used the one shared target, wrapper-disabled UID-preserving source namespace, per-gate job/global locks and entrypoint freshness. The external pinned Python fixture bodies load only projected current module/dependency copies; no untracked test module entered the Cargo graph. No live source, index or commit changes were made by this gate.
Formatting and SSH all-target Clippy passed; each actual authenticated reader passed all100 differential cases (17accepted) and all11 unchanged focused tests. Library output and final marker verbatim:
Projection receipt, complete gate log. This is an atomic module gate, not final branch
verify fastor current eight/96-workflow qualification. Parent handles review and any adoption/commit. Predecessor grammar inheritance remains a separate read-only assessment, with no implementation or adoption.The common managed-CLI benchmark fixture now reuses the existing bounded browser actor. The scratch-only two-file change passed touched-server Clippy, the three managed-genesis controls, the existing real-socket actor control, and compiler-pinned all four exact workload selectors. The measured two-process test and its 250 ms settle/10 s zero-activation canary remain unchanged. Shipping CLI artifacts are unchanged.
The fresh narrow pair still fails that original canary: taskbase 58760 produced 1,609 scheduler activations over 10 s, and unadopted M8 produced 1,635, each on namespace TID21. This is a retained baseline failure, not evidence of an M12b regression. Read-only source inspection finds the existing 25 ms native control/attachment Ping proof path while attachments are active, consistent with sustained wakeups once the browser pump keeps the route alive. Exact live thread/protocol attribution remains unproven by these receipts; no allowance or deadline was changed.
The first dimension remains RED and unqualified. The other six explicitly named dimensions are now running as 48 independent ABBA/BAAB rows under separate shared VM locks and CPUWeight10000, with original assertions/workloads/windows. A failed row is recorded and never supplies accepted timing; independent rows continue. No seven-dimensional completion, M12b adoption, installer qualification, or full server steady-traffic qualification is claimed.
Selected receipts: common compiler pin, paired failures, source causality and limit, remaining-six accounting.
Two independently gated steps committed.
2db7b1d8497d653ed155c98828e2910b29c19979: expose one fixed local explanation for a complete canonical V2 catalog receipt, withholding digest/count/remote bytes. No filesystem producer or catalog oracle is activated. Exact projected index: fmt, all-target SSH Clippy, library67/0/2 and classification2/0/0 GREEN. Complete gate.e8f4ebb24405c1ee3d2552dc66dba9ee2c43e1e3: adopt the measured captured-header parser only. Literal-TAB expansion replaces two cut pipelines and a formatter substitution; every filesystem, digest and row-grammar check remains. Exact parent projection passes fmt, all-target SSH Clippy, library67/0/2, 100 authenticated differential cases per variant (17 accepted) and11 inherited focused cases per variant. Exact projection receipt, complete gate. Single source21 VM diagnostic, already detailed above, preserved496 cuts/witnesses and26-node final graph; Install process count26299→22281 and time149.013719s→138.281938s. Compact source−10B. No all-flow or memory benefit claim follows from one pair.Current head
e8f4ebb24405c1ee3d2552dc66dba9ee2c43e1e3. Overall round4 remains incomplete. Cache-preparation cleanup and interrupted manifest-phase recovery are under genuine-producer diagnosis; final size/runtime/fast gates remain outstanding. No push/deploy.The six-dimension independent run has completed all24 Rust workload rows: four M8 and four M12b rows each for renewal,50MiB flood and actual server cold restart. All24 ran the exact original selector and failed an original assertion; all fixture state was empty afterward. None contributes accepted performance timing. This is not a completed56-case qualification or an M12b-specific finding.
Two additional uncredited M8 diagnostic runs retained only panic location/public categories. Flood fails before starting the byte workload at
remote_renewal_cli_tests.rs:126, which expects exactly one owned UDP socket. The reader silently discards/proc/PID/fdreadlink errors while shipping startup disables dumpability; an observability mismatch is a hypothesis, not yet a live errno proof. Cold restart reaches actual restart/echo and locked-enrollment success, then receives an unexpected WebSocket Close atca_handoff_browser_tests.rs:116before completing revocation assertions; raw Close reasons were withheld. No assertion, timer, capability or production change was made to force either case through.The24 separate 50-session idle rows continue. The first M8 and first M12b zero-client rows passed original60s settle+60s sample, real shim identity/thread stability, exact scheduling weights10000 and cleanup. No aggregate dimension comparison is accepted until four samples per arm complete.
Receipts: all24 negative rows, flood location, cold location, exact owned cleanup.
Confirmed actual-API cache-preparation cleanup finding, exact parent
e8f4ebb24405c1ee3d2552dc66dba9ee2c43e1e3, no production changes.Four standalone tests call real
Installation::prepare_recovery, use its actual payload digest/copy and successful final cache move, then pause at the deterministic fixture move return before EXIT cleanup. Independently changed owner bytes, recreated owner, recreated payload, and recreated prepared directory+children all disappear. Every API call reports status0. Held nonfollowing descriptors verify UID/device/inode/type/mode/link count and expected bytes; saved original nodes remain unchanged.Results: OwnerBytes held1/preserved0/reported0; OwnerRecreated1/0/0; PayloadRecreated1/0/0; DirectoryRecreated3/0/0. All four tests compiled and reached actual move;
0 passed; 4 failed; 0 ignored. This is a functional real-filesystem result, no performance claim. Exact API RED transcript.Scratch regression
recovery-cache-api-regression/tests/recovery_cache.rs; frozen exact-HEAD projectionatomic-recovery-cache-red-source, provenanceevidence/atomic-recovery-cache-red-source.json. No assertion weakened. Fix design must cover the whole prepared-cache lifecycle, including publication and interruption; a standalone pathname-only EXIT remover cannot remain outside the manifest/creation model. Overall round4 still incomplete; no push/deploy.Completed atomic parser-test step
e72ad72925(#231/#235): extend the existing shared SSH arbitrary-byte target and seed generator to V2 catalog framing. Exact canonical re-encoding, every truncation, duplicate/extra-LF rejection and cross-grammar rejection; V1 properties unchanged. HEAD-only projection plus these two files: manifest SHA256 5f79461bd2a721167d019ed412ce43db4c0899d8fcde88489941a5145f54dc48.Gate: fmt, Python compilation, strict target Clippy and target build passed. Marker (verbatim):
build log
VM fixed-count run completed 10000 executions without assertions: 294 generated seed files (148 V1, 146 V2; 292 nonempty). Exact executable cfc74c61c9439a3aa8cca56642fee09242dcac2afcfba6a8b4571d9008552c44; staged loader only, executable bytes unchanged. Ordinary executable: no sanitizer/coverage instrumentation, no coverage/throughput/RSS acceptance claimed. VM raw log, seed counts, stage pin.
Still incomplete: cache lifecycle four actual-API REDs; late rollback removes canonical producers before repeated admission; V2 producer/oracle; exhaustive product; profile qualification; final fast gate/size. No push/deploy.
Completed atomic shared binding step
d0e59fde4f(#231/#235). Publication previously hashed one pathname and recorded a later inode: all 3 real regular/symlink/directory hash-time substitutions returned 0. The shared held-descriptor regular reader now refuses 71. pre-fix RED.Reused one artifact binder; existing private proof 600/1MiB interfaces and final type/owner/inode predicates remain. Fixed cache wrappers add exact trusted upload size and held metadata equality; they are not cache lifecycle authority. Same-inode mode/size/link edits remain explicit baseline characterization for old proof wrappers, not a new safety claim.
Exact HEAD-only source projection plus this step passed fmt, syntax, strict all-target SSH Clippy, library 67 passed/0 failed/2 ignored, Rust wrapper 1 passed containing 10 direct controls, and the original both-mode argument-bound test 1 passed. Marker (verbatim):
full gate, selected source/test pins.
Original committed activation command lengths: Rootless [38692,15920,16454], Root [66900,44151,16630]. These are source/argument byte counts, not performance. Current uncommitted larger activation source23 closure remains separately unqualified after this helper; no claim that it fits 130729's previous 342-byte margin. Raw two-module growth 1734 bytes; final static size/performance still pending. Four actual cache lifecycle REDs are unchanged; structural cache orchestration is being implemented in scratch, and terminal retirement needs a pre-rollback seal for every emitter-dependent private prefix. No push/deploy.
Owner decision 2026-10-20: scope reset to a minimal fix.
Round 4 (full install/removal state machine) was stopped by the Codex content filter after ~20 h / 7.7M tokens with no report. Its work is saved as WIP
0c163e58conaddhost-readd-r4(product +12.6k lines, tests +31k vs dev) and is parked as reference only.New job
readd-minimalfrom production85b0285b7: 'already added' requires a live infraternal agent (stale → replaced in place), plus only the two confirmed existing removal issues (resumed removal vs newer install state; identity-checked deletion of the installed program file), each with a test. Other review items become follow-ups.Starting the owner-reset minimal scope on readd-minimal, base
85b0285b73(origin/release-prod-live). Earlier full state-machine rounds remain parked. Reading #231 and parent #225 records and reviewed minimal commits; implement live-response-only already-added/in-place replacement and the two specified removal identity safeguards. No deploy or owner-fixture access. Exact static caps remain unchanged; stop/report if exceeded.Minimal implementation boundary: reuse the existing staged same-key re-enrollment and issuer owner/mode/uid checks. Authenticated inspection passes the installed UUID through Check; matching records need a new bounded correlated Result for already-added. Retained-host failure must never use fresh-host retirement. Removal retains/reports populated state with no creation proof; bin/live removal compares its inode with the running removal executable. No new dependency, migration, full lifecycle engine or duplicate-retirement design.
Follow-up outside this reset: multiple old destination records remain ambiguous; no parked duplicate-retirement or handoff-journal changes are being ported.
Both specified removal failures reproduced before production edits: 0 passed / 2 failed. A small dependency-free harness compiles the exact remove_files function extracted from production uninstall.rs, then independently recreates state/operator-notes and replaces bin/live while holding the old inode. Both new files disappear under the original function. The ordinary Cargo regression is still waiting for a shared slot; its eventual run will be qualification, not claimed as the pre-fix result.
removal-before.log
curl: (22) The requested URL returned error: 422
Pre-fix source receipt: removal-before-source.txt
The original .rs attachment was refused as an unsupported file type; identical source is attached as text. State-only repair now passes the exact-function recreated-state assertion. The initial no-feature Cargo selector does not enable uninstall; it is excluded. Agent-feature Rust qualification follows.
Completed/pushed contract-only step
f4eb322dfa. Additive #231 boundaries require fresh authenticated progress, same UUID/account/mode and retained host key; failed replacement cannot retire prior authority. Unproven populated state and changed executable identity remain with a report. cargo fmt --all --check and git diff --check pass; no product code in this commit. Product and real-service tests remain in progress.Completed/pushed state safeguard
5a9d47bb12. Current populated state/session contents are retained and reported; only checked empty directories are removed. Original exact-function assertion failed before the repair and passes after it. Workspace formatting, strict remote all-target Clippy and all 12 enabled uninstall tests pass. Correct test profile: agent,test-support,tokio/rt-multi-thread. Earlier feature-incomplete invocations are excluded; no product change was made for their compile errors.state-gate-corrected.log
removal-state-green.log
Completed/pushed program safeguard
fe914fff8(state prerequisite5a9d47bb1). File removal receives the running executable's kernel device/inode/uid, checks bin/live before unlinking, and retains changed/unbound slot contents. No plan format, dependency or engine added. Both original exact-function failures are now covered: 13 enabled uninstall tests pass, including original-program deletion and newer-inode retention; strict remote all-target Clippy and formatting pass. Two test-only assertion-style lint errors in the first run were corrected without changing assertions.program-gate-corrected.log
Out-of-scope follow-up: legacy removal still identifies service units/launchers by same-host layout, not a per-install generation (uninstall.rs validate_artifacts/cleanup). This change claims only the two reset safeguards, not the parked full lifecycle guarantees.
Completed/pushed SSH inspection step
96213f8b7. The existing Check now carries the canonical UUID of a checked completed installation; no new wire request, dependency or cleanup authority. Private state contents are not printed. Strict SSH all-target Clippy and formatting pass; Cargo tests 219 passed / 14 opt-in ignored. Both new installed-record tests pass, and all 35 real-shell ownership controls pass with the built runtime helper. The existing parser property target calls parse_check, so it covers the additive record. Server liveness/retained-authority qualification is next.ssh-gate.log
inspection-shell-full.log
Production baseline
85b0285b7now reproduces the live-check failure with the identical native QUIC/SQLite regression: 0 passed / 1 failed at the intended cached-census assertion. The peer supplied a session census but no new authenticated response; baseline still returned already-added. Projection changed only the cfg(test) inclusion and copied test module; both were removed afterwards and the production comparison checkout is clean. Corrected branch lint/tests are running.backend-baseline-red.log
Qualification finding: the native baseline comparison shared this job's GNU target, after which rustc reported that Check lacked installed even though committed probe.rs contains it. No product change addresses this build-cache mismatch. Invalidated only infraternal-plugin-ssh, infraternal-plugin-remote and infraternal-server in the owned target; fresh branch qualification is running. Static comparison uses the separate baseline-release target. Earlier failed type-check output is retained as backend-gate-final2.log.
Completed/pushed retained-host replacement
44673122b2. A fresh correlated response over an installed connection is required for already-added; disabled facts and cold-locked CA live cases pass. Silent completed installs reuse the checked UUID and existing owner/mode/uid/revocation authorization; failed setup preserves prior host authority. No duplicate retirement, migration, dependency or full lifecycle design.Strict workspace all-target Clippy and formatting pass; server bootstrap tests 23 passed / 2 opt-in ignored. The baseline stale-census assertion is red and the identical branch case is green. The authority refusal test now snapshots the pre-existing token digest/consumption state, correcting an empty-ledger fixture assumption rather than weakening protection.
backend-gate-qualified.log
Iteration gate is running. An owned short fixture root is used only for Unix-socket path limits; targets/evidence remain under readd-minimal. Static comparison, disposable root/rootless service checks and final fast gate remain.
Milestone at
44673122b:scripts/verify iterateexited 0. All Rust rows, dependency checks, TypeScript checks, transfer budgets and differential stream checks passed. Final line, verbatim:verify-iterate.log
Production-base static comparison is building in its separate target directory. Real service container checks and final release gate remain pending.
Completed test-harness step:
8e4ab116e(pushed). Adds the opt-in disposable-systemd test for stopped-start replacement, retained host/PTY, live refusal and shipping-CLI removal preservation.scripts/verify iteratepassed before the commit, including workspace strict Clippy and tests. Real container execution is pending the branch static artifact; no end-to-end success is claimed yet.Author-review finding within the requested state-removal fix:
remove_filesstill removes a recreated emptystate/directory. A newer setup can own that directory before writing its identity, so populated-only preservation is insufficient. Added a same-device/inode regression; its red run is in progress. Proposed additive clarification to contracts/bootstrap.md section 6: preserve the state directory itself without creation proof, including when empty. The minimal correction will keep state/ and use the existing leftover report; no new lifecycle or receipt format.Empty-state boundary: contract clarification
d4ae907acpushed. The new regression failed before the code change (0 passed / 1 failed) and passes after preserving the unproven state directory (1 passed / 0 failed). Checks the recreated directory device/inode, not only file contents. Full touched-crate gate and code commit follow after the current baseline build releases this job's build slot.empty-state-red.log
empty-state-green.log
Completed correction:
f67986153pushed. State remains even when empty; new regression was red before the correction and green afterward. Qualified gate: fmt passed; strict all-target remote Clippy passed; removal suite 14 passed / 0 failed. First gate attempt found only an assertion-style Clippy lint; corrected and reran the whole touched-crate gate.Untouched production base
85b0285b7static x86_64: 21,387,184 bytes, exactly the scripts/verify.d/rust.sh cap; static, PT_INTERP absent. Same scripts/static-cargo release recipe, separate baseline target, clean detached baseline checkout. Paired branch measurement pending.scripts/verify fastis now running onf67986153.empty-state-qualified-gate-final.log
baseline-size.json
baseline-static-build.log
Final-gate finding: existing
remote_server::tests::failed_restart_endpoint_does_not_prevent_http_servingfailed during workspace execution:HTTP startup failed: server storage initialization failedafter 30.01s. The same compiled executable/test passes alone immediately (1 passed / 0 failed). Initial iterate passed this test. This is not one of the expressly allowed baseline exceptions, so the final test row remains failed; no gate waiver or unrelated product fix is applied. Full raw final gate is still running its static builds.restart-startup-isolated.log
STOP condition reached on pushed head
f67986153. Same-recipe stripped static x86_64: baseline 21,387,184 bytes; branch 21,396,912 bytes; delta +9,728 bytes. rust.sh cap 21,387,184: exceeded by 9,728 bytes. PT_INTERP absent. Caps are unchanged. No further implementation, optimization, deploy or real-service scenario is being started. The already-runningscripts/verify fastis allowed to finish its remaining checks so the final transcript and both target receipts are complete.Real stopped-start/Add-again/online and live-refusal container scenarios remain UNRUN. The opt-in fixture is committed but is not end-to-end evidence. Final gate also retains the existing startup-storage failure already recorded above. This branch is not reported complete or release-qualified.
branch-x86-size.json
Final handoff: STOPPED by the brief's size constraint; NOT COMPLETE.
Branch
readd-minimal, production base85b0285b7, pushed headf67986153c4dc5011c52a41c243f746336dd94e3. No deploy. Caps unchanged. The brief says “Over the caps → stop and report rather than raising them”; implementation stopped when the x86 result exceeded its cap. No real-service scenario was started afterward.Implemented in atomic pushed steps: same-host replacement requires absence of a fresh authenticated reply; live installations retain already-added, including with the signer locked. Existing issuer authorization is reused. Failed replacement preserves the retained host. Removal preserves unproven state (including an empty recreated directory), and only removes a program matching its executing device/inode/uid. No migration or dependency addition; parked full lifecycle design not ported.
Exact stripped static bytes, same release recipe:
Paired measured production x86 baseline: 21,387,184 bytes; branch delta +9,728 bytes. Both branch images have no PT_INTERP. ARM64 comparison above is against its cap; no paired ARM baseline measurement is claimed.
Verification: original removal assertions and cached-census regression failed on original code, then passed on corrected code (receipts above). Current removal gate: fmt/strict touched-crate Clippy passed, 14 tests passed. Focused server gate: 23 passed / 2 ignored. SSH gate: 219 passed / 14 ignored; shell ownership suite 35 passed. Full iterate passed before the final empty-state correction. Final
scripts/verify faston this head exited 1; summary verbatim:The final test row failed in existing
remote_server::tests::failed_restart_endpoint_does_not_prevent_http_serving:HTTP startup failed: server storage initialization failed. Same executable passes alone; that is not a waiver or baseline proof. The full test row remains failed. Final verification stopped after Rust, so later TypeScript checks were not reached; the earlier iterate ran them successfully.Required real end-to-end stopped-start → Add again → online and live → already-added scenarios are UNRUN. The opt-in owned-container test is committed in
crates/infraternal-server/src/readd_service_tests.rs; it is not end-to-end evidence. Its runner source is attached for resumption. Existing unrelated removal-generation concerns remain follow-ups, not fixes in this branch. Resumption needs owner/orchestrator direction on the exceeded size budget, then real-service proof and a green final gate.Author checklist and complete verbatim gate transcript:
verify-fast.log
final-gate-summary.txt
branch-x86-size.json
branch-arm-size.json
self-review.txt
service-functional-runner.txt
restart-startup-gate-failure.txt
Cleanup: own native/static target deleted, comparison target and clean temporary baseline checkout removed, own short socket-fixture root and compiled helper artifacts removed. No real-service container or remote host was used. Working tree clean; local head matches pushed tracking head. Cleanup proof:
final-cleanup.json
Resuming #231 round 2 on
readd-minimal-r2atf67986153c4dc5011c52a41c243f746336dd94e3(production base85b0285b7). I read the prior stop/handoff and #225 field history. This run follows the orchestrator's D243 approval: ratchet the caps to the exact measured branch bytes, compare the startup failure against the production baseline, then complete the owned real-service cases and final gate. No owner fixture access or deployment.Baseline finding:
origin/release-prod-liveat85b0285b7, under the fullcargo test --workspace --lockedcommand, passedremote_server::tests::failed_restart_endpoint_does_not_prevent_http_serving; its binary reported 99 passed, 0 failed, 1 ignored. The test source is unchanged between baseline and this branch. The remaining workspace run is still in progress; branch comparison and the cause are pending. receiptBaseline comparison update: the requested startup test passed under
cargo test --workspace --lockedat85b0285b7(99 passed / 0 failed / 1 ignored in that binary). The bare Cargo command later exited 101 ininfraternal-shim/tests/mouse.rsbecause it skipped the repository gate'st2-gate-publicsetup. I am rerunningscripts/verify faston the baseline for the valid full-run comparison. test result bare-command tailOn
origin/release-prod-liveat85b0285b7, the completescripts/verify fastexited 0.failed_restart_endpoint_does_not_prevent_http_servingpassed in both full test invocations (gate log lines 251 and 730). Static sizes: x86_64 21,387,184 bytes; aarch64 19,559,112 bytes. The gate log and extracted receipt are attached. The baseline comparison passes; the branch run with SQLx source diagnostics is next.The first branch
scripts/verify iteraterun stopped at the Rust test row: 16infraternal-agenttests failed withENOENTwhile resolving their helper/state path from../../target; the startup test passed. The external CARGO target was under scratch but the worktree had notargetlink. The repository’s bootstrap verification notes require a temporary worktreetargetsymlink for this layout. Attached excerpt records the failures. I’m correcting only that build-path setup and rerunning the gate; no product failure is indicated by this run.At
f67986153c4dc5011c52a41c243f746336dd94e3,scripts/verify iteratepassed after linking the worktreetargetto the single scratch target. The startup test passed in both gate test invocations; the new debug path/source diagnostic did not trigger. The same complete test passed on release-prod-live, so the earlier storage failure is not reproduced on either baseline or branch. Its SQLx cause remains unknown; the branch test now includes the source and unique directory in any future failure output. Full iterate log and final line are attached.Committed and pushed
26246e01aonreadd-minimal-r2: the x86_64/aarch64 caps are now exactly 21,396,912 / 19,567,608 bytes, matching the approved +9,728 / +8,496 byte measurements; no extra allowance.scripts/verify iteratepassed at the prior branch head with these cap changes present. The required finalscripts/verify fastremains pending.The first perf VM runner attempt stopped before the fixture: Docker rejected its
/nix/storebind mount because that path is absent oninfraternal-perf-test. No service test or timing completed. The runner scope returned inactive and its cleanup receipt records no container or child PIDs. The copied Rust test executable uses a Nix-store ELF interpreter, so I’m correcting the artifact/runtime setup before measuring; evidence is attached.A second perf VM attempt also stopped before Docker startup: the runner checked the copied
nix/storedirectory with a file predicate. No container or child process was created; the scope exited inactive. I corrected the runner’s artifact check and attached the short receipt; no service timing has been recorded yet.The owned container started and its cleanup ran, but the test executable exited before Rust tests:
libgcc_s.so.1was a Nix-store symlink whose target store path was not included in the copied runtime closure. No Add timing was produced. The runner removed the container and reports no surviving client PIDs; the startup and cleanup logs are attached. I’m adding the resolved runtime library at the path the test binary uses before the next run.The container started, but the transferred default-feature test binary contained no re-add service test: it reported
running 0 testswith 661 filtered. This test is compiled only withinfraternal-server --features remote. No Add or timing occurred; the runner removed the container and both client PIDs are gone. The log and cleanup receipt are attached. I’m building the opt-in test target with its required feature before rerunning.The first actual service case reached
make_startingbut the test timed out waiting for the cached session inventory to becomeUnavailable(30 s, line 342); the target service was held in systemdstart-pre. This wait was an invalid precondition:require_replaceable_destinationdeliberately probes a cached actor with a bounded authenticatedhost.facts.readand proceeds when it gets no fresh reply. I’m changing the E2E measurement to start Add immediately and measure until that correlated action gets a fresh authenticated reply. The container and both client PIDs were cleaned; no Add-to-online timing was produced. Evidence is attached.The updated rootless E2E now bypasses the stale-inventory precondition and reaches the replacement path, but setup fails at the authenticated readiness step:
Remote host readiness is unavailableafterCheck → Install/replace → Facts → Connect. It produced no online timing. The runner removed the owned container and both client PIDs are gone; the perf VM load was 0.00/0.03/0.00 at start and 0.15/0.06/0.01 at finish. The failure and cleanup receipt are attached. I’m tracing why the interrupted start does not become ready after replacement.The updated rootless run exposed a test-wait issue: Add did not produce a fresh authenticated reply within 90 s, and the concurrent timer then panicked before the batch failure could print its readiness diagnostic. The run took 95.10 s; Add-to-online was not measured. Container cleanup passed (
container_absent=true,client_pids_alive=[]). I’m changing the sequence to report the batch terminal result first, then measure the fresh reply on success. Receipts: service log, summary, cleanup, VM run.With the timer fixed, rootless replacement fails in 7.23 s with
Remote host readiness is unavailable; the captured unit still has the injectedExecStartPre=/bin/sleep 3600, and systemd reports it inactive after rollback. No canary diagnostic ran, so the failure precedes terminal canary admission. Next run adds actor/facts phase errors and the batch timeline. Cleanup again passed (container_absent=true, no client PIDs). Receipts: service log, summary, cleanup, VM run.The third rootless run reached fresh actor admission and both Add readiness phases, then the correlated
host.facts.readreturnedAgentError::Unavailable(not a timeout or action rejection). Batch timeline: Check → Install/replace → Facts → Connect → Failed. Systemd rollback left the prior startup-hold unit inactive. The exact channel-loss point is still under diagnosis. Cleanup passed; no successful online timing yet. Receipts: service log, summary, cleanup, VM run.The bounded journal shows the new service starts with the replacement unit, then Add rollback stops it; the host actor reports
Incoming::Disconnected(connection_lostatembedded.rs:1202). I’m treating the readiness failure as a stale-route race: the actor can still report the previous native route while the setup SSH bridge/new native admission is pending. The fix fences facts and canary proof on the exact native route generation admitted after the SSH bridge. This inference will be checked by the real service run. Receipts: service/journal log, summary, cleanup, VM run.The generation fence changed the rootless replacement result: the accepted native route exactly matched the pre-Add fence, Add-to-fresh-authenticated-reply was 2,839,806 µs on the perf VM (4 vCPU, 8,069,112 KiB, start load 1.33; CPUWeight=10000), and live duplicate Add preserved the same host and PID. The test next failed at the interrupted-removal helper with exit 1; I’m capturing its output before changing the fixture. Cleanup passed (
container_absent=true,client_pids_alive=[]). Receipts: service log, summary, cleanup, VM run.Perf VM rootless run 20261020T104702Z: replacement completed online in 2,811,480 μs; duplicate Add refused the live host and kept its PID. The uninstall helper then returned Broken pipe while retiring the retained PTY, before service shutdown or cleanup. The newer state file, state-directory inode, and replacement program inode all remained intact. Container and client PIDs were cleaned up. I’m closing that already-verified retained shell before the removal step so the scenario can exercise cleanup and the required fresh install.
Evidence: service log, summary, cleanup proof, VM run.
Perf VM rootless retry 20261020T110140Z: replacement and live refusal passed (Add-to-online 2,741,912 μs; PID unchanged). The removal harness timed out before printing its checks: its
SYSTEMCTL_REALexpansion resolved afterPATHwas changed and selected the wrapper recursively. This is a fixture error; no product change was made. The runner confirmed the container and both client PIDs were cleaned up. I’ll capture the real service-manager path before prepending the wrapper directory.Evidence: service log, summary, cleanup proof, VM run.
Perf VM rootless run 20261020T111506Z reached the intended interruption checkpoint: service stopped, unit and launcher removed, owner record plus newer state/program retained. Fresh Add resumed the same host and admitted a new native route. The remaining fixture failure was its public executable helper requiring the existing
readd-keptmarker, which the recreated state did not copy; I’m adding that marker and rerunning. Container and both client PIDs were cleaned up.Evidence: service log, summary, cleanup proof, VM run.
Perf VM rootless run 20261020T111716Z: the opt-in real-service test passed (1/1); Add-to-online was 2,752,410 μs, live duplicate kept the PID, and interrupted removal followed by fresh Add kept the newer state and program. The wrapper still expected the earlier removal marker, so its summary said
success=falsedespite the passing test. Container and client PIDs were cleaned up. I’m updating the scratch runner’s marker and will rerun it for a green end-to-end receipt.Evidence: service log, summary, cleanup proof, VM run.
Perf VM rootless real-service scenario passed on run 20261020T111816Z. Add to authenticated online reply: 2,790,760 μs. Re-adding the live host was refused with the same host and PID. The removal helper stopped the service, removed its unit and launcher, then failed at the injected daemon-reload interruption; fresh Add resumed the same host and retained the newer state and program. Opt-in test: 1 passed / 0 failed. Container absent and both client PIDs gone; the systemd scope is inactive.
Evidence: service log, summary, cleanup proof, VM run.
Perf VM root-mode real-service scenario passed on run 20261020T111908Z. Add-to-online was 3,069,416 μs. Live duplicate Add was refused with the same host and PID. The service removal was interrupted at daemon-reload after unit/launcher removal; fresh Add recovered the same host and kept the newer state and program. Opt-in test: 1 passed / 0 failed. Container absent, both client PIDs gone, and systemd scope inactive.
Evidence: service log, summary, cleanup proof, VM run.
Startup-test review: the test used a UUID child under the fixed
/tmp/caparent, so concurrent test cleanup or ownership of that shared parent could still disrupt SQLite open. I changed it to a UUID top-level temp directory. The SQLx cause did not recur in the baseline full gate or branch iterate, so this isolation cause is a code-based inference, not a reproduced explanation; the test now prints the underlying SQLx error and directory if it recurs. Final branch gate will exercise the change.Evidence already attached: baseline full gate verify log; branch iterate verify log; prior startup failure isolated diagnostic.
The first
scripts/verify iteratestopped in compile: rustc resolvedCheckfrom a stale SSH crate artifact without its committedinstalledfield. Source andHEADinclude the field.cargo check -p infraternal-plugin-ssh --lockedrebuilt that artifact, thencargo check -p infraternal-server --features remote --lockedpassed. This was a local build-cache mismatch, not a source correction; iterate is rerunning with the refreshed artifact.Evidence: failed iterate, SSH crate rebuild, server check.
The workspace type error came from stale target artifacts, not a feature or source mismatch:
crates/plugins/ssh/src/probe.rsand HEAD defineprobe::Check.installed; the workspace test metadata omitted it. Aftercargo clean --locked -p infraternal-plugin-sshremoved 4,175 files / 5.4 GiB from this job's target,build-slot cargo test --locked -p infraternal-server --lib --no-runcompiled the SSH plugin and server test target successfully. It reported one separate unused-field warning onAgentConnection.route_generationunder server default features; I am aligning that field with theremote + sshfeature gate.The SSH inode fixture failed with remote status 127 because
crates/plugins/ssh/tests/install.rsreplacedPATHwith fixture tools plus/usr/bin:/bin; on this Nix host,base64andsha256sumresolve from/home/kayg/.nix-profile/bin. The fixture upload script could not find them. I will preserve the host's inheritedPATHafter the fixture tools so the test reaches its intended inode-reuse check.Fixed the fixture PATH to place its controlled commands first and preserve the host PATH. The SSH inode reuse fixture now passes: 1 passed, 0 failed, 0 ignored, 96 filtered out, 0.24 s. Raw gate output.
The full SSH install test target passes after the PATH fix: 95 passed, 0 failed, 2 ignored, 6.58 s. My first local run supplied a long test state path and hit Unix socket path limits; I reran with a short path alias into this job's scratch directory. Raw output.
Committed the SSH fixture PATH correction as
4a4badfdf. Gates:cargo fmt --all --checkPASS; SSH clippy PASS; inode reuse fixture 1 passed in 0.24 s; SSH install tests 95 passed, 0 failed, 2 ignored in 6.58 s.Committed native route generation fencing as
789a61153. It rejects stale SSH and native admissions before readiness. Verification: admission tests 6 passed, 0 failed, 1 ignored; default server check passed without warnings; strict server clippy forremote,sshpassed. Receipts: tests, clippy, default check.Committed the owned service lifecycle fixture as
fff3d6aa8. The perf-VM end-to-end runs passed rootless and root: Add-to-authenticated-online was 2,790,760 μs and 3,069,416 μs; live duplicate Add was refused without changing the running host; interrupted removal followed by fresh Add preserved the newer state and program. Both runs include process and container cleanup proof. Receipts: rootless summary, root summary, root cleanup.Committed startup fixture isolation as
4c658f1fc. The standalone startup test passes: 1 passed, 0 failed; strictinfraternalbinary clippy passes. The path change removes the test's shared/tmp/caparent and failure output now includes its generated data directory. Receipts: test, clippy.I stopped the first full
iteraterun after supplying a symlinked test-state root globally. Eight restart-path tests then compared the symlink spelling with its canonical path and failed; this is a runner-environment mismatch, not a source failure. Raw output: https://git.kayg.org/attachments/2acabfde-f8a2-46dc-8d2a-43587aa1c57b. I am rerunning with default per-test state roots and a short root only for the SSH fixture.The clean
scripts/verify iteratepassed on4c658f1fc(exit 0). Every Rust row passed, including workspace tests and the SSH inode fixture; cargo-deny passed; TypeScript/compiler metadata and bundle budget checks passed. Workspace tests reported 612 passed / 53 ignored for the server target and no failed tests. Full gate output.The first branch size measurement is over the fixed approved cap: x86_64 stripped static PIE is 21,403,472 bytes, 6,560 bytes over 21,396,912;
PT_INTERPis absent. I will reduce the binary before the final gate. Receipts: size, build.Both branch artifacts exceed their unchanged approved caps: x86_64 21,403,472 / 21,396,912 (+6,560); aarch64 19,573,336 / 19,567,608 (+5,728). Both are stripped static images with
PT_INTERPabsent. I am reducing route-generation overhead while retaining the re-add fence. Receipts: aarch64 size, aarch64 build; x86_64 receipts are in the prior comment.Measured current stripped static x86_64 build: 21,396,176 B (PT_INTERP absent), 736 B below the exact 21,396,912 B cap. The release recipe completed successfully;
rust_check_static_binaryrequires the cap to equal the artifact size. I am measuring aarch64 before ratcheting both caps to their exact measured sizes.Both stripped static builds completed with PT_INTERP absent. x86_64 is 21,396,176 B (+8,992 B over the approved 21,387,184 B production-base measurement); aarch64 is 19,566,992 B (+7,880 B over 19,559,112 B). Both remain within the approved <16 KiB D243 band. The working-tree caps now match the exact measured artifacts, with no size slack.
Receipts: x86_64 build, aarch64 build, size receipt.
The first current-diff iterate run found two runner-environment issues: release tests unwrap
CARGO_TARGET_DIR, which was unset, and the SSH inode fixture needs its short state root without exporting it to path-canonicalizing server tests. With the target directory set and a short root scoped only to that fixture, the fixture passes 1/1. Commit92f583ad1adds the scopedINFRATERNAL_SSH_TEST_STATE_ROOToverride; I will rerun iterate withCARGO_TARGET_DIRset for the full command. The route regression and restart startup test passed in the first run.Receipt: scoped SSH inode fixture.
Committed route readiness as
46231c4e1. The registry phase now requires a generation newer than the saved SSH bridge; the actor phase requires its active native link to match the committed host generation. The regression covers an older active native link, two consecutive SSH bridges, and a fresh native link. Fullscripts/verify iteratepassed; the focused route test is 1 passed, strict server Clippy passed, and the no-default-feature server test target compiled after the cfg cleanup.Measured exact static sizes: x86_64 21,396,176 B (+8,992 B), aarch64 19,566,992 B (+7,880 B); caps ratcheted to those bytes under D243. Receipts: iterate gate, route test, server Clippy, no-default compile, size receipt.
The existing E2E bundle predates the final head: its
currentbinary is 21,396,912 B (SHA-2564ebe23b0…), while the branch's final static build is 21,396,176 B (SHA-2567cf04ddc…). I am rebuilding the service test executable from46231c4eand refreshing the bundle before the required rerun.Receipt: artifact sizes and hashes.
Final-head rootless service test passed 1/1. Add-to-authenticated-online was 2,778,866 μs; the live duplicate kept the PID; interrupted removal followed by fresh Add kept state and program under the same host. The runner reported
success=falsebecause it expected the previous removal summary text; the test emittedREMOVAL interrupted=true preserved_state=true preserved_program=true. The owned container was absent and both runner PIDs were gone. I am updating that scratch-only marker check and will rerun rootless and root.Evidence: service log, summary, cleanup, VM run.
The final-head rootless real-service run passed (1/1). Add-to-authenticated-online: 2,583,126 μs on the 4-vCPU perf VM, load average 0.22 / 0.18 / 0.08 at run start. Live duplicate Add kept the PID. Interrupted removal followed by fresh Add preserved state and program under the same host. Container absent; runner PIDs 2222025 and 2222148 exited; systemd scope inactive.
Evidence: service log, summary, cleanup, VM run.
The final-head root-mode real-service run passed (1/1). Add-to-authenticated-online: 2,727,991 μs on the 4-vCPU perf VM, load average 0.13 / 0.17 / 0.08 at run start. Live duplicate Add kept the PID. Interrupted removal followed by fresh Add preserved state and program under the same host. Container absent; runner PIDs 2223306 and 2223430 exited; systemd scope inactive.
Evidence: service log, summary, cleanup, VM run.
Finished #231 round 2. Pushed
readd-minimal-r2through46231c4e11a090618f6f34e391b1490ebb2bee4e; worktree is clean.Size: stripped static x86_64 21,396,176 B (+8,992 B from 21,387,184 B baseline); aarch64 19,566,992 B (+7,880 B from 19,559,112 B baseline). Both caps equal the measured artifacts and stay within the approved D243 band. Build and size receipts are attached above.
Startup test:
failed_restart_endpoint_does_not_prevent_http_servingpasses in the final branch gate and passed in the fullorigin/release-prod-livebaseline gate. The original failure did not reproduce, so its cause remains unconfirmed. The test now uses a UUID top-level temp directory instead of the shared/tmp/caparent and prints the underlying SQLx error and directory if it recurs; this is isolation based on the code path, not a reproduced diagnosis. Baseline gate: full log.Final-head real-service runs passed in both modes on the 4-vCPU, 8,069,112-KiB perf VM under CPUWeight=10000. Rootless Add-to-authenticated-online: 2,583,126 μs (load at start 0.22 / 0.18 / 0.08). Root mode: 2,727,991 μs (load 0.13 / 0.17 / 0.08). Each run confirmed live duplicate Add kept the same PID, interrupted removal followed by fresh Add preserved the newer state and program on the same host, and the host returned online. Both containers are absent, both runner PIDs exited, and both scopes are inactive. Receipts: rootless service, rootless summary, root service, root summary, VM cleanup proof.
Final
scripts/verify fastoutput excerpts, copied verbatim from the full gate log:Break-it review starts on review-readd-minimal at base/head
46231c4e11; scope 85b0285b7..46231c4e1. Read #231 and parent #225 history and repository contracts. Test-only commits, no product changes or deployment. Focus: silent/live transition, retained identity, interruption recovery and data ownership. Owned build-host fixtures only; owner installations untouched. Findings file: /home/kayg/.cache/codex-scratch/review-readd-minimal/review-findings.md.P1 R1 confirmed; test-only commit
df645bf8fpushed on review-readd-minimal. Add after interrupted removal fails at SSH inspection (exit 71), requiring manual restoration of unit/launcher. cleanup unlinks both before fallible daemon-reload (uninstall.rs:565); inspector requires both (previous_attempt.sh:81-82). Existing service oracle manually restores them (readd_service_tests.rs:591-593) before Add and masks this case. New real-file regression has a passing intact control, then deletes exactly the two removal artifacts; newer state remains, but subsequent Add inspection fails 71 != 0. Product unchanged. Python syntax + diff checks pass. red receipt. Native control suite is building through build-slot.P1 R2 confirmed; test-only
536657e72pushed. A successful re-add discards state writes completed after enrollment snapshots the active directory and before old-service stop. Real-shell regression review_readd_keeps_state_written_before_the_old_service_stops writes latest operator data and a new file at the manager-stop boundary, proves both reached previous-state, commits, then fails because active notes contain before enrollment and the only latest directory has been deleted. setup_scripts.rs:16 copies too early; ACTIVATE renames the active directory; install.rs:1016 deletes the backup. Product unchanged. Fmt/diff and strict touched-crate Clippy pass with shipping mesh feature unification. red + initial partial-feature lint diagnostic, successful lint.P1 R3 confirmed; test-only
be6d0e1a4pushed. Reconnecting between the silence decision and image resolution still admits replacement upload. New real QUIC/SQLite regression gates PayloadSource after issue_attempt, reconnects the retained UUID, requires a fresh correlated Result, then resumes and observes 1 upload while hosts.online remains true (expected 0). Four existing re-add controls pass; new test fails at 1 != 0. bootstrap_remote.rs:289-319 has the sole liveness probe, bootstrap.rs:1119 resolves the image afterward, and no later live refusal fences ACTIVATE. Scope: transport refuses remote writes; test proves replacement-upload admission, not a measured real-service stop. Fmt/diff and strict touched-crate Clippy pass. red + controls, lint.P1 R4 confirmed; test-only
be9640166pushed. Crash after old-service stop cannot be recovered by a new Add: previous_attempt.sh:128-131 accepts only fresh journals and returns 75 for the actual upgrade journal. Generated-shell regression review_readd_crash::review_new_add_recovers_a_replacement_interrupted_after_service_stop installs a fixture, interrupts activation immediately after manager stop, discards Installation, ends only the owned bounded lease (models expiry), then invokes actual Add inspection. Service is stopped and durable upgrade/stopping journal retained; inspection fails Some(75). Original controller rollback is intentionally not called: its coordinates do not survive a controller crash. SSH all-target Clippy, fmt/diff pass. red receipt. Final-head scripts/verify fast now running through build-slot onbe9640166; no product changes or deployment.R1 real-systemd supplemental confirms the committed
df645bf8fregression without manually deleting service files: actual CLI --bootstrap-uninstall returned 1 at injected daemon-reload failure after removing unit/launcher; state and newer program remained; actual subsequent Add inspector returned 71. Owned build-host container review-readd-minimal-removal was removed, inspect confirms absent. Artifact: functional GNU debug CLI, SHA256 0c6a8f5acc09ff0710d7ccd70bf021eb3229b495514dc0400cf09a94aac09bd5; no release/performance claim. real service receipt + cleanup, exact scratch runner. Uploading .py was rejected with HTTP 422; identical source attached as .txt instead.Existing native route-generation regression also passes 1/1: old native plus two bridges cannot satisfy the newer native fence. receipt. No wrong-host identity or credential disclosure reproduced. R2 and R4 expose existing installer/recovery behavior newly exercised by re-add; product source remains unchanged. Precise source rows: state copy setup_scripts.rs:12, commit deletion install.rs:1014, missing-artifact refusal previous_attempt.sh:80-81, upgrade-journal refusal :130. Final gate is running on unchanged
be9640166.R1 exact static confirmation: freshly built x86_64 artifact 21,396,176 B, SHA256 7cf04ddcd2df90c2c45c6d94f302bb9fc6676a039f0dd8ec4da206c599a5058e (matches reviewed author artifact). The same owned real-systemd fixture reproduces: helper exit 1 at daemon-reload after unit/launcher removal; newer state/program retained; fresh Add inspection exit 71. Container removed and absent. No owner state accessed; no deployment. static service receipt + cleanup. Regression commit remains
df645bf8f; branch head unchangedbe9640166.Final-head scripts/verify fast completed on
be96401666, exit 1. Only Rust test row fails: installer 95 passed / 2 expected review failures / 2 ignored; the failures are R2 state loss and R4 controller-loss recovery. Cargo stops before later test binaries, so R1/R3 have their separate red receipts above. All other Rust rows pass, including both static builds and inode-reuse fixture. Exact static sizes: x86_64 21,396,176 B; aarch64 19,566,992 B; both exact caps pass. No host-load exception needed. TypeScript remainder is now running separately because the dispatcher stops after Rust failure; independent size comparisons follow.Verbatim gate summary:
Full verbatim gate transcript, summary.
TypeScript remainder complete on unchanged
be9640166. Compiler/metadata/checksums, 331 tracer/UI tests, 100 connection tests, 17 query/write tests, production build and transfer budgets pass (metadata adds 2 passing tests). Initial continuation failed only while building the Rust stream oracle: shared sccache daemon retained a deleted other-job temp root /home/kayg/.cache/codex-scratch/f9. Did not recreate or modify that path, and did not stop the shared daemon. Started own cache daemon on previously free loopback port 4337 with this job's TMPDIR, rebuilt only the failed oracle, then all 39 protocol tests passed / 0 failed. Own daemon PID 2256341 will be stopped after independent size builds. No product changes. frontend/build + initial tooling failure, successful oracle + protocol remainder.Final gate summary remains the verbatim table above: only intentional Rust regression test failures. Independent same-recipe baseline builds now running with the same single target directory.
Independent same-recipe release-8 comparison confirmed:
85b0285b7x86_64 21,387,184 B -> reviewed head 21,396,176 B (+8,992); ARM 19,559,112 -> 19,566,992 B (+7,880). Both static/stripped without PT_INTERP. The separate review-base comparison initially reused the release-8 x86 artifact after an in-place archive replacement preserved old mtimes; that last result is rejected, not evidence of review growth. Original receipt retained as size-baselines-initial.log / size-comparison-initial.json. Forced all 1,899 source input mtimes fresh and verified baseline bootstrap_remote.rs SHA256 b51eda7c4d0577e0c8e52c49d778440d17a484bcb18a0cda8b1310de4454570e matches git object46231c4e1. Cargo now recompiles the actual review-base modules. Corrected comparison is running; no source changes or deployment.Finished break-it review of 85b0285b7..46231c4e1. Verdict: 4 P1 findings (no P0/P2), test-only branch review-readd-minimal at
be96401666, pushed; checkout clean.536657e72: successful replacement deletes data written after state snapshot and before old-service stop. Generated-shell pre-commit controls prove the latest file update/new file reached previous-state; commit deletes that only latest directory and publishes stale data.be6d0e1a4: real authenticated QUIC peer reconnecting during image resolution still admits 1 replacement upload, expected 0. Four existing liveness/identity controls pass. Transport refuses writes: this proves upload admission; actual live-service stop is inferred from the unchanged activation path, not claimed as a service measurement.df645bf8f: fresh Add inspection returns 71 after removal deleted unit/launcher and stopped at daemon-reload. Exact static CLI + owned systemd container confirms the actual layout. The author oracle manually restores both paths before Add.be9640166: after an acknowledged old-service stop and controller loss, a new Add rejects the durable upgrade journal with 75 even after the lease ends. The original controller's rollback is not a crash-recovery path.No wrong-machine identity replacement or credential disclosure reproduced. Native old-route/two-bridge/new-route control passes 1/1. Size comparisons: independent stripped/static release-8 baselines x86_64 21,387,184 -> 21,396,176 B (+8,992), aarch64 19,559,112 -> 19,566,992 B (+7,880), both exact claims confirmed. Review merge base
46231c4e1and head x86_64 are byte-identical, 21,396,176 B, SHA256 7cf04ddcd2df90c2c45c6d94f302bb9fc6676a039f0dd8ec4da206c599a5058e, review-only delta 0 B. Initial stale review-base measurement is explicitly rejected in the measurement notes; corrected forced-source build is the accepted result.Final head scripts/verify fast exit 1, only the intentional Rust regression test row fails. Installer: 95 passed / 2 failed / 2 ignored; no load exception used. Cargo stops before later test binaries, so R1/R3 have separate red receipts. All other Rust rows pass. Verbatim output:
The dispatcher stops after Rust failure. Its frontend/compiler/build/budget portion was run separately and passed; its stream-oracle build initially hit a deleted other-job temp root in the shared compiler daemon. With an own daemon/scratch root, only the failed remainder was rerun: protocol 39 passed / 0 failed. No product source changes.
Reviewer checklist complete; evidence links: findings and test commits, full verbatim final gate, exact static real-systemd failure, final sizes/hashes, corrected review-base build, release-8 builds, last review-base row rejected, measurement notes, checklist, successful protocol remainder.
Cleanup: both owned service container runs end with the container absent; own compiler daemon PID 2256341 is gone and its listener closed; own build target, source baseline, temp and fixture roots deleted. cleanup proof. Remote branch head independently verified as
be96401666. No deployment or owner fixture access. Issue remains open.Starting round 3 on readd-minimal-r3, base
46231c4e11(origin/readd-minimal-r2). Read #231 review findings and parent #225 history. Will cherry-pick the four review regressions, reproduce each, then repair R1–R4 in separate commits, run owned-systemd functional scenarios in both modes and final fast/static-size gates. No deploy or owner installation access. Pushes are explicitly authorized by this round-3 brief.R1 reproduced on this worktree: intact control succeeds, then actual missing-unit/launcher layout exits 71. Product inspection now permits absence of either artifact but still refuses existing foreign/dangling paths; retained owner/binary/state/private identity checks remain. Expanded real-file regression passes. Removed manual unit/launcher restoration from readd_service_tests.rs; both real-service modes will now run the actual interrupted-removal layout. red, green. Touched Rust gates are building; no end-to-end or completion claim yet.
R4 recovery boundary (additive to contracts/bootstrap.md §6): SSH inspection remains read-only and reports exact abandoned upgrade coordinates only after private journal validation and a nonblocking lease-lock check. A new authorized Add reissues the retained-host invitation (existing owner/mode/uid/revocation checks) before revalidating and invoking the existing rollback with those durable coordinates. It preserves sessions and original data; it never converts an upgrade to fresh deletion. An active lease or changed/foreign journal refuses. R3 will recheck fresh authenticated liveness after image resolution and after enrollment, immediately before ACTIVATE; replacement uses separate enrollment/activation commands so both boundaries are enforceable. No new engine or dependency.
Completed/pushed R1 as
6489c883b: Add accepts absent removal artifacts while rejecting present foreign paths; the real-service oracle no longer repairs them by hand. Gates: ownership shell 36 passed/0 failed, touched SSH/server all-target Clippy -D warnings passed, fmt/diff passed. ownership. R2/R4 also reproduced at their intended assertions (stale operator data and inspection 75), after building the required runtime helper; initial status-127 setup run is excluded. R3 reproduced with a real fresh QUIC reply: 1 upload admitted, expected 0; three liveness/identity controls passed. No owner installation access. Full gate and real-service scenarios remain.Completed/pushed R2 as
13b89866f. ACTIVATE recopies the state only after the acknowledged service stop, then overlays the newly enrolled identity. This preserves late updates/new files and deletions; rollback still owns the original directory. Regression now checks all three file outcomes and the enrolled identity. Gates: installer 96 passed/0 failed/2 ignored (only still-red R4 excluded); SSH strict all-target Clippy and fmt pass. Initial red proved latest files in previous-state before commit deleted that directory: red. R3 fresh QUIC reconnect also reproduced: red. R3 fixes and a second before-ACTIVATE regression are in progress; no final gate or service acceptance claim yet.Completed/pushed R3 as
de05af824. Retained-host setup now checks fresh authenticated liveness after cache/compression preparation immediately before upload, and after enrollment immediately before ACTIVATE. It uses the existing request authority and liveness oracle. Fresh installs retain the early-terminal path; replacements retain existing sessions and use separate SSH steps so the final check can run. Gates: real QUIC/SQLite re-add suite 5 passed (both reconnect boundaries), installer 96 passed/2 ignored with still-red R4 excluded, strict SSH/server all-target Clippy and fmt pass. First broad installer rerun hit only AF_UNIX path length from my long scratch root; corrected short job root passed all 96. R4 recovery and owned-systemd scenarios remain in progress.Completed/pushed R4 as
a2af54627. Read-only inspection reports exact abandoned upgrade coordinates only after private journal/service-path validation and a nonblocking lease check. The new Add first obtains a retained-host invitation through existing authorization, then revalidates and invokes the original rollback. Upgrade recovery preserves every shim/session rendezvous; it never enters fresh-data retirement. Extended review regression proves live lease refusal (73), unknown-file refusal (75), unchanged inspection journal, restoration of the stopped service and a later successful replacement. Installer 97 passed/0 failed/2 ignored; ownership shell 36 passed; strict SSH all-target Clippy and fmt pass. tests, lint. Four fixes are separate commits; owned-systemd tests and both static-size measurements are building next. No deployment or owner installation access.Pushed additive contract documentation as
fce061a0c. contracts/bootstrap.md §6 now states both fresh-response boundaries, stopped-service state preservation, missing-removal-artifact recognition, and retained-host authorization before exact upgrade restoration. Frozen handshake and decisions unchanged. Documentation diff check passes. Owned-service fixture lint and test-executable compilation passed; both static targets are still building in the single job target before actual service runs and exact cap ratcheting.R2 author-review supplement: the generated ACTIVATE shell returned 0 and replaced an owned unit/program after is-active returned false and stop explicitly returned 1. Passing stop control and failing refusal control are isolated real-file shell cases. This predates this round; the stopped-state guarantee needs the acknowledgement whenever an owned prior unit exists. Will tighten that one branch and rerun installer/ownership gates before final validation. red. No owner service access.
Initial static x86_64 build is 21,409,104 B, stripped/static PIE with PT_INTERP absent: +21,920 B over release 8, above the approved total band. No cap raised. receipt. I am sharing the existing fresh-response admission poller across invitation/upload/activation through the repository Operation boundary to remove duplicated control code; no dependency or feature changes. ARM and rebuilt x86 measurements remain pending. The supplemental stop-refusal regression is now green after requiring acknowledged stop for any retained owned unit: green. This one-branch correction and the size work will be committed separately after their gates.
Completed/pushed stop-acknowledgement supplement as
8133d33fc(R2). Regression: inactive probe + explicit stop refusal previously activated; now it refuses and retains original unit/program/state. Gates: ownership 37 passed; installer 97 passed/2 ignored; strict SSH all-target Clippy and fmt pass. New restoration-coordinate parser checks also passed 1/1. Size experiment result: boxing fresh-response admission produced x86_64 21,409,648 B, 544 B larger than 21,409,104; rejected and reverted. ARM 19,573,632 B from that experiment is recorded but will be rebuilt after the final size choice. Next candidate shares the upload preparation poller and keeps explanatory comments outside transmitted shell literals. No cap raised. Detached baseline product checksums match46231c4e1; four review tests are applied there for exact-base qualification; only R3 scratch-path isolation differs.Current stable x86_64 candidate fits the approved total band: stripped static PIE 21,400,944 B, +13,760 B over release 8; PT_INTERP absent, SHA256 bcb6995ee4b1543dd9da1115ea2cdfb4b37147fdd4c600e1fc86d08b9641d50e. The reduction compacts fixed helper/journal strings at compile time, keeps source notes outside transmitted literals, and reuses exact owned/private-directory predicates. Ownership checks 37/37, constant equivalence, focused R1/R2/R4 cases, strict SSH Clippy and fmt pass. ARM is rebuilding, then the single serial qualification run proceeds through iterate, real-service rootless/root scenarios, exact-base red tests and same-recipe static comparison. No caps changed yet; no deployment or owner installation access.
D243 candidate now fits both architectures, without new dependencies/features or release-profile changes: stripped static x86_64 21,400,944 B (+13,760 B over release 8); aarch64 19,569,152 B (+10,040 B). Both have no PT_INTERP. Compile-time helper compaction uses the existing shell grammar; all helper outputs match the existing compactor, and SSH all-target strict clippy/fmt pass. Caps remain unchanged pending full qualification. Workspace iteration gate is running; real rootless/root systemd scenarios and independent same-recipe round-2 baseline comparison follow serially.
candidate sizes and SHA256
Completed and pushed size correction
3e50bfa6e. Fixed helper compaction is now compile-time, directory predicates are shared without weakening checks, and upload preparation shares its poller. SSH strict all-target Clippy/fmt and helper equivalence pass; workspace run reports installer 97 passed/2 ignored, ownership 37 passed. All four review regressions are green in the workspace run; the broader iteration gate is still completing. Static candidate: x86_64 21,400,944 B (+13,760 over release 8), aarch64 19,569,152 B (+10,040), no PT_INTERP. Full baseline comparison and owned real-service qualification remain pending.sizes/SHA256
Completed and pushed verification step
4c4235f6e: R1 now appears as a named ordinary gate row; bounded RESTORE receipts have truncation and changed-coordinate parser coverage. Workspace fmt, SSH strict all-target Clippy, named removal oracle and restoration parser test pass. No shipping-code change. Broader iteration/real-service/final gates remain in progress.Iteration gate exit 0 at shipping source
3e50bfa6e(verification-only head4c4235f6e); full final gate is still pending. Targeted server lint passed; real-service runs follow serially.Full verbatim transcript
Completed and pushed real-engine verification
a093b4928. Both rootless and root owned-systemd containers pass full Add and all four review scenarios. Functional checks only; no build-host latency claim. Retained PTY responds after replacement/recovery. Rootless owned PID list has 13 entries, root has its own list in transcript; both report remaining=0. Both exact containers are absent and both outer client PID lists are empty after cleanup.Both modes report:
rootless transcript, rootless cleanup, root transcript, root cleanup.
Five targeted re-add controls pass, including both authenticated reconnect boundaries; server strict all-target Clippy/fmt and iteration gate pass. Targeted results. Static images are the recorded 21,400,944/19,569,152-byte candidates. Exact-base red proofs/size comparison and final fast gate remain pending.
Clarification: the quoted PID line in the preceding comment belongs only to rootless; the shared scenario markers match both modes. Root cleanup has its separate list:
Both exact outer containers/client PIDs are proved gone in the linked cleanup receipts.
Independent exact-base control is complete: detached
46231c4e11has hash-identical shipping source; only the review tests are applied. R1 exits 71 (earlier linked proof). R2 loses the late state update, R4 reports inspection status Some(75), and R3 admits 1 upload after a fresh authenticated reply. Expected test exits: 101 for R2/R4 and R3. This confirms the fixes against the original product, separately from the green branch. Same-recipe baseline static builds are still running.R2/R4 red transcript, R3 red transcript.
Reproducible owned-container runner; source test is committed in
a093b4928.Completed and pushed exact-cap step
6ac180862. scripts/verify.d/rust.sh now caps x86_64 at 21,400,944 B and aarch64 at 19,569,152 B, with no slack. docs/PROCESS.md records +13,760/+10,040 B over release 8 and +4,768/+2,160 over round 2. Shell syntax/diff checks pass. Existing cap test run against the exact saved shipping candidates passes both exact ceilings, rejects cap+1, enforces downward ratchet, and rejects unsupported targets.Verbatim boundary gate. Independent x86_64 baseline is exactly 21,396,176 B. Aarch64 baseline/branch restoration are running; final head fast gate remains pending.
Same-recipe exact-base static comparison passed: round-2
46231c4e1rebuilds to 21,396,176 B x86_64 and 19,566,992 B aarch64, exactly matching the recorded caps. Both stripped/static with no PT_INTERP. Round-3 candidates are +4,768/+2,160 B against that base and +13,760/+10,040 B over release 8, within the approved total band. Branch image restoration/hash equality is running, then final scripts/verify fast on clean pushed head6ac180862.Baseline sizes and hashes. Hash-identical base source proof, R1 red, R2/R4 red, R3 red.
Serial qualification exit 0. Both restored branch static images exactly match the owned-service candidates by SHA256 (x86_64 bcb6995ee4b1543dd9da1115ea2cdfb4b37147fdd4c600e1fc86d08b9641d50e; aarch64 49637873475c8900124f7fdaa3dc29cebd2156503c9a37ec3a131abd39c90beb). Independent round-2 sizes match both prior caps exactly. Final scripts/verify fast has now started on clean pushed head
6ac180862f.Qualification transcript, complete build/gate recipe. Final gate and scratch cleanup remain pending.
Finished #231 round 3 at
6ac180862f, pushed toorigin/readd-minimal-r3; remote SHA matches, worktree clean. No deploy. Issue remains open.R1 accepts missing removal artifacts only after retained installation ownership checks; the real-service oracle performs no manual repair. R2 copies current state after acknowledged stop and overlays only the enrolled identity, preserving updates/new files/deletions. R3 refuses fresh authenticated live responses immediately before upload and ACTIVATE. R4 validates an abandoned journal, authorizes the retained host, and reuses rollback before the new Add. Original review tests independently fail on unchanged round-2 product source; all pass here.
scripts/verify fastexit 0 on this head. Verbatim review rows, static receipts and Rust summary:TypeScript/bundle/protocol checks also pass. Full gate output, verbatim; final head, environment and image SHA256 proof.
Stripped static sizes and exact caps (no slack):
Both are within the approved total 16 KB band. Same-recipe baseline. Final images are byte-identical to both real-service candidates.
Real end-to-end Add and all four scenarios pass in rootless and root owned-systemd containers, including both R3 reconnect boundaries and retained PTY use. Functional checks only. Rootless transcript, root transcript, runner, qualification recipe.
Both exact containers and recorded outer PIDs are gone; each service transcript lists 13 owned PIDs and remaining=0. Own compiler daemon PID 2749284/port 4343 stopped; no own target executable remains running. Baseline checkout, build targets, artifact bundles and temporary test roots removed. Evidence is outside the checkout and attached. Cleanup proof, completed author checklist. Owner installation untouched.
Starting round-3 delta verification on review-readd-r3 at base/head
6ac180862f; delta 46231c4e1..6ac180862. Retrieved #231 (535 comments) and parent field case #225 history. Reviewing R1–R4, retained-state ordering and ownership, liveness boundaries, journal concurrency and login-material handling. Product code remains unchanged; only owned fixtures/containers will be used, no owner installation access or deploy. Test commits will be pushed. Raw receipts: ~/.cache/codex-scratch/review-readd-r3/evidence/.P1 R2 — completed retained-state writes lost before publication. In crates/plugins/ssh/src/setup_scripts.rs ACTIVATE, cp -a completes after stop, then the source state remains writable until its later rename to previous-state. An independent update and new file completed in that interval remain only in previous-state; activation publishes the older copy and commit deletes the only current data. Deterministic real-file test runs unchanged ACTIVATE; no-write control passes, late-write case fails (before copy != after copy), and the retained backup proves both writes completed before publication. Failing review test committed/pushed
ee27c48af2. Product code unchanged. fmt and diff checks pass; crate gates queued for build slot.state-publish-red.log
Verification checkpoint: P1 state-publication regression pushed
ee27c48af; direct real-file control/late-write test is red at the intended data assertion. Added final-recheck/activation-transit regression using the existing real QUIC/SQLite fixture; awaiting compilation. Required host build slots are occupied; focused helper, original R1/R2/R4 controls, new regressions and strict touched-crate Clippy are queued sequentially through build-slot. No slot/priority override, deployment or owner fixture access. Full head scripts/verify fast follows after test commits.Independent R4 functional matrix: 4 passed/0 failed using the shipped inspection/rollback shell on owned real files. Boundaries: stopped, incomplete stopped-state copy, original-state renamed, new-state published. Each retains 1,103 state entries (1,100 numbered files, identity, notes, symlink), original binary/identity, note mode 0640 and uid, and restores service via isolated manager fixture. Each held live journal lease refuses 73; each unknown journal entry refuses 75 before recovery. No new R4 finding from these cuts; no runtime/performance claim or owner fixture access. Compiled original controls/new R3 regression still wait for build slot.
journal-matrix-source.txt
journal-matrix.log
P1 fixture qualification: pushed
a1d6018508, setting the retained root to 0700 and staged/identity files to 0600. Direct real-file no-write control still passes; the unchanged completed-write assertion still fails. Product code unchanged. Original compiled controls, liveness-transit regression and Clippy remain queued for the required host build slot.Continuing round-3 verification on review-readd-r3-cont at
c658b916b9, product base6ac180862and delta 46231c4e1..6ac180862. Read #231 and parent #225 history; continuing ee27c48af/a1d601850 P1 retained-data finding and the two pending test files. Product code unchanged; owned local fixtures only. Test commits will be pushed, no deploy. Evidence: ~/.cache/codex-scratch/review-readd-r3-cont/evidence/.Pending tests split and pushed to review-readd-r3: 948d521ce (retained directory replacement) and 521d19ac2 (authenticated response during activation transit). The two real-file retained-data checks fail at their intended assertions; no-write control passes. Directory replacement changes an independent identity to the enrolled identity in setup_scripts.rs:60-72; count this as supplemental evidence for existing P1 R2. Four recovery cuts rerun: 4 passed/0 failed, each 1,103 retained entries; active lease refuses 73, unknown journal entry refuses 75, mode/uid/symlink preserved. Compiled checks wait for build slot; fmt and whitespace checks pass. Product code unchanged.
state-review.log
journal-matrix.log
Verification continuation at pushed head 521d19ac28aa223d6fbacbb4a2de3738608b583f. R1 direct control passes (1/1); R4 journal matrix passes (4/4, 1,103 entries each). R2 two intended assertions fail, including existing completed-write case. Product source remains unchanged. Focused compiled controls, strict Clippy and final scripts/verify fast are queued serially through build-slot; no priority override. Detached
46231c4e1baseline prepared for same-recipe static x86 comparison. r1-direct.logCompiled control step on pushed head
35e335df2(same test tree as 521d19ac2; commit reference corrected to D13/D17). Installer controls: 6 passed/0 failed/2 opt-in ignored. Ownership/removal: 2 passed/0 failed, including R1. Original R2 stopped-state and R4 controller-loss controls pass. Retained-data review aggregate: 0 passed/1 failed, reproducing both intended Python assertions. Native liveness controls/new transit case are compiling, followed by strict Clippy and final fast gate.installer-controls.log
ownership-controls.log
state-publish-test.log
P1 R3: a host answering after the final recheck still receives activation. Deterministic real-QUIC/SQLite regression gates the setup transport after the final recheck and before activation delivery, enables the retained host response, obtains a fresh authenticated reply, then releases delivery. Activation is delivered rather than refused (assertion at bootstrap_readd_tests.rs:592). Production path bootstrap.rs:1160-1168 completes recheck_replacement and then separately awaits activate_and_start; install.rs:987-995 sends ACTIVATE without another admission check. Pushed test
35e335df2. Existing liveness controls: 6 passed; new transit case: 1 failed, at the intended assertion. Earlier before-upload and after-enrollment refusal controls both pass. Product code unchanged. Strict touched-crate Clippy is running; final fast gate/static comparison follow.liveness-tests.log
Head remains
35e335df2. Standard workspace Clippy passed. First fast-gate test run stopped before server tests on unchanged daemon gone fixture: Unix socket path exceeded SUN_LEN under the long scratch root. The same compiled test passes using a short /proc//fd reference to this job's private cache directory; no files move outside scratch and no code changes. Static builds are running, then the serial script compares46231c4e1and runs the full gate again with short-scratch.py. Resume recipe: ~/.cache/codex-scratch/review-readd-r3-cont/focused.sh; per-step output in evidence/focused-status.log. R2/R3 findings unchanged; final gate still pending.Pushed test-only fixture correction
965fd6f4d: session test directory suffix 24 -> 16 hex characters, retaining its existing builder and ordinary private cache paths. The unchanged test failed under the prescribed cache root; /proc path indirection passed it but broke existing private-path checks, so that approach was discarded. No product code change. Fmt and whitespace checks pass; full final gate will run on this head. Completed static builds: baseline46231c4e1= 21,396,176 B; reviewed head = 21,400,944 B; delta +4,768 B. Both recorded head static caps pass (ARM 19,569,152 B). Head restoration hit shared sccache temporary-directory removal under another job; an isolated cache daemon rooted only in this job is queued for restoration/verification retries. No other job files or processes changed. Current serial status: evidence/focused-status.log; scripts under ~/.cache/codex-scratch/review-readd-r3-cont/.Inherited final gate blocker: cargo-deny fails on rustls-webpki 0.103.15 / RUSTSEC-2026-0382. Exact detached
46231c4e1baseline reproduces exit 1 with the same advisory; Cargo.lock is byte-identical (receipt saved in evidence/dependency-baseline.json). This is outside the reviewed delta and needs a dependency correction outside this test-only brief. No dependency or product code changed. Final fast gate on965fd6f4d: fmt, VT fmt, compile-out, workspace Clippy, helper, inode fixture and static builds PASS; test FAIL (101) only at the retained-data regression; cargo-deny FAIL (1). Session fixture correction passes in the full gate. R3 focused remote regression remains 6 passed/1 intended failed. Verdict pending final receipts/cleanup: HOLD, two P1 findings in the delta (R2/R3), no new P0/P2.HOLD — P0=0, P1=2, P2=0 in 46231c4e1..6ac180862. Final test-only head
965fd6f4d7, pushed to review-readd-r3; worktree clean. No product/dependency changes or deploy. Issue remains open.35e335df2; separate remote-feature native suite 6 passed/1 intended failed. This opt-in case is absent from the standard fast gate.R1 direct/compiled controls pass. Installer review controls: 6 passed, 2 opt-in ignored; ownership/removal checks: 2 passed. R4: 4 recovery cuts pass, 1,103 entries each; live lease refuses 73 and unknown journal refuses 75. Private-staging identity control passes; source audit found no new setup-material disclosure.
scripts/verify fast exit=1 on final head. Only workspace test failure is the intended retained-data regression. Cargo-deny separately reports inherited rustls-webpki 0.103.15 / RUSTSEC-2026-0382; detached
46231c4e1reproduces it with byte-identical Cargo.lock. That dependency correction is outside this test-only brief. TypeScript stage was not reached after the red Rust gate; no TypeScript changes.Verbatim summary:
Both static caps pass (x86 21,400,944 B; ARM 19,569,152 B). Same-recipe x86 comparison; restored head is byte-identical:
The scoped Clippy command reproduces its two unchanged unnecessary_wraps errors on the detached baseline; standard workspace Clippy passes. Session-fixture cache-path correction
965fd6f4dpasses the final gate test. Process-path indirection was discarded; final fixtures use ordinary private cache paths. Functional verification only; no performance claim.Cleanup: owned compiler daemon PID 2243976 and build-wrapper PID 1069247 gone; no own target executable remains. Own baseline, targets, binary copies, cache and temporary fixture roots removed; receipts retained outside checkout. No owner fixture or external test host used.
final-fast.log
final-summary.txt
static-comparison-retry.log
baseline-dependency-check.log
dependency-baseline.json
head-cleanup-proof.json
cleanup-proof.json
reviewer-checklist.txt
final-recipe.txt
short-absolute-control.log
private-staging-control.log
scoped-clippy-baseline.log
liveness-tests.log
state-review.log
journal-matrix.log
Starting round 4 on readd-minimal-r4, base
6ac180862f(origin/readd-minimal-r3). Imported all five review test commits from origin/review-readd-r3 through965fd6f4d; pushed headdd3b8414ab. Read the latest two verification rounds: R2 completed retained-data writes and R3 authenticated response during activation transit remain open; R1/R4 controls hold. Direction: in-place retained directory handoff with journaled identity rollback, and server-side generation fencing before activation. Owned fixtures only; no deploy or owner installation access. Evidence: ~/.cache/codex-scratch/readd-minimal-r4/evidence/. Known cargo-deny advisory RUSTSEC-2026-0382 remains outside scope.R3 implementation choice before contract changes: persist the exact certificate minted by redemption on remote_join_tokens, and mark each superseded certificate with the host setup transaction UUID when fencing. Existing revoked_at admission/renewal checks refuse those certificates across process stop. A process-local guard generation invalidates already admitted transports after the serialized fence commits; it does not replace durable certificate admission. Successful SSH rollback clears only revocations belonging to its exact setup transaction. Abandoned journal recovery restores host files before restoring the same server-side generation. Successful commit removes the undo marker and keeps old certificates retired. Rejected: further liveness polling (still leaves transit window), a new lease endpoint/protocol (more state and another host round trip), and route-generation checks alone (not durable, old credentials can reconnect). Additive schema only, no foundational library/dependency change. Static size stop line remains release-8 x86_64 +16 KB; measure before qualification.
R2 checkpoint (working tree; no product commit yet): unchanged direct review reproduced 2 failing assertions. In-place handoff now passes both tests, including the no-write/late-write cases and refusal of a substituted state directory. The retained directory is never copied for activation; enrollment copies only identity.json, and rollback restores only a completely published identity backup. Added four process-stop cuts around identity backup/publication with 1,105 retained entries and open-file writes; compiled checks pending. R3 additive SQLite schema checks: 4 passed/0 failed. Touched-crate verification is queued through the shared build-slot wrapper; static size follows serially before wider qualification. No dependency change or owner fixture access.
r2-before.log
r2-after.log
schema-check.txt
Round-4 checkpoint, product working tree still awaiting per-step gates. R2 handoff matrix passes 4/4 cuts, each retaining 1,105 entries, original identity/binary, a 0640 note, symlink and completed open-file writes; fresh-controller rollback and repeated cleanup pass. Initial installer suite: 97 passed/1 failed/2 ignored; the sole failure exposed a fresh-setup retry that legitimately had retained data before identity creation. Corrected that state handling; focused retry now passes 1/1, current four-cut matrix passes, installer-target strict Clippy passes. Full touched-crate rerun remains pending.
R3 construction detail: a response accepted while SQLite is waiting must also refuse admission. The last liveness check now retains a generation/revision snapshot; certificate fencing compares it while holding the exclusive side of the correlated-Result publication permit, then cancels old authority before activation. This removes both the SQL-wait and activation-transit gaps without another network poll. Prior certificate tags survive restart and only matching proven rollback restores them. All 30 migrations and exact current fence SQL pass 9 checks, including current owner/mode/uid, exact redeemed certificate and wrong session/transaction refusal. Native R3 tests still pending.
Exact same-recipe merge-base static x86_64 reproduced: 21,400,944 B, SHA256 bcb6995ee4b1543dd9da1115ea2cdfb4b37147fdd4c600e1fc86d08b9641d50e, stripped static, PT_INTERP absent. Candidate build is running; stop line is release-8 21,387,184 + approved 16,000 = 21,403,184 B. No ceiling changed.
r2-four-cuts.log
fresh-retry-check.log
r2-focused-clippy.log
schema-full-check.txt
baseline-static-image.json
Completed retained-data module step at
9e8887d93a, pushed to origin/readd-minimal-r4 (remote SHA matches). Enrollment now copies only identity.json; activation takes over the existing retained directory in place. Journaled complete identity backup and device/inode binding make rollback retain independent files and open-file writes, including across a new controller. Older directory journals remain recoverable. The prior review assertion about previous-state is replaced by same-inode/no-copy assertions while preserving completed-write checks.Current focused gate: fmt PASS; strict installer Clippy PASS; direct R2 checks PASS (2 tests, late-write/no-write controls); fresh-setup retry PASS (1/1); process-stop matrix PASS (4 cuts, 1,105 retained entries each, original identity/binary, mode 0640, symlink and open-file writes). Initial full crate run had only the subsequently corrected fresh-setup retry failure (installer 97 passed/1 failed/2 ignored); full crate rerun and final fast gate are still pending. R3 working changes remain separate and uncommitted while the candidate size is measured. No deploy.
SIZE STOP as directed. The integrated R2/R3 candidate builds as a stripped static x86_64 image with no PT_INTERP: 21,436,720 B, +35,776 B versus the exact same-recipe merge base
6ac180862(21,400,944 B), +49,536 B versus release 8 (21,387,184 B). Approved total is 16,000 B; candidate exceeds it by 33,536 B. No ceiling, dependency, feature or profile changed. No correctness reduction or size work follows this measurement.Pushed branch head remains
9e8887d93a(R2 in-place retained data). R3 is an uncommitted buildable candidate, not a qualified fix: native R3 tests and owned-systemd end-to-end checks have NOT run. The exact 10-file candidate patch and source hashes are attached so work does not depend on this chat. It includes durable certificate retirement/undo, correlated-response admission revisions, and activation/rollback wiring. Restoring clean pushed head for the mandatory final head gate and cleanup only; implementation and wider qualification are stopped pending the size decision. No deploy or owner fixture access.candidate-static-image.json
candidate-source.json
r3-candidate.patch
candidate-static-x86.log
Required head verification checkpoint, no implementation changes after the size stop. Clean pushed head
9e8887d93rebuilds to 21,400,944 B x86_64: delta versus exact merge base is 0 B, total release-8 growth remains 13,760 B. SHA differs from the merge base and both new in-place journal markers are present, confirming the rebuilt R2 image.The first full gate has reached ARM static verification. Its workspace test failure is runtime_lock::tests::stale_session_endpoint_is_not_held_live_by_a_foreign_inode_twin; its namespace child fails before the oracle with InvalidInput: path must be shorter than SUN_LEN. The original fixture root r4-231 produces a 109-byte socket path. An exclusively created private root at /home/kayg/.cache/codex-scratch/r4x produces 105 bytes; the exact already-built outer test and namespace inner now both pass 1/1. No fixture/product code was changed. After the first gate finishes, repeat scripts/verify fast on the same head with only INFRATERNAL_TEST_STATE_ROOT set to that shorter real directory. Build target/TMPDIR remain unchanged. R3 native and end-to-end qualification remain stopped by the size limit.
runtime-short-path-check.log
runtime-short-path-status.txt
head-x86-freshness.json
Correction to the preceding fixture-path count: r4-231 produces 108 bytes (the rejected Linux SUN_LEN boundary), not 109; the exclusively created shorter root produces 105 bytes. Exact outer and namespace-inner tests both pass 1/1 with the shorter root. No code changed.
Completed test-only qualification at
4828c6894b, pushed to origin/readd-minimal-r4; product code remains exactly the9e8887d93R2 module. The path-corrected full gate passed both static caps and reached the SSH shell oracle. Its only functional failure was ReplacementStopReview.test_inactive_probe_cannot_hide_a_refused_service_stop (acknowledged-stop subcase): the fixture supplied neither retained nor enrolled identity, so the in-place handoff refused 71. Qualified those two private fixture files and asserted old/new identity outcomes; all 37 ownership oracle cases now pass. The stop-refusal assertions are unchanged. Fmt/whitespace pass; Rust source is unchanged from the green workspace Clippy run. No production check was weakened, no size ceiling changed, and the R3 implementation stop remains in force. Mandatory final fast follows on this pushed head.HOLD status: pushed head
4828c6894bis clean. Final scripts/verify fast has waited about 40 minutes for the shared build slot as of 2026-10-20 22:02 UTC; no second gate was started. The preceding full run passed static x86/ARM size checks and found a test-only identity fixture omission; the corrected shell oracle passes 37/37. R3 implementation remains stopped at the measured size limit. Awaiting final head gate and scoped cleanup only.HOLD — stopped at the explicit size limit; this branch is not ready to merge.
Pushed head:
4828c6894b(readd-minimal-r4). R2 in-place retained-data handoff is commit9e8887d93a; the subsequent commit qualifies only the acknowledged-stop test fixture with private original/enrolled identities. HEAD equals origin and the checkout is clean.Final
scripts/verify fastexited 1 on this head. Verbatim Rust table:Installer suite: 98 passed, 0 failed, 2 ignored. The ownership shell oracle passes 37/37; the four process-stop handoff cuts each preserve 1,105 entries, original directory inode, completed open-file writes, modes and symlinks through fresh-controller and repeated rollback.
The final server suite reports 613 passed, 2 failed, 53 ignored. One failure is the unchanged R3 review assertion (activation delivered 1; expected 0). The other is the unrelated setup socket fixture: its 111-byte path exceeds the Unix socket limit; the exact same built test passes unchanged with a private 106-byte path. No socket product code was changed. cargo-deny reports the inherited RUSTSEC-2026-0382 in rustls-webpki 0.103.15; this brief excludes its repair. TypeScript stage was not reached; this branch changes no TypeScript.
Head static images: x86_64 21,400,944 B; ARM64 19,569,152 B; both stripped, without PT_INTERP, at the unchanged exact caps. x86 growth against the independently rebuilt exact merge base is 0 B; total growth against release 8 remains 13,760 B.
R3 remains stopped. The integrated draft measured 21,436,720 B: +35,776 B against the exact merge base, +49,536 B against release 8, exceeding the approved 16,000 B total allowance by 33,536 B. The earlier size-stop comment attaches its source patch, source hashes and static build receipt. It was removed from the checkout, not committed or pushed. The candidate native tests and real owned-systemd Add/scenario end-to-end checks in rootless and root modes were not run. Its correctness is unqualified; R3 remains open. No further implementation or size optimisation followed the stop.
No deployment, external test host, owner acceptance fixture or owner retained data was used. Cleanup removes this job's target and detached baseline, empties its private fixture roots and verifies no owned fixture processes remain. Evidence and reproducible recipes are retained outside the checkout; no report or receipt was added to the repository. Issue remains open.
Evidence:
final-fast.log
final-gate-table.txt
final-review-results.txt
final-failures.txt
server-socket-shorter-path.log
server-socket-shorter-path.json
head-static-images.json
head-environment.json
final-git-proof.json
cleanup-proof.json
author-checklist.txt
head-gate-recipe.txt
cleanup-recipe.txt
Stopped candidate and exact baseline:
candidate-static-image.json
candidate-source.json
r3-candidate.patch
Starting round 5 on readd-minimal-r5, base
4828c6894b(origin/readd-minimal-r4). Read the last three #231 comments first and recovered the attached R3 candidate. R2 remains committed. Scope: durable R3 activation fencing with response admission, one measured size pass within the approved total 48 KB release-8 band, test-only socket shortening, owned build-host systemd Add/scenarios in rootless/root modes, and final fast gate. No deploy, external host or owner fixture access. Evidence: $HOME/.cache/codex-scratch/readd-minimal-r5/evidence/.Schema step committed and pushed:
4e6051265. Migration 0030 adds only redeemed-certificate binding and a reversible retirement transaction marker on existing records; no new table, dependency or feature. Validation: all 30 migrations applied with foreign keys enabled, foreign_key_check and both schema assertions PASS (4 checks). Candidate module tests/lint are queued through the host build-slot wrapper; no second heavy command is running. The R3 candidate also needs an explicit accepted-response-before-fence control alongside its denied-response-after-fence transit control.R3 test boundary finding: the attached candidate replaced the transit oracle with retired-authority refusal and expected one activation. Retained a separate zero-activation oracle under the original review name: a test-only barrier holds the actual fence after final poll and SQLite writer acquisition, then a real QUIC correlated response is accepted before releasing the fence. Expected result remains already_added with 0 activation deliveries and prior certificate retained. A complementary renamed transit control requires old admission/replies denied after durable retirement. No production test barrier code is built. Native gate is still waiting for a host build slot.
Additive #231 contract clarification before documentation: final response polling is followed by a durable certificate admission boundary. A correlated old-host response accepted after the poll but before this boundary refuses activation (0 deliveries). After this boundary the old installation cannot establish a fresh response: superseded certificate admission/renewal is durably refused, existing guards are cancelled and drained, and only the exact redeemed setup certificate remains admissible. Matching proven host rollback restores only its transaction-tagged prior certificates; a host tombstone prevents restoration. This is the round-4 certificate-generation proposal, now with paired pre-admission/transit regression oracles. No wire or frozen handshake change. Native validation remains queued.
Schema review finding before native qualification: remote_migration_tests.rs pins the release chain/count to 29 (lines 97/133/256); updated expectations to 30 while retaining exact prior-checksum assertions and explicit 0029 assertion. The inventory unredeemed-invitation fixture (remote_inventory.rs:230) deletes the redeemed certificate while leaving its consumed invitation; 0030 now references that certificate. Its unchanged native control is queued to confirm the foreign-key refusal before qualifying a genuinely unredeemed replacement invitation. Product inventory code is unchanged.
Candidate correctness finding: cancellation on logout still executes installation.rollback() (plugins/ssh/src/bootstrap.rs), but restore_replacement and restore_setup require that ended session. Exact candidate SQL against all 30 migrations, correct host/transaction and an active host restores 0 certificates where proven rollback needs 1; retained host files would contain the prior identity while its certificate stays retired. Receipt: rollback-session-end-sql.txt in this job evidence. Added proven_rollback_restores_prior_identity_after_its_session_ends before repair. Choice: authorize only this cleanup restoration by the trusted batch owner + exact journal transaction + active host (as existing cleanup hooks do after logout); retain live-session checks for activation fencing and retain host-tombstone refusal. Native regression remains queued.
Rollback correction in the working tree now passes 5 exact-SQL checks: wrong owner, wrong transaction, genuine host removal, ended-session restoration and repeated restoration. Direct retained-state checks pass 2/2; direct ownership/recovery controls pass 5/5. Full ownership-oracle direct invocation lacked its compiled runtime helper (32 setup errors); not counted as product failures, and the queued native gate builds that helper before its normal integration oracle. Native validation, size attribution and owned-systemd qualification remain pending.
schema-check.txt
rollback-session-end-sql.txt
rollback-session-end-sql-green.txt
state-shell-tests.log
ownership-direct-controls.log
Native checkpoint (not final qualification): R3 7 passed/0 failed, fence 5 passed/0 failed (including ended-session rollback), SSH suites 226 passed/0 failed/14 ignored, socket control 1 passed/0 failed. Inventory control reproduced the expected new FK refusal; its corrected fixture refreshes the invitation first. Sole strict-lint finding was documentation backticks, now corrected. The migration test filter initially selected 0 tests; the follow-up uses enrollment::migration_tests. Follow-up strict lint, six real on-disk process-stop cases and migration/inventory controls are queued; static attribution starts only if they pass.
Schema
4e6051265is pushed. Remaining working code is snapshotted below against4828c6894(patch includes that committed migration); process-stop additions are unqualified pending the queued run. No deploy or owner fixture access.r5-working-candidate.patch
r5-working-source.json
r3-tests.log
fence-tests.log
installer-tests.log
socket-test.log
Size comparison preparation: actual git merge-base with origin/dev is
173a9ba14f; round 4 compared against6ac180862. Static-cargo, rustc wrapper, target config, toolchain and lockfile are byte-identical to this branch. The only semantic manifest difference is the inherited infraternal-agent release opt-level (merge base s; branch z). Detached baseline is prepared with this branch Cargo.toml so the comparison uses the same recipe. The task changes no branch profile. Baseline build has not run. Follow-up native/process-stop gate remains queued; no second heavy command or external host is running.Process-stop matrix PASS: 1 native parent test, 6 real child-controller stops with on-disk SQLite reopened after each stop. Cuts: before fence COMMIT, after fence completion, after SQLite COMMIT before generation publication, before rollback COMMIT, after rollback completion, and after successful setup releases its undo marker. Each case checks prior/new admission, wrong-owner refusal and exact rollback behavior; successful setup cannot be undone. All 6 child PIDs were reaped; ps confirms 0 remain. This single unit ran under the explicit one-unit exception while the larger slot-wrapped gate remains queued. Functional proof only.
process-stop-direct.log
process-stop-cleanup.json
Schema fixture step committed and pushed:
9f718e0f1. Migration regressions 5/5, corrected unredeemed-invitation inventory control 1/1, fmt and strict touched-crate Clippy PASS. The six process-stop cuts also pass in the full fence suite (6 tests passed; 1 child helper selected only by its parent). No product inventory behavior changed.Additional R3 boundary control reproduced: if a correlated response has been delivered but its read permit is still held, the draft returns a busy-link storage failure instead of already_added. The new exact native control fails with host setup connection busy. Refinement checks the published response revision before attempting the exclusive permit and retains the exclusive-side recheck for the concurrent-publication race. Repaired control is running. The initial static build had already reached server compilation, so its receipt is not accepted as the refined source measurement; rebuild current normal static image before the size pass.
Held-response-permit refinement now passes its native failing-first control (red: busy-link storage failure; green: already_added refusal while permit remains held). The exclusive-side response revision comparison is retained. Schema fixture head
9f718e0f1is independently verified equal to origin/readd-minimal-r5. Current-source R3/lint/static refresh is prepared; initial pre-refinement static output will be labeled superseded, not used for acceptance.response-permit-red.log
response-permit-green.log
migration-tests-qualified.log
inventory-control-qualified.log
Measurement hygiene finding: I changed the active size-stage shell while adding a control; after the compiler completed, the shell stopped with an EOF parsing error. Its image also preceded the latest response-permit refinement, so it is explicitly superseded and no size is accepted from it. A fresh immutable refresh-pretrim.sh is queued: current R3/fence/lint gates, normal static image, then symbol attribution. Native correctness results are unchanged. Resumable working-state and the exact shell transcript are attached; remaining work is current size attribution/cut, atomic core/tests/docs commits, owned systemd rootless/root scenarios, exact caps/baseline and final fast gate.
resume-state.txt
check-followup.log
Current refined source snapshot against
4828c6894, including the two pushed schema steps, is attached. This supersedes the earlier working snapshot with the sixth process-stop cut and held-response-permit refinement. Current-source normal static size and per-function attribution remain queued; no size result is accepted yet. No dependency, feature, branch profile, deployment or owner installation change.r5-refined-candidate.patch
r5-refined-source.json
Static freshness finding: refined native R3 7/7, fence/process 6/6 and strict Clippy pass, but normal static Cargo reused an image byte-identical to the superseded image and did not recompile the edited server crate. The 21,435,760-byte size is provisional, not accepted current-source evidence. Per-function symbol build is running from current source. After it completes, invalidate only this job server/SSH/CLI x86 release outputs and force a normal rebuild before accepting pretrim bytes or making the single size cut. No source, dependency, feature or branch profile change.
Owned-service fixture finding (production wiring is shared correctly): runtime.rs remote_router creates one EnrollmentStore and clones it into RemoteListeners and InvitationIssuer. readd_service_tests.rs constructs a new EnrollmentStore for its separate fixture issuer instead of sharing the listener registry. Each new store owns independent Revocations, so durable SQL is shared but response revisions and cancellation signals are not. The real-service fixture must assert registry identity and use the listener exact store before its results can qualify the new fence. Plan for step 4: add test-only diagnostic access to the existing listener factory store, run the old fixture with an identity assertion to reproduce the mismatch, then change only fixture wiring and run rootless/root scenarios. No production source change is needed.
Rollback proof finding confirmed before repair: the shared cleanup/retry operation invoked certificate restoration after an SSH cleanup returned success with no restoration receipt. A committed host journal is already absent, and its no-op cleanup also returns success, so this could undo retirement after host commit if completion was interrupted. Native callback regression failed 1 != 0 before repair.
Correction: an upgrade rollback emits one public RESTORED receipt only after journal-bound file restoration; fresh/no-op cleanup emits none. Installation.rollback reports that proof, the one non-generic cleanup helper restores certificates only when proved, and abandoned-upgrade recovery requires the same receipt. Unknown output refuses. The repaired callback control and a real-file committed-upgrade/no-op test pass; full SSH/R3/fence/lint and updated forced pretrim attribution are queued. No frozen wire handshake, dependency or branch profile change.
Rollback proof controls: baseline callback test failed 1 != 0 before repair; repaired callback test passes; real-file committed-upgrade no-op returns no proof and keeps committed identity; real failed-upgrade restoration returns proof and repeated cleanup returns none, preserving previous binary/state/unit. Full proof-correct suites, forced size and function attribution remain queued. Unknown or lost proof stays retired; a new owner-authorized Add may recover with retained identity/data without the old connection.
rollback-proof-red.log
rollback-proof-green.log
committed-rollback-proof.log
restored-rollback-proof.log
Test-only socket step committed and pushed at
38ecd57c04. The complete setup socket fixture path is 104 B under this job root, below 107 B, versus 125 B before; production path and mode/request assertions unchanged. Native socket control 1/1, fmt and strict touched-crate Clippy pass. Current proof-correct SSH suites 228/0/14 ignored; R3 7/0; fence/process 6/0/1 child helper ignored; strict Clippy passes. Updated static image/function attribution is running.Proof-correct pretrim static x86: 21,435,728 B, +48,544 B over release 8. Forced rebuild of the changed server/SSH crates; no PT_INTERP. Native checks: SSH 228 passed, R3 7 passed, fence 6 passed (six actual process stops), strict lint passed. Per-function text attribution: generation commit 8,868 B/26 functions; setup fence adapter 5,015 B/5; restore adapter 2,125 B/5; shared rollback helper 690 B/3. Existing readiness-error constructor is fully inlined.
Starting the single size pass: omit the duplicate preflight session lookup before the atomic authorized retirement write, and outline that existing cold error constructor. All durable predicates and response/transition guards remain. New source snapshot includes the no-op rollback receipt correction.
r5-proof-correct-size-pass.patch
proof-pretrim-size.json
Completed SSH module step:
241315a3c7(pushed). Activation exposes the server fence hook; failure/retry cleanup only restores certificate authority after an exact successful upgrade rollback receipt. Missing/committed journals are no-ops, unexpected output refuses undo. Existing retained-data paths are reused. Native gates: 228 SSH passed, 0 failed, 14 ignored; strict touched-crate Clippy and fmt passed. No public wire or dependency change. Server adapter qualification and size pass remain in progress.Completed additive contract step:
317fb01214(pushed). contracts/bootstrap.md defines the accepted-response/activation boundary and exact rollback receipt, owner and transaction requirements. A cleanup no-op cannot restore authority; genuine removal always prevents restoration. This records the earlier issue proposal. Documentation whitespace check passed.Checkpoint: SSH module
241315a3cand additive contract317fb0121are pushed. The single size-pass validation is queued through the required host build-slot wrapper; native compilation has not started. All regular build slots remain occupied. No slot override, remote machine, owner-state operation or deployment is used. Remaining: size qualification/attribution, server and process-test commits, owned rootless/root systemd scenarios, actual merge-base size, exact caps and final gates.Size-pass R3: 7 passed. Process-stop matrix: first five boundaries passed; the sixth child did not finish initial database preparation within the harness readiness watchdog. Its on-disk database contains 26/30 applied migrations, so no fence/rollback operation ran. An isolated same-binary after-setup-complete child reached readiness and was reaped; its original-watchdog checkpoint still reported the migration database locked. Correcting the test-only readiness watchdog to include on-disk migration work, with explicit child-stage diagnostics; all six stop positions and authority assertions stay unchanged. Production source unchanged.
size-pass-fence.log
process-watchdog-diagnosis.json
after-complete-control.json
Corrected process-stop unit passed: six stop positions, six reaped child processes, six real SQLite reopens with expected prior/new certificate admission. Immediate ps proof: 0/6 child PIDs remain. Used the explicit single-unit-test exception while the required size-pass command waits for its build slot. Only test readiness and diagnostics changed; production source is unchanged.
readiness-matrix-unit.log
readiness-matrix-pids.json
Resumable server/fixture snapshot attached at pushed head
317fb0121. Includes the single size pass, corrected process readiness watchdog (six boundaries pass), and deliberately failing fixture registry assertion awaiting the owned-container negative control. The fixture issuer still uses a separate store until that control runs; production shares one correctly. Full size-pass retry is queued through build-slot; no size after the cut is claimed yet.r5-pending-server-and-fixtures.patch
Owned systemd negative control reproduced the fixture registry mismatch: assertion failed before READ D fresh-install (no setup ran). Expected-failure control PASS. Container removed and both exact runner child PIDs reaped; 0 remain. The isolated pretrim CLI image was only read/hashed before the assertion, never installed. Corrected the fixture issuer to clone the listener store; production already shares that store and is unchanged. The forthcoming rootless/root runs will now exercise the real generation fence.
rootless-service.log
rootless-summary.json
rootless-cleanup.json
STOP under the brief’s D243 band. Pushed head:
317fb01214. The single size pass (duplicate fence preflight removal plus outlining the existing cold readiness error) grew the forced-rebuilt static x86 image from 21,435,728 B (+48,544 release 8) to 21,438,032 B (+50,848): +2,304 B. This exceeds 48 KB even if interpreted as 48 KiB (49,152 B). No new dependency, feature or release-profile change. No PT_INTERP. Per-function precut attribution was recorded earlier; postcut attribution did not run because the size assertion stopped the command.The brief says “above that, stop and report”; stopping further implementation/builds here. Needs an orchestrator/owner follow-up to revisit the size pass or change the allowed band. Core remains uncommitted, with the exact current patch and source hashes attached. Earlier atomic schema, schema fixture, socket fixture, SSH proof and contract commits are pushed. No deploy.
Qualified current production source: R3 7 passed; fence 6 passed, 1 ignored owned child helper; strict touched-crate Clippy passed. Six real process-stop boundaries also passed separately with immediate PID cleanup proof. Owned registry negative control passed before setup; test fixture issuer is now corrected, but the green fixture has not been rebuilt/run.
Not completed: final ARM size, full rootless/root end-to-end scenarios, actual merge-base binary comparison, iterate and final fast. No full-gate table exists and none is claimed. The known cargo-deny advisory was not changed.
Size-pass command output, verbatim:
r5-size-stop-pending.patch
r5-size-stop-source-hashes.json
r5-size-stop-state.json
size-pass-images.json
qualify-size-pass-retry.log
size-pass-clippy.log
size-pass-r3.log
size-pass-fence.log
Round 5 stopped, not complete: pushed head
317fb01214(five atomic commits; origin tracking ref matches). Pending server/process/service source remains in the worktree and the exact patch is attached in the preceding comment. Static x86: 21,438,032 B, +50,848 release 8, outside the approved band. Final ARM, both full end-to-end modes and final fast were not run because the brief requires a size stop.Cleanup complete: 44 recorded fixture PIDs checked, 0 remain; owned container absent; own detached baseline, target, artifacts, fixture copies and temporary state removed. Evidence and recipes retained outside the checkout. No deployment, owner fixture change, external machine use or issue closure.
Last command gate output, verbatim:
final-process-cleanup.json
proof-pretrim-function-sizes.json
size-pass-x86_64-unknown-linux-musl.log
final-scratch-cleanup.json
final-pushed-commits.txt
final-worktree-status.txt
Starting round 6 on readd-minimal-r6 at
317fb01214(origin/readd-minimal-r5). Read #231 history, including the last three comments. Resume exact source-hashed pending fence and corrected fixture; approved total x86 size band 57,344 B over release 8. Will qualify owned build-host systemd rootless/root cases, both static architectures and exact merge base, then final fast. No deploy or owner acceptance fixture access. Evidence under $HOME/.cache/codex-scratch/readd-minimal-r6/evidence/.Recovered pending source hashes match 11/11 files. Fresh round-6 native controls: R3 7 passed, 0 failed; fence 6 passed, 0 failed, 1 intentionally ignored child helper. Six real process-stop boundaries completed with on-disk SQLite reopened; immediate PID check finds 0/6 children remain. Functional proof only. Strict lint and corrected fixture build still running.
r3.log
fence.log
process-stop-cleanup.json
Fence step committed and pushed:
9db2df851c. Fresh fmt and strict server all-target Clippy pass; R3 7/7, fence 6/6 with six real process stops and 0/6 remaining child PIDs. Corrected service fixture executable rebuilt successfully. Commit records the response-permit/SQLite mechanism, rejected polling and unconditional undo alternatives, approved 57,344 B total x86 allowance, and #231 pretrim function attribution. No dependency, feature or release-profile change. Both normal static targets and owned rootless/root scenarios queued through build-slot.clippy.log
Fresh normal static x86 from pushed production fence
9db2df851: 21,438,032 B, +50,848 B over release 8; stripped and no PT_INTERP. Exact match to the round-5 qualified image size, within the approved +57,344 B total limit (6,496 B below it). No dependency/feature/profile changes. ARM build in progress; full owned-service scenarios follow.x86-qualified-size.json
Corrected shared-registry rootless fixture now passes both R3 boundaries, R2 retained-file replacement and R4 journal recovery, then fails at readd_service_tests.rs:178 attaching through the original generation-1 actor. The fixture cached that actor before all replacements and reused it at lines 390/489/550. Generation retirement correctly makes its admission unavailable; the retained shim is separate and its exact PID check already passed. Qualify only the fixture: assert the retired actor refuses attachment, then fetch the current host actor before checking the same retained session and terminal binding. No production change. Failed run container absent and 0/2 runner PIDs remain. Both static sizes measured: x86 21,438,032 (+50,848 release 8), ARM 19,602,768 (+43,656); neither has PT_INTERP.
rootless-service.log
rootless-cleanup.json
Exact-cap step committed and pushed:
25239d2527. Fresh stripped static images: x86 21,438,032 B (+50,848 release 8); ARM 19,602,768 B (+43,656); neither has PT_INTERP. PROCESS records the approved correctness/authority size reason; gate caps have no slack. All 7 size-boundary controls pass (both exact/one-byte-over/downward-ratchet, unsupported target), shell syntax and whitespace pass. No Rust production source changed after measurement. Corrected retained-session fixture rebuild is running.sizes.json
static-size-boundaries.log
Service-fixture step committed and pushed:
669740cae9. Fmt, strict server all-target Clippy, rebuilt fixture and full real Add/R1–R4 scenarios PASS in both owned systemd modes (rootless/root). Includes fresh Add, both late-response refusal boundaries, retained files and same shim/session via current route, interrupted controller/journal recovery, one live host record, live Add refusal without service change, and removal recovery. Old actor refusal is explicitly asserted after generation changes. Both containers absent; 0/4 runner PIDs remain. All tests functional only; no host timing claimed. Exact merge-base static comparison for both architectures is queued; final fast remains.rootless-service.log
rootless-summary.json
rootless-cleanup.json
root-service.log
root-summary.json
root-cleanup.json
Exact merge base
85b0285b73independently rebuilt for both static architectures with identical Cargo.toml, Cargo.lock, .cargo configuration and wrappers (recipe diff 0 lines). Base x86 21,387,184 B; branch 21,438,032 B; delta +50,848 B. Base ARM 19,559,112 B; branch 19,602,768 B; delta +43,656 B. Both baseline images have no PT_INTERP and exactly match release-8 receipts. Final scripts/verify fast queued on pushed head669740cae9.merge-base-sizes.json
Initial final fast found an environment-only CLI fixture failure: cli_review_r2.rs:72 UnixListener bind refuses path must be shorter than SUN_LEN, before the pagination assertion. Job TMPDIR yields a 110 B path for its six-digit test PID (111 B with seven digits); the existing exclusively owned short scratch root yields 92/93 B. The exact same built test passes 1/1 with only TMPDIR changed to $HOME/.cache/codex-scratch/r6. No CLI, fixture or production source change. Initial fast continues through static checks; rerun on the same head with the short private TMPDIR after it finishes. The inherited RUSTSEC-2026-0382 remains reported by cargo-deny.
cli-short-root-control.log
Initial fast on
669740caecompleted. Both fresh static images exactly match caps: 21,438,032 / 19,602,768 B, PT_INTERP absent, delta 0. Test row failed only at CLI Unix socket bind under long TMPDIR, before its pagination assertion; exact built control passed with shorter private root. cargo-deny reports inherited RUSTSEC-2026-0382. No source change; corrected-environment full fast is queued on the same head. Initial table verbatim:first-verify-fast.log
first-verify-fast-table.txt
Round 6 finished its scoped implementation and verification runs; overall fast gate remains non-green only for the inherited dependency advisory. Head
669740cae9equals origin/readd-minimal-r6; checkout clean. Atomic pushed commits:9db2df851(qualified durable activation fence),25239d252(exact static caps/reason),669740cae(shared-registry/current-route service fixtures).Fresh focused controls: R3 7/7; fence 6/6 including six real process-stop cuts. Full real Add plus every R1–R4 scenario passed in owned systemd rootless AND root containers. Same retained shim/session and one live host record checked; old actor refuses attachment. The initial corrected fixture exposed its cached retired actor; only the fixture was corrected, with failed/passing receipts attached earlier.
Final static sizes, identical artifact hashes before/after fast:
85b0285b7(21,387,184 B); within approved +57,344 B total limit.Both stripped/static, PT_INTERP absent, exact-cap delta 0. Same recipe, no dependency/feature/profile change. Size reason/function attribution are in the fence commit and prior issue comments.
Final scripts/verify fast on this head used the short private TMPDIR after the first run exposed the CLI fixture Unix socket path limit. The exact unchanged CLI test passed with that environment correction. Final gate test summaries total 1,820 passed, 0 failed. cargo-deny alone fails RUSTSEC-2026-0382 in rustls-webpki 0.103.15; independently reproduced on the exact merge base with identical Cargo.lock. Bans/licenses/sources pass. The unmodified fast exit is 1 and is retained. Separately completed the gate's frontend continuation: exit 0. No advisory exception or dependency change was introduced.
Final Rust gate table, verbatim:
Scoped reviewer checklist completed. Functional evidence only; no runtime performance claim. Cleanup: all 3 owned containers independently absent, ps checks show 0/12 recorded fixture PIDs remain, own detached baseline/build target/artifacts/private fixture roots removed. Evidence/recipes retained outside checkout and attached below. No deployment or owner acceptance fixture access. Issue remains open.
verify-fast.log
verify-fast-table.txt
verify-fast-typescript-continuation.log
baseline-deny.log
final-sizes.json
merge-base-sizes.json
final-state.json
final-process-ps.txt
final-scratch-cleanup.json
reviewer-checklist.txt
Orchestrator: round 6 finished at head
669740cae. Rootless and root Add plus R1–R4 pass; the only fast-gate failure is cargo-deny RUSTSEC-2026-0382, inherited from release 8 and fixed in release 9.1.Size against release 8: x86 +50,848 B, ARM +43,656 B. I raised the band to 56 KB (D243 16–64 KB band). The reason: the durable activation fence (generation commit, setup fence, restore adapter) is what closes the R3 P1, and the one size pass found no safe cut.
Next: a delta break-it review of 6ac180862..669740cae (
review-readd-r6), queued. After a clean review, this joins the next release, and then the owner re-adds infraternal-dev as the acceptance test.Starting delta review on review-readd-r6 at base
669740cae9; delta 6ac180862..669740cae. Read #231 and parent #225 history. Round-3 review commits through965fd6f4dare already ancestors of this head; running the ported tests first. Test-only work, owned local fixtures only, no deployment or owner installation access. Evidence: ~/.cache/codex-scratch/review-readd-r6/evidence/. Known dependency advisory and size are outside review scope.P1 R2 remains open at a later retained-directory boundary. On unchanged
669740caeACTIVATE, an owned real directory replaced after setup_scripts.rs:69-72 inode validation and before identity publication passes the later private-directory check. Activation exits 0 and overwrites that directory identity with the staged identity; the original retained directory is left at the independent writer's renamed path. Deterministic real-file control: original two regression cases pass, later-boundary case fails at identity preservation (3 cases: 2 pass/1 fail). The fixture replaces the directory immediately after handoff_setup_lease, using the same existing manager fixture, and retains private 0700/0600 modes. Product code unchanged. Test commit follows after queued crate qualification. directory-candidate.logCompleted and pushed
a49aec6d8: independent reconnect/second-setup test holds SQLite commit before generation publication. Native fence suite 7 passed/0 failed, including six real process-stop receipts; qualified re-add suite 7 passed/0 failed; original retained-data Python controls 2 passed/0 failed; installer 99 passed/0 failed/2 ignored. Strict workspace all-target Clippy with remote feature and fmt pass. Initial installer invocation lacked its required recovery helper; rebuilt helper and rerun passed. Scoped feature-subset Clippy hit the two inherited unnecessary_wraps diagnostics already recorded in prior review; workspace qualification passes. No product changes.Resume checkpoint: pushed head
a49aec6d8. Serial next-step recipe is ~/.cache/codex-scratch/review-readd-r6/next.py, queued through build-slot; stage receipts will be evidence/steps.log. It commits/pushes each test separately after fmt/strict workspace Clippy and focused qualification, then runs unmodified final fast, frontend continuation, and owned-systemd rootless/root scenarios. Test candidates and the confirmed P1 receipt remain under the same scratch root. No product edits or live installation access.Completed and pushed
68fb74ae2c: P1 later-boundary retained-directory test is red: 3 cases, 2 pass/1 fail at identity preservation. Activation returns success after the directory changes following inode validation. Original R2/R3 controls pass; this is the remaining later-boundary data-custody finding, distinct from the original completed-write case. Fmt, whitespace and strict workspace all-target Clippy with remote feature pass. Product code unchanged. Final fast gate follows.Completed and pushed
303da8e662: Populated-copy migration test passes: 64 hosts, 64 invitations (32 consumed/32 unredeemed), 32 certificates, foreign-key checks and repeat startup preserve the data; migration 0030 is recorded once. Fmt, whitespace and strict workspace all-target Clippy with remote feature pass. Product code unchanged. Final fast gate follows.Completed and pushed
aa01b8d87a: Expanded recovery matrix passes all 17 activation journal boundaries with the existing retained-data and completed-write assertions; one native matrix test passed. Fmt, whitespace and strict workspace all-target Clippy with remote feature pass. Product code unchanged. Final fast gate follows.Completed and pushed
09c3621e86: Rollback-publication control passes: both earlier admitted generations remain refused, restored reconnect is durable across restart, and repeated rollback leaves a current guard running. Fmt, whitespace and strict workspace all-target Clippy with remote feature pass. Product code unchanged. Final fast gate follows.Gate milestone on pushed head
09c3621e86. Final unmodified scripts/verify fast exit 1. Its only test failure is the new later-directory identity-preservation case, inside the existing completed_state_write_before_publication_is_retained wrapper; original retained-write cases pass. cargo-deny is the known inherited RUSTSEC-2026-0382. All seven other Rust rows pass, including both static builds/checks; frontend continuation passes. Initial full run stopped at an unchanged SSH helper startup refusal; exact fixture recheck 2/2 and final full-run fixture both pass without source changes.final-fast-retry.log
frontend-continuation.log
config-isolation-qualified.log
Owned-systemd rootless/root scenarios remain queued after correcting the runner host preflight source-file requirement. No product edits. Overall review finish and cleanup still pending; P1 verdict remains HOLD.
History correction: the original
965fd6f4dcommit is not an ancestor of this branch. Its five review-test steps were already ported asfeeea7d0a,c65c5113a,205ff56ff,f89a11ee1anddd3b8414a, which are ancestors of the reviewed head. My earlier ancestry wording referred incorrectly to the original hashes. The already-ported R2/R3 tests were run and pass; no duplicate cherry-pick or product edit was needed. The current review head and gate results are unchanged.Owned rootless full fixture passes. First root fixture passes R3 before-upload/before-activation refusal, R2 retained writes and R4 controller/journal recovery, then a later repeated replacement stops at Join (readd_service_tests.rs:446). Diagnostic process list shows the staged enrollment process in D state; root-cause attribution is not yet established. This is separate from the deterministic directory-replacement P1. Both containers are absent and 0/4 wrapper client PIDs remain. An identical root-only repeat is queued through build-slot; no source, deadlines or resource settings changed. Final fast has only the intended new regression plus the known advisory; table/receipts already attached above.
HOLD — P0=0, P1=1, P2=0. Finished at pushed head
09c3621e86; worktree clean. Five atomic commits change four test files only.P1: an owned real state directory replaced after setup_scripts.rs:70–74 inode validation passes the later directory checks; line 88 overwrites its independent identity and activation exits 0. Test
68fb74ae2is intentionally red: original two cases pass, new later-boundary case fails. Reproduce: python3 crates/plugins/ssh/tests/readd_state_publish_review.py.Qualified: original/ported R2/R3 controls; seven fence cases plus the added rollback case; six server process-stop cuts; 17 activation recovery cuts; copied database migration/restart with 64 hosts, 64 invitations and 32 certificates; full owned-systemd rootless and root Add/R1–R4 fixtures. First root run passed R2–R4, then failed a later Join with its staged process in D state before final R1 removal; identical full root repeat passes. Both receipts are retained; no cause is asserted.
Cleanup: three containers independently absent, six recorded driver clients reaped, no job executables running; own build artifacts and short fixture data removed. Reviewer checklist completed. Issue remains open.
Final unmodified scripts/verify fast exit 1: test fails only at the new directory case; cargo-deny reports known inherited RUSTSEC-2026-0382. All other Rust rows pass. Frontend continuation passes. Summary verbatim:
final-fast-retry.log
frontend-continuation.log
config-isolation-qualified.log
directory-red.log
directory-finding.json
readd-qualified.log
fence.log
migration-test.log
handoff-test.log
rollback-test.log
installer-qualified.log
rootless-service.log
rootless-cleanup.json
root-service.log
root-cleanup.json
root-service.log
root-cleanup.json
cleanup.json
service-artifact-identity.json
review-checklist.md
Reproducible owned-systemd fixture driver, attached as plain text after the service rejected its Python filename:
owned-systemd-runner.txt
Starting round 7 on
readd-minimal-r7at base669740cae9834d8208ad4a51d8be8f1726d7f38a(origin/readd-minimal-r6). Read #231 and parent #225 history and the repository contract. I’ll reproduce the three-case retained-state publication regression, make the smallest activation fix, then run the required local owned-systemd and final gates. No deploy, owner fixtures, or external hosts.P1 reproduced before product edits on
669740cae: after the saved directory inode check, the real-file fixture replaces$base/statewith another owned 0700 directory; ACTIVATE returns success and changes that directory's identity. The ported failing-first regression is commit0c2eacafa. Reproduction: 3 tests, 2 pass / 1 fails at the independent-identity assertion. red receiptCompleted the failing-first regression step: cherry-picked the retained-directory publication control as
0c2eacafaand pushed it toorigin/readd-minimal-r7. The unchanged product reproduces the P1: 3 cases, 2 passed / 1 failed at the independent-identity assertion. red receiptQualification finding: the existing retained-directory interruption test initially failed 1 of 99 cases (98 passed, 2 ignored). Its diagnostic identifies the old absolute-path backup boundary (
cp -p "$base/state/identity.json" ...), while activation now reads that file relative to the verified working directory; the injected cut did not occur. I’m retargeting the same interruption assertion to the emitted relative command, without changing its expected result. focused failure, boundary diagnosticCompleted and pushed activation fix
661304d5c. The recorded state inode is rechecked before backup, before relative identity publication and after it; publication stays rooted in the verified directory cwd, and the cwd is restored on success. The test comment records that visible swaps are detected while POSIX shell cannot make check-and-rename atomic. Existing interruption assertions now select the relative backup and publication commands.Checks: publication reproduction 3/3; retained handoff cut test 1/1; SSH crate 231 passed, 0 failed, 14 ignored; strict SSH all-target Clippy and fmt pass. Receipts: publication, handoff, SSH suite, Clippy
Completed and pushed test-only fence step
234921269. The added reconnect/second-setup publication control is included in the feature-correct fence run: 7 passed, 0 failed, 1 ignored. Workspace all-target Clippy with--features remoteand fmt pass. Package-only/default-feature server runs are excluded; the test and shared Clippy configuration require the remote feature. fence suite, workspace ClippyCompleted and pushed populated-copy migration test
4da9955f3. Its real migration/restart integration test passes 1/1 with foreign keys enabled. Workspace all-target Clippy with--features remoteand fmt pass. migration test, workspace ClippyCompleted and pushed 17-boundary recovery test step
ba46bfc74. The expanded retained-data and completed-write matrix passes 1/1; both interruption selectors now follow the relative backup/publication commands without changing expectations. Workspace all-target Clippy with--features remoteand fmt pass. 17-cut matrix, workspace ClippyCompleted and pushed rollback-publication test
dd717cbbe. The feature-correct fence module now passes 8 tests, 0 failed, 1 ignored, including refusal through rollback publication. Workspace all-target Clippy with--features remoteand fmt pass. fence and rollback suite, workspace ClippyOwned systemd rootless Add + R1–R4 fixture passed (exit 0); cleanup confirmed container absent and both client PIDs gone. Receipt: owned-rootless.log.
Owned systemd root Add + R1–R4 fixture passed on the first run (exit 0); no Join stop retry needed. Cleanup confirmed container absent and both client PIDs gone. Receipt: owned-root-run1.log.
Final branch-head publication regression reproduction passed: 3 tests, 0.185 s. Receipt: readd-state-publication-final.log.
Size-comparison setup only: the detached r6 build first lacked Zig in its scratch target, then its fresh native archive download timed out. I copied the already-installed Zig toolchain and verified the three native inputs are byte-identical to r7; the r6-keyed native archive now points to the matching built r7 archive. The same static build is queued in build-slot. Receipts: missing-Zig log, download-timeout log.
Static size comparison passed the r7 <2 KiB growth constraint. Using the same locked release recipe, r6 and r7 are x86_64 21,438,032 bytes (delta +0) and aarch64 19,602,768 bytes (delta +0), stripped and static. Against release 8 (21,387,184 / 19,559,112), deltas are +50,848 / +43,656 bytes; x86_64 is within the 56 KiB band by 6,496 bytes. The detached baseline reused the native archive only after verifying all three hashed native inputs were byte-identical. Receipts: size summary, r7 x86_64, r7 aarch64, r6 x86_64, r6 aarch64.
scripts/verify iteratecompleted with exit 1. All Rust gate rows except cargo-deny pass; the only advisory ID is the inherited RUSTSEC-2026-0382, and the SSH inode reuse fixture passes. Transcript: verify-iterate.log.Finished #231 at head
dd717cbbe94de80454b956fa31b88491a7f0b410(pushed toorigin/readd-minimal-r7).scripts/verify fastexited 1 solely for inherited cargo-deny advisoryRUSTSEC-2026-0382; all other rows pass. Exact final Rust gate summary:Full transcript: verify-fast.log.
Cleanup complete at head
dd717cbbe94de80454b956fa31b88491a7f0b410: scratch Cargo targets and detached r6 worktree removed. Both owned systemd fixture receipts show container absent and client PIDs gone; Docker reports zero containers with this job label. Branch is clean and matchesorigin/readd-minimal-r7. Final fast gate output and transcript are in the preceding comment.Break-it review: r7 (origin/readd-minimal-r7, head
dd717cbbe). Verdict: HOLD (one P1)Review branch:
review-readd-r7, head23cd41678. It adds failing tests only, no fix:crates/plugins/ssh/tests/review_rollback_state_swap.{py,rs}.The r6 P1 is fixed on the activation side. Publication now goes through a cwd pinned to the verified directory, and the path is checked again afterwards. A swap before the
mvis refused with exit 71. A swap after the final check only redirects a directory that already holds the right identity. r7's own regression passes (readd_state_publish_review: 1 passed). The same defect class is still open on the reverse path, in rollback.P1: rollback restores the old identity into a state directory swapped in after its inode check, then reports RESTORED
crates/plugins/ssh/src/install.rs:1583-1586checksstate-inodeonce. Then come$manager stop(:1588) and$manager disable(:1601). Both are slow external calls: a service stop can take its full timeout. After them, :1618-1619 runsmv -Tf "$stage/previous-identity" "$base/state/identity.json"by absolute path, with no recheck.Sequence:
$manager stop,$base/stateis moved away and a different directory is put in its place.identity.jsonwith the old identity and printsRESTORED, exit 0.This is the r6 P1 on the rollback path.
Test:
cargo test -p infraternal-plugin-ssh --test review_rollback_state_swapP2: activation publishes without the inode pin when the state directory appears after enrollment
crates/plugins/ssh/src/setup_scripts.rs:109-118. join writesstate-inodewhenever$base/stateexists (:15-17). So thiselsebranch runs only when no directory existed at join and one appeared before activation, which means a directory nobody verified. For an upgrade it copies that directory'sidentity.jsonas previous-identity, publishes ours into it by absolute path (unpinned) and exits 0. r7 added the mirror refusal at :120 (journal without a directory gives exit 71) but not this case.Sequence: an upgrade where base has no
state/, join runs, an independent writer creates$base/state/identity.jsonduring$manager stop, and activation overwrites it with exit 0.Same test file, second case:
P3
mvlands in the moved retained directory, :106 exits 71, and rollback then refuses at install.rs:1585 with exit 71. The result: binary already replaced (:76-78), old service stopped, enrolled identity sitting in the moved directory. The stage is not empty, so the next attempt is refused with exit 72 (install.rs:1566-1570). This is fail-closed, but recovery is manual and nothing reports the state.returncode != 0, not== 71(readd_state_publish_review.py, last assertion). A crash with status 1 would also pass it.activation_pwd=$(pwd)/cd "$activation_pwd"(:83, :108) can fail the wrong way. If the shell's starting cwd is unreachable, the run exits throughset -ewith status 1 instead of 71. If it fails after a successful publish, an identity is already published and the exit is still 71. Low likelihood.Checked, no defect found
statdoes not follow the link, so the inode check fails.$baseswapped:$stagelives under$base, so the same pin applies.[ "$(stat …)" = … ] || exit 71: sound.set -eexits non-zero..and path inode checks match on the same filesystem.Starting #231 on readd-minimal-r8 at base
23cd416789(origin/review-readd-r7). Continuing the rollback state-directory swap and unverified-directory review; will preserve the seeded regressions and validate against the required SSH fixtures.P1 reproduced before changes on
23cd4167:review_rollback_state_swapfails. After the fixture swaps$base/stateduring the service stop, rollback returns exit 0 andRESTORED, replacingindependent identitywithoriginal identity. The inode check is before the stop; identity restore is still absolute atinstall.rs:1619. before-fix outputP2 reproduced before changes on
23cd4167: thestate_directory_created_after_enrollmentcase fails. Activation returns exit 0 and replaces the independent identity with the staged identity when$base/stateappears after enrollment withoutstate-inode(setup_scripts.rs:109-118). The existing retained-inode review passes 1/1. before-fix outputP3 source finding: after a refused rollback leaves
.bootstrap-lock, the next setup attempt can return 72 atinstall.rs:1566-1570.Failure::in_modecurrently tells the user to retry so cleanup can finish (model.rs:437), but this state requires manual recovery and must keep the journal/state intact. I’ll add explicit preservation and recovery guidance; no cleanup behavior will be broadened.Fixture alignment finding: after the activation guard began refusing an existing
state/without a recorded inode,readd_state_publish_review.py's completed-write case failed 2/3 subcases (both exit 71). It constructs retainedstate/before activation but omitted the inode journal thatjoin()writes. I’ll add that receipt to the fixture; the ownership refusal remains covered by the late-created-directory regression. red outputGate finding:
scripts/verify iteratehad 6/8 Rust rows pass. The workspace test row failed atcli_review_r2::a_failed_later_page_emits_only_the_failure_envelopebecause its temporary Unix socket path exceededSUN_LEN; rerunning that exact test withTMPDIRat the job scratch root passed (1 passed). The cargo-deny row reports inheritedRUSTSEC-2026-0382. Transcript: verify-iterate-state-fix.log. Corrected-path test: cli-sun-len-rerun.log. I will rerun the full test row with the shorter temporary root before final verification.Step 1 committed and pushed:
203ea04f1. Rollback now rechecks the recorded state device/inode after service-manager work, publishesprevious-identityrelative to the verified directory, and rechecks after publication. Activation refuses a late state directory with exit 71.cargo fmt --all --checkand iterate Clippy passed; both Rust review harnesses passed (1/1 each): review-rust-harnesses-final.log. The first iterate test row hit an overlong temporary socket path; its exact failing test passed when rerun withTMPDIRat the job scratch root.cargo-denyreports inheritedRUSTSEC-2026-0382. Full head verification remains pending.P3 reproduction: the status-72 mapping test fails on the current controller message because it only says to retry the host check. This leaves a staged setup after activation/rollback refusal without warning the operator to preserve and reconcile the saved identity. The test failed at the new
Manual recoveryassertion (metric: 112 bytes per retainedFailure, 1024 events). Receipt: status72-before-fix.log. I am changing the controller guidance; it will not remove host data.Step 2 committed and pushed:
8113444d8. Status 72 now tells the operator to keep setup files/state intact and reconcile the saved identity withstate/identity.json; it performs no cleanup. The diagnostic test failed before the change and passed after (1 passed); SSH crate Clippy passed;cargo fmt --all --checkandgit diff --checkpassed. Receipt: status72-after-fix.log.Functional review fixtures pass on
8113444d8:remaining=0; both containers are absent and both host-side client PIDs are gone. Rootless: service log, summary, cleanup. Root: service log, summary, cleanup.scripts/verify fastremain pending.Final fast found a test-fixture path issue, not a source failure:
agent_daemon::real_binary_preserves_input_and_output_across_24_abrupt_stopsstopped before its process checks becausescripts/agent_fixture.pymeasured a 120-byte AF_UNIX path. The general SSHTMPDIRoverride does not control the agent-specificINFRATERNAL_AGENT_TEST_STATE_ROOT. I will rerun this exact test with a short alias whose target stays in the job scratch, then repeat the final gate. The fast transcript also reports inheritedRUSTSEC-2026-0382and both exact static caps pass. verify-fast-final.logThe agent-daemon path issue is resolved by setting
INFRATERNAL_AGENT_TEST_STATE_ROOTto a short symlink whose target is this job's scratch directory. The exact test now passes: 24/24 abrupt-stop/restart positions replayed exactly; 4,710,396 payload bytes; 1 passed. No source change was needed. agent-daemon-short-root.log. I am repeatingscripts/verify fastat the same branch head with that fixture root set.The second fast attempt found the same path-length setup issue in
tests/shim.rs: 24 fixture startups rejected socket names under the long shared test-state root. Running the exactshimtest target with bothINFRATERNAL_TEST_STATE_ROOTandINFRATERNAL_AGENT_TEST_STATE_ROOTset to the short job-scratch alias passes (24 passed). The static builds pass at the exact r7 caps: 21,438,032 bytes x86_64 and 19,602,768 bytes aarch64. Receipt: shim-short-root.log. I will repeat the final fast gate with both roots shortened.The third fast attempt exposed an environment interaction: assigning the short alias to the general
INFRATERNAL_TEST_STATE_ROOTlet socket fixtures start, but restart-path tests require the canonical job root and failed their path/permission assertions (8 restart tests). The 24-test shim target passed separately with the short alias. The job root itself is short enough for both sets: the longest restart fixture socket path is 93 bytes and the shim path is 98 bytes under/home/kayg/.cache/codex-scratch/readd-minimal-r8. I will use that canonical path forINFRATERNAL_TEST_STATE_ROOT, and keep the alias only forINFRATERNAL_AGENT_TEST_STATE_ROOT. No source change is indicated. Receipt: verify-fast-final.log.Validated the two-path test setup: canonical job scratch for
INFRATERNAL_TEST_STATE_ROOTand the short in-job alias only forINFRATERNAL_AGENT_TEST_STATE_ROOT. With that arrangement the restart tests pass (28 passed, 1 ignored) and the shim suite passes (24 passed); the agent-daemon suite also passed 24/24 stops with exact replay. Canonical-root controls, agent-daemon receipt. I am repeating the full fast gate with the validated roots.The latest fast attempt now passes the restart and shim groups but finds 4
infraternal-agentunit fixtures whose nested socket paths exceedSUN_LENunder the 48-byte canonical job root. Their errors occur during socket bind/startup, before the assertions. I will rerun them using a short real directory (not a symlink) under the scratch root, so both socket limits and path identity are preserved. Static builds pass at both r7 caps. Receipt: verify-fast-final.log.running 2 tests
test daemon::gone_tests::scale_review::two_hundred_vanished_sessions_preserve_the_same_channel ... ignored, scale measurement; run alone under CPUWeight=10000
test daemon::gone_tests::a_vanished_session_gets_a_final_close_and_the_channel_stays_up ... ok
test result: ok. 1 passed; 0 failed; 1 ignored; 0 measured; 74 filtered out; finished in 0.01s
running 29 tests
test restart::tests::private_path_prefix_cannot_authorize_a_parent_directory_escape ... ok
test restart::tests::private_control_endpoint_cannot_be_stolen_or_created_by_a_client ... ok
test cli::command_tree::backmerge_tests::restart_inherits_private_state_before_or_after_the_command ... ok
test restart::tests::replacement_never_exports_to_a_general_purpose_binary ... ok
test restart::tests::early_hangup_is_queued_until_control_installs_its_handler ... ok
test restart::tests::reviewer_fifo_replacement_is_refused_without_waiting_for_a_writer ... ok
test restart::tests::root_owned_marked_target_requires_protected_root_parents ... ok
test remote_server::tests::failed_restart_endpoint_does_not_prevent_http_serving ... ok
test restart::tests::runtime_directory_symlinks_and_public_permissions_are_refused ... ok
test restart::tests::path_review::late_recovery_from_path_invocation_keeps_install_target ... ok
test restart::tests::reload_reopens_install_path_when_the_running_inode_was_replaced ... ok
test restart::tests::real_fd_exec_pins_replacement_and_cold_rollback_uses_null_stdin ... ok
test restart_binary::audit_tests::symlink_parent_escape_and_writable_candidates_are_refused ... ok
test restart_binary::audit_tests::unsigned_or_tampered_replacement_is_refused_before_exec ... ok
test restart_binary::audit_tests::unusable_admitted_image_keeps_the_existing_service_running ... ok
test restart_binary::audit_tests::verification_twenty_megabytes ... ignored, optimized weighted 20 MiB signature and admission measurement
test restart_image::tests::probe_never_inherits_the_control_descriptor ... ok
test restart_image::tests::snapshot_refuses_every_mutation_and_preserves_source_offset ... ok
test restart::tests::restart_request_logs_kernel_peer_target_and_cold_outcome ... ok
test restart::tests::cold_exec_with_closed_stdin_keeps_the_image_pinned_and_maps_null ... ok
test restart::tests::restart_requests_use_the_servers_binary_and_reject_untrusted_paths ... ok
test restart::tests::default_restart_opens_the_receiver_target_exactly_once ... ok
test restart::tests::rootless_even_marked_replacement_is_cold_and_open_fd_pins_the_inode ... FAILED
test restart::tests::runtime_shutdown_never_waits_forever_on_a_blocking_waiter ... ok
test restart::tests::closed_reply_and_missing_reload_target_do_not_end_restart_control ... ok
test restart::tests::deleted_path_review::relative_recovery_after_atomic_install_keeps_live_install_path ... ok
test restart_binary::audit_tests::admitted_inode_cannot_change_in_place_before_execution ... ok
test restart_binary::audit_tests::pathname_replacement_keeps_the_admitted_inode ... ok
test restart::recovery_tests::verified_exec_and_late_refusal_preserve_listener_and_ca ... ok
failures:
---- restart::tests::rootless_even_marked_replacement_is_cold_and_open_fd_pins_the_inode stdout ----
thread 'restart::tests::rootless_even_marked_replacement_is_cold_and_open_fd_pins_the_inode' (3409792) panicked at crates/infraternal/src/restart_tests.rs:268:32:
called
Result::unwrap()on anErrvalue: Kind(TimedOut)note: run with
RUST_BACKTRACE=1environment variable to display a backtracefailures:
restart::tests::rootless_even_marked_replacement_is_cold_and_open_fd_pins_the_inode
test result: FAILED. 27 passed; 1 failed; 1 ignored; 0 measured; 71 filtered out; finished in 13.66s
error: test failed, to rerun pass
-p infraternal --bin infraternalShort-root controls use the real concise scratch directory for
TMPDIR,INFRATERNAL_TEST_STATE_ROOTandINFRATERNAL_AGENT_TEST_STATE_ROOT. The combined run passed the agent gone test, then one restart case timed out after 13.66s. Reran that exact restart case alone: 1 passed in 1.03s. Logs: combined run, isolated rerun.Corrected short-root controls passed with
TMPDIR,INFRATERAL_TEST_STATE_ROOTandINFRATERAL_AGENT_TEST_STATE_ROOTset to the real concise scratch directory. Restart: 28 passed, 1 ignored; shim: 24 passed; agent daemon: 1 passed with 24 abrupt stops. Output.Final fast exposed
shared_ownership_shell_preserves_recovery_and_refusal_invariants: its successful retained-state fixture createsbase/statebut omits the join-timestage/state-inode, so it now correctly hits the unverified-directory refusal (71). The fixture must represent an enrolled, inode-verified retained directory; I’m updating that fixture and will rerun its test and final gate. Failure output.With the join-time inode recorded, the focused ownership shell test then reached
ACTIVATEand exited 127 because its synthetic shell did not defineprivate_dir; sibling activation review fixtures supply that helper. I’m adding it to this fixture. Focused test output.Step 3 committed and pushed:
a1b2056aarecords the enrollment inode and activation guard in the successful retained-state fixture. Focused result: 1 passed in 18.33s;cargo fmt --checkandgit diff --checkpassed. Test output.Finished on branch
readd-minimal-r8, pushed heada1b2056aaa793baba642932a2d127162fd21ba84(matches origin). P1 rollback publication rechecks and pins the recorded state inode through relative publish; P2 refuses a late unverified state directory with 71; P3 asserts 71, runs activation in a subshell, and explains retained-state manual recovery on 72. Rootless/root Add + R1–R4, both review harnesses, 17-cut recovery, fence suite (8 passed, 1 ignored), populated migration, and final fast test row passed. Final gate log.Static stripped sizes: x86_64 21,438,032 bytes (0 vs r7; +50,848 vs release 8); aarch64 19,602,768 bytes (0 vs r7; +43,656 vs release 8). Both remain within 56 KiB.
scripts/verify fastoutput:The sole failure is inherited
RUSTSEC-2026-0382in r7 and already fixed ondev. No target directories remain in the worktree; it is clean.Starting independent round-8 break-it review on review-readd-r8, base/head
a1b2056aaa; review range 23cd416789cebe040e2decb716de6f2c8fe6bc3d..a1b2056aa. Formed source view before reading author comments. Testing fresh directory publication, retained-state publication/rollback boundaries, base links, and legitimate enrollment controls. Tests only; targeted SSH tests only, no live host access or deploy. Evidence: $HOME/.cache/codex-scratch/review-readd-r8/evidence/.Round-8 P1: late fresh-state creation is adopted and then deleted. setup_scripts.rs:114 / install.rs:1605. Sequence: join sees no base/state (no inode receipt); activation passes absent-state branch; an independent writer creates private state/identity.json plus notes immediately before the real mv; plain directory mv nests stage/state under base/state/state and activation returns 0 with the independent identity still at the service path. A subsequent failed-start rollback trusts replacing-state and recursively removes the entire independent state directory, returns 0, and removes its journal. Symlink variant follows base/state into the independent directory and also returns 0 with nested publication. Shipped ACTIVATE, ROLLBACK_TRANSACTION, FRESH_CLEANUP and ownership functions used; synthetic service manager/lease/control-socket helpers only. Functional local scratch only; no host state touched. Python regression: 5 tests, 2 pass, 3 fail (one passing test includes both legacy identity and empty existing-state join controls). Targeted Cargo harness queued through build-slot.
fresh-boundary.log
Orchestrator, 2026-10-21 ~21:15 IST.
Round-8 review: HOLD on the P1 posted above (a state directory created after join and before activation's move is adopted; activation exits 0; a later rollback removes it). The review run was stopped by the job runner's content filter before it committed; its regressions are saved on
review-readd-r8-wip(287065c2f, on top of r8a1b2056aa): Python suite 5 tests, 2 pass, 3 fail by design. The review did not finish, so other findings may exist.Per the owner's decision today (client-side mux and mesh first; finish round 8, then freeze add-host), add-host work is frozen here. Nothing from #231 is in production. To resume: round 9 starts from
review-readd-r8-wip, fixes the late-creation case (refuse when a state directory appears that join did not see, and never nest or remove it), then a full review with the content-filter wording rules.kayg referenced this issue2026-10-28 17:53:56 +00:00