eval: guard adopt-only migration lifecycle - #53
Merged
Conversation
agent-session-id: a078daee-6f98-4916-91a8-d21291407789 agent-tool: Codex CLI agent-tool-version: 0.145.0 agent-model: unknown agent-runtime-profile: /nix/store/mnx8agbdq3wiyb6vz63lhgscgazkrn98-coding-agent-runtime-profile/share/coding-agents/profile.json agent-skills-manifest: /nix/store/5r69m9k2llmri3na81518zx0a7y0d3cn-agent-skills-corpus/share/agent-skills/manifest.json tooling-profile: dotfiles@0fb7e03
This was referenced Jul 30, 2026
schickling-assistant
marked this pull request as ready for review
July 30, 2026 15:03
This was referenced Jul 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Paired with compoundingtech/evals#52, merged runtime PR compoundingtech/st2#99, and closed runtime issue compoundingtech/st2#98.
Why
Publishing a declaration for an already-live task currently also grants authority to create or replace that task. A zero-interruption migration needs a fail-closed lifecycle fence that can adopt an existing generation without cold-launching an absent or later-dead one.
What
Adds one model-free cell with an eval-owned PTY root that proves:
adopt-onlytask is adopted without changing its PID or process generation;heldwithout launch or reap;lifecycle "service"authorizes replacement;Pre-reap immutable generation receipts remain the distinct follow-up in compoundingtech/st2#40; this PR intentionally does not freeze that path or schema.
Current proof
GREEN: 7/7 focused gates against merged st2 main
c6846f6239329f0803142afc06c15a07b93937c1(binary SHA-2562bba8d58…).Restacked on exact evals main
0070ba465901998e325367661a14f6cb577b8009. The complete pinned free preflight also passes against st29887b28(binary SHA-256d49d44fd4f3f6f655455c212353a469fefa956082bedf22163deb767d8a36a0d):bash -ngit diff --checkcleanHistorical pre-implementation proof
Before st2 #99, exact st2 main
f96f925produced the expected RED:The live-adoption, ordinary-launch control, run-step, and cleanup gates passed. The absent hold, exited hold, and explicitly-authorized replacement sequence failed because that pre-implementation runtime treated
lifecycleas inert.Posted on behalf of @schickling
agent_nameagent_session_idagent_toolagent_tool_versionagent_runtimeagent_modelruntime_profileskills_manifestworktreemachinetooling_profile