plan-brief.md
36 lines · skills/lfg/references/plan-brief.md at 3449230
Most marks come from matching words in the file, so treat them as pointers.
Step 1: artifact root and settled-decisions brief (LFG)
Raw lines 1 to 2Artifact root
Resolve <root> when you first compose a <root>/ path, never before you need it. LFG composes only one such path: the <root>/plans/ location where step 1's GATE checks that the plan was written. A run that stops before that check never composes a <root>/ path and never resolves a root. Two examples: a routing-carrier blocker (a stage assignment LFG cannot pass on, as references/stage-routing.md defines), or a report that the task is non-software.
<!-- ce-docs-root:start --> **Resolve the CE artifact root <root> before composing any artifact path.**
- Read
docs_rootfrom<repo-root>/.compound-engineering/config.yamlonly (<repo-root>=git rev-parse --show-toplevel). Do not read it fromconfig.local.yaml. Unset -><root>isdocs, exactly as before. - Validate a set value: a repo-relative directory whose real, symlink-resolved path stays inside the repo and is neither the repo root nor under
.git/. Otherwise stop with an error namingdocs_rootand the value -- never fall back todocs. - Use
<root>as the sole artifact location: create it if absent, compose each path as<root>/<subdir>with this skill's own subdirectory, and never also readdocs.
<!-- ce-docs-root:end -->
Raw lines 3 to 14Readiness check
An explicit status: blocked return is terminal even when artifact_path names a readable plan. Report its phase, blocker, and recovery_path, and its artifact_path when present. A plan file existing on disk is not a reason to retry planning or to move on to implementation.
The plan the GATE checks is the path ce-plan reported writing this run. A file already under <root>/plans/ that ce-plan did not report is not a written plan, however closely it matches the feature. This gate belongs to the plan route. An implementation-ready plan ce-plan wrote earlier in this session bypasses ce-plan per references/intake.md; ce-work's intake verifies that plan by content, and its blocked return stops the run. When the return has neither a blocker nor a reported path, invoke ce-plan the single allowed second time; never accept a stale file instead.
Inspect the returned plan before continuing past step 1's GATE. It must describe code implementation with sufficient scope, direction, and verification, and no launch-blocking question or finding. A Product Contract without implementation planning, an approach-only or answer-seeking output, or a non-code deliverable (execution: knowledge-work) stops the pipeline. An old readiness label cannot override the contents. ce-work owns verification of the active work's repository prerequisites; this gate does not duplicate that investigation.
Settled-decisions brief
Compose this brief from the invoking conversation and pass it with the sanitized feature request when you invoke ce-plan.
The brief contains:
- direction (1-2 lines);
- settled decisions, each with four required fields: the decision, its provenance class (
user-directedoruser-approved), the rejected alternative, and a one-line reason; - open areas, including any
ce-povverdict the intake route consulted, cited as evidence with its grade and reason, never as a settled decision; - a standing line asking
ce-planto report any conflict it finds with these decisions.
If you cannot state an entry's rejected alternative, demote it to a directive or an open area. Include only decisions about the feature being shipped. When in doubt, demote: having ce-plan reconsider a decision is the safe direction; carrying in a stale decision as settled is not. When there is nothing to carry, no settled decision and no ce-pov evidence, skip composition entirely and invoke ce-plan exactly as it is written in the body, with no empty brief.
The brief is temporary: once ce-plan writes the plan, the plan's labeled KTDs are the record. A step-1 retry reuses the composed brief verbatim; never recompose it.