task-pipeline-skill 0.9.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,32 +1,65 @@
1
- # Model tiering
1
+ # Model policy
2
2
 
3
- A **reminder**, not a hard block. Not every environment has every model if you
4
- lack one, keep your current model; the pipeline still runs.
3
+ **One model, confirmed once, before the run starts.** Not a per-stage tier list,
4
+ not a hardcoded vendor id a single decision the operator makes at preflight and
5
+ the pipeline then honors without nagging.
5
6
 
6
- | Stages | Recommended | id |
7
- |---|---|---|
8
- | 0–4 (intake grill, docs, brainstorm, spec, plan) | Fable 5 | `claude-fable-5` |
9
- | 5–6 (subagent dev, tests) | Opus 4.8 | `claude-opus-4-8` |
10
- | 7–9 (lint/deploy, logs, docs) | inherit current | — |
7
+ ## The default
11
8
 
12
- ## Mechanic
9
+ > **Use the most capable reasoning model the environment offers** — at the time of
10
+ > writing that is the **latest Opus generation**, but read that as *"the top tier
11
+ > of whatever you're on"*, not as a specific string.
13
12
 
14
- At each stage boundary compare recommended vs current. If they differ, emit:
13
+ Every stage runs on that model by default. The pipeline is a full delivery cycle:
14
+ the grill has to hear what the operator didn't say, the spec has to lock contracts
15
+ a zero-context implementer will follow, and the build has to hold a plan in its
16
+ head. Downgrading any of those to save tokens costs more in rework than it saves.
15
17
 
16
- > **Stage N (`<name>`) recommends `<model>` (`<id>`).** You're on `<current>`.
17
- > Switch: `/model <id>` — then say "continue". *(Reminder only.)*
18
+ ## Never hardcode a model id
18
19
 
19
- ## Why manual
20
+ Model ids go stale — generations ship, tiers get renamed, and the operator may not
21
+ even be on the same provider. So:
20
22
 
21
- A skill runs inside the current context; it **cannot change the main-loop model**.
22
- Only the operator can, via `/model` (or `/fast`). The stages that most benefit from
23
- Fable (0–4) are interactive anyway (stage 0 is a live grill), so the operator is
24
- present to switch.
23
+ - **Resolve at runtime.** Look at what the environment actually offers (`/model`,
24
+ the harness's model list) and pick the top reasoning tier available there.
25
+ - **Treat any id in this repo as an example**, including in `pipeline.example.json`.
26
+ Stage configs use provider-agnostic tokens:
27
+ - `default` — the model confirmed for this run (the recommendation above)
28
+ - `inherit` — whatever the operator is currently on; no recommendation
29
+ - **Another provider is fine.** "Top tier available" is the contract. If the
30
+ environment has no Opus-class model, the best available one is the right answer —
31
+ say which one you settled on and keep going.
25
32
 
26
- Stage 5 spawns subagents; those **are** pinned to Opus by the orchestrator via the
27
- `Agent` / `Workflow` model override — no operator action needed for subagents.
33
+ ## Mechanic confirm at preflight, then stop asking
28
34
 
29
- ## Override
35
+ Once, as part of the preflight (before stage 0):
30
36
 
31
- Set your own map if your task warrants it (e.g. a heavy design needs Opus at
32
- stage 2). The recommendations are defaults, not rules.
37
+ > 🧠 **Model for this run:** recommended **`<top tier available>`**. You're on
38
+ > `<current>`.
39
+ > Switch with `/model <id>`, or say "keep current" / name another. Per-stage
40
+ > overrides welcome (e.g. a cheaper model for mechanical stages) — say so now and
41
+ > I'll record the map.
42
+
43
+ Record the answer in the stage-0 brief (`Model` row of the autonomy sweep). After
44
+ that:
45
+
46
+ - **Do not re-prompt at every stage boundary.** The decision is made; nagging is
47
+ the thing this replaces.
48
+ - **Re-prompt only** when the operator recorded a *per-stage override map* and the
49
+ next stage's entry differs from the current model — then emit the same block
50
+ scoped to that stage.
51
+ - A skill runs inside the current context and **cannot change the main-loop
52
+ model**; only the operator can, via `/model` (or `/fast`). Preflight is
53
+ interactive anyway, so this costs one exchange.
54
+
55
+ ## Subagents
56
+
57
+ Stage 5 spawns subagents; the orchestrator pins them to the **run's confirmed
58
+ model** via the `Agent` / `Workflow` model override. No operator action needed —
59
+ and no silent downgrade to a cheaper tier.
60
+
61
+ ## Degradation
62
+
63
+ The recommendation is a **reminder, not a block**. If the recommended tier isn't
64
+ available, keep the current model, state plainly which one is in use, and run. The
65
+ pipeline never stalls on a model it can't get.
@@ -8,7 +8,14 @@ operator's explicit go). These stages (0 intake + 1→9) are the plugin's
8
8
  `pipeline.schema.json`; a host project replaces it with its own
9
9
  stages/agents/types (see SKILL.md → *Bring your own skills*).
10
10
 
11
- ## 0 — Intake grill (Fable)
11
+ ## 0 — Intake grill — MANDATORY
12
+ - **Stage 0 is not optional and not skippable.** There is no "small enough task"
13
+ exemption, no "the request was already clear" exemption, no starting stage 1
14
+ "while the operator thinks". The only sanctioned bypass is the
15
+ entry-from-super-ux short-circuit below, and even that still requires a scope
16
+ confirmation and a record of what was adopted vs skipped. A run that reaches
17
+ stage 1 without a committed, operator-confirmed brief is a **failed run** —
18
+ stop and go back.
12
19
  - **Entry-from-super-ux short-circuit (check FIRST).** task-pipeline is often
13
20
  launched *from* super-ux — its `/ux` action menu offers "execute autonomously
14
21
  via the task-pipeline plugin" once the UX chain (and often a
@@ -28,33 +35,36 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
28
35
  up front so stages 1→9 need no further human input beyond the manual gates.
29
36
  This is input expansion, not design: turn "make me feature X" into locked
30
37
  answers for scope, users, constraints, data, edge cases, done-criteria.
31
- - **Invoke:** prefer the `grill-me` / `grilling` skill if it resolves; otherwise
32
- run the built-in grill loop:
33
- 1. **One question per turn** never bundle.
34
- 2. **Give a recommended answer with every question** (+ 1-line rationale);
35
- "what do you think?" is lazy.
36
- 3. **Explore the codebase/docs before asking** if `grep`/`Read`/context7
37
- answers it, do that instead of spending a turn.
38
- 4. **Walk the decision tree depth-first**; finish a branch before opening
39
- another; ask prerequisite decisions first.
40
- 5. **Reconcile contradictions** immediately; chase dodges ("we'll decide
41
- later" → "what's the latest you can decide and still ship?").
38
+ - **How it runs: [`grill.md`](grill.md)** the full doctrine, built into this
39
+ skill (nothing to install). In short: one question per turn, a recommended
40
+ answer with each, explore the codebase before asking, depth-first through the
41
+ decision tree, contradictions reconciled on the spot; plus **domain awareness**
42
+ (challenge terms against `CONTEXT.md`, sharpen fuzzy language, stress-test with
43
+ concrete scenarios, cross-reference the code, record ADRs for hard-to-reverse
44
+ calls) and the **autonomy sweep** that pre-resolves every stage-1→9 blocker.
45
+ Deploy authorization has a hard floor there: a standing go counts only when it
46
+ names the target and the preconditions.
42
47
  - **UI early-detect:** one branch of the grill is always "does this touch a
43
48
  user-facing surface (web/mobile/CLI/TUI)?". If yes → surface **super-ux**
44
49
  now (use it if installed; otherwise give the install line — see SKILL.md
45
50
  *Prerequisites*); this arms the stage-3 UX track.
46
51
  - **Artifact:** lock the resolved decisions into a **task brief** committed at
47
52
  `docs/superpowers/specs/YYYY-MM-DD-<topic>-brief.md` (scope, users/UI verdict,
48
- constraints, assumptions, explicitly-deferred items, done-criteria). Seed it from
49
- the plugin's `templates/brief.md` skeleton but only when absent, never
50
- overwrite an existing brief. Stages 2–4 build on this brief.
53
+ constraints, assumptions, explicitly-deferred items, done-criteria) **plus the
54
+ autonomy sweep's per-stage answers and the model decision**. Seed it from
55
+ the skill's `templates/brief.md` skeleton but only when absent, never
56
+ overwrite an existing brief. Stages 2–4 build on this brief; stages 5–9 read
57
+ its autonomy section instead of asking. Where the session produced them, also:
58
+ an updated `CONTEXT.md` (terms written as they resolved) and any ADRs under
59
+ `docs/adr/` — see `grill.md` → *Domain awareness*.
51
60
  - **GATE (manual):** shared understanding reached — every detected branch has a
52
- recorded answer or an explicit deferral, no open contradictions, and the
53
- operator confirms the brief. Stop when a re-scan surfaces no new branches
54
- (don't grill past diminishing returns; reversible calls can be deferred with a
55
- note). Only then start stage 1.
61
+ recorded answer or an explicit deferral, no open contradictions, **every
62
+ autonomy-sweep row is answered or explicitly marked "stop and ask here"**, the
63
+ model decision is recorded, and the operator confirms the brief. Stop when a
64
+ re-scan surfaces no new branches (don't grill past diminishing returns;
65
+ reversible calls can be deferred with a note). Only then start stage 1.
56
66
 
57
- ## 1 — Docs study (Fable)
67
+ ## 1 — Docs study
58
68
  - **What:** ground every external library / API / SDK the task touches on the
59
69
  *current* docs, before locking any contract.
60
70
  - **Invoke:** `context7` MCP (`resolve-library-id` → `get-library-docs`, scope by
@@ -63,7 +73,7 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
63
73
  - **GATE (auto):** every contract the design will lock is grounded in fetched docs,
64
74
  not recall. Unresolvable libraries are flagged in the spec.
65
75
 
66
- ## 2 — Brainstorm (Fable)
76
+ ## 2 — Brainstorm
67
77
  - **Invoke:** `superpowers:brainstorming`. One question at a time; 2–3 approaches +
68
78
  a recommendation; design presented in sections.
69
79
  - **UI detection (mandatory check):** decide whether the task touches any
@@ -72,7 +82,7 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
72
82
  track in stage 3.
73
83
  - **GATE (manual):** the user approves the design **and** the UI verdict is recorded.
74
84
 
75
- ## 3 — Spec (Fable) — with UX track for user-facing tasks
85
+ ## 3 — Spec — with UX track for user-facing tasks
76
86
  - **UX track (runs FIRST when stage 2 flagged UI; skip entirely otherwise).**
77
87
  Requires the **super-ux** skills. If missing on a UI task → give the install
78
88
  line and stop (see SKILL.md *Prerequisites*: `/plugin marketplace add
@@ -89,7 +99,7 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
89
99
  screen + state with wireframe and (Figma on) a Figma frame link.
90
100
  4. `ux-scenarios` → `docs/ux/scenarios.md` — the **WHAT** (source of truth for
91
101
  behavior): scenarios validated per the format contract (`scenario-format.md`,
92
- ux-contract v2) — IDs, statuses, `Traces:` to stories/journey stages/flows,
102
+ ux-contract v4) — IDs, statuses, `Traces:` to stories/journey stages/flows,
93
103
  edge/error states enumerated.
94
104
  5. **Run the super-ux linter** (`/ux-lint` or `python3 docs/ux/lint.py`) — it
95
105
  must pass: no drift, no orphans, no broken traces or stale Figma links.
@@ -111,7 +121,7 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
111
121
  (or an explicit v1-mode/tiny-project waiver by the operator). No plan (stage 4)
112
122
  starts before this — the chain comes BEFORE interface.
113
123
 
114
- ## 4 — Plan (Fable)
124
+ ## 4 — Plan
115
125
  - **Invoke:** `superpowers:writing-plans` →
116
126
  `docs/superpowers/plans/YYYY-MM-DD-<feature>.md`. Zero-context tasks, exact
117
127
  paths, TDD steps, DoD each, dependency graph + parallel groups, non-overlapping
@@ -122,14 +132,15 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
122
132
  includes satisfying them **and** updating the affected super-ux layers in the
123
133
  same change (super-ux *same-change* rule).
124
134
 
125
- ## 5 — Dev (Opus)
135
+ ## 5 — Dev
126
136
  - **Invoke:** `superpowers:using-git-worktrees` (isolate) →
127
137
  `superpowers:subagent-driven-development` (or `superpowers:executing-plans`).
128
- TDD per task (failing test → minimal impl → green → commit). Pin subagents to Opus.
138
+ TDD per task (failing test → minimal impl → green → commit). Pin subagents to the
139
+ run's confirmed model (`model-tiering.md`).
129
140
  - **GATE (auto):** all plan tasks DONE (two-stage review: spec compliance, then code
130
141
  quality); full test suite green.
131
142
 
132
- ## 6 — Tests (Opus)
143
+ ## 6 — Tests
133
144
  - **What:** consolidate test coverage for the change: confirm new functionality
134
145
  has tests (written test-first in stage 5), update/repair existing tests the
135
146
  change touched, and add edge-case + failure-path tests per DoD.
@@ -139,7 +150,7 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
139
150
  is covered; no `skip`/`xfail` smuggling a red suite past the gate. Never advance
140
151
  to deploy on a red or partial run.
141
152
 
142
- ## 7 — Lint + deploy (host model)
153
+ ## 7 — Lint + deploy
143
154
  - Read host conventions (`conventions.md`): run the linter; fix failures. The suite
144
155
  is already green from stage 6 — re-run it if code changed since. For UI projects,
145
156
  the **super-ux linter** (`python3 docs/ux/lint.py` / `/ux-lint`) is part of lint —
@@ -150,13 +161,13 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
150
161
  linter) **and** suite green **before** deploy. Deploy is outward → explicit
151
162
  operator go. Respect deploy-from-main rules if the project mandates them.
152
163
 
153
- ## 8 — Post-deploy (host model)
164
+ ## 8 — Post-deploy
154
165
  - Tail deploy logs / health-check per conventions. Confirm clean boot, no error
155
166
  spike, live subsystems healthy.
156
167
  - **GATE (auto):** clean boot confirmed, or an **honest degradation report** with next
157
168
  steps — never silent success.
158
169
 
159
- ## 9 — Docs + wiki (host model)
170
+ ## 9 — Docs + wiki
160
171
  - Update host module docs / runbooks per the project's self-update rules, in the
161
172
  **same change**. For UI tasks, confirm the super-ux layers were updated in this
162
173
  change and the linter is green (super-ux *same-change* + *no-drift* rules). Then
@@ -7,6 +7,12 @@ from the `superpowers` skills, and the `docs/ux/*` skeletons from `super-ux`.
7
7
  | Template | Seeded to | Stage |
8
8
  |---|---|---|
9
9
  | `brief.md` | `docs/superpowers/specs/YYYY-MM-DD-<topic>-brief.md` | 0 — intake grill |
10
+ | `context.md` | `CONTEXT.md` at the repo root (or per context) | 0 — grill, domain awareness |
11
+ | `adr.md` | `docs/adr/NNNN-<slug>.md` | 0 — grill, hard-to-reverse decisions |
12
+
13
+ `context.md` and `adr.md` are **format references**, not files to copy wholesale:
14
+ the grill writes `CONTEXT.md` entries and ADRs in their shape, lazily — only once
15
+ there is a resolved term or a decision worth recording.
10
16
 
11
17
  Seeding rule (per the ssheleg canon): create a template copy **only when the
12
18
  target is absent**; never overwrite an existing brief.
@@ -0,0 +1,64 @@
1
+ # ADR — format
2
+
3
+ Architecture Decision Records live in `docs/adr/` with sequential numbering
4
+ (`0001-slug.md`, `0002-slug.md`, …). Scan for the highest existing number and
5
+ increment. Create the directory **lazily** — only when the first ADR is needed.
6
+
7
+ > Adapted from Matt Pocock's `grill-with-docs` (MIT — see the repo LICENSE →
8
+ > *Third-party*).
9
+
10
+ ## Template
11
+
12
+ ```md
13
+ # {Short title of the decision}
14
+
15
+ {1–3 sentences: what the context was, what was decided, and why.}
16
+ ```
17
+
18
+ That's it. An ADR can be a single paragraph. The value is recording *that* a
19
+ decision was made and *why* — not filling out sections.
20
+
21
+ ## Optional sections
22
+
23
+ Only when they add genuine value; most ADRs need none.
24
+
25
+ - **Status** frontmatter (`proposed | accepted | deprecated | superseded by
26
+ ADR-NNNN`) — useful once decisions start getting revisited.
27
+ - **Considered options** — only when the rejected alternatives are worth
28
+ remembering.
29
+ - **Consequences** — only when non-obvious downstream effects need calling out.
30
+
31
+ ## When to write one
32
+
33
+ All three must hold:
34
+
35
+ 1. **Hard to reverse** — changing your mind later carries real cost.
36
+ 2. **Surprising without context** — a future reader will look at the code and
37
+ wonder "why on earth did they do it this way?"
38
+ 3. **A real trade-off** — genuine alternatives existed and one was picked for
39
+ specific reasons.
40
+
41
+ Easy to reverse → skip it, you'll just reverse it. Not surprising → nobody will
42
+ wonder. No real alternative → there's nothing to record beyond "we did the obvious
43
+ thing."
44
+
45
+ ### What qualifies
46
+
47
+ - **Architectural shape.** "We're using a monorepo." "The write model is
48
+ event-sourced; the read model projects into Postgres."
49
+ - **Integration patterns between contexts.** "Ordering and Billing communicate via
50
+ domain events, not synchronous HTTP."
51
+ - **Technology choices carrying lock-in.** Database, message bus, auth provider,
52
+ deployment target — not every library, just the ones that would take a quarter to
53
+ swap out.
54
+ - **Boundary and scope decisions.** "Customer data is owned by the Customer
55
+ context; others reference it by ID only." The explicit no's are as valuable as
56
+ the yes's.
57
+ - **Deliberate deviations from the obvious path.** "Manual SQL instead of an ORM
58
+ because X." Anything a reasonable reader would assume the opposite of — this is
59
+ what stops the next engineer from "fixing" something deliberate.
60
+ - **Constraints invisible in the code.** "No AWS, for compliance." "Sub-200ms
61
+ responses, per the partner API contract."
62
+ - **Rejected alternatives whose rejection is non-obvious.** Considered GraphQL,
63
+ picked REST for subtle reasons → record it, or someone re-proposes GraphQL in six
64
+ months.
@@ -0,0 +1,59 @@
1
+ # Task brief — <topic>
2
+
3
+ > Stage-0 intake artifact. The grill fills this in and the operator confirms it
4
+ > before stage 1. Copy to `docs/superpowers/specs/YYYY-MM-DD-<topic>-brief.md`.
5
+ > Every field is a resolved decision or an explicit deferral — no open unknowns.
6
+
7
+ - **Date:** YYYY-MM-DD
8
+ - **Task (one line):** <what the operator asked for, restated>
9
+ - **UI verdict:** yes / no — does this touch a user-facing surface (web/mobile/CLI/TUI)?
10
+ If yes, the stage-3 super-ux UX track is armed.
11
+
12
+ ## Scope
13
+
14
+ - **In scope:** …
15
+ - **Out of scope / explicitly deferred:** … (with the reason and, for deferrals,
16
+ the latest moment the decision can still be made)
17
+
18
+ ## Users & context
19
+
20
+ - **Who / for what:** … (personas, the job being done)
21
+ - **Where it runs / constraints:** platform, runtime, data, integrations, limits
22
+
23
+ ## Decisions locked (the grill's output)
24
+
25
+ | # | Decision | Chosen | Rationale |
26
+ |---|---|---|---|
27
+ | 1 | … | … | … |
28
+
29
+ ## Autonomy (the sweep — stages 1→9 read this instead of asking)
30
+
31
+ Every row is either a resolved answer or an explicit **STOP AND ASK**. A blank row
32
+ is not neutral — it is a scheduled interruption.
33
+
34
+ | Stage | Question | Answer |
35
+ |---|---|---|
36
+ | run-wide | Model for this run | … (most capable available unless overridden; per-stage overrides here) |
37
+ | run-wide | Decide autonomously vs escalate to me | … |
38
+ | 1 Docs | External libs/APIs/SDKs in play; any context7 can't resolve → where their docs live | … |
39
+ | 2–3 Spec | UI verdict (arms super-ux); scenario-tracing waiver, if any | … |
40
+ | 4–5 Dev | Base branch; worktree/branch policy; is `main` off-limits; commit convention; task tracker | … |
41
+ | 6 Tests | Test command; what "green" means; known-red baseline; coverage expectation | … |
42
+ | 7 Lint | Lint command (incl. `docs/ux/lint.py` for UI projects) | … |
43
+ | 7 Deploy | Target + path; release automation on/off; deploy-from-main rule | … |
44
+ | 7 Deploy | **Authorization** — standing go, or ask every time? | … |
45
+ | 8 Post-deploy | Where logs / health live (app name, endpoint, workflow) | … |
46
+ | 9 Docs+wiki | Which module docs / runbooks this change updates; wiki sync yes/no | … |
47
+
48
+ > **Deploy authorization has a hard floor.** A standing go counts only if it is
49
+ > **specific** — named target and named preconditions ("staging, once lint and the
50
+ > full suite are green; production always asks"). Vague blanket permission does not
51
+ > authorize an outward, irreversible action; stage 7 stops and asks.
52
+
53
+ ## Done-criteria
54
+
55
+ - Observable, verifiable conditions that mean "this task is finished".
56
+
57
+ ## Open assumptions / risks
58
+
59
+ - Assumption → how it's validated (or flagged risky-untested).
@@ -0,0 +1,87 @@
1
+ # CONTEXT.md — format
2
+
3
+ The project's living glossary. The stage-0 grill writes to it **inline**, as each
4
+ term is resolved. Seeded at the repo root (`CONTEXT.md`) for a single-context repo.
5
+
6
+ > Adapted from Matt Pocock's `grill-with-docs` (MIT — see the repo LICENSE →
7
+ > *Third-party*).
8
+
9
+ ## Structure
10
+
11
+ ```md
12
+ # {Context Name}
13
+
14
+ {One or two sentences: what this context is and why it exists.}
15
+
16
+ ## Language
17
+
18
+ **Order**:
19
+ A confirmed request from a Customer for goods or services.
20
+ _Avoid_: Purchase, transaction
21
+
22
+ **Invoice**:
23
+ A request for payment sent to a customer after delivery.
24
+ _Avoid_: Bill, payment request
25
+
26
+ **Customer**:
27
+ A person or organization that places orders.
28
+ _Avoid_: Client, buyer, account
29
+
30
+ ## Relationships
31
+
32
+ - An **Order** produces one or more **Invoices**
33
+ - An **Invoice** belongs to exactly one **Customer**
34
+
35
+ ## Example dialogue
36
+
37
+ > **Dev:** "When a **Customer** places an **Order**, do we create the **Invoice** immediately?"
38
+ > **Domain expert:** "No — an **Invoice** is only generated once a **Fulfillment** is confirmed."
39
+
40
+ ## Flagged ambiguities
41
+
42
+ - "account" was used to mean both **Customer** and **User** — resolved: these are
43
+ distinct concepts.
44
+ ```
45
+
46
+ ## Rules
47
+
48
+ - **Be opinionated.** Several words for one concept → pick the best, list the rest
49
+ as aliases to avoid.
50
+ - **Flag conflicts explicitly.** An ambiguous term goes under *Flagged ambiguities*
51
+ with its resolution.
52
+ - **Keep definitions tight.** One sentence. Define what it IS, not what it does.
53
+ - **Show relationships.** Bold the term names; express cardinality where obvious.
54
+ - **Only project-specific terms.** General programming concepts (timeouts, error
55
+ types, utility patterns) don't belong, however heavily the project uses them.
56
+ Before adding: is this unique to this context, or just programming?
57
+ - **Group under subheadings** when natural clusters emerge; a flat list is fine
58
+ when the terms are one cohesive area.
59
+ - **Write an example dialogue** — a dev and a domain expert using the terms
60
+ naturally, which is what exposes the boundaries between related concepts.
61
+
62
+ ## Single vs multi-context repos
63
+
64
+ **Single context (most repos):** one `CONTEXT.md` at the root.
65
+
66
+ **Multiple contexts:** a `CONTEXT-MAP.md` at the root lists them, where they live,
67
+ and how they relate:
68
+
69
+ ```md
70
+ # Context Map
71
+
72
+ ## Contexts
73
+
74
+ - [Ordering](./src/ordering/CONTEXT.md) — receives and tracks customer orders
75
+ - [Billing](./src/billing/CONTEXT.md) — generates invoices and processes payments
76
+ - [Fulfillment](./src/fulfillment/CONTEXT.md) — manages warehouse picking and shipping
77
+
78
+ ## Relationships
79
+
80
+ - **Ordering → Fulfillment**: Ordering emits `OrderPlaced`; Fulfillment consumes it to start picking
81
+ - **Fulfillment → Billing**: Fulfillment emits `ShipmentDispatched`; Billing consumes it to invoice
82
+ - **Ordering ↔ Billing**: shared types for `CustomerId` and `Money`
83
+ ```
84
+
85
+ Which structure applies is inferred: `CONTEXT-MAP.md` exists → read it to find the
86
+ contexts; only a root `CONTEXT.md` → single context; neither → create the root file
87
+ lazily, when the first term is resolved.
@@ -1,35 +0,0 @@
1
- # Task brief — <topic>
2
-
3
- > Stage-0 intake artifact. The grill fills this in and the operator confirms it
4
- > before stage 1. Copy to `docs/superpowers/specs/YYYY-MM-DD-<topic>-brief.md`.
5
- > Every field is a resolved decision or an explicit deferral — no open unknowns.
6
-
7
- - **Date:** YYYY-MM-DD
8
- - **Task (one line):** <what the operator asked for, restated>
9
- - **UI verdict:** yes / no — does this touch a user-facing surface (web/mobile/CLI/TUI)?
10
- If yes, the stage-3 super-ux UX track is armed.
11
-
12
- ## Scope
13
-
14
- - **In scope:** …
15
- - **Out of scope / explicitly deferred:** … (with the reason and, for deferrals,
16
- the latest moment the decision can still be made)
17
-
18
- ## Users & context
19
-
20
- - **Who / for what:** … (personas, the job being done)
21
- - **Where it runs / constraints:** platform, runtime, data, integrations, limits
22
-
23
- ## Decisions locked (the grill's output)
24
-
25
- | # | Decision | Chosen | Rationale |
26
- |---|---|---|---|
27
- | 1 | … | … | … |
28
-
29
- ## Done-criteria
30
-
31
- - Observable, verifiable conditions that mean "this task is finished".
32
-
33
- ## Open assumptions / risks
34
-
35
- - Assumption → how it's validated (or flagged risky-untested).