Plan
Turn the caller's intent into one bounded, testable behavior in the place that
already owns the work. Prefer the caller's tracker, if any; otherwise the
caller's conversation or supplied text, which the runtime snapshots so later
contexts read and hash the same bytes.
Prompt
Plan bead ag-1234: "ao gate check lists the probe-coverage row". Shape it in
the bead itself: one active behavior, acceptance examples, non-goals, write
scope as a class (cli/internal/gates/** plus regen outputs), first check
`cd cli && go test ./internal/gates/...`. Update the bead in place.
It's working if
- The bead or issue text itself gains acceptance, non-goals, and write scope;
no plan file appears under
.agents/ in the diff.
- Write scope names a regen class (
skills/** plus every output of
scripts/regen-all.sh), not a hand-enumerated path list.
- The plan names one first check as a runnable command, such as
bash scripts/check-x.sh, and a fresh context given only the source can
start Implement.
- On a risky write scope the plan names the evidence the change will orphan,
rather than leaving it for verify time.
Workflow
- Resolve the intent source and choose one active behavior. When the source
is not durable, have the runtime pass its exact bytes to
ao provenance snapshot-intent --source - --evidence-root <explicit-root>
and carry the returned intent_ref into later phases. The caller selects
an existing non-Git evidence directory; CDLC uses the resolved protected
external evidence root. Missing routing fails without workspace fallback.
- Route the work by type (Integrate, Extend, or Greenfield) and name its
ground truth, control experiment, and deviation ledger first from
references/ground-truth-routing.md.
Then inspect only enough real context to make paths, interfaces, and
evidence concrete, carrying citations forward; research and specialist
skills are advisory inputs.
- Ensure the source contains acceptance examples, important non-goals, and the
allowed write scope. Name the write scope, its effect on acceptance and
enforcement under
validate's risk rule (unknown risk
takes stronger review), the caller's repair_rounds, the named acceptance
gap and discriminating check that would establish progress, and the evidence
this change will orphan: bound scorecards
or contracts whose evaluator files sit in the write scope. Run
ao provenance evidence-orphans --root <repo-root> with one
--changed <path> per proposed changed path to see existing digest drift
and exact-path exposure; the reader does not expand scope globs. Budget
recapturing affected evidence as work this plan carries, not a
discovery for verify time. Use lightweight prose or Given/When/Then only
where it removes ambiguity. Write-scope checks (folded from the retired
scope skill):
- patterns are normalized repository-relative paths;
- includes cover the behavior without granting unrelated directories;
- excludes do not contradict required changes;
- generated companions that must move with the sources are explicit;
- no ownership, scheduling, Git, hook, retry, release, or delivery state.
- Name the first useful acceptance check.
- If authorized and the source is writable, update that bead or issue in
place. Otherwise return a concise proposed amendment to the caller.
Scope admission
At scope, read boundaries.md in the rpi skill's references directory for
what Plan does not own. In a repository with generated projections, write
scope names generator-owned outputs as a class (the hand-edited sources plus
all outputs of the owning regen commands), because a hand-enumerated list is
falsified the first time a regen command rewrites an unlisted companion.
Before freezing acceptance, enumerate the generated companions, parity twins
such as skills-codex/, and tests asserting on the changed paths;
anything unadmitted here surfaces later as an out-of-scope diff or a broken
gate.
A plan is done only when it passes the fresh-context test: a cold context,
given the intent source alone, could execute it. Move any fact that lives only
in the planning conversation into the source before freezing.
Planning produces no AgentOps packet: the runtime carries the source's
reference and digest to detect acceptance drift. Bound the work around the
caller-visible outcome, not files, gates, or reviewer comments; decompose only
when it reduces reasoning cost. An explicitly selected bounded outer goal may
admit a different experiment after informative red within unchanged terminal
acceptance and remaining allowance. A new hypothesis is not an acceptance
expansion; recurrence alone is not proof that the design is wrong. Do not reopen
an accepted plan merely to produce another control artifact.
1---2name: plan3description: Shape or refine the existing bead or caller intent without a second planning artifact. Triggers: "plan", "discover and plan", "shape this goal", "review write scope", "check scope boundaries", "scope this change".4---5
6# Plan
7
8Turn the caller's intent into one bounded, testable behavior in the place that
9already owns the work. Prefer the caller's tracker, if any; otherwise the
10caller's conversation or supplied text, which the runtime snapshots so later
11contexts read and hash the same bytes.
12
13## Prompt
14
15```text
16Plan bead ag-1234: "ao gate check lists the probe-coverage row". Shape it in
17the bead itself: one active behavior, acceptance examples, non-goals, write
18scope as a class (cli/internal/gates/** plus regen outputs), first check
19`cd cli && go test ./internal/gates/...`. Update the bead in place.
20```
21
22## It's working if
23
24- The bead or issue text itself gains acceptance, non-goals, and write scope;
25 no plan file appears under `.agents/` in the diff.
26- Write scope names a regen class (`skills/**` plus every output of
27 `scripts/regen-all.sh`), not a hand-enumerated path list.
28- The plan names one first check as a runnable command, such as
29 `bash scripts/check-x.sh`, and a fresh context given only the source can
30 start Implement.
31- On a risky write scope the plan names the evidence the change will orphan,
32 rather than leaving it for verify time.
33
34## Workflow
35
361. Resolve the intent source and choose one active behavior. When the source
37 is not durable, have the runtime pass its exact bytes to
38 `ao provenance snapshot-intent --source - --evidence-root <explicit-root>`
39 and carry the returned `intent_ref` into later phases. The caller selects
40 an existing non-Git evidence directory; CDLC uses the resolved protected
41 external evidence root. Missing routing fails without workspace fallback.
422. Route the work by type (Integrate, Extend, or Greenfield) and name its
43 ground truth, control experiment, and deviation ledger first from
44 [references/ground-truth-routing.md](references/ground-truth-routing.md).
45 Then inspect only enough real context to make paths, interfaces, and
46 evidence concrete, carrying citations forward; research and specialist
47 skills are advisory inputs.
483. Ensure the source contains acceptance examples, important non-goals, and the
49 allowed write scope. Name the write scope, its effect on acceptance and
50 enforcement under [`validate`](../validate/SKILL.md)'s risk rule (unknown risk
51 takes stronger review), the caller's `repair_rounds`, the named acceptance
52 gap and discriminating check that would establish progress, and the evidence
53 this change will orphan: bound scorecards
54 or contracts whose evaluator files sit in the write scope. Run
55 `ao provenance evidence-orphans --root <repo-root>` with one
56 `--changed <path>` per proposed changed path to see existing digest drift
57 and exact-path exposure; the reader does not expand scope globs. Budget
58 recapturing affected evidence as work this plan carries, not a
59 discovery for verify time. Use lightweight prose or Given/When/Then only
60 where it removes ambiguity. Write-scope checks (folded from the retired
61 `scope` skill):
62 - patterns are normalized repository-relative paths;
63 - includes cover the behavior without granting unrelated directories;
64 - excludes do not contradict required changes;
65 - generated companions that must move with the sources are explicit;
66 - no ownership, scheduling, Git, hook, retry, release, or delivery state.
674. Name the first useful acceptance check.
685. If authorized and the source is writable, update that bead or issue in
69 place. Otherwise return a concise proposed amendment to the caller.
70
71## Scope admission
72
73At scope, read `boundaries.md` in the rpi skill's `references` directory for
74what Plan does not own. In a repository with generated projections, write
75scope names generator-owned outputs as a class (the hand-edited sources plus
76all outputs of the owning regen commands), because a hand-enumerated list is
77falsified the first time a regen command rewrites an unlisted companion.
78Before freezing acceptance, enumerate the generated companions, parity twins
79such as `skills-codex/`, and tests asserting on the changed paths;
80anything unadmitted here surfaces later as an out-of-scope diff or a broken
81gate.
82
83A plan is done only when it passes the fresh-context test: a cold context,
84given the intent source alone, could execute it. Move any fact that lives only
85in the planning conversation into the source before freezing.
86
87Planning produces no AgentOps packet: the runtime carries the source's
88reference and digest to detect acceptance drift. Bound the work around the
89caller-visible outcome, not files, gates, or reviewer comments; decompose only
90when it reduces reasoning cost. An explicitly selected bounded outer goal may
91admit a different experiment after informative red within unchanged terminal
92acceptance and remaining allowance. A new hypothesis is not an acceptance
93expansion; recurrence alone is not proof that the design is wrong. Do not reopen
94an accepted plan merely to produce another control artifact.