Conversation
A remote loop whose goal overran the typed command line launched with a pointer at ~/.graphcode/.../PROMPT.md, while the file itself rode the same `|| true` installer as the 45 KB CLI shim, the briefing and the wake digest — ~105 KB of base64 in one argv string. That neutering is right for everything else in the manifest: a session without its briefing is still a session. It is wrong for the prompt, which *is* the session's instructions, and since #345 moved the prompt to a file before dropping the briefing, far more remote loops take that path. Any failure in that one command started an agent whose entire brief was a path that wasn't there, reported as "Read PROMPT.md — Path does not exist". The prompt now travels alone, in its own small installer, un-neutered and `&&`-chained into the fresh launch. A delivery that fails takes the run with it and logs `prompt-undelivered` to the remote dial log, so the node stays honestly not-running and the next liveness sweep retries, instead of burning a pass on an agent that cannot read its own goal. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: scgopi <scgopireddy@gmail.com>
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.
The bug
A loop on a Codespace booted with its entire brief being a pointer, and the file was not there:
Cause
When a goal overruns the ~1 KB line
zmxtypes into a session, the launch sheds it toPROMPT.mdand types a short pointer (#57). For a remote project the file roderemoteDeliveryScript's manifest — onepython3 -ccarrying the 45 KB CLI shim, the briefing and the wake digest, ~105 KB of base64 in a single argv string (Linux caps one at 128 KiB), ending in|| true.That neutering is correct for everything else in the manifest: a session without its briefing is still a session, and delivery must never block a launch. It is wrong for the prompt, which is the instructions. And #345 made it common — shedding now moves the prompt to a file before it drops the briefing, so far more remote loops launch pointered. Any failure in that one best-effort command produced a live,
runningagent with nothing to do.Fix
The prompt gets its own delivery: a small installer carrying one file, un-neutered,
&&-chained into the fresh launch inside the create branch.startRemotealready takes on a failed dial.prompt-undeliveredto the remote dial log, so the failure is diagnosable instead of surfacing only as an agent saying its instructions do not exist.Not addressed here: the wake digest still rides the best-effort manifest. A missing memory degrades (the loop wakes without what past passes learned); a missing prompt does not.
Verification
Worktree gate, private DerivedData, literal exit codes:
xcodebuild -scheme graphcode buildexit=0xcodebuild -scheme graphcode testexit=0,** TEST SUCCEEDED **,Test run with 1900 tests in 199 suites passedxcodebuild -scheme graphcode-cli buildexit=0xcodebuild -scheme graphcoded buildexit=0swiftlint lintswift format lint --recursive --strictexit=0TDD evidence
RED: xcodebuild test -only-testing:graphcodeTests/RemoteSessionLaunchTests with main's ZmxSessionLauncher.swift and RemoteGraphAccess.swift in place -> exit=65, theBestEffortManifestNeverCarriesThePrompt failed on "files.keys.contains PROMPT.md"
GREEN: xcodebuild -scheme graphcode -destination platform=macOS test -> exit=0, ** TEST SUCCEEDED **, Test run with 1900 tests in 199 suites passed
REGRESSION: full suite plus graphcode-cli and graphcoded builds, swiftlint and swift format lint -> exit=0 on every step, 0 lint errors, the 1897 pre-existing tests all still pass
The other three new tests need API this branch adds, so they cannot run against main at all.