Skip to content

train b57 integration gate (do not merge) - #492

Closed
roodboi wants to merge 13 commits into
nextfrom
train/b57
Closed

roodboi wants to merge 13 commits into
nextfrom
train/b57

Conversation

@roodboi

@roodboi roodboi commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

Integration gate for merge batch b57: origin/next + #465 (HACK-1409) + #464 (HACK-1416, HACK-1388) + #469 (HACK-1413). Tree 24f504a9. Closed after the batch squashes.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

roodboi and others added 13 commits October 23, 2026 23:15
…leak fixes

The global-state guard now puts the guarded process listeners back at each
file boundary after reporting the change, so a finished file's leftover
handler is no longer run or consumed by a later test's process.emit and
charged to that test (HACK-1416). Only the difference is edited, so a kept
once listener stays a once listener.

The Loki follow also gets a test that removes its SIGINT listener through a
real process.emit("SIGINT") inside a fixture that owns every SIGINT listener.

The routing refused-teardown case restores only the spies its fixture
installed instead of the global mock.restore(), and runs through the file's
fixture gate (HACK-1388). The gate and the unknown-lifetime teardown are now
shared by the gated runner and that case, which pins the runner's HACK_HOME
release. File generation's PATH restore under an unknown lifetime and the
protected-files settlement veto's process.kill restore get deterministic
assertions.

Refs HACK-1416, HACK-1388

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… label review

runtime-core's own Compose label review rejected only the caddy, traefik,
hack and com.docker.compose prefixes, so a service label in io.hack-local.*,
io.hack.native-config.*, io.hack.native-file.* or io.hack.storage-witness.*
passed the candidate review if the TypeScript classifier was bypassed.

Add a Rust mirror of HACK_OWNERSHIP_LABEL_NAMESPACES and reject those
namespaces (and their bare roots) in the review, never exempted by a routing
or dependency cache declaration. A TypeScript parity test keeps the mirror
identical to the TypeScript source of truth.

Refs HACK-1409

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eadline and pin the guard exclusion

Follow-ups to #421 (HACK-1361):

- Record every publication stop of a recorded storage command through one
  stopPublication/refusePublication pair, so the bounded await, the child
  publication catch, the guard and settlement all refuse with the first
  cause and issued boundary.
- Keep an owner check's issued boundary when the command record replaces it
  with its fixed refusal (publication and owner creation).
- Tag untagged policy and state mismatches in the Docker storage carrier:
  a re-inspected carrier whose creation time or policy changed reports
  helper-policy-stability; a saved material binding that changed during a
  carrier step reports private-state. Both keep that reason after the
  carrier deadline instead of reading as storage-budget.
- Extract the pre-spawn guard storage proof into
  nativeComposeGuardStorageProof and pin that only the carrier proof
  extends the start deadline.

Diagnostics only: no check, deadline, retention or recovery rule changes.

Refs HACK-1413

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t its carrier proof

The pre-spawn guard storage proof excludes only its carrier proofs from the
start deadline. The existing CLI wiring test proves carrier time is excluded,
but re-widening the exclusion at the executePreparedGeneration call site (to
cover the whole storage.verify) passed every test. A new CLI test slows the
guard storage proof's freshness check, which runs outside every carrier span,
past the start budget and asserts that the owned child's admission check then
refuses before the workload spawns.

Refs HACK-1413

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…low host

The freshness wiring test used the 3 s start budget of the carrier test, so on
a slow host the rest of the start phase alone could spend it and a re-widened
exclusion would still be refused. It now gives the start phase 12 s, delays
every compiler run inside the guard storage proof by 5 s (below the
compiler's 10 s timeout) and checks that those delays alone outlast the
budget. A larger per-carrier storage budget keeps enrollment from exhausting
its carrier first.

Refs HACK-1413

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… next)

Temporary hosted-CI mutation probe for HACK-1413 item (2): the guard
closure is wrapped in start.excludeStorage at the executePreparedGeneration
call site and the helper's inner exclusion is identity, so the whole
storage.verify is excluded again. The freshness wiring test is expected to
fail on this commit. The next commit reverts it exactly.

Refs HACK-1413

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Restores executePreparedGeneration's guard closure exactly as it was before
the hosted-CI mutation probe: only each carrier proof runs in the start
deadline's storage exclusion.

Refs HACK-1413

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@roodboi roodboi closed this Oct 24, 2026
@roodboi
roodboi deleted the train/b57 branch October 24, 2026 19:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant