fullstack-agentic-flow 2.0.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/LICENSE +21 -0
- package/README.md +348 -0
- package/dist/src/cli/args.js +74 -0
- package/dist/src/cli/commands/doctor.js +133 -0
- package/dist/src/cli/commands/init.js +103 -0
- package/dist/src/cli/commands/shared.js +20 -0
- package/dist/src/cli/commands/tools.js +21 -0
- package/dist/src/cli/commands/update.js +21 -0
- package/dist/src/cli/main.js +6 -0
- package/dist/src/cli/output.js +11 -0
- package/dist/src/cli/prompter.js +13 -0
- package/dist/src/cli/report.js +13 -0
- package/dist/src/cli/run.js +48 -0
- package/dist/src/domain/canon-mapping.js +26 -0
- package/dist/src/domain/claude-md-mode.js +17 -0
- package/dist/src/domain/enum-parse.js +9 -0
- package/dist/src/domain/errors.js +13 -0
- package/dist/src/domain/pipeline-config.js +58 -0
- package/dist/src/domain/runtime.js +19 -0
- package/dist/src/domain/tool.js +129 -0
- package/dist/src/domain/topology.js +39 -0
- package/dist/src/install/adapters.js +39 -0
- package/dist/src/install/applier.js +150 -0
- package/dist/src/install/detect.js +70 -0
- package/dist/src/install/managed-section.js +35 -0
- package/dist/src/install/manifest.js +63 -0
- package/dist/src/install/planned-file.js +77 -0
- package/dist/src/install/planner.js +139 -0
- package/dist/src/install/rules-preset.js +37 -0
- package/dist/src/install/setup-guide.js +60 -0
- package/dist/src/io/fs.js +39 -0
- package/dist/src/io/paths.js +6 -0
- package/dist/src/io/shell.js +25 -0
- package/dist/src/registry/commands.js +52 -0
- package/dist/src/registry/subagents.js +52 -0
- package/dist/src/registry/tools.js +99 -0
- package/package.json +53 -0
- package/payload/ai-agents/agents/00-bootstrap.md +473 -0
- package/payload/ai-agents/agents/00a-scaffold.md +295 -0
- package/payload/ai-agents/agents/00b-module-scaffold.md +108 -0
- package/payload/ai-agents/agents/01-intake.md +308 -0
- package/payload/ai-agents/agents/01b-impact-analysis.md +274 -0
- package/payload/ai-agents/agents/02a-dependency-map.md +247 -0
- package/payload/ai-agents/agents/02b-backend-contract.md +434 -0
- package/payload/ai-agents/agents/02c-ui-contract.md +367 -0
- package/payload/ai-agents/agents/02d-interface-seam.md +373 -0
- package/payload/ai-agents/agents/03a-backend-sequence.md +233 -0
- package/payload/ai-agents/agents/03b-ui-sequence.md +230 -0
- package/payload/ai-agents/agents/04a-backend-implementer.md +290 -0
- package/payload/ai-agents/agents/04b-ui-implementer.md +302 -0
- package/payload/ai-agents/agents/05-ci-validator.md +125 -0
- package/payload/ai-agents/agents/06-qa-spec.md +249 -0
- package/payload/ai-agents/agents/07-security.md +228 -0
- package/payload/ai-agents/agents/08-performance.md +208 -0
- package/payload/ai-agents/agents/09a-feature-notes.md +156 -0
- package/payload/ai-agents/agents/09b-release.md +111 -0
- package/payload/ai-agents/architecture-context.template.md +554 -0
- package/payload/ai-agents/archive/README.md +22 -0
- package/payload/ai-agents/canon/backend-canon.md +295 -0
- package/payload/ai-agents/canon/frontend-canon.md +47 -0
- package/payload/ai-agents/canon/typed-data.md +158 -0
- package/payload/ai-agents/observations/README.md +11 -0
- package/payload/ai-agents/scripts/check-test-with-change.mjs +103 -0
- package/payload/ai-agents/scripts/check-typed-boundaries.mjs +329 -0
- package/payload/ai-agents/scripts/lib/config.mjs +63 -0
- package/payload/ai-agents/scripts/lib/glob.mjs +40 -0
- package/payload/ai-agents/state/README.md +108 -0
- package/payload/ai-agents/state/current-stage.md +10 -0
- package/payload/ai-agents/templates/README.md +22 -0
- package/payload/ai-agents/templates/ci/github-actions.rules.yml +35 -0
- package/payload/ai-agents/templates/ci/gitlab-ci.rules.yml +30 -0
- package/payload/ai-agents/toolchain.md +214 -0
- package/payload/commands/bootstrap.md +17 -0
- package/payload/commands/contract.md +64 -0
- package/payload/commands/finalize.md +26 -0
- package/payload/commands/impact.md +25 -0
- package/payload/commands/implement.md +58 -0
- package/payload/commands/intake.md +16 -0
- package/payload/commands/perf.md +20 -0
- package/payload/commands/qa.md +15 -0
- package/payload/commands/release.md +22 -0
- package/payload/commands/resume.md +52 -0
- package/payload/commands/scaffold-module.md +20 -0
- package/payload/commands/scaffold.md +35 -0
- package/payload/commands/seam.md +28 -0
- package/payload/commands/security.md +16 -0
- package/payload/commands/sequence.md +22 -0
- package/payload/commands/status.md +37 -0
- package/payload/legacy/v1-checksums.json +197 -0
- package/payload/root/contracts-README.md +19 -0
- package/payload/root/pipeline-section.md +33 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Verify `.ai-agents/state/current-stage.md` shows `gate-1-approved`. If not, stop
|
|
2
|
+
and tell the user to approve the contracts at Gate 1 first.
|
|
3
|
+
|
|
4
|
+
Read the feature's **Tracks** value, then launch **in parallel**:
|
|
5
|
+
|
|
6
|
+
| Agent | Instructions | Runs when |
|
|
7
|
+
|-------|-------------|-----------|
|
|
8
|
+
| 03a backend-sequence | `.ai-agents/agents/03a-backend-sequence.md` | tracks is `backend` or `both` |
|
|
9
|
+
| 03b ui-sequence | `.ai-agents/agents/03b-ui-sequence.md` | tracks is `ui` or `both` |
|
|
10
|
+
|
|
11
|
+
Both emit structured output through the `output_task_sequence` tool schema
|
|
12
|
+
defined in their instructions. Do not accept free-text JSON — parse failures here
|
|
13
|
+
are silent and corrupt the plan.
|
|
14
|
+
|
|
15
|
+
Both append to `.ai-agents/state/current-plan.md` under their own headings.
|
|
16
|
+
Neither may overwrite the dependency map or the other's section.
|
|
17
|
+
|
|
18
|
+
There is no gate after sequencing. The human gate is the diff review after each
|
|
19
|
+
commit.
|
|
20
|
+
|
|
21
|
+
When both finish, tell the user to run `/implement` and name the first available
|
|
22
|
+
task and its track.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
Print something the user can read in five seconds. Read
|
|
2
|
+
`.ai-agents/state/current-stage.md` and `current-plan.md`, and run the project's
|
|
3
|
+
version control to get recent history.
|
|
4
|
+
|
|
5
|
+
## Format
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
FEATURE {name} ({slug}) TRACKS {backend | ui | both}
|
|
9
|
+
STAGE {stage} GATE {open gate, or —}
|
|
10
|
+
RISK {L0–L3 — driving dimension, or "not assessed"} TOPOLOGY {from §1.1}
|
|
11
|
+
|
|
12
|
+
BACKEND ▓▓▓▓▓░░░░░ {n}/{total} next: task {n} — {title}
|
|
13
|
+
UI ▓▓▓░░░░░░░ {n}/{total} next: task {n} — {title} [blocked on backend {n}]
|
|
14
|
+
|
|
15
|
+
RECENT {last 5 commits on the feature branch, one line each}
|
|
16
|
+
|
|
17
|
+
TDD {n} tests logged red → green this feature
|
|
18
|
+
FLAGS {critical findings, blockers, unresolved seam decisions, escapes — or "none"}
|
|
19
|
+
|
|
20
|
+
NEXT {the single command to run}
|
|
21
|
+
NOTES {changesets waiting for release: n in .ai-agents/changes/}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Omit a track's row entirely if the feature does not use it.
|
|
25
|
+
|
|
26
|
+
If no architecture context exists, print only that, plus which command comes
|
|
27
|
+
next: `/scaffold` when the repository is empty or holds only framework default
|
|
28
|
+
output, `/bootstrap` when it has real code.
|
|
29
|
+
|
|
30
|
+
If the stage is `scaffolded`, print the scaffold commits and remind the user that
|
|
31
|
+
reviewing the backend and UI slice files is Gate A — those become the exemplars
|
|
32
|
+
every future feature imitates.
|
|
33
|
+
|
|
34
|
+
If no feature is in progress, print the stage as `idle` and point at `/intake`.
|
|
35
|
+
|
|
36
|
+
Lead with flags when any exist. A blocked release matters more than progress
|
|
37
|
+
bars.
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
{
|
|
2
|
+
"pipelineVersion": "1.0.0",
|
|
3
|
+
"files": [
|
|
4
|
+
{
|
|
5
|
+
"path": ".ai-agents/agents/00-bootstrap.md",
|
|
6
|
+
"sha256": "2f3e7eac18ec20fe6767f8cd2bf6384f3fbe515dc9d671ed2f4e28cc054e6c85"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"path": ".ai-agents/agents/00a-scaffold.md",
|
|
10
|
+
"sha256": "79b473c723d3f2f6dd7c70fd7af5f91249f1f7ee438c670daf67a725b1d448ee"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"path": ".ai-agents/agents/01-intake.md",
|
|
14
|
+
"sha256": "51dd0e440faa4bdbe78d7aa2a3b0ed4976036eddc1cfe50ac7a985c302a6aac4"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"path": ".ai-agents/agents/02a-dependency-map.md",
|
|
18
|
+
"sha256": "e3de703cb82c5a5e23f8ab79e2c13a6f626322c83695c48c0d982d899b4e8433"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"path": ".ai-agents/agents/02b-backend-contract.md",
|
|
22
|
+
"sha256": "b7a254d006013cdbf8b092d5cefc8c96492b9d7ce67420ba560f1e313dc8f38f"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"path": ".ai-agents/agents/02c-ui-contract.md",
|
|
26
|
+
"sha256": "dc923be0349a20728c933eb5348b4787356c55bbef88fa72c0f76e5dfbbd9b64"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"path": ".ai-agents/agents/02d-api-seam.md",
|
|
30
|
+
"sha256": "c423e7a8e6681ff0af72acb38bddcbf19cf3b913ff269a19a4d90ab9f23c1789"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"path": ".ai-agents/agents/03a-backend-sequence.md",
|
|
34
|
+
"sha256": "ab2513b37e3172de4177827f1690c40c57b0ed91aaf3467e5d5a3161d1dc6c61"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"path": ".ai-agents/agents/03b-ui-sequence.md",
|
|
38
|
+
"sha256": "0b1e744a25ce638ade451a2e6a31f6101768fca8052e25ea0d1beccf330720fb"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"path": ".ai-agents/agents/04a-backend-implementer.md",
|
|
42
|
+
"sha256": "e409341695e802a7b0ba4c44bc4bd8d823817274113007857fa981eeaec17649"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"path": ".ai-agents/agents/04b-ui-implementer.md",
|
|
46
|
+
"sha256": "4bdb435cb7b13b6717dc5ea3c6279ebb904898627b232cd7558ccc5e08fd598f"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"path": ".ai-agents/agents/05-ci-validator.md",
|
|
50
|
+
"sha256": "ba9df6d8d09374a82e25a94f845b6f04031f7b0d32fae65944f6830619883ac8"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"path": ".ai-agents/agents/06-qa-spec.md",
|
|
54
|
+
"sha256": "355ffc652c40ad273f51bada47166cf4aca4b4594c9068e1cc01b2f4c6bb9530"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"path": ".ai-agents/agents/07-security.md",
|
|
58
|
+
"sha256": "733905a73a7692ce52737d57883f7903f864d05ac5b970b7a93dbce10b2db53a"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"path": ".ai-agents/agents/08-performance.md",
|
|
62
|
+
"sha256": "007f19afccc7247795a289be4d2e83dc860da15cfcfe1b6ca74ca99b3f1e061a"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"path": ".ai-agents/agents/09-changelog.md",
|
|
66
|
+
"sha256": "fd21d8aa74d728b0ef058a8659b2cd668e2eb79af348a3ceb3557309c17fc3cc"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"path": ".ai-agents/architecture-context.template.md",
|
|
70
|
+
"sha256": "995870dbf8f2d1045477e93cac576fbd7967279ed5758b9ac12f6881003dc23e"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"path": ".ai-agents/archive/README.md",
|
|
74
|
+
"sha256": "62c301e7409d6821cbc736705a760e3523aad98bf9491680f53d2778a7e15b69"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"path": ".ai-agents/state/README.md",
|
|
78
|
+
"sha256": "5643812da7396d994c88734a3bb4f419434e8ffd7f71510da543f96f66ec9c93"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"path": ".ai-agents/state/current-stage.md",
|
|
82
|
+
"sha256": "88c685cd71ca892facb07465f0d0afb8b5f89e52566be2f06147321f55f0d0e0"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"path": ".ai-agents/templates/README.md",
|
|
86
|
+
"sha256": "fbcd5d003f2e21dc4545042037262ca45466477ebd78fb617c55f06ef145cbb8"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"path": ".claude/agents/api-seam.md",
|
|
90
|
+
"sha256": "9766f84775d318d69ccc422d726464fe331c266f5632faefb5b7d48b81f2a3c5"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"path": ".claude/agents/backend-contract.md",
|
|
94
|
+
"sha256": "6a8ed62eb33f1544003d61dd8219e98a5451c64a404928f8e4620f054e728a84"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"path": ".claude/agents/backend-implementer.md",
|
|
98
|
+
"sha256": "38634b77a48814508f67750b05c3808e47b4964fa9e3ca04053846cf4bc96b9a"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"path": ".claude/agents/backend-sequence.md",
|
|
102
|
+
"sha256": "0ad71b64ec824412aef1e9851818b0c1e69f21300ac572e252a850a9c6a14e26"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"path": ".claude/agents/bootstrap.md",
|
|
106
|
+
"sha256": "8a278e1e0dab44e799cb5d41241d70816edc87a16c59dc32eb33d911127afbee"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"path": ".claude/agents/changelog.md",
|
|
110
|
+
"sha256": "0405e903816321a47f4a0536bc5e32c55bf09e0ebae932cbcd10951b8c1d70e6"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"path": ".claude/agents/dependency-map.md",
|
|
114
|
+
"sha256": "455e27c43df38fed8b6c4fdd48afd8e3db964fdb7500a862c1eb1a5a8e40edd1"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"path": ".claude/agents/intake.md",
|
|
118
|
+
"sha256": "74f90a4f5a66094c68da9875535af9d3ae5f277598e19e586f3ed95409b0e9ab"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"path": ".claude/agents/performance-review.md",
|
|
122
|
+
"sha256": "0bc9d2c953bbead0b55e010a2b9c660fb969e54bd4daea4f542057cd403ae828"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"path": ".claude/agents/qa-spec.md",
|
|
126
|
+
"sha256": "678c31146a1db230945846d54fd16784d91413b0bdc618dfe21d7b817bebb426"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"path": ".claude/agents/scaffold.md",
|
|
130
|
+
"sha256": "5fa89f80f02ad55d131021b7758767356bc510aedcce3b494768112f303532c8"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"path": ".claude/agents/security-review.md",
|
|
134
|
+
"sha256": "e2bee586b8e3aef56f28deddaba385352940943c614a5027775a4fb384dfbd1a"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"path": ".claude/agents/ui-contract.md",
|
|
138
|
+
"sha256": "fb8809b6262ada18b14f1e411ab6b26ee6a4b03cbbd8da447f2bdf9c848627fa"
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"path": ".claude/agents/ui-implementer.md",
|
|
142
|
+
"sha256": "d573b37f0b4a040de48b190518f7ca4b37034843b8cecfe04d081ffb79e627a5"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"path": ".claude/agents/ui-sequence.md",
|
|
146
|
+
"sha256": "e003e7b7cd1bb815adeb30e846e3353231bcf1a73809989b8dbdaab9c89ded4e"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"path": ".claude/commands/bootstrap.md",
|
|
150
|
+
"sha256": "c06a853c9c6d6b543275a548cdb809a46b2e8343554c921c5583c5d6c0346b35"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"path": ".claude/commands/changelog.md",
|
|
154
|
+
"sha256": "37ca7d2dbf92c4482c71790e0a21873d014cf955c5b8a45d94c84fe502fbb632"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"path": ".claude/commands/contract.md",
|
|
158
|
+
"sha256": "41a3668f5f91b09aefc14fd73c81d2b6ab13467337103e69e1270136c183129d"
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"path": ".claude/commands/implement.md",
|
|
162
|
+
"sha256": "923dbbbdca92a45ba1ae34aecc571ede340d59be6e9099325d1f140e43bb9615"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"path": ".claude/commands/intake.md",
|
|
166
|
+
"sha256": "d63e1b09579f50ee425ebdb1994adeafdb69f786d0a144407326ff237d84ce3f"
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"path": ".claude/commands/perf.md",
|
|
170
|
+
"sha256": "e83cff08f98b3e153397d7ce67c5414fd7444b444084c36272cb43ec049e5291"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"path": ".claude/commands/qa.md",
|
|
174
|
+
"sha256": "b55b37d6b22b55a76d422f55f081665b05c2eb981fe6d5dd2bbaa1b2a6771457"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"path": ".claude/commands/resume.md",
|
|
178
|
+
"sha256": "dd4493ac5be7afd875af878a66591c485f871292a5677362bae87d70ecf7b347"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"path": ".claude/commands/scaffold.md",
|
|
182
|
+
"sha256": "b2b4429ccd03421a41f4c43dfccae5aa49421886a0dde0a266cee84a3949f062"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"path": ".claude/commands/security.md",
|
|
186
|
+
"sha256": "3a3e602839c98f3a7a1fbe5e3e2ac2a02d2548c857cffb3c7b8073c7e91838e4"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"path": ".claude/commands/sequence.md",
|
|
190
|
+
"sha256": "87d028af3bed4d17ce022d7e63f98e728291828ffe876d6412241a2d7a1a402e"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"path": ".claude/commands/status.md",
|
|
194
|
+
"sha256": "33c177d9cedbcdf60433237cd6f3ee6b68e7cabcb22147dbe8b0edbde581417c"
|
|
195
|
+
}
|
|
196
|
+
]
|
|
197
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Contracts
|
|
2
|
+
|
|
3
|
+
Cross-repository interface contracts, one directory per feature slug:
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
contracts/{slug}/
|
|
7
|
+
├── seam.md the frozen seam, verbatim
|
|
8
|
+
├── openapi.yaml | schema.graphql | … machine-readable fragment
|
|
9
|
+
└── VERSION semver, timestamp, sha256 of the files above
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
- **Backend repositories** (`split-backend`) write these with `/seam export`
|
|
13
|
+
(agent 02d does it at Gate 1). They are a published interface: they stay
|
|
14
|
+
after the feature is released.
|
|
15
|
+
- **Frontend repositories** (`split-frontend`) receive them with
|
|
16
|
+
`/seam import {path-or-url}` and never edit them. A missing field is a
|
|
17
|
+
counterpart request to the backend repository.
|
|
18
|
+
|
|
19
|
+
CI verifies every `VERSION` checksum on each push.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
## Delivery pipeline (fullstack-agentic-flow)
|
|
2
|
+
|
|
3
|
+
This repository uses a gated, multi-agent delivery pipeline. Its instructions
|
|
4
|
+
live in `.ai-agents/`; this section only points at them.
|
|
5
|
+
|
|
6
|
+
**Before any feature work**, read in this order:
|
|
7
|
+
|
|
8
|
+
1. `.ai-agents/architecture-context.md` — this repository's topology, canon
|
|
9
|
+
mapping, conventions, and rules (written by `/bootstrap`)
|
|
10
|
+
2. `.ai-agents/state/current-stage.md` — where the current feature is
|
|
11
|
+
3. `.ai-agents/toolchain.md` — which skills to use, and what outranks what
|
|
12
|
+
|
|
13
|
+
**Non-negotiable, in every task:**
|
|
14
|
+
|
|
15
|
+
- **Test first.** Write the test, run it, see it fail for the stated reason,
|
|
16
|
+
then implement. Log red → green in `.ai-agents/state/tdd-log.md`.
|
|
17
|
+
- **Typed data.** No untyped arrays, maps, `mixed`, or `any` across a boundary.
|
|
18
|
+
Named Data classes instead, even when that means many small ones
|
|
19
|
+
(`.ai-agents/canon/typed-data.md`).
|
|
20
|
+
- **Canon placement.** Backend code goes in the layer
|
|
21
|
+
`.ai-agents/canon/backend-canon.md` and architecture-context §5.0 say.
|
|
22
|
+
- **One task, one commit, then stop.** Never push; a human reviews every diff.
|
|
23
|
+
- **Everything happens before the merge.** Impact verification, QA, security,
|
|
24
|
+
performance, the release note and the archive all land on the branch. Once it
|
|
25
|
+
merges, the feature is done.
|
|
26
|
+
- **Stop rather than improvise** when a contract or the frozen seam is wrong.
|
|
27
|
+
|
|
28
|
+
**Precedence when instructions conflict:** the human at a gate → pipeline state
|
|
29
|
+
files → architecture context and canon → the agent file for this step →
|
|
30
|
+
discipline skills (superpowers, ponytail, impeccable) → memory and graph recall.
|
|
31
|
+
Memory and graphs are recall, never truth.
|
|
32
|
+
|
|
33
|
+
Pipeline commands:
|