docs(demos): offer sandbox placement for /promote, now that --exclude-prompt exists - #219
Open
pdettori wants to merge 1 commit into
Open
docs(demos): offer sandbox placement for /promote, now that --exclude-prompt exists#219pdettori wants to merge 1 commit into
pdettori wants to merge 1 commit into
Conversation
…-prompt exists Completes the follow-up rossoctl#218 promised and rossoctl#217 could not take. rossoctl#217 had to install /promote into real user scope, and justified it with a constraint that no longer holds: that a command living in the project it promotes would ship itself into every bundle. --exclude-prompt removes that, so the placement that actually buys local/remote parity becomes available. The runbook now offers both, and says what each costs: - **Option A, real user scope.** Simpler. The authoring session loads your whole ~/.claude, so the local agent has every skill you own while the promoted run gets the sandbox's one -- which makes "it behaved the same locally" weaker evidence than it looks. - **Option B, in the sandbox**, with Claude Code launched as `HOME=$SANDBOX claude`, so the local agent sees exactly what the promoted run will. Costs a re-auth and your own skills for the duration. That is the standard dev/prod-parity trade, and parity is this demo's whole claim. /promote self-excludes rather than making the reader remember: a Context probe reports whether `.claude/commands/promote.md` exists in the project, and the body adds `--exclude-prompt promote` only in that case. The condition matters as much as the flag -- passing it unconditionally would trip the flag's own typo guard (`prompt_exclude_unmatched`), which exists precisely because an unmatched exclusion ships the prompt you meant to omit. Measured, and recorded in the runbook because it is the reassuring part: **both options produce the same bundle.** Option B without the exclusion is 19456 bytes -- the command itself travelling -- and with it 12288 bytes at sha256:43b8c4c0..., byte-identical to Option A. So every digest quoted in the walkthrough holds for either placement. Also reconciles what the rebase exposed: README carried rossoctl#217's claim that a project-local /promote "would ship itself into every bundle" two paragraphs above rossoctl#218 documenting the flag that prevents it, plus a doubled lead-in from the two edits landing separately. The "Notes and limits" fidelity entry is rewritten rather than deleted: Option A's gap is real, it is now a choice rather than a constraint, and a performer should say which option they ran if asked whether local matched remote. Verification: `make lint` (9 hooks), `make test-deploy` (129 checks), the demo at 14 passed / 0 failed against kind, and Option B exercised end to end from a scratch sandbox -- with and without the self-exclusion -- to produce the two byte counts above. Assisted-By: Claude (Anthropic AI) <noreply@anthropic.com> Signed-off-by: Paolo Dettori <dettori@us.ibm.com>
pdettori
force-pushed
the
feat/promote-parity-placement
branch
from
September 3, 2026 20:31
9fd1b74 to
3d7cd59
Compare
Member
Author
|
Rebased onto Re-verified against the new base, not just carried over: |
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.
Summary
Completes the follow-up #218 promised and #217 could not take.
#218 is merged and this branch is rebased onto it, so the diff below is this change alone.
#217 had to install
/promoteinto real user scope, and justified it with a constraint that nolonger holds — that a command living in the project it promotes would ship itself into every bundle.
--exclude-promptremoves that, so the placement that actually buys local/remote parity becomesavailable.
Both placements, and what each costs
cpinto~/.claude/commands/cpinto the sandbox, launchHOME=$SANDBOX claude~/.claudeOption B is the more honest way to perform the demo, since parity is its whole claim. Option A stays
the easy path for following along.
/promoteself-excludes rather than making the reader rememberA Context probe reports whether
.claude/commands/promote.mdexists in the project, and the body adds--exclude-prompt promoteonly in that case. The condition matters as much as the flag: passing itunconditionally would trip the flag's own typo guard (
prompt_exclude_unmatched), which existsprecisely because an unmatched exclusion ships the prompt you meant to omit.
The reassuring part, measured
Both options produce the same bundle, so every digest quoted in the walkthrough holds for either:
Also reconciles what the rebase exposed
README.mdcarried #217's claim that a project-local/promote"would ship itself into every bundle"two paragraphs above #218 documenting the flag that prevents it, plus a doubled lead-in from the two
edits landing separately. Both fixed.
The "Notes and limits" fidelity entry is rewritten rather than deleted: Option A's gap is real, it
is now a choice rather than a constraint, and whoever performs this should say which option they ran if
asked whether local matched remote.
Verification
make lint(9 hooks) andmake test-deploy(129 checks) pass.produce the two byte counts above.
Assisted-By: Claude Code