formwork-kit 0.1.0__py3-none-any.whl

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.
Files changed (137) hide show
  1. formwork_cli/__init__.py +326 -0
  2. formwork_cli/kit/COSTS.md +111 -0
  3. formwork_cli/kit/adapters/claude-code/README.md +53 -0
  4. formwork_cli/kit/adapters/claude-code/settings.json +46 -0
  5. formwork_cli/kit/adapters/codex/README.md +43 -0
  6. formwork_cli/kit/adapters/cursor/README.md +45 -0
  7. formwork_cli/kit/adapters/gemini-cli/README.md +47 -0
  8. formwork_cli/kit/build +410 -0
  9. formwork_cli/kit/check/checks/config-shape +123 -0
  10. formwork_cli/kit/check/checks/decision-ids +159 -0
  11. formwork_cli/kit/check/checks/doc-links +133 -0
  12. formwork_cli/kit/check/checks/generated-current +74 -0
  13. formwork_cli/kit/check/checks/guard-wired +139 -0
  14. formwork_cli/kit/check/checks/kit-integrity +199 -0
  15. formwork_cli/kit/check/checks/predictions-first +127 -0
  16. formwork_cli/kit/check/checks/role-shape +172 -0
  17. formwork_cli/kit/check/checks/rule-labels +135 -0
  18. formwork_cli/kit/check/fixtures/config-shape/must-fail/documents-a-section-that-does-not-exist/.formwork.toml +5 -0
  19. formwork_cli/kit/check/fixtures/config-shape/must-fail/documents-a-section-that-does-not-exist/formwork/guide.md +13 -0
  20. formwork_cli/kit/check/fixtures/config-shape/must-fail/rules-as-a-switchboard/.formwork.toml +8 -0
  21. formwork_cli/kit/check/fixtures/config-shape/must-pass/layers-kept-apart/.formwork.toml +5 -0
  22. formwork_cli/kit/check/fixtures/decision-ids/must-fail/a-placeholder-shipped/docs/decisions/0003-still-pending.md +7 -0
  23. formwork_cli/kit/check/fixtures/decision-ids/must-fail/superseded-by-nothing/docs/decisions/0002-old.md +6 -0
  24. formwork_cli/kit/check/fixtures/decision-ids/must-fail/two-decisions-one-number/docs/decisions/0007-first.md +6 -0
  25. formwork_cli/kit/check/fixtures/decision-ids/must-fail/two-decisions-one-number/docs/decisions/0007-second.md +6 -0
  26. formwork_cli/kit/check/fixtures/decision-ids/must-pass/clean-numbering/docs/decisions/0001-the-first.md +6 -0
  27. formwork_cli/kit/check/fixtures/decision-ids/must-pass/clean-numbering/docs/decisions/0002-the-second.md +6 -0
  28. formwork_cli/kit/check/fixtures/decision-ids/must-pass/clean-numbering/docs/decisions/0003-the-third.md +6 -0
  29. formwork_cli/kit/check/fixtures/decision-ids/must-pass/nothing-recorded-yet/docs/decisions/README.md +3 -0
  30. formwork_cli/kit/check/fixtures/doc-links/must-fail/never-written/index.md +7 -0
  31. formwork_cli/kit/check/fixtures/doc-links/must-fail/renamed-file/architecture-notes.md +3 -0
  32. formwork_cli/kit/check/fixtures/doc-links/must-fail/renamed-file/guide.md +8 -0
  33. formwork_cli/kit/check/fixtures/doc-links/must-pass/links-resolve/architecture-notes.md +1 -0
  34. formwork_cli/kit/check/fixtures/doc-links/must-pass/links-resolve/guide.md +5 -0
  35. formwork_cli/kit/check/fixtures/generated-current/must-fail/a-generated-file-was-edited/.claude/agents/sample.md +22 -0
  36. formwork_cli/kit/check/fixtures/generated-current/must-fail/a-generated-file-was-edited/.codex/agents/sample.toml +22 -0
  37. formwork_cli/kit/check/fixtures/generated-current/must-fail/a-generated-file-was-edited/.formwork.toml +1 -0
  38. formwork_cli/kit/check/fixtures/generated-current/must-fail/a-generated-file-was-edited/.gemini/agents/sample.md +23 -0
  39. formwork_cli/kit/check/fixtures/generated-current/must-fail/a-generated-file-was-edited/formwork/build +349 -0
  40. formwork_cli/kit/check/fixtures/generated-current/must-fail/a-generated-file-was-edited/formwork/roles/method/sample.md +18 -0
  41. formwork_cli/kit/check/fixtures/generated-current/must-pass/generated-and-current/.claude/agents/sample.md +20 -0
  42. formwork_cli/kit/check/fixtures/generated-current/must-pass/generated-and-current/.codex/agents/sample.toml +22 -0
  43. formwork_cli/kit/check/fixtures/generated-current/must-pass/generated-and-current/.formwork.toml +1 -0
  44. formwork_cli/kit/check/fixtures/generated-current/must-pass/generated-and-current/.gemini/agents/sample.md +23 -0
  45. formwork_cli/kit/check/fixtures/generated-current/must-pass/generated-and-current/formwork/build +349 -0
  46. formwork_cli/kit/check/fixtures/generated-current/must-pass/generated-and-current/formwork/roles/method/sample.md +18 -0
  47. formwork_cli/kit/check/fixtures/generated-current/must-pass/nothing-is-generated-here/README.md +3 -0
  48. formwork_cli/kit/check/fixtures/guard-wired/must-fail/declared-but-no-file/.formwork.toml +1 -0
  49. formwork_cli/kit/check/fixtures/guard-wired/must-fail/file-but-not-wired/.claude/settings.json +1 -0
  50. formwork_cli/kit/check/fixtures/guard-wired/must-fail/file-but-not-wired/.formwork.toml +1 -0
  51. formwork_cli/kit/check/fixtures/guard-wired/must-pass/declared-and-wired/.claude/settings.json +1 -0
  52. formwork_cli/kit/check/fixtures/guard-wired/must-pass/declared-and-wired/.formwork.toml +1 -0
  53. formwork_cli/kit/check/fixtures/guard-wired/must-pass/nothing-declared/README.md +1 -0
  54. formwork_cli/kit/check/fixtures/kit-integrity/must-fail/a-check-went-missing/formwork/check/checks/still-here +2 -0
  55. formwork_cli/kit/check/fixtures/kit-integrity/must-fail/a-check-went-missing/state/fingerprints.txt +2 -0
  56. formwork_cli/kit/check/fixtures/kit-integrity/must-fail/a-guard-was-altered/formwork/guard/git-boundary +3 -0
  57. formwork_cli/kit/check/fixtures/kit-integrity/must-fail/a-guard-was-altered/state/fingerprints.txt +1 -0
  58. formwork_cli/kit/check/fixtures/kit-integrity/must-pass/everything-matches/formwork/guard/git-boundary +2 -0
  59. formwork_cli/kit/check/fixtures/kit-integrity/must-pass/everything-matches/state/fingerprints.txt +1 -0
  60. formwork_cli/kit/check/fixtures/predictions-first/must-fail/argued-with-no-predictions/docs/rounds/0004-the-storage-question/architect.md +3 -0
  61. formwork_cli/kit/check/fixtures/predictions-first/must-fail/argued-with-no-predictions/docs/rounds/0004-the-storage-question/researcher.md +3 -0
  62. formwork_cli/kit/check/fixtures/predictions-first/must-fail/argued-with-no-predictions/docs/rounds/0004-the-storage-question/round.md +4 -0
  63. formwork_cli/kit/check/fixtures/predictions-first/must-pass/a-round-that-has-not-argued-yet/docs/rounds/0006-not-started/round.md +3 -0
  64. formwork_cli/kit/check/fixtures/predictions-first/must-pass/no-rounds-at-all/docs/README.md +3 -0
  65. formwork_cli/kit/check/fixtures/predictions-first/must-pass/predictions-on-record/docs/rounds/0005-the-shape-of-a-brief/architect.md +3 -0
  66. formwork_cli/kit/check/fixtures/predictions-first/must-pass/predictions-on-record/docs/rounds/0005-the-shape-of-a-brief/predictions.md +4 -0
  67. formwork_cli/kit/check/fixtures/predictions-first/must-pass/predictions-on-record/docs/rounds/0005-the-shape-of-a-brief/researcher.md +3 -0
  68. formwork_cli/kit/check/fixtures/role-shape/must-fail/claims-a-grant-binds-everywhere/formwork/roles/README.md +6 -0
  69. formwork_cli/kit/check/fixtures/role-shape/must-fail/claims-a-grant-binds-everywhere/formwork/roles/complete.md +18 -0
  70. formwork_cli/kit/check/fixtures/role-shape/must-fail/missing-a-section/formwork/roles/vague.md +16 -0
  71. formwork_cli/kit/check/fixtures/role-shape/must-fail/spawn-without-being-lead/formwork/roles/eager.md +18 -0
  72. formwork_cli/kit/check/fixtures/role-shape/must-fail/two-roles-one-job/formwork/roles/first.md +18 -0
  73. formwork_cli/kit/check/fixtures/role-shape/must-fail/two-roles-one-job/formwork/roles/second.md +18 -0
  74. formwork_cli/kit/check/fixtures/role-shape/must-pass/well-formed/formwork/roles/complete.md +18 -0
  75. formwork_cli/kit/check/fixtures/rule-labels/must-fail/claims-enforcement-that-does-not-exist/formwork/rules/core.md +9 -0
  76. formwork_cli/kit/check/fixtures/rule-labels/must-fail/no-catches/formwork/rules/core.md +9 -0
  77. formwork_cli/kit/check/fixtures/rule-labels/must-fail/unlabelled/formwork/rules/core.md +7 -0
  78. formwork_cli/kit/check/fixtures/rule-labels/must-pass/well-formed/formwork/rules/core.md +10 -0
  79. formwork_cli/kit/check/run +340 -0
  80. formwork_cli/kit/check/test_gate.py +222 -0
  81. formwork_cli/kit/first-run.md +204 -0
  82. formwork_cli/kit/fw +121 -0
  83. formwork_cli/kit/glossary.md +160 -0
  84. formwork_cli/kit/guard/git-boundary +627 -0
  85. formwork_cli/kit/guard/protected-files +748 -0
  86. formwork_cli/kit/guard/quality-gate +260 -0
  87. formwork_cli/kit/guard/test_boundary.py +273 -0
  88. formwork_cli/kit/guard/test_protection.py +254 -0
  89. formwork_cli/kit/guard/test_quality_gate.py +156 -0
  90. formwork_cli/kit/install +395 -0
  91. formwork_cli/kit/limits.md +141 -0
  92. formwork_cli/kit/loop.md +82 -0
  93. formwork_cli/kit/roles/HOW-TO-ADD-A-ROLE.md +105 -0
  94. formwork_cli/kit/roles/TEMPLATE.md +26 -0
  95. formwork_cli/kit/roles/method/architect.md +269 -0
  96. formwork_cli/kit/roles/method/challenger.md +243 -0
  97. formwork_cli/kit/roles/method/lead.md +280 -0
  98. formwork_cli/kit/roles/method/record-keeper.md +206 -0
  99. formwork_cli/kit/roles/method/researcher.md +246 -0
  100. formwork_cli/kit/roles/method/reviewer.md +207 -0
  101. formwork_cli/kit/roles/packs/accessibility.md +236 -0
  102. formwork_cli/kit/roles/packs/ai.md +248 -0
  103. formwork_cli/kit/roles/packs/analyst.md +233 -0
  104. formwork_cli/kit/roles/packs/backend.md +425 -0
  105. formwork_cli/kit/roles/packs/brainstormer.md +190 -0
  106. formwork_cli/kit/roles/packs/data.md +212 -0
  107. formwork_cli/kit/roles/packs/devops.md +203 -0
  108. formwork_cli/kit/roles/packs/frontend.md +224 -0
  109. formwork_cli/kit/roles/packs/integrations.md +215 -0
  110. formwork_cli/kit/roles/packs/legal.md +251 -0
  111. formwork_cli/kit/roles/packs/marketing.md +206 -0
  112. formwork_cli/kit/roles/packs/mobile.md +202 -0
  113. formwork_cli/kit/roles/packs/performance.md +192 -0
  114. formwork_cli/kit/roles/packs/product.md +217 -0
  115. formwork_cli/kit/roles/packs/security.md +267 -0
  116. formwork_cli/kit/roles/packs/sre.md +203 -0
  117. formwork_cli/kit/roles/packs/tester.md +246 -0
  118. formwork_cli/kit/roles/packs/user-researcher.md +218 -0
  119. formwork_cli/kit/roles/packs/ux.md +205 -0
  120. formwork_cli/kit/roles/packs/visual.md +199 -0
  121. formwork_cli/kit/roles/packs/writer.md +198 -0
  122. formwork_cli/kit/round.md +131 -0
  123. formwork_cli/kit/rules/core.md +195 -0
  124. formwork_cli/kit/rules/full.md +493 -0
  125. formwork_cli/kit/templates/brief.md +68 -0
  126. formwork_cli/kit/templates/decision.md +93 -0
  127. formwork_cli/kit/templates/predictions.md +54 -0
  128. formwork_cli/kit/templates/report.md +52 -0
  129. formwork_cli/kit/templates/round.md +77 -0
  130. formwork_cli/kit/test_install.py +165 -0
  131. formwork_cli/kit/troubleshooting.md +247 -0
  132. formwork_cli/kit-page/FORMWORK.md +182 -0
  133. formwork_kit-0.1.0.dist-info/METADATA +308 -0
  134. formwork_kit-0.1.0.dist-info/RECORD +137 -0
  135. formwork_kit-0.1.0.dist-info/WHEEL +4 -0
  136. formwork_kit-0.1.0.dist-info/entry_points.txt +2 -0
  137. formwork_kit-0.1.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,247 @@
1
+ # When something goes wrong
2
+
3
+ Find the message you saw. Every entry says what happened, why, and what to do.
4
+
5
+ > [!TIP]
6
+ > **`command not found: formwork`?**
7
+ >
8
+ > Everything on this page also works with `formwork/fw` from the top of your
9
+ > project, and that needs nothing installed:
10
+ >
11
+ > ```
12
+ > formwork/fw check
13
+ > formwork/fw record
14
+ > ```
15
+ >
16
+ > **If you did install it and still get this**, pip put the command somewhere
17
+ > your shell does not look. It says so in a warning when it installs. Add that
18
+ > folder to your PATH, or use `pipx install formwork-kit` instead, which
19
+ > handles this for you.
20
+
21
+
22
+
23
+ If your problem is not here, it belongs here. Open an issue with the exact
24
+ message and it will be added.
25
+
26
+ ---
27
+
28
+ ## The gate is red
29
+
30
+ ### `kit-integrity: N protected file(s) differ from the record`
31
+
32
+ **What happened.** A file that enforces something has changed since the last
33
+ time you recorded it.
34
+
35
+ **Why.** Either you changed it on purpose, or something else did.
36
+
37
+ **What to do.** Look at what changed first:
38
+
39
+ ```
40
+ git diff <the file it named>
41
+ ```
42
+
43
+ If you meant it, record the new state:
44
+
45
+ ```
46
+ formwork record
47
+ ```
48
+
49
+ **Why you and not the agent.** Recording says every one of these files is as
50
+ you intend it. An agent that could do that could change a guard and then tell
51
+ the kit it was fine.
52
+
53
+ ### `no fingerprints recorded at ~/.formwork/fingerprints.txt`
54
+
55
+ **What happened.** There is no record to compare against.
56
+
57
+ **Why.** A fresh machine, a fresh clone, or you moved `FORMWORK_STATE_DIR`.
58
+
59
+ The record lives outside your project, one file per project, in
60
+ `~/.formwork/fingerprints/`. It does not travel with a clone, which is the
61
+ point: a record kept beside the thing it describes protects nothing.
62
+
63
+ **What to do.** Run the installer again. It takes the first record for you:
64
+
65
+ ```
66
+ formwork install --runtime claude-code
67
+ ```
68
+
69
+ ### `guard-wired: runtime 'X' is declared, but .../hooks.json does not exist`
70
+
71
+ **What happened.** Your settings say you use tool X, and the hooks for X are
72
+ not wired up.
73
+
74
+ **Why.** The kit ships a wiring file for Claude Code only.
75
+
76
+ **What to do.** Open your agent's page in `formwork/adapters/`. It says what to
77
+ put in that file. Red is correct until then: nothing is guarding you yet.
78
+
79
+ ### `doc-links: N link(s) point at nothing`
80
+
81
+ **What happened.** A markdown link points at a file that is not there.
82
+
83
+ **What to do.** Fix the link or create the file. The message gives you the file
84
+ and the line number.
85
+
86
+ ### `generated-current: N generated file(s) are not current`
87
+
88
+ **What happened.** You edited a role, or edited a generated copy by hand, or
89
+ deleted a role and left its copy behind.
90
+
91
+ **What to do.**
92
+
93
+ ```
94
+ formwork roles
95
+ ```
96
+
97
+ **If you edited a generated file by hand**, move your change into the source
98
+ file in `formwork/roles/` first. The next regeneration will throw your edit
99
+ away.
100
+
101
+ **If you deleted a role**, `formwork roles` will not clean up after you. Delete
102
+ the generated copy too, then run it:
103
+
104
+ ```
105
+ rm .claude/agents/<the role>.md
106
+ formwork roles
107
+ ```
108
+
109
+ ### `role-shape: N problem(s) across N role(s)`
110
+
111
+ **What happened.** A role is missing something, or two roles claim the same
112
+ job.
113
+
114
+ **What to do.** The message names the file and the problem. Every role needs
115
+ four frontmatter fields and five sections. Copy `formwork/roles/TEMPLATE.md` if
116
+ you are unsure.
117
+
118
+ ### `N check(s) present but not executable`
119
+
120
+ **What happened.** A check file lost its execute permission.
121
+
122
+ **What to do.**
123
+
124
+ ```
125
+ chmod +x formwork/check/checks/*
126
+ ```
127
+
128
+ **Why this stops everything.** A check that cannot run has not passed. Before
129
+ this was caught, the gate reported green while quietly skipping it.
130
+
131
+ ---
132
+
133
+ ## A command was refused
134
+
135
+ ### `REFUSED by the version-control boundary`
136
+
137
+ **What happened.** The agent tried to commit, push, merge or something like it.
138
+
139
+ **This is working correctly.** You do those, not the agent.
140
+
141
+ **What to do.** Run the command yourself.
142
+
143
+ **If it refused something read-only**, that is a bug and worth reporting. The
144
+ guard should allow anything that only looks.
145
+
146
+ **To turn it off for one session:**
147
+
148
+ ```
149
+ FORMWORK_GIT_BOUNDARY=off
150
+ ```
151
+
152
+ ### `REFUSED by self-protection`
153
+
154
+ **What happened.** Something tried to change a file that enforces a rule.
155
+
156
+ **What to do.** If you meant it, make the change yourself in your editor, then
157
+ record the new state with `kit-integrity --record .`.
158
+
159
+ **To turn it off for one session:**
160
+
161
+ ```
162
+ FORMWORK_PROTECT_FILES=warn
163
+ ```
164
+
165
+ ### `REFUSED: the aggregate is red, so this turn cannot conclude`
166
+
167
+ **What happened.** The gate is red and the turn tried to end.
168
+
169
+ **What to do.** Read what the gate said and fix that.
170
+
171
+ **It gives up after three.** Then it stands aside and says so in capitals, so
172
+ a stuck turn is not stuck for ever.
173
+
174
+ ---
175
+
176
+ ## The installer
177
+
178
+ ### `Cannot tell which runtime this project uses`
179
+
180
+ **What happened.** There is no `.claude`, `.codex`, `.cursor` or `.gemini`
181
+ folder, so it cannot guess.
182
+
183
+ **What to do.** Tell it:
184
+
185
+ ```
186
+ formwork install --runtime claude-code
187
+ ```
188
+
189
+ ### `more than one runtime is set up here`
190
+
191
+ **What happened.** You have folders for several tools.
192
+
193
+ **What to do.** Same as above. Say which one.
194
+
195
+ ### `NOT FINISHED` after installing
196
+
197
+ **What happened.** It did what it could and stopped.
198
+
199
+ **What to do.** Read the list it printed. It names the file you need to write
200
+ and the page that tells you what goes in it.
201
+
202
+ ---
203
+
204
+ ## Nothing is being blocked at all
205
+
206
+ **Check the hooks are wired.**
207
+
208
+ ```
209
+ formwork check
210
+ ```
211
+
212
+ If `guard-wired` passes, the hooks are in place.
213
+
214
+ **Check the strength setting.** Look in `.formwork.toml`. If it says `warn` or
215
+ `off`, that is why.
216
+
217
+ **Check your shell.** An environment variable overrides the file:
218
+
219
+ ```
220
+ echo $FORMWORK_GIT_BOUNDARY $FORMWORK_PROTECT_FILES $FORMWORK_GATE
221
+ ```
222
+
223
+ **Check your tool.** Only Claude Code has been watched refusing a real command.
224
+ On the other three, wiring is documented and untried.
225
+
226
+ ---
227
+
228
+ ## Something is being blocked that should not be
229
+
230
+ **This matters as much as the opposite.** A guard that is wrong about ordinary
231
+ work gets switched off, and then nothing is guarded. Report it: the command you
232
+ ran is all anybody needs.
233
+
234
+ Meanwhile:
235
+
236
+ ```
237
+ FORMWORK_GIT_BOUNDARY=off
238
+ FORMWORK_PROTECT_FILES=off
239
+ ```
240
+
241
+ ---
242
+
243
+ ## Nothing here matches
244
+
245
+ Run `formwork check` and `formwork demo`. If both look right and the problem
246
+ is still there, it is probably a real bug. Open an issue with the exact message
247
+ and what you ran.
@@ -0,0 +1,182 @@
1
+ # Formwork
2
+
3
+ A way of running a project with coding agents.
4
+
5
+ ---
6
+
7
+ ## The loop
8
+
9
+ Everything is one loop. Only the size changes.
10
+
11
+ ```
12
+ BRIEF → WORK → CHECK → REPORT → STOP → you say go → BRIEF …
13
+ ```
14
+
15
+ | Size | How long | The brief is | The report is |
16
+ |---|---|---|---|
17
+ | task | minutes | one line | files changed, check result |
18
+ | checkpoint | one sitting | six headings | the full list |
19
+ | round | hours to days | a question per role | a round record |
20
+ | phase | weeks | what it settles | one document |
21
+ | milestone | months | a direction | — |
22
+
23
+ Each one answers four questions: what it produces, what must be true before it
24
+ starts, who says go, and **what would tell us it failed.**
25
+
26
+ ---
27
+
28
+ ## What is blocked
29
+
30
+ These do not ask you. They refuse.
31
+
32
+ | Rule | Enforced by |
33
+ |---|---|
34
+ | The agent never writes to version control | `formwork/guard/git-boundary` |
35
+ | One command runs every check | `formwork check` |
36
+ | Every check ships with an input that breaks it | `formwork check` |
37
+ | Every rule is labelled, and names a real check | `formwork/check/checks/rule-labels` |
38
+ | Documents link only to files that exist | `formwork/check/checks/doc-links` |
39
+ | A declared runtime is actually wired up | `formwork/check/checks/guard-wired` |
40
+ | The agent does not quietly alter the kit's own files | `formwork/guard/protected-files` |
41
+ | A turn does not end while the aggregate is red | `formwork/guard/quality-gate` |
42
+
43
+ > [!NOTE]
44
+ > **The last one refuses three times in a session, then stands aside**, so a
45
+ > genuinely stuck turn is not trapped for ever. Change it with `gate_budget`.
46
+
47
+ Run them:
48
+
49
+ ```
50
+ formwork check everything, on your project
51
+ formwork demo watch each check refuse a broken input
52
+ formwork check --list what exists
53
+ ```
54
+
55
+ **If you did not install the command**, every one of these works by path
56
+ instead: `formwork/fw check`, `formwork/fw demo`, `formwork/fw roles`. Run
57
+ `formwork/fw` on its own to see the list.
58
+
59
+ ---
60
+
61
+ ## What is advice
62
+
63
+ Everything else. **46 rules**, in two files.
64
+
65
+ - `formwork/rules/core.md` — 13. You meet these every day.
66
+ - `formwork/rules/full.md` — 33. Read one when you hit the situation it covers.
67
+
68
+ > [!TIP]
69
+ > Every rule says what it catches. None of them tells you a story, because the
70
+ > stories belong to somebody else's project.
71
+
72
+ ---
73
+
74
+ ## Some of this will look like fussiness
75
+
76
+ Several of these rules were learned from failures you have not had.
77
+
78
+ Each one states what it catches. **If you never hit that, delete it** from
79
+ `formwork/rules/core.md`, so losing a rule is a line in your version control
80
+ with your name on it.
81
+
82
+ There is no `[rules]` switch in `.formwork.toml`, and a check refuses one if you
83
+ add it. A rule switched off in a settings file disappears quietly. A rule
84
+ deleted from the rules file does not.
85
+
86
+ A rule you follow without understanding gets dropped quietly later anyway.
87
+
88
+ ---
89
+
90
+ ## Settings
91
+
92
+ This is the whole file, and the installer writes it for you:
93
+
94
+ ```toml
95
+ [bindings]
96
+ runtime = "claude-code" # which tool you use
97
+
98
+ [strength]
99
+ git_boundary = "block" # block | warn | off
100
+ protect_files = "block" # block | warn | off
101
+ ```
102
+
103
+ `[strength]` tunes how hard the enforced guards bite. `[bindings]` is your
104
+ setup. There is no third section: see above.
105
+
106
+ **Two more keys exist and both live in `[strength]`:**
107
+
108
+ ```toml
109
+ aggregate_gate = "block" # block | warn | off. The turn-end gate
110
+ gate_budget = 3 # how many times it refuses before standing aside
111
+ ```
112
+
113
+ For one session only:
114
+
115
+ ```
116
+ FORMWORK_GIT_BOUNDARY=off
117
+ FORMWORK_PROTECT_FILES=warn
118
+ FORMWORK_GATE=off
119
+ ```
120
+
121
+ ---
122
+
123
+ ## Your team
124
+
125
+ `formwork/roles/` holds 27 roles. Six run the method. Twenty-one do the work,
126
+ grouped into packs.
127
+
128
+ **All of them are available. There is no switch yet**, and this page says so
129
+ rather than describing one that does not exist.
130
+
131
+ Adding your own is copying `TEMPLATE.md`, filling in five sections and four
132
+ frontmatter fields. A role missing any of them does not load.
133
+
134
+ The installer generates them for your runtime. To regenerate after an edit:
135
+
136
+ ```
137
+ formwork roles
138
+ ```
139
+
140
+ ---
141
+
142
+ ## What it cannot do
143
+
144
+ The guards are pattern matching over a command line. They stop the ordinary
145
+ path and not a determined one.
146
+
147
+ [`formwork/limits.md`](formwork/limits.md) lists exactly what got past an audit, what
148
+ was closed afterwards, and what cannot be closed this way. Read it before
149
+ trusting any of this further than it deserves.
150
+
151
+ ---
152
+
153
+ ## Two things here you will not find elsewhere
154
+
155
+ **A check that refuses rather than advises.** Most tooling tells you something
156
+ is wrong and lets the work continue. This stops the turn.
157
+
158
+ **Rules about what counts as evidence.** A figure is reported together with the
159
+ command behind it. Anything unmeasured says so in capitals. A check that nobody has
160
+ watched fail is not treated as proof of anything.
161
+
162
+ Both came out of real use. Neither has been tried by anybody else yet, and the
163
+ kit would rather say that than imply a crowd that does not exist.
164
+
165
+ ---
166
+
167
+ ## What it costs
168
+
169
+ Nobody has measured what one round costs in money. Not once. `formwork/COSTS.md`
170
+ says so plainly, gives the part that can be measured for free, and says what
171
+ would establish the rest.
172
+
173
+ ---
174
+
175
+ ## Where to start
176
+
177
+ [`formwork/first-run.md`](formwork/first-run.md). Fifteen minutes, on your own
178
+ project.
179
+
180
+ Then [`formwork/loop.md`](formwork/loop.md) for the working loop, and
181
+ [`formwork/round.md`](formwork/round.md) when a decision is expensive enough to
182
+ be worth a round.