Files
msd-core/.out-of-scope/plan-md-execution-context-portability.md
Tom Boucher ffd353f080 docs(#2240): clarify PLAN.md <execution_context> is install-relative, record #2238 wontfix (#2241)
The <execution_context> reference presented @~/.claude/gsd-core/... as canonical
and described the paths as files "the executor reads before starting". Both are
misleading: the prefix is install- and runtime-relative (Claude global vs Cursor
.cursor/gsd-core vs an absolute --local path), so a committed plan is not
clone-portable, and /gsd-execute-phase loads the workflow from its own installed
copy rather than gating on the committed block.

- docs/reference/plan-md.md: describe the install-relative, non-clone-portable
  nature of the block and contrast it with repository-relative <context>.
- .out-of-scope/plan-md-execution-context-portability.md: record the #2238
  wontfix decision (PLAN.md is a machine artifact; #2158 precedent) with a
  revisit-if condition.

Refs #2238. Closes #2240.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-13 11:58:02 -04:00

2.3 KiB

Clone-Portable <execution_context> in Committed PLAN.md

GSD does not make the <execution_context> block in committed PLAN.md files clone-portable — it does not rewrite the planner's install-relative @…/gsd-core/… references into repository-relative or install-neutral paths so that a committed plan reads identically across developers, machines, or runtimes.

Why this is out of scope

PLAN.md is a machine artifact, not a human- or clone-facing document — the same principle that governs plan-md-human-rendering.md (from #2158). A committed PLAN.md is a per-run agent instruction set, produced by gsd-planner and consumed in place by gsd-executor, gsd-plan-checker, and gsd-verifier. There is no documented step in which a plan is read on another machine after git clone without a local GSD install.

Under that model, <execution_context>'s @ references point at the reader's own local GSD install (Claude ~/.claude/gsd-core/…, Cursor .cursor/gsd-core/…, or an absolute path for a --local install). They are install-relative by design, and the executor loads those workflows from its own installed copy — it never consumes the paths a different machine wrote into a committed plan. /gsd-execute-phase builds its own <execution_context> inline from the orchestrator's installed workflow (workflows/execute-phase.md), so the block a planner writes into a committed plan does not gate execution anywhere.

Making committed plans clone-portable would treat PLAN.md as a shared cross-developer document — the boundary #2158 declined to cross — for a block that no consumer reads across machines.

Revisit if GSD introduces a documented cross-developer / cross-machine contract for committed PLAN.md — a human- or teammate-facing use where plans are read after git clone without a local install — at which point <execution_context> portability becomes in scope.

Prior requests

  • #2238 — "Planner embeds machine-specific gsd-core paths in committed PLAN.md execution_context"
  • .out-of-scope/plan-md-human-rendering.md — #2158, the governing "PLAN.md is a machine artifact" precedent.
  • docs/reference/plan-md.md — the <execution_context> reference, which describes the install-relative behaviour.