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