fix: preserve managed agent color intent - #132
Conversation
6a59470 to
7540325
Compare
|
Nathan, Johannes explicitly asked that the durable VRS—including requirements—cover this work. May I update R06 with this additional contract?
I would then update the R06 specification section to describe the canonical-agent Posted on behalf of @schickling
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 57e26d753d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
8ade64a to
6215bf5
Compare
|
@nathanherald — quick approval ping: implementation, hostile-restart proofs, and the updated spec are green against merged PTY main. The only remaining VRS blocker is your explicit approval for the proposed R06 sentence above; Johannes asked us to include protected requirements. A yes/no on that exact wording is enough, and the same approval decision is pending for evals R04/R05 in compoundingtech/evals#63. Posted on behalf of @schickling
|
|
@schickling-assistant, is exact head |
|
Not quite yet. Fresh exact-compatibility proof found one documentation blocker at The other remaining gate is your explicit approval (or rejection) of the proposed protected R06 requirements sentence above. Your two commits establish the implementation/spec direction, but I have not treated them as approval to edit I will give you an exact final head and proof receipt after both are resolved. Posted on behalf of @schickling
|
|
@nathanherald — the implementation and merged PTY dependency are green from my side at the new exact head I preserved your durable second-snapshot receipt and corrected one rollout detail found by fresh review: the prior PTY may silently ignore The PR remains draft solely because the exact protected R06 sentence in the first comment still needs explicit approval. Your readiness question does not unambiguously approve that wording. If you approve that exact requirement change, a direct “yes” is enough; I will apply it and rerun the VRS/static boundary before ready/merge. Posted on behalf of @schickling
|
agent-session-id: ed878dac-3735-4276-b3e0-ea1b1cd65291 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
agent-session-id: ed878dac-3735-4276-b3e0-ea1b1cd65291 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
agent-session-id: ed878dac-3735-4276-b3e0-ea1b1cd65291 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
agent-session-id: ed878dac-3735-4276-b3e0-ea1b1cd65291 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
agent-session-id: ed878dac-3735-4276-b3e0-ea1b1cd65291 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
agent-session-id: ed878dac-3735-4276-b3e0-ea1b1cd65291 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
986dc0f to
2f8db8a
Compare
|
@nathanherald — #132 is now ready for review at rebased exact head The PR body now consolidates the exact proposed protected R06 sentence for your explicit approval or revision. Per Johannes, that approval remains visible but no longer holds the implementation-ready PR in draft. Posted on behalf of @schickling
|
|
Nathan accepts the current exact head |
|
Merged at the exact reviewed head. Thank you, Nathan, for the durable restart receipt, rollout-order correction, and the explicit requirements boundary — this lands the behavior without pretending the separate R06 wording was approved. Posted on behalf of @schickling
|

Why
Managed interactive agents can be reconciled from automation whose command-capture environment sets
NO_COLOR. st2 currently forwards that unrelated ambient preference throughsystemd-runandpty run, so the agent disables ANSI output even though its terminal advertises color support.The source matters: an ambient value owned by the reconciler should not silently become durable agent policy, while an Agent Spec that explicitly declares
NO_COLORmust remain authoritative.What
NO_COLORfrom the primary managed agent PTY unless the Agent Spec declares it.pty runcommand is wrapped bysystemd-run --scope.How
The canonical
agentlaunch removesNO_COLORfrom the live command environment and records--unset-env NO_COLORin PTY metadata. An explicit Agent Spec assignment remains authoritative and persists through the existing--envpath. The isolation wrapper forwards both environment assignments and removals instead of dropping removal entries.Dependency
Depends on merged PTY main at
d5fabc3917407aeb937a012bd97679c303e18033, which contains both the persisted environment-removal contract from compoundingtech/pty#144 and the machine-stream composition from compoundingtech/pty#141. The flake input and development shell are pinned to that exact revision so integration tests cannot accidentally use an older user-profile PTY.Rollout order is strict: deploy and activate that compatible PTY before deploying this st2. A pre-
--unset-envPTY may silently ignore the option and launch without persisting the removal, so the initial environment can look correct while a later restart reintroduces the caller ambient value. The Nix input and development shell carry the exact dependency; Cargo installs rely on the documented runtime prerequisite.Verification
NO_COLOR=1, and observesunsettwice for the default agent and1twice for the explicit agent.NO_COLOR, persisted removal, isolation-wrapper propagation, and non-mutating adoption. Requirements remain unchanged. Nathan explicit approval is requested for adding this exact sentence to R06: “The effective environment includes declared assignments and declared removals. Restart or replacement under a different ambient environment must not reintroduce a value intentionally absent from the launch definition.”NO_COLORwithprintenvand an unset fallback.2f8db8a573a2ddf421533a7fd3c973c6139d793cused locally built PTY0.12.0+d5fabc3: focused unit coverage passed; portable real-PTY and real Linux systemd-scope restart cases passed. Each live case also passed three consecutive times on the runtime-equivalent parent after replacing attached-client exit timing with the durable second snapshot as the receipt. The predecessor99f7eac742c152a52b3ddb5cbfe080306c3d6253passed hosted Nix: run 30633306803, job 91164620732.The current main branch also has unrelated local clean-PATH, formatting, and clippy failures outside this diff; this PR does not change or bypass them.
Posted on behalf of @schickling
agent_nameagent_session_idagent_toolagent_tool_versionagent_runtimeagent_modelruntime_profileskills_manifestworktreemachinetooling_profile