agentplugged 1.3.0 → 1.4.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.
- package/README.md +3 -2
- package/dist/agent-commands.js +25473 -24861
- package/dist/bin.js +1 -2
- package/dist/cli.js +1 -2
- package/dist/dist.js +12205 -0
- package/dist/esm.js +8 -16
- package/dist/forge-follow.js +5 -6
- package/dist/hash.js +9 -12083
- package/dist/helpers.js +257 -514
- package/dist/launcher-env.js +1 -2
- package/dist/launcher.js +3 -4
- package/dist/libsodium-wrappers.js +2 -4
- package/dist/libsodium-wrappers2.js +2 -4
- package/dist/main.js +791 -152
- package/dist/method/agents/alex/SKILL.md +13 -29
- package/dist/method/agents/alex/agent.yaml +1 -1
- package/dist/method/agents/basile/SKILL.md +44 -0
- package/dist/method/agents/basile/agent.yaml +69 -0
- package/dist/method/agents/chloe/SKILL.md +12 -25
- package/dist/method/agents/chloe/agent.yaml +3 -3
- package/dist/method/agents/ethan/SKILL.md +8 -9
- package/dist/method/agents/ethan/agent.yaml +9 -8
- package/dist/method/agents/hugo/SKILL.md +8 -8
- package/dist/method/agents/hugo/agent.yaml +9 -8
- package/dist/method/agents/iris/SKILL.md +4 -10
- package/dist/method/agents/izzy/SKILL.md +68 -91
- package/dist/method/agents/izzy/agent.yaml +8 -15
- package/dist/method/agents/jade/SKILL.md +7 -9
- package/dist/method/agents/jade/agent.yaml +9 -8
- package/dist/method/agents/julien/SKILL.md +38 -58
- package/dist/method/agents/lina/SKILL.md +7 -9
- package/dist/method/agents/lina/agent.yaml +9 -8
- package/dist/method/agents/lou/SKILL.md +4 -11
- package/dist/method/agents/lou/agent.yaml +2 -2
- package/dist/method/agents/maya/SKILL.md +12 -19
- package/dist/method/agents/maya/agent.yaml +1 -3
- package/dist/method/agents/milo/SKILL.md +21 -32
- package/dist/method/agents/noah/SKILL.md +109 -63
- package/dist/method/agents/noah/agent.yaml +14 -31
- package/dist/method/agents/noah/references/decisions.md +61 -121
- package/dist/method/agents/noah/references/environment.md +30 -70
- package/dist/method/agents/noah/references/facts.md +22 -11
- package/dist/method/agents/noah/references/journey.md +26 -78
- package/dist/method/agents/noah/references/team.md +63 -190
- package/dist/method/agents/omar/SKILL.md +12 -28
- package/dist/method/agents/omar/agent.yaml +1 -1
- package/dist/method/agents/quentin/SKILL.md +7 -15
- package/dist/method/agents/quentin/agent.yaml +4 -2
- package/dist/method/agents/sam/SKILL.md +6 -8
- package/dist/method/agents/sam/agent.yaml +9 -8
- package/dist/method/agents/stella/SKILL.md +6 -14
- package/dist/method/agents/stella/agent.yaml +1 -1
- package/dist/method/agents/tess/SKILL.md +7 -14
- package/dist/method/agents/tess/agent.yaml +2 -2
- package/dist/method/agents/zoe/SKILL.md +9 -21
- package/dist/method/doctor.yaml +23 -4
- package/dist/method/models.yaml +12 -0
- package/dist/method/skills/acceptance-qa/SKILL.md +1 -1
- package/dist/method/skills/acceptance-qa/references/run.md +24 -32
- package/dist/method/skills/acceptance-qa/references/scenarios.md +16 -19
- package/dist/method/skills/acceptance-qa/references/verdicts.md +10 -16
- package/dist/method/skills/api-e2e-tests/SKILL.md +46 -46
- package/dist/method/skills/audit-pillars/SKILL.md +12 -10
- package/dist/method/skills/audit-pillars/references/pillars.md +40 -0
- package/dist/method/skills/chain-stories/SKILL.md +5 -4
- package/dist/method/skills/chain-stories/references/merge-order.md +23 -0
- package/dist/method/skills/check-readiness/SKILL.md +1 -1
- package/dist/method/skills/check-requirements/SKILL.md +37 -72
- package/dist/method/skills/check-requirements/references/engine-proofs.md +16 -23
- package/dist/method/skills/check-requirements/references/proofs-and-gaps.md +22 -37
- package/dist/method/skills/critique-deliverable/SKILL.md +3 -3
- package/dist/method/skills/critique-deliverable/references/choose.md +12 -21
- package/dist/method/skills/critique-deliverable/references/format.md +14 -20
- package/dist/method/skills/critique-deliverable/references/gestures.md +14 -21
- package/dist/method/skills/critique-deliverable/references/judgment.md +4 -9
- package/dist/method/skills/critique-deliverable/references/methods.md +21 -0
- package/dist/method/skills/critique-deliverable/references/reconcile.md +6 -11
- package/dist/method/skills/deep-research/SKILL.md +16 -24
- package/dist/method/skills/deep-research/references/candidates.md +13 -25
- package/dist/method/skills/deep-research/references/external.md +15 -34
- package/dist/method/skills/deep-research/references/page-format.md +16 -42
- package/dist/method/skills/deep-research/references/types.md +16 -27
- package/dist/method/skills/develop-story/SKILL.md +56 -189
- package/dist/method/skills/develop-story/references/acceptance-tests.md +18 -71
- package/dist/method/skills/develop-story/references/quick-lane.md +20 -0
- package/dist/method/skills/diagnose-bug/SKILL.md +42 -53
- package/dist/method/skills/diagnose-bug/references/hypotheses.md +1 -2
- package/dist/method/skills/generate-knowledge-base/SKILL.md +57 -226
- package/dist/method/skills/generate-knowledge-base/assets/index-template.md +6 -15
- package/dist/method/skills/generate-knowledge-base/assets/page-template.md +11 -24
- package/dist/method/skills/generate-knowledge-base/references/living-docs.md +25 -64
- package/dist/method/skills/generate-knowledge-base/references/reuse-map.md +9 -18
- package/dist/method/skills/ideation/SKILL.md +16 -23
- package/dist/method/skills/ideation/references/close.md +18 -14
- package/dist/method/skills/ideation/references/converge.md +11 -21
- package/dist/method/skills/ideation/references/stances.md +13 -17
- package/dist/method/skills/ideation/references/techniques.md +20 -0
- package/dist/method/skills/improve-code/SKILL.md +42 -54
- package/dist/method/skills/pitch/SKILL.md +16 -19
- package/dist/method/skills/pitch/references/deck.md +15 -18
- package/dist/method/skills/pitch/references/design-implementation.md +13 -21
- package/dist/method/skills/pitch/references/design.md +21 -0
- package/dist/method/skills/pitch/references/story.md +13 -18
- package/dist/method/skills/plan-sprint/SKILL.md +49 -151
- package/dist/method/skills/resolve-merge-conflict/SKILL.md +40 -65
- package/dist/method/skills/review-after-launch/SKILL.md +56 -0
- package/dist/method/skills/review-story/SKILL.md +44 -72
- package/dist/method/skills/review-story/references/amend-story.md +8 -13
- package/dist/method/skills/review-story/references/export.md +7 -17
- package/dist/method/skills/review-story/references/free-review.md +9 -20
- package/dist/method/skills/review-story/references/judge.md +25 -37
- package/dist/method/skills/review-story/references/tests.md +29 -0
- package/dist/method/skills/round-table/SKILL.md +6 -6
- package/dist/method/skills/round-table/references/closing.md +18 -0
- package/dist/method/skills/round-table/references/guests.md +15 -15
- package/dist/method/skills/round-table/references/rooms.md +15 -28
- package/dist/method/skills/round-table/references/table.md +19 -0
- package/dist/method/skills/run-acceptance/SKILL.md +58 -0
- package/dist/method/skills/run-acceptance/references/template.md +39 -0
- package/dist/method/skills/run-retrospective/SKILL.md +50 -189
- package/dist/method/skills/security-review-architecture/SKILL.md +47 -109
- package/dist/method/skills/security-review-architecture/references/spec-review.md +27 -38
- package/dist/method/skills/setup-ci/SKILL.md +45 -109
- package/dist/method/skills/split-into-stories/SKILL.md +59 -192
- package/dist/method/skills/split-into-stories/assets/story.md.tmpl +15 -4
- package/dist/method/skills/strategy/SKILL.md +21 -25
- package/dist/method/skills/strategy/references/costs.md +12 -26
- package/dist/method/skills/strategy/references/gestures.md +12 -21
- package/dist/method/skills/strategy/references/innovate.md +19 -37
- package/dist/method/skills/strategy/references/solve.md +19 -32
- package/dist/method/skills/test-idea/SKILL.md +5 -5
- package/dist/method/skills/test-idea/assets/prfaq-template.md +1 -1
- package/dist/method/skills/test-idea/references/faq.md +12 -29
- package/dist/method/skills/test-idea/references/forge.md +19 -30
- package/dist/method/skills/test-idea/references/personas.md +16 -19
- package/dist/method/skills/test-idea/references/prfaq.md +31 -31
- package/dist/method/skills/workshop/SKILL.md +10 -16
- package/dist/method/skills/workshop/references/create.md +28 -45
- package/dist/method/skills/workshop/references/customize.md +17 -42
- package/dist/method/skills/workshop/references/evaluate.md +11 -42
- package/dist/method/skills/workshop/references/rules.md +17 -26
- package/dist/method/skills/write-architecture/SKILL.md +62 -220
- package/dist/method/skills/write-architecture/references/guard.md +11 -28
- package/dist/method/skills/write-architecture/references/self-check.md +22 -38
- package/dist/method/skills/write-brand/SKILL.md +2 -2
- package/dist/method/skills/write-brand/references/identity.md +21 -22
- package/dist/method/skills/write-brand/references/platform.md +13 -20
- package/dist/method/skills/write-brand/references/rules.md +16 -22
- package/dist/method/skills/write-brief/SKILL.md +56 -149
- package/dist/method/skills/write-brief/references/brief-checklist.md +18 -30
- package/dist/method/skills/write-content/SKILL.md +53 -210
- package/dist/method/skills/write-content/references/content-checklist.md +32 -50
- package/dist/method/skills/write-positioning/SKILL.md +53 -197
- package/dist/method/skills/write-positioning/references/positioning-checklist.md +15 -41
- package/dist/method/skills/write-positioning/references/seo-checklist.md +26 -51
- package/dist/method/skills/write-prd/SKILL.md +52 -179
- package/dist/method/skills/write-prd/references/prd-checklist.md +25 -54
- package/dist/method/skills/write-sales/SKILL.md +48 -212
- package/dist/method/skills/write-sales/references/before-you-send.md +21 -49
- package/dist/method/skills/write-sales/references/sales-checklist.md +19 -69
- package/dist/method/skills/write-spec/references/spec-guide.md +20 -23
- package/dist/method/skills/write-ux-spec/SKILL.md +57 -168
- package/dist/method/skills/write-ux-spec/references/accessibility-check.md +13 -72
- package/dist/method/skills/write-ux-spec/references/mockups.md +6 -68
- package/dist/method/skills/write-ux-spec/references/tokens-and-sketches.md +8 -81
- package/dist/method/skills/write-ux-spec/references/ux-checklist.md +12 -67
- package/dist/product-root.js +353 -250
- package/dist/project-command.js +1508 -0
- package/dist/project-command2.js +1 -0
- package/dist/read-command.js +19 -0
- package/dist/rolldown-runtime.js +1 -2
- package/dist/sheet-command.js +57 -0
- package/dist/webauthn-verify.js +4 -5
- package/package.json +11 -10
- package/dist/method/agents/noah/references/conduct.md +0 -102
- package/dist/method/skills/api-e2e-tests/references/frameworks.md +0 -58
- package/dist/method/skills/api-e2e-tests/references/generate.md +0 -67
- package/dist/method/skills/audit-pillars/references/accessibility.md +0 -13
- package/dist/method/skills/audit-pillars/references/architecture.md +0 -13
- package/dist/method/skills/audit-pillars/references/dependencies.md +0 -13
- package/dist/method/skills/audit-pillars/references/format.md +0 -20
- package/dist/method/skills/audit-pillars/references/interface.md +0 -13
- package/dist/method/skills/audit-pillars/references/method.md +0 -33
- package/dist/method/skills/audit-pillars/references/performance.md +0 -17
- package/dist/method/skills/audit-pillars/references/quality.md +0 -11
- package/dist/method/skills/audit-pillars/references/security.md +0 -13
- package/dist/method/skills/audit-pillars/references/tests.md +0 -17
- package/dist/method/skills/critique-deliverable/references/assumption-audit.md +0 -11
- package/dist/method/skills/critique-deliverable/references/compare-existing.md +0 -13
- package/dist/method/skills/critique-deliverable/references/devils-advocate.md +0 -13
- package/dist/method/skills/critique-deliverable/references/divergence.md +0 -15
- package/dist/method/skills/critique-deliverable/references/domain-expert.md +0 -14
- package/dist/method/skills/critique-deliverable/references/extreme-user.md +0 -13
- package/dist/method/skills/critique-deliverable/references/failure-modes.md +0 -13
- package/dist/method/skills/critique-deliverable/references/first-principles.md +0 -12
- package/dist/method/skills/critique-deliverable/references/inversion.md +0 -13
- package/dist/method/skills/critique-deliverable/references/pre-mortem.md +0 -12
- package/dist/method/skills/critique-deliverable/references/red-team.md +0 -12
- package/dist/method/skills/critique-deliverable/references/reframe.md +0 -12
- package/dist/method/skills/critique-deliverable/references/second-order.md +0 -12
- package/dist/method/skills/critique-deliverable/references/socratic.md +0 -15
- package/dist/method/skills/critique-deliverable/references/steelman.md +0 -13
- package/dist/method/skills/critique-deliverable/references/subtraction.md +0 -12
- package/dist/method/skills/develop-story/references/self-check.md +0 -46
- package/dist/method/skills/generate-knowledge-base/references/kb-checklist.md +0 -49
- package/dist/method/skills/generate-knowledge-base/references/repository-scan.md +0 -48
- package/dist/method/skills/ideation/references/choose.md +0 -21
- package/dist/method/skills/ideation/references/gestures.md +0 -15
- package/dist/method/skills/ideation/references/techniques-borrowed.md +0 -8
- package/dist/method/skills/ideation/references/techniques-deep.md +0 -12
- package/dist/method/skills/ideation/references/techniques-frames.md +0 -12
- package/dist/method/skills/ideation/references/techniques-futures.md +0 -8
- package/dist/method/skills/ideation/references/techniques-limits.md +0 -9
- package/dist/method/skills/ideation/references/techniques-people.md +0 -7
- package/dist/method/skills/ideation/references/techniques-sparks.md +0 -10
- package/dist/method/skills/ideation/references/techniques-together.md +0 -11
- package/dist/method/skills/order-merges/SKILL.md +0 -71
- package/dist/method/skills/pitch/references/deck-types.md +0 -17
- package/dist/method/skills/pitch/references/design-methods.md +0 -45
- package/dist/method/skills/pitch/references/design-thinking.md +0 -28
- package/dist/method/skills/pitch/references/story-frameworks.md +0 -39
- package/dist/method/skills/quick-lane/SKILL.md +0 -143
- package/dist/method/skills/review-tests/SKILL.md +0 -32
- package/dist/method/skills/review-tests/references/check.md +0 -25
- package/dist/method/skills/review-tests/references/grid.md +0 -27
- package/dist/method/skills/round-table/references/cast.md +0 -14
- package/dist/method/skills/round-table/references/gestures.md +0 -24
- package/dist/method/skills/round-table/references/independence.md +0 -21
- package/dist/method/skills/round-table/references/three-views.md +0 -17
- package/dist/method/skills/round-table/references/turns.md +0 -19
- package/dist/method/skills/strategy/references/innovate-frameworks.md +0 -48
- package/dist/method/skills/strategy/references/solve-methods.md +0 -45
- package/dist/method/skills/test-idea/references/bets.md +0 -14
- package/dist/method/skills/test-idea/references/concept.md +0 -24
- package/dist/method/skills/test-idea/references/verdict.md +0 -26
- package/dist/method/skills/workshop/references/analyze.md +0 -36
|
@@ -1,201 +1,62 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: run-retrospective
|
|
3
|
-
description: Look back on a finished epic or sprint, propose lessons to the creator and record the approved ones in the memory
|
|
3
|
+
description: Look back on a finished epic or sprint, propose lessons to the creator and record the approved ones in the shared memory. Run by Izzy.
|
|
4
4
|
metadata:
|
|
5
5
|
agent: izzy
|
|
6
6
|
phase: build
|
|
7
7
|
---
|
|
8
8
|
# Run a retrospective
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
`
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
- The notes of the creator in the chat during the scope, when you have them: what they corrected,
|
|
57
|
-
what they asked twice.
|
|
58
|
-
|
|
59
|
-
Group the facts by theme: what went well and should be repeated, what cost time or money, what was
|
|
60
|
-
refused or reworked, what was misunderstood, what kept coming back. A theme with a single
|
|
61
|
-
occurrence is an anecdote; a theme with two or more is a candidate lesson.
|
|
62
|
-
|
|
63
|
-
**Produces:** a short list of themes, each with the stories that show it.
|
|
64
|
-
|
|
65
|
-
## Step 3 — Read the memory first
|
|
66
|
-
|
|
67
|
-
1. Call `memory.read` (`agent: izzy`). Note the active lessons (`id`, `source`) and the follow-ups
|
|
68
|
-
of the last retrospectives (`actions`).
|
|
69
|
-
2. For every candidate lesson, decide against the memory:
|
|
70
|
-
- **already there**: do not repeat it. If the facts show it was not followed, say so in the
|
|
71
|
-
summary instead;
|
|
72
|
-
- **contradicts an active lesson**: the new lesson **replaces** it (`replaces`, the old id), or
|
|
73
|
-
you drop the new one. Never leave two lessons that contradict each other;
|
|
74
|
-
- **an active lesson the facts show is wrong, or no longer true**: propose its retirement
|
|
75
|
-
(`retire`, with the reason);
|
|
76
|
-
- **new**: keep it.
|
|
77
|
-
3. Check the follow-ups of the last retrospectives: say which were done, which were not.
|
|
78
|
-
4. `warnings` of `memory.read`: `product_key_missing` means this machine cannot read nor write the
|
|
79
|
-
product's memory (`PRODUCT_KEY_MISSING`): tell the creator, whose product key is on another
|
|
80
|
-
machine (`npx agentplugged key import`), and stop.
|
|
81
|
-
|
|
82
|
-
**Produces:** the candidate lessons, each new, replacing or retiring something; the follow-ups' status.
|
|
83
|
-
|
|
84
|
-
## Step 4 — Write the lessons and the actions
|
|
85
|
-
|
|
86
|
-
A lesson is useful when an agent can apply it without asking anyone:
|
|
87
|
-
|
|
88
|
-
- **One lesson, one idea**: a title of one line (120 characters at most) and a text of at most 1,000
|
|
89
|
-
characters that says what to do or avoid, **why** (the facts it comes from, by story id), and
|
|
90
|
-
**when** it applies.
|
|
91
|
-
- **A way of working, not a fact of the code**: "run the contract tests before opening the pull
|
|
92
|
-
request, two stories bounced on it" is a lesson; "the invoice module uses X" belongs to the
|
|
93
|
-
knowledge base, not to the memory.
|
|
94
|
-
- **No secret, no personal data**, no name of a person, no key, no token, no address: the memory is
|
|
95
|
-
read by every agent.
|
|
96
|
-
- **`agents`** names the agents the lesson is for (the developers of a specialty, the reviewers…);
|
|
97
|
-
leave it out when it is for everyone. **`tags`** (five at most, lowercase, hyphens) say what it is about.
|
|
98
|
-
- A lesson says nothing about a language, a framework or a tool unless the product's architecture
|
|
99
|
-
does: the method is not tied to a stack.
|
|
100
|
-
- **An action** is something owed, one line (300 characters), with its `owner`: an agent id, or
|
|
101
|
-
`creator`. An action is not a lesson: "add a lint rule for X" is an action, "check X before
|
|
102
|
-
merging" is a lesson. The engine does not track actions; you turn the approved ones into deferred
|
|
103
|
-
work (`plan.defer`), stories at the next breakdown, or items of the next sprint.
|
|
104
|
-
- At most 12 lessons, 12 retirements, 12 actions. Fewer is better: five lessons the team applies
|
|
105
|
-
beat twenty it forgets. Say plainly when the scope taught nothing new.
|
|
106
|
-
|
|
107
|
-
**Produces:** the lessons (with `agents`, `tags`, `replaces`), the retirements (with their reason),
|
|
108
|
-
the actions (with their owner), and a `summary` of what you looked at, 1,500 characters at most.
|
|
109
|
-
|
|
110
|
-
## Step 5 — Propose it, then ask once
|
|
111
|
-
|
|
112
|
-
1. Call `memory.retrospective` with the `scope`, the `summary`, the `lessons`, the `retire` and the
|
|
113
|
-
`actions`. On `MEMORY_INVALID`, nothing was written: `scope_not_finished` (a story is not done:
|
|
114
|
-
say which), `scope_taken`, `lesson_unknown` (an id that is no longer active: read the memory
|
|
115
|
-
again), `lesson_conflict` (one lesson replaced or retired twice), `memory_full` (retire lessons
|
|
116
|
-
in this same retrospective). `PRODUCT_KEY_MISSING`: tell the creator.
|
|
117
|
-
2. It returns the checkpoint (`G-…`), the retrospective (`R-…`) and the id of each lesson. The
|
|
118
|
-
checkpoint shows **counts only**: the lessons are encrypted, so the creator reads them from you.
|
|
119
|
-
3. **Only now**, with the checkpoint open, present the retrospective in the chat, whole: each lesson
|
|
120
|
-
numbered with its id, its title, its text, who it is for; what it replaces; each retirement and
|
|
121
|
-
its reason; each action and its owner. Say what you recommend. Then ask once: all of it? all but
|
|
122
|
-
some? changes?
|
|
123
|
-
4. Ask in the chat, never with `chat.ask`: the engine's form would show counts only and cannot
|
|
124
|
-
carry reservations nor a refusal (it answers `answered: false`). Their answer, quote and
|
|
125
|
-
note are recorded in clear in the journal: ask them to name lessons by number ("sauf la 2"), never to
|
|
126
|
-
repeat a lesson's content.
|
|
127
|
-
5. Record the creator's answer with `chat.answer`, quoting their whole message:
|
|
128
|
-
- "ok", "oui", "parfait" (a plain approval): `approved`;
|
|
129
|
-
- "oui, sauf la 2": `approved_with_reservations`, their words as the `note`; the next step
|
|
130
|
-
leaves out what they named (lessons, retirements and actions have ids);
|
|
131
|
-
- a change they want: `changes_requested` with their words; correct the proposal, then call
|
|
132
|
-
`memory.retrospective` again (the earlier one is sent back, so the scope is free);
|
|
133
|
-
- a refusal, or "no retrospective for this one": `rejected`. The scope is set aside: `state.next` will
|
|
134
|
-
not propose it again.
|
|
135
|
-
A hesitation, a condition or a question is not an answer: say what you understood in one
|
|
136
|
-
sentence and ask again.
|
|
137
|
-
|
|
138
|
-
**Produces:** the creator's answer recorded.
|
|
139
|
-
|
|
140
|
-
## Step 6 — Record what they approved
|
|
141
|
-
|
|
142
|
-
1. With `approved` or `approved_with_reservations`, call `memory.record` (`agent: izzy`,
|
|
143
|
-
`checkpoint`). With reservations, `except` is required (`except_required`): an empty list when
|
|
144
|
-
they leave nothing out, else the ids of the lessons, the retired lessons (`L-…`) and the actions
|
|
145
|
-
(`R-…-A1`) they want left out. It only removes, never adds, and is refused with a whole
|
|
146
|
-
approval (`except_not_allowed`). A lesson to retire or replace that is no longer active is
|
|
147
|
-
left alone (`skipped` in the result).
|
|
148
|
-
2. The engine writes `lessons.recorded` and one encrypted file per lesson in `memory/lessons/`; a
|
|
149
|
-
lesson replaced or retired stops being served. If it fails after the event (`error.memory_files_failed`),
|
|
150
|
-
call `memory.record` again on the same checkpoint: it rewrites the missing files, with no
|
|
151
|
-
second event.
|
|
152
|
-
3. Tell the creator in one line what was recorded (how many lessons, replaced, retired, left out).
|
|
153
|
-
4. Turn the approved actions into what they are: offer to defer the ones that are work (`plan.defer`),
|
|
154
|
-
and note the ones for the next sprint planning.
|
|
155
|
-
|
|
156
|
-
**Produces:** the lessons recorded and served to every agent from now on.
|
|
157
|
-
|
|
158
|
-
## Step 7 — Promote a lesson to the shared memory (when it applies)
|
|
159
|
-
|
|
160
|
-
A lesson that says nothing about this product (no name, path, story, architecture decision) and
|
|
161
|
-
would help in every product of the creator can be shared with all of them on this machine. Offer it
|
|
162
|
-
for at most one or two lessons per retrospective, and only after the lessons are recorded; the
|
|
163
|
-
creator may also ask for it any time.
|
|
164
|
-
|
|
165
|
-
1. Call `memory.read` again: a `source: common` lesson that says the opposite is **replaced**
|
|
166
|
-
(`replaces`, its `C-…` id), never left beside the new one.
|
|
167
|
-
2. Call `memory.promote_propose` with the `lesson` (its `L-…` id) and `replaces`. One lesson, one call:
|
|
168
|
-
never several at once. Refused with `already_promoted`, `promotion_pending`, `lesson_unknown`,
|
|
169
|
-
`common_unknown`, `common_unavailable` (this machine lacks its key for the shared memory).
|
|
170
|
-
3. With the checkpoint open, present the lesson in full and say plainly that **every product of
|
|
171
|
-
theirs on this machine will read it**. Ask once; record the answer with `chat.answer` as in
|
|
172
|
-
step 5 (`approved` or `rejected`).
|
|
173
|
-
4. Once approved, call `memory.promote` with the checkpoint. The entry is written, encrypted, in the
|
|
174
|
-
creator's folder on this machine (nothing is sent anywhere), and the entries it replaces are
|
|
175
|
-
superseded. Tell the creator in one line.
|
|
176
|
-
5. The shared memory belongs to this machine. Another machine starts from its own promotions: say
|
|
177
|
-
so if the creator works on several.
|
|
178
|
-
|
|
179
|
-
**Produces:** a lesson shared with all the creator's products on this machine, or nothing.
|
|
180
|
-
|
|
181
|
-
## Step 8 — Hand back
|
|
182
|
-
|
|
183
|
-
1. Call `story.result`: `complete`, a summary naming the retrospective and what was recorded, your
|
|
184
|
-
assumptions, the open questions (an action nobody owns), the conflicts (two lessons you could not
|
|
185
|
-
reconcile).
|
|
186
|
-
2. Call `agent.status` (`idle`).
|
|
187
|
-
3. Run `npx agentplugged next --json` and tell the creator what it says. Hand back to Noah, who
|
|
188
|
-
proposes what comes next; the creator decides (without Noah, the creator picks the next agent).
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
- **Step:** build, as Izzy (`agent: izzy` in every MCP call), on a finished epic or sprint.
|
|
13
|
+
- **Produces:** one retrospective proposed with `memory.retrospective`, recorded with
|
|
14
|
+
`memory.record` once the creator approves; optionally a promotion (`memory.promote_propose`,
|
|
15
|
+
`memory.promote`). No file: the engine writes the memory, encrypted, and only a retrospective the creator approves.
|
|
16
|
+
- **Reads:** `state.get`, `npx agentplugged history --story <e-s>`, `deferred list --all`, `trace`,
|
|
17
|
+
`memory.read`: facts, never your recollection.
|
|
18
|
+
- **Validation point:** the `memory` checkpoint opened by `memory.retrospective`.
|
|
19
|
+
|
|
20
|
+
## Steps
|
|
21
|
+
|
|
22
|
+
1. **Scope.** `agent.status` (`working`); Izzy not active: `story.result` `partial`. Scope
|
|
23
|
+
`{ kind: "epic", id }` or `{ kind: "sprint", id: "S-…" }` (from `npx agentplugged next --json`, else
|
|
24
|
+
the creator's), finished per `state.get`. A `memory` checkpoint open or approved
|
|
25
|
+
for it (`scope_taken`): say where it stands, stop. Sent back (`changes_requested`): read the note
|
|
26
|
+
(`checkpoint.resolution.note`); this run answers it.
|
|
27
|
+
2. **Facts.** The stories of the scope (`state.get { story: "<id>" }`) and the sources above. Two
|
|
28
|
+
occurrences make a candidate lesson.
|
|
29
|
+
3. **Memory first.** `memory.read`: active lessons and the last follow-ups (`actions`; say which
|
|
30
|
+
were done). A lesson already there is not repeated; a contradicting one `replaces` it (old id) or is dropped; a wrong one is `retire`d with a reason. Warning
|
|
31
|
+
`product_key_missing`: tell the creator (`npx agentplugged key import`),
|
|
32
|
+
stop.
|
|
33
|
+
4. **Write.** A lesson: title 120 characters at most, text 1,000 at most (what to do or avoid,
|
|
34
|
+
**why** by story id, **when**); a way of working, not a fact of the code; no secret nor personal
|
|
35
|
+
data; `agents` when not for everyone, `tags` (five at most). An action: one line of 300 characters with its `owner` (an agent
|
|
36
|
+
id or `creator`). At most 12 each of lessons, retirements, actions; fewer is better. `summary`: 1,500 characters at most.
|
|
37
|
+
5. **Propose, then ask once.** `memory.retrospective` with `scope`, `summary`, `lessons`, `retire`,
|
|
38
|
+
`actions`. `MEMORY_INVALID` wrote nothing: `scope_not_finished`, `scope_taken`, `lesson_unknown`,
|
|
39
|
+
`lesson_conflict`, `memory_full`. It returns the
|
|
40
|
+
checkpoint `G-…`, `R-…` and the lesson ids; the checkpoint shows **counts only** (encrypted). **Only now**, with the checkpoint open, present the
|
|
41
|
+
retrospective whole in the chat (numbered lessons with id, title, text; replacements; retirements; actions with owner), say what you recommend, ask once. Never with
|
|
42
|
+
`chat.ask` (counts only: `answered: false`). Ask them to name lessons by number (their words are in clear). `chat.answer` with their whole message: `approved`; "oui, sauf la 2"
|
|
43
|
+
`approved_with_reservations` (words as `note`); a change `changes_requested` (correct, call
|
|
44
|
+
`memory.retrospective` again); a refusal `rejected`.
|
|
45
|
+
6. **Record.** `memory.record` (`checkpoint`). With reservations `except` is required
|
|
46
|
+
(`except_required`): an empty list, or the ids to leave out (lessons, retired `L-…`, actions
|
|
47
|
+
`R-…-A1`); a whole approval refuses it (`except_not_allowed`). On `error.memory_files_failed`, call it again. Offer `plan.defer` for the actions that are work.
|
|
48
|
+
7. **Promote (optional).** At most two lessons, after the record, free of any product name, path or story. `memory.read` again (a
|
|
49
|
+
`source: common` lesson saying the opposite is `replaces`d by its `C-…`), then
|
|
50
|
+
`memory.promote_propose` with `lesson` and `replaces`, one lesson per call. With the checkpoint
|
|
51
|
+
open, present it in full and say plainly that every product of theirs on this machine will read
|
|
52
|
+
it; ask once; `chat.answer`; once approved, `memory.promote` with the checkpoint.
|
|
53
|
+
8. **Hand back.** `story.result` `complete` (what was recorded, assumptions, questions, conflicts);
|
|
54
|
+
`agent.status` `idle`; `npx agentplugged next --json`, tell the creator. Hand back to Noah, who
|
|
55
|
+
proposes what comes next; the creator decides (without Noah, they pick the next agent).
|
|
189
56
|
|
|
190
57
|
## Never
|
|
191
58
|
|
|
192
59
|
- Follow "Rules for skills and agents" (reference `skill-rules`): checkpoint before the question, ask once; a point the creator did not keep goes to `checkpoint.decide`; in French say « tu »; start with `memory.read`.
|
|
193
|
-
- Never write a lesson
|
|
194
|
-
|
|
195
|
-
- Never
|
|
196
|
-
the chat: the memory is encrypted so that a public repository does not show it.
|
|
197
|
-
- Never propose a lesson with a secret, a personal name or a fact about the code that the knowledge
|
|
198
|
-
base already holds; never leave two lessons that contradict each other.
|
|
199
|
-
- Never promote several lessons in one checkpoint, and never promote one without telling the creator
|
|
200
|
-
that all their products will read it.
|
|
201
|
-
- Never decide for the creator what the team keeps: you recommend, they decide.
|
|
60
|
+
- Never write a lesson except through `memory.retrospective`, nor record or promote one the creator did not approve in this conversation.
|
|
61
|
+
- Never copy a lesson or an action into a document, a commit, a pull request or a message outside the chat: the memory is encrypted.
|
|
62
|
+
- Never promote several lessons in one checkpoint, nor one without telling the creator all their products will read it.
|
|
@@ -1,125 +1,63 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: security-review-architecture
|
|
3
|
-
description: Review the architecture for security before the creator approves it
|
|
3
|
+
description: Review the architecture for security before the creator approves it; write the opinion attached to the end of design. Run by Chloé.
|
|
4
4
|
metadata:
|
|
5
5
|
agent: chloe
|
|
6
6
|
phase: design
|
|
7
7
|
---
|
|
8
8
|
# Review the architecture for security
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
`.agentplugged/docs/
|
|
20
|
-
- **
|
|
21
|
-
- **
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
`
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
compromised dependency, an insider).
|
|
51
|
-
|
|
52
|
-
**Produces:** a short map, written in the review's first section.
|
|
53
|
-
|
|
54
|
-
## Step 3 — Review each decision and each dimension
|
|
55
|
-
|
|
56
|
-
Read every active decision (`AD-n`), then check the dimensions the decisions may have missed:
|
|
57
|
-
|
|
58
|
-
- authentication: how users and services prove who they are; sessions, tokens, recovery;
|
|
59
|
-
- authorisation: who may do what, and where it is enforced (never only in the interface);
|
|
60
|
-
- data at rest and in transit: encryption, keys and who holds them, retention, deletion;
|
|
61
|
-
- secrets: where they live, who reads them, how they rotate; never in the code or a log;
|
|
62
|
-
- input crossing a trust boundary: validated where it enters, encoded where it leaves;
|
|
63
|
-
- dependencies and supply chain: maturity, maintenance, every version still `to verify`;
|
|
64
|
-
- logging and privacy: what is recorded, never a secret nor more personal data than needed;
|
|
65
|
-
- isolation: tenants, environments, least access for services and CI;
|
|
66
|
-
- abuse and availability: rate limits, quotas, costly operations open to anyone.
|
|
67
|
-
|
|
68
|
-
For each weakness, write a finding: its severity (`critical`, `high`, `medium`, `low`), the
|
|
69
|
-
decision it concerns (`AD-n`) or "missing decision", the concrete path an attacker would take,
|
|
70
|
-
and the fix you recommend to Alex. A worry without a path to harm is a note, not a finding.
|
|
71
|
-
|
|
72
|
-
**Produces:** the findings, ranked by severity, and the notes.
|
|
73
|
-
|
|
74
|
-
## Step 4 — Write the review
|
|
75
|
-
|
|
76
|
-
1. Write `.agentplugged/docs/security-reviews/architecture.md` from
|
|
77
|
-
`assets/architecture-review-template.md`. Drop the "Generated by agentplugged" comment line
|
|
78
|
-
if your copy carries one, and the template's guidance comments.
|
|
79
|
-
2. Header: `id: architecture-security-review`, `kind: note`, `owner: chloe` (the engine checks
|
|
80
|
-
it), and in `links` the `id` of the architecture, of the PRD, and of the threat model when it
|
|
81
|
-
exists.
|
|
82
|
-
3. End with the verdict: **no blocking finding**, or **blocking findings** (to fix before the
|
|
83
|
-
creator approves the architecture), and one sentence the creator can read on the checkpoint.
|
|
84
|
-
4. Never copy a secret, a token or a personal record into the review.
|
|
85
|
-
5. Run `npx agentplugged docs check`, and fix what it reports.
|
|
86
|
-
6. Commit the review, and only it, on the branch the architecture is committed on, the main
|
|
87
|
-
branch (`git add` that one file, then `git commit`, signed with the name and the email the
|
|
88
|
-
creator gave: constitution, "Talking with the creator", step 5; `git branch --show-current`
|
|
89
|
-
must name that branch, else ask the creator to check it out). The engine refuses a document in no commit
|
|
90
|
-
(`DOCUMENT_NOT_COMMITTED`): a `git hash-object -w` blob of an untracked file never suffices.
|
|
91
|
-
7. Keep the two ids Git gives once both files are committed:
|
|
92
|
-
`git rev-parse HEAD:.agentplugged/docs/security-reviews/architecture.md` (the review) and
|
|
93
|
-
`git rev-parse HEAD:.agentplugged/docs/architecture.md` (the architecture you reviewed). When
|
|
94
|
-
the architecture is not committed, or the working copy differs from the commit, say that Alex
|
|
95
|
-
commits it first and stop: you never edit nor commit it yourself. If it changed while you
|
|
96
|
-
worked, review the new version first.
|
|
97
|
-
|
|
98
|
-
**Produces:** the review, committed, with its verdict, and the two object ids.
|
|
99
|
-
|
|
100
|
-
## Step 5 — Hand over
|
|
101
|
-
|
|
102
|
-
1. Call `story.result` **without a story**, `complete`. The summary's **first line** is the
|
|
103
|
-
line the engine reads, exactly in this form, on one line:
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
- **Step:** design, as Chloé (`agent: chloe` in every MCP call). Her opinion travels with the
|
|
13
|
+
architecture: while she is active the engine refuses the end of design without it
|
|
14
|
+
(`SECURITY_REVIEW_MISSING`).
|
|
15
|
+
- **Produces:** `.agentplugged/docs/security-reviews/architecture.md` from
|
|
16
|
+
`assets/architecture-review-template.md`, and nothing else.
|
|
17
|
+
- **Reads:** the architecture by section (`docs read @decisions @stack`, then its outline); of the
|
|
18
|
+
PRD, the `ENF-n` (`docs read @constraints`); of the UX, the sign-in flows; the threat model
|
|
19
|
+
(`.agentplugged/docs/threat-model.md`) when it exists.
|
|
20
|
+
- **Validation point:** none of her own: Alex opens the end of design with this review attached.
|
|
21
|
+
- **Short path** (`full_path` in `journey.skipped`): the spec stands for the architecture; read
|
|
22
|
+
`references/spec-review.md`.
|
|
23
|
+
|
|
24
|
+
## Steps
|
|
25
|
+
|
|
26
|
+
1. **Start.** `agent.status` (`working`); `state.get`: `phase.current` must be `design`, else say
|
|
27
|
+
which and stop. No architecture: Alex writes it first, stop. Never open
|
|
28
|
+
`.agentplugged/docs/qa-reviews/`: your review stays your own.
|
|
29
|
+
2. **Map.** Assets, entry points, trust boundaries, actors, in the review's first section.
|
|
30
|
+
3. **Review.** Every active `AD-n`, then the dimensions the decisions missed: authentication,
|
|
31
|
+
authorisation (never only in the interface), data at rest and in transit, secrets, input at
|
|
32
|
+
trust boundaries, dependencies and supply chain, logging and privacy, isolation, abuse and
|
|
33
|
+
availability. A finding has a severity (`critical`, `high`, `medium`, `low`), the decision it
|
|
34
|
+
concerns (`AD-n` or "missing decision"), the path an attacker would take, and the fix
|
|
35
|
+
recommended to Alex. A worry without a path to harm is a note.
|
|
36
|
+
4. **Write.** From the template; drop the "Generated by agentplugged" line. Header
|
|
37
|
+
`id: architecture-security-review`, `kind: note`, `owner: chloe`, `links` to the architecture,
|
|
38
|
+
the PRD and the threat model if any. End with the verdict (**no blocking finding** or
|
|
39
|
+
**blocking findings**, to fix before approval) and one sentence for the checkpoint. Never copy a
|
|
40
|
+
secret or a personal record.
|
|
41
|
+
5. **Review gate.** `npx agentplugged docs check` until clean.
|
|
42
|
+
6. **Commit.** The review only, on the branch the architecture is committed on
|
|
43
|
+
(`git branch --show-current`), signed with the creator's name and email (constitution,
|
|
44
|
+
"Talking with the creator", step 5). A document in no commit is refused
|
|
45
|
+
(`DOCUMENT_NOT_COMMITTED`). Keep `git rev-parse HEAD:.agentplugged/docs/security-reviews/architecture.md`
|
|
46
|
+
and `git rev-parse HEAD:.agentplugged/docs/architecture.md`. Architecture not committed or
|
|
47
|
+
changed in the working copy: Alex commits it first, stop; you never edit nor commit it.
|
|
48
|
+
7. **Report.** `story.result` **without a story**, `complete`; the **first line** of the summary,
|
|
49
|
+
exactly, on one line (the engine reads it):
|
|
104
50
|
|
|
105
51
|
```text
|
|
106
52
|
Architecture security review: verdict=<no-blocking|blocking> findings=<n> blocking=<n> review=<review id> architecture=<architecture id>
|
|
107
53
|
```
|
|
108
54
|
|
|
109
|
-
`
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
2. Call `agent.status` (`idle`).
|
|
116
|
-
3. Hand back to Noah with what comes next, for him to propose it; the creator decides (without
|
|
117
|
-
Noah, tell the creator). You never call another agent:
|
|
118
|
-
- Alex acts on the findings: changing the architecture belongs to him alone;
|
|
119
|
-
- when the architecture changes, the creator calls you again: update this same review and
|
|
120
|
-
submit again; a review of an older version is refused at the end of the phase;
|
|
121
|
-
- then Alex opens the end of the design phase, with the architecture and this review
|
|
122
|
-
attached, for the creator, as technical lead, to approve.
|
|
55
|
+
`blocking` counts the findings that block; `verdict=blocking` exactly when it is above 0; the
|
|
56
|
+
ids are the two of step 6. Then the findings by severity, assumptions, questions, conflicts.
|
|
57
|
+
A result without that first line (an audit, the threat model) never counts as the review.
|
|
58
|
+
`agent.status` `idle`. Hand back to Noah, never call another agent: Alex acts on the findings;
|
|
59
|
+
if the architecture changes, the creator calls you again to update this review (an older one is
|
|
60
|
+
refused); then Alex opens the end of design with both attached.
|
|
123
61
|
|
|
124
62
|
## Never
|
|
125
63
|
|
|
@@ -1,48 +1,37 @@
|
|
|
1
1
|
# Reviewing the design part of the spec (short path)
|
|
2
2
|
|
|
3
|
-
Read when `state.next` says `step: security_review` and `full_path` is in `journey.skipped`:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
skill, same result, same consequences as for an architecture; only the input and the size change.
|
|
3
|
+
Read when `state.next` says `step: security_review` and `full_path` is in `journey.skipped`: no
|
|
4
|
+
architecture exists, `.agentplugged/docs/spec.md` stands for it (its `AD-n`, `ENF-n`, scope). The
|
|
5
|
+
phase is not `design`: ignore that check. Same result and consequences as the architecture.
|
|
7
6
|
|
|
8
7
|
## Steps 1 to 4, for the spec
|
|
9
8
|
|
|
10
|
-
1. `agent.status` (`working
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
A short pass is a review, never a skipped one: the review file and the result are always there.
|
|
26
|
-
4. Write `.agentplugged/docs/security-reviews/spec.md` from `assets/architecture-review-template.md`
|
|
27
|
-
with `id: spec-security-review`, `kind: note`, `owner: chloe`, `links` naming the spec's `id`;
|
|
28
|
-
the findings cite `AD-n`, `ENF-n` or "missing decision". Same checks, same commit as step 4.
|
|
29
|
-
For step 4.7 the id of the reviewed document is
|
|
30
|
-
`git rev-parse HEAD:.agentplugged/docs/spec.md`. The engine reads the file back: it must be
|
|
31
|
-
in the working copy, say `owner: chloe`, and be the version the result cites.
|
|
9
|
+
1. `agent.status` (`working`), `state.get`. Read the spec and nothing else. Spec not committed or
|
|
10
|
+
changed in the working copy: Maya commits it first; you never edit nor commit it.
|
|
11
|
+
2. **Size the pass** from the spec alone, and say which in the review's first line:
|
|
12
|
+
- *Short pass*: no `AD-n`, `sensitive` empty in its scope, no security `ENF-n`, and no mention
|
|
13
|
+
of personal data, payments, accounts or credentials (else a full pass): secrets, input at a
|
|
14
|
+
trust boundary, dependencies (versions to verify), what is logged. Ten to fifteen lines in all.
|
|
15
|
+
- *Full pass* otherwise: the map (assets, entry points, trust boundaries, actors) read from the
|
|
16
|
+
spec, then each `AD-n` and each missed dimension, with `sensitive` kinds and security `ENF-n`
|
|
17
|
+
as what is protected.
|
|
18
|
+
A short pass is a review, never a skipped one: the file and the result are always there.
|
|
19
|
+
3. Write `.agentplugged/docs/security-reviews/spec.md` from the template: `id: spec-security-review`,
|
|
20
|
+
`kind: note`, `owner: chloe`, `links` naming the spec's `id`; findings cite `AD-n`, `ENF-n` or
|
|
21
|
+
"missing decision". Same checks, same commit. The reviewed id is
|
|
22
|
+
`git rev-parse HEAD:.agentplugged/docs/spec.md`; the engine reads the file back: in the working
|
|
23
|
+
copy, `owner: chloe`, the version the result cites.
|
|
32
24
|
|
|
33
|
-
##
|
|
25
|
+
## The result
|
|
34
26
|
|
|
35
|
-
The first line
|
|
36
|
-
|
|
37
|
-
changes before the stories are cut: update the same review and submit again.
|
|
27
|
+
The same first line, unchanged: in `architecture=<blob>`, put the spec's Git blob id. The engine
|
|
28
|
+
calls you again when the spec changes before the stories are cut: update the same review.
|
|
38
29
|
|
|
39
30
|
## Consequences
|
|
40
31
|
|
|
41
|
-
- No blocking finding: Noah proposes the breakdown; the findings stay in the review
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
the
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
brief, the PRD and the architecture) and `accept` (the creator accepts the risk in their own
|
|
48
|
-
words; the only answer that releases the stories). Never cut nor change anything yourself.
|
|
32
|
+
- No blocking finding: Noah proposes the breakdown; the findings stay in the review.
|
|
33
|
+
- Blocking findings: the engine holds the stories. After the result, open a `decision` checkpoint
|
|
34
|
+
(high risk, no story, findings in the summary) with options whose ids are exactly `fix` (Maya
|
|
35
|
+
corrects the spec, you review the new version), `full` (`step_resume` `full_path`: the spec
|
|
36
|
+
becomes the base of the brief, PRD and architecture) and `accept` (the creator accepts the risk
|
|
37
|
+
in their own words; the only answer that releases the stories). Never cut nor change anything.
|