feat(prelude): WORKSPACE block tells the agent about local-disk tiering - #12
Merged
Merged
Conversation
Step (3) of docs/local-disk-tiering.org. When tiering is on, the prelude gains a "WORKSPACE (local-disk tiering)" block after the target prompt: the working clone's path (literal for salloc launches, spelled with $SLURM_JOB_ID for confined ones, where the id is not yet known), the shared mirror as origin with the mailbox rule, what the post-commit hook prints and what a REJECTED publish means, the snapshot cadence and the one-line `git log` that shows the last snapshot (the prelude is rendered before launch, so it cannot print the time itself), where caches and $TMPDIR live, the per-mirror warn file, where the handoff note goes, and that a job dispatched to another node cannot see the clone. Docs: persistent-presence.org's handoff path moves into the working tree (committed) since writing into ~/mirrors/<mirror> would block every publish; README and the design note record step (3). Correction to PR #11's body: _maybe_run_poetry_auto_install and _maybe_suggest_mcp_servers already return early for remote targets, so there was no shared-mirror gap to close. Tests: block present with literal paths on an unconfined launch (staged prelude captured over the executor), absent without tiering, runtime job id and "deadline warning only" cadence on a confined launch. 719 passed CI-style; mypy unchanged. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01StcQgXQDE4F6eJer1sEXRb
The confined WORKSPACE block spelled the clone as <root>/job$SLURM_JOB_ID/mirrors/<token>; an agent pasting that into a tool gets a literal "$SLURM_JOB_ID" segment. $SUCODER_LOCAL_ROOT is what the batch body actually exports before tmux starts, and it is the same directory, so spell the path with it and say it is exported. Adds an end-to-end launch_agent test for a confined target with tiering (executor has no job id yet): the block reaches the staged prelude in the confined spelling. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01StcQgXQDE4F6eJer1sEXRb
This was referenced Sep 10, 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.
Step (3) of
docs/local-disk-tiering.org. Stacked on #11 (base isfeat/local-tier-unconfined); retarget tomainonce #11 merges.When tiering is on, the prelude gains a
WORKSPACE (local-disk tiering)block after the target prompt: the clone path (literal forsalloc,$SLURM_JOB_IDfor confined), the shared mirror asoriginwith the mailbox rule, what the hook prints / whatREJECTEDmeans, snapshot cadence and the one-linegit logthat shows the last snapshot, cache/$TMPDIRlocation, the per-mirror warn file, where the handoff goes, and that a dispatched job cannot see the clone.Docs:
persistent-presence.orghandoff path moves into the working tree (committed). Correction to #11's body: the poetry/MCP helpers already skip remote targets, so there was no gap.Tests: 719 passed CI-style; mypy unchanged.
🤖 Generated with Claude Code
https://claude.ai/code/session_01StcQgXQDE4F6eJer1sEXRb