Support visible goals for Codex App over SSH#2547
Conversation
LoopX pre-merge evidence
Scope and simplification reviewThe 24-file count is mostly unavoidable propagation across one public host identity: 13 small runtime/CLI/installer glue files, 9 user/protocol/skill documentation files, and 2 validation files. The implementation keeps one typed runtime profile and one shared visible-goal renderer rather than duplicating an App-SSH-specific prompt path. The existing |
CI follow-upThe first GitHub run exposed seven deterministic contract failures:
Commit Validation after the fix:
|
What changed
codex-app-sshhost type andcodex_app_ssh_goalruntime profile./goal <task_body>for Codex App over SSH, without heartbeat automation, RRULE cadence, or turn receipts.codex_clivisible runtime with its typed contract: no heartbeat turn receipt, quota sourcevisible-goal, and no automation-run classification.Why
Codex App sessions attached to a remote repository over SSH do not expose the host automation surface required by the existing
codex-appheartbeat path. They need the same visible-goal ownership model as interactive Codex CLI sessions.While adding that path, the implementation exposed an older cross-layer inconsistency:
CODEX_CLI_VISIBLEwas already typed asagent_cli_loop + interactive, and activation already requested/goal, but the shared prompt renderer still unconditionally emitted heartbeat receipts andsource=heartbeat. This change makes prompt and quota behavior follow the typed runtime profile.Impact
codexonboarding remains rejected; callers must choose the exact host.Validation
loopx canary premerge --from-git-diff --git-diff-base origin/main --tier standardmerge_gate_passed=trueself_merge_allowed=true