Skip to content

test(ui-server): distinguish teardown writes from live descendants - #1962

Merged
schlessera merged 6 commits into
mainfrom
fix/1783-maintenance-settlement-6a2c11ba
Oct 16, 2026
Merged

schlessera merged 6 commits into
mainfrom
fix/1783-maintenance-settlement-6a2c11ba

Conversation

@schlessera

@schlessera schlessera commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

Closes #1783

What changed

The sync-mirror proof distinguishes a teardown-created file from a descendant surviving into credentialed transport. It observes real writer and namespace-init PID/start identities at sync settlement and later transport launches, under ordinary scheduling and a controlled pre-monitor-exit write. Immutable mirror metadata, the 1,100 ms delayed-write observation and successful push coverage remain. A teardown-created alternates file must produce the exact refusal, no subsequent transport and no outward push.

Why this shape

The previous file-absence assertion could reject a safe refusal after a pre-settlement teardown write. Source comments and hosting documentation now describe the existing completion behavior: maintenance awaits the outer monitor and namespace-owned output EOF. No executable runtime, permission, contract or deadline changes. The ui-sdk/ui-server patch changeset covers shipped source explanations.

Proof

Current candidate f16a8385e8737b29378e8d7a0307e68265554be8 integrates main 45908608df63b07ee3d10d84ac608d132aa21caa, including the delivered #1993 correction (#1998) and native rejection correction (#2000). Sync-mirror test, maintenance/sync source and lockfile bytes are unchanged from previously reviewed head e7bb1e727c5849f5d5310f71ad89451ee6e7e92e. The hosting paragraph merged cleanly with the newer worker-identity disclosure. This relevant-base refresh requires fresh qualification.

Fresh frozen installation with private cache and copyfile backend, workspace build, pending changeset package validation and full changeset plan pass. The fixed group plans a minor; this contribution retains its patch changeset. Focused sync-mirror runtime passes 14 tests / 267 assertions in 26.66 s (ordinary/held-monitor cases 3,324.04 / 3,128.54 ms). Committed-candidate bun run check:pr --base origin/main passes 434 tests / 2,716 assertions in 18.88 s plus all lint, leakage, metadata and compilation gates. Complete selected hosted qualification remains required before merge.

Original behavioral receipts remain attributed to their actual source, Bun 1.4.2 / bubblewrap 0.9.0:

  • At base c95223333a83fd3049749a2e68fb0c07963b7ba5, holding only the outer monitor produces a real pre-monitor-exit teardown write, terminated writer/init and exact alternates refusal before later transport. The old assertion fails MAINTENANCE_CHILD_GONE_BEFORE_TRANSPORT: 0 pass / 1 fail / 15 assertions, 5.38 s.
  • Disabling only the alternates guard makes the corrected case fail TEARDOWN_ALTERNATES_REFUSED (no sync error received). Restoring passes 2 tests / 49 assertions in 7.57 s. The separate no-parent-death lifetime control passes in 26.62 s; it is a control, not a failing mutation. Mutations were restored.
  • Prior Bun 1.4.2 transpilation of the two comment-only production source changes matches main byte-for-byte at JavaScript output.

Historical qualifications remain distinct:

The original website/main failures and detailed artifact receipts remain on #1783. Passing scoped cases never relabel failed overall qualification as green.

Final ready qualification run 38825487554, attempt 1, passes all fourteen selected jobs, including aggregate 116739327728. Every actual job checkout log agrees on 0c8f5e11145bb02f615a5deae6a7ca78f8534363, parents main 45908608df63b07ee3d10d84ac608d132aa21caa + head f16a8385e8737b29378e8d7a0307e68265554be8, tree 98628318fbfb19f6c943dfefb94279f7422da81b. Immutable Git API and local object agree. Metadata, strict verification, packaging, all four units, both browser/layout shards, captures, native runtime and aggregate pass with no unexpected skipped jobs. The synchronize-triggered draft run was superseded by ready-for-review before substantive qualification; the completed ready run is the qualifying receipt.

Unit shard 1 artifact 12015855043 records all 14 sync-mirror cases / 267 assertions, no failures/skips, 21.239 s summed case time. Ordinary/held-monitor lifecycle cases take 3,168.11 / 3,103.00 ms. Native runtime artifact 12015885016 qualifies all four healthy backend/UID cells; the retained-reference invocation is a separately verified expected failure. All five invocations complete cleanup without forced shutdown and preserve runner quotas. Live main is still the tested base. Historical red/restored evidence remains attributed above.

Checklist

  • Focused local preflight/behavioral receipts and complete selected hosted proof passed; actual head/base/job checkout evidence is in Proof.
  • Acceptance criteria from the issue are all met, or the gap is named below.
  • Issue and PR retain milestone 0.44.0; registry latest is 0.43.1 and the full pending plan is minor (verified 2026-10-16).
  • Existing patch changeset is included and full pending plan validated.
  • No personal data; leakage gate remains required.
  • Nothing in the machine surface moved.
  • Documentation matches the measured lifecycle.

Anything left open

Nothing in this scoped correction. #736 and downstream #1854 remain separately owned. Publishing/deployment are outside this task.

@schlessera schlessera added this to the 0.43.1 milestone Oct 15, 2026
@schlessera schlessera added type: fix Something is broken and must behave the way it is documented. area: ui-sdk Wire protocol, runtime schemas, the server and client SDK surfaces. area: ui-server Hono app factory: turn coordinator, auth, session catalog, routes, cron. labels Oct 15, 2026
@schlessera
schlessera marked this pull request as ready for review October 15, 2026 19:30
@schlessera
schlessera marked this pull request as ready for review October 15, 2026 23:45
@schlessera
schlessera merged commit 9bebef7 into main Oct 16, 2026
16 of 26 checks passed
@schlessera

Copy link
Copy Markdown
Owner Author

Post-merge verification complete: automatic main-push run 38827978296, attempt 1 passes all fourteen selected jobs and the proof aggregate on exact squash 9bebef7bfed47139792ccaf1d22d4ac7f5f093e9. All fourteen actual checkout logs agree. Main JUnit again confirms all 14 sync-mirror cases / 267 assertions, no skips/failures; ordinary/held-monitor lifecycle cases pass at 3,239.65 / 3,065.39 ms. The original qualified squash parent/tree and ancestry checks remain verified. Issue #1783 is closed and both issue/PR retain milestone 0.44.0. Dependent #1854's stale blocker is cleared and its body records the delivered prerequisite. The checkout is clean and this invocation is finished.

The separate automatic website run 38827978335 fails the known HTML-preview heading assertion and skips deployment. Its exact source/release evidence is recorded on existing #1772; no retry or unrelated fix was attempted. Package qualification passing does not relabel that website run as green.

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

Labels

area: ui-sdk Wire protocol, runtime schemas, the server and client SDK surfaces. area: ui-server Hono app factory: turn coordinator, auth, session catalog, routes, cron. type: fix Something is broken and must behave the way it is documented.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ui-server: distinguish maintenance teardown writes from surviving descendants

1 participant