feed-the-machine 1.5.0 → 1.6.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.
Files changed (224) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +170 -170
  3. package/bin/generate-manifest.mjs +463 -463
  4. package/bin/install.mjs +491 -491
  5. package/docs/HOOKS.md +243 -243
  6. package/docs/INBOX.md +233 -233
  7. package/ftm/SKILL.md +122 -122
  8. package/ftm-audit/SKILL.md +623 -541
  9. package/ftm-audit/references/protocols/PROJECT-PATTERNS.md +91 -91
  10. package/ftm-audit/references/protocols/RUNTIME-WIRING.md +66 -66
  11. package/ftm-audit/references/protocols/WIRING-CONTRACTS.md +135 -135
  12. package/ftm-audit/references/strategies/AUTO-FIX-STRATEGIES.md +69 -69
  13. package/ftm-audit/references/templates/REPORT-FORMAT.md +96 -96
  14. package/ftm-audit/scripts/run-knip.sh +23 -23
  15. package/ftm-audit.yml +2 -2
  16. package/ftm-brainstorm/SKILL.md +498 -498
  17. package/ftm-brainstorm/evals/evals.json +100 -100
  18. package/ftm-brainstorm/evals/promptfoo.yaml +109 -109
  19. package/ftm-brainstorm/references/agent-prompts.md +224 -224
  20. package/ftm-brainstorm/references/plan-template.md +121 -121
  21. package/ftm-brainstorm.yml +2 -2
  22. package/ftm-browse/SKILL.md +454 -454
  23. package/ftm-browse/daemon/browser-manager.ts +206 -206
  24. package/ftm-browse/daemon/bun.lock +30 -30
  25. package/ftm-browse/daemon/cli.ts +347 -347
  26. package/ftm-browse/daemon/commands.ts +410 -410
  27. package/ftm-browse/daemon/main.ts +357 -357
  28. package/ftm-browse/daemon/package.json +17 -17
  29. package/ftm-browse/daemon/server.ts +189 -189
  30. package/ftm-browse/daemon/snapshot.ts +519 -519
  31. package/ftm-browse/daemon/tsconfig.json +22 -22
  32. package/ftm-browse.yml +4 -4
  33. package/ftm-capture/SKILL.md +370 -370
  34. package/ftm-capture.yml +4 -4
  35. package/ftm-codex-gate/SKILL.md +361 -361
  36. package/ftm-codex-gate.yml +2 -2
  37. package/ftm-config/SKILL.md +345 -345
  38. package/ftm-config.default.yml +82 -80
  39. package/ftm-config.yml +2 -2
  40. package/ftm-council/SKILL.md +416 -416
  41. package/ftm-council/references/prompts/CLAUDE-INVESTIGATION.md +60 -60
  42. package/ftm-council/references/prompts/CODEX-INVESTIGATION.md +58 -58
  43. package/ftm-council/references/prompts/GEMINI-INVESTIGATION.md +58 -58
  44. package/ftm-council/references/prompts/REBUTTAL-TEMPLATE.md +57 -57
  45. package/ftm-council/references/protocols/PREREQUISITES.md +47 -47
  46. package/ftm-council/references/protocols/STEP-0-FRAMING.md +46 -46
  47. package/ftm-council.yml +2 -2
  48. package/ftm-dashboard/SKILL.md +163 -163
  49. package/ftm-dashboard.yml +4 -4
  50. package/ftm-debug/SKILL.md +1037 -1037
  51. package/ftm-debug/references/phases/PHASE-0-INTAKE.md +58 -58
  52. package/ftm-debug/references/phases/PHASE-1-TRIAGE.md +46 -46
  53. package/ftm-debug/references/phases/PHASE-2-WAR-ROOM-AGENTS.md +279 -279
  54. package/ftm-debug/references/phases/PHASE-3-TO-6-EXECUTION.md +436 -436
  55. package/ftm-debug/references/protocols/BLACKBOARD.md +86 -86
  56. package/ftm-debug/references/protocols/EDGE-CASES.md +103 -103
  57. package/ftm-debug.yml +2 -2
  58. package/ftm-diagram/SKILL.md +277 -277
  59. package/ftm-diagram.yml +2 -2
  60. package/ftm-executor/SKILL.md +777 -767
  61. package/ftm-executor/references/STYLE-TEMPLATE.md +73 -73
  62. package/ftm-executor/references/phases/PHASE-0-VERIFICATION.md +62 -62
  63. package/ftm-executor/references/phases/PHASE-2-AGENT-ASSEMBLY.md +34 -34
  64. package/ftm-executor/references/phases/PHASE-3-WORKTREES.md +38 -38
  65. package/ftm-executor/references/phases/PHASE-4-5-AUDIT.md +72 -72
  66. package/ftm-executor/references/phases/PHASE-4-DISPATCH.md +66 -66
  67. package/ftm-executor/references/phases/PHASE-5-5-CODEX-GATE.md +73 -73
  68. package/ftm-executor/references/protocols/DOCUMENTATION-BOOTSTRAP.md +36 -36
  69. package/ftm-executor/references/protocols/MODEL-PROFILE.md +59 -44
  70. package/ftm-executor/references/protocols/PROGRESS-TRACKING.md +66 -66
  71. package/ftm-executor/runtime/ftm-runtime.mjs +252 -252
  72. package/ftm-executor/runtime/package.json +8 -8
  73. package/ftm-executor.yml +2 -2
  74. package/ftm-git/SKILL.md +441 -441
  75. package/ftm-git/evals/evals.json +26 -26
  76. package/ftm-git/evals/promptfoo.yaml +75 -75
  77. package/ftm-git/hooks/post-commit-experience.sh +92 -92
  78. package/ftm-git/references/patterns/SECRET-PATTERNS.md +104 -104
  79. package/ftm-git/references/protocols/REMEDIATION.md +139 -139
  80. package/ftm-git/scripts/pre-commit-secrets.sh +110 -110
  81. package/ftm-git.yml +2 -2
  82. package/ftm-inbox/backend/adapters/_retry.py +64 -64
  83. package/ftm-inbox/backend/adapters/base.py +230 -230
  84. package/ftm-inbox/backend/adapters/freshservice.py +104 -104
  85. package/ftm-inbox/backend/adapters/gmail.py +125 -125
  86. package/ftm-inbox/backend/adapters/jira.py +136 -136
  87. package/ftm-inbox/backend/adapters/registry.py +192 -192
  88. package/ftm-inbox/backend/adapters/slack.py +110 -110
  89. package/ftm-inbox/backend/db/connection.py +54 -54
  90. package/ftm-inbox/backend/db/schema.py +78 -78
  91. package/ftm-inbox/backend/executor/__init__.py +7 -7
  92. package/ftm-inbox/backend/executor/engine.py +149 -149
  93. package/ftm-inbox/backend/executor/step_runner.py +98 -98
  94. package/ftm-inbox/backend/main.py +103 -103
  95. package/ftm-inbox/backend/models/__init__.py +1 -1
  96. package/ftm-inbox/backend/models/unified_task.py +36 -36
  97. package/ftm-inbox/backend/planner/__init__.py +6 -6
  98. package/ftm-inbox/backend/planner/generator.py +127 -127
  99. package/ftm-inbox/backend/planner/schema.py +34 -34
  100. package/ftm-inbox/backend/requirements.txt +5 -5
  101. package/ftm-inbox/backend/routes/execute.py +186 -186
  102. package/ftm-inbox/backend/routes/health.py +52 -52
  103. package/ftm-inbox/backend/routes/inbox.py +68 -68
  104. package/ftm-inbox/backend/routes/plan.py +271 -271
  105. package/ftm-inbox/bin/launchagent.mjs +91 -91
  106. package/ftm-inbox/bin/setup.mjs +188 -188
  107. package/ftm-inbox/bin/start.sh +10 -10
  108. package/ftm-inbox/bin/status.sh +17 -17
  109. package/ftm-inbox/bin/stop.sh +8 -8
  110. package/ftm-inbox/config.example.yml +55 -55
  111. package/ftm-inbox/package-lock.json +2898 -2898
  112. package/ftm-inbox/package.json +26 -26
  113. package/ftm-inbox/postcss.config.js +6 -6
  114. package/ftm-inbox/src/app.css +199 -199
  115. package/ftm-inbox/src/app.html +18 -18
  116. package/ftm-inbox/src/lib/api.ts +166 -166
  117. package/ftm-inbox/src/lib/components/ExecutionLog.svelte +81 -81
  118. package/ftm-inbox/src/lib/components/InboxFeed.svelte +143 -143
  119. package/ftm-inbox/src/lib/components/PlanStep.svelte +271 -271
  120. package/ftm-inbox/src/lib/components/PlanView.svelte +206 -206
  121. package/ftm-inbox/src/lib/components/StreamPanel.svelte +99 -99
  122. package/ftm-inbox/src/lib/components/TaskCard.svelte +190 -190
  123. package/ftm-inbox/src/lib/components/ui/EmptyState.svelte +63 -63
  124. package/ftm-inbox/src/lib/components/ui/KawaiiCard.svelte +86 -86
  125. package/ftm-inbox/src/lib/components/ui/PillButton.svelte +106 -106
  126. package/ftm-inbox/src/lib/components/ui/StatusBadge.svelte +67 -67
  127. package/ftm-inbox/src/lib/components/ui/StreamDrawer.svelte +149 -149
  128. package/ftm-inbox/src/lib/components/ui/ThemeToggle.svelte +80 -80
  129. package/ftm-inbox/src/lib/theme.ts +47 -47
  130. package/ftm-inbox/src/routes/+layout.svelte +76 -76
  131. package/ftm-inbox/src/routes/+page.svelte +401 -401
  132. package/ftm-inbox/svelte.config.js +12 -12
  133. package/ftm-inbox/tailwind.config.ts +63 -63
  134. package/ftm-inbox/tsconfig.json +13 -13
  135. package/ftm-inbox/vite.config.ts +6 -6
  136. package/ftm-intent/SKILL.md +241 -241
  137. package/ftm-intent.yml +2 -2
  138. package/ftm-manifest.json +3794 -3794
  139. package/ftm-map/SKILL.md +291 -291
  140. package/ftm-map/scripts/db.py +712 -712
  141. package/ftm-map/scripts/index.py +415 -415
  142. package/ftm-map/scripts/parser.py +224 -224
  143. package/ftm-map/scripts/queries/go-tags.scm +20 -20
  144. package/ftm-map/scripts/queries/javascript-tags.scm +35 -35
  145. package/ftm-map/scripts/queries/python-tags.scm +31 -31
  146. package/ftm-map/scripts/queries/ruby-tags.scm +19 -19
  147. package/ftm-map/scripts/queries/rust-tags.scm +37 -37
  148. package/ftm-map/scripts/queries/typescript-tags.scm +41 -41
  149. package/ftm-map/scripts/query.py +301 -301
  150. package/ftm-map/scripts/ranker.py +377 -377
  151. package/ftm-map/scripts/requirements.txt +5 -5
  152. package/ftm-map/scripts/setup-hooks.sh +27 -27
  153. package/ftm-map/scripts/setup.sh +56 -56
  154. package/ftm-map/scripts/test_db.py +364 -364
  155. package/ftm-map/scripts/test_parser.py +174 -174
  156. package/ftm-map/scripts/test_query.py +183 -183
  157. package/ftm-map/scripts/test_ranker.py +199 -199
  158. package/ftm-map/scripts/views.py +591 -591
  159. package/ftm-map.yml +2 -2
  160. package/ftm-mind/SKILL.md +1943 -1943
  161. package/ftm-mind/evals/promptfoo.yaml +142 -142
  162. package/ftm-mind/references/blackboard-schema.md +328 -328
  163. package/ftm-mind/references/complexity-guide.md +110 -110
  164. package/ftm-mind/references/event-registry.md +319 -319
  165. package/ftm-mind/references/mcp-inventory.md +296 -296
  166. package/ftm-mind/references/protocols/COMPLEXITY-SIZING.md +72 -72
  167. package/ftm-mind/references/protocols/MCP-HEURISTICS.md +32 -32
  168. package/ftm-mind/references/protocols/PLAN-APPROVAL.md +80 -80
  169. package/ftm-mind/references/reflexion-protocol.md +249 -249
  170. package/ftm-mind/references/routing/SCENARIOS.md +22 -22
  171. package/ftm-mind/references/routing-scenarios.md +35 -35
  172. package/ftm-mind.yml +2 -2
  173. package/ftm-pause/SKILL.md +395 -395
  174. package/ftm-pause/references/protocols/SKILL-RESTORE-PROTOCOLS.md +186 -186
  175. package/ftm-pause/references/protocols/VALIDATION.md +80 -80
  176. package/ftm-pause.yml +2 -2
  177. package/ftm-researcher/SKILL.md +275 -275
  178. package/ftm-researcher/evals/agent-diversity.yaml +17 -17
  179. package/ftm-researcher/evals/synthesis-quality.yaml +12 -12
  180. package/ftm-researcher/evals/trigger-accuracy.yaml +39 -39
  181. package/ftm-researcher/references/adaptive-search.md +116 -116
  182. package/ftm-researcher/references/agent-prompts.md +193 -193
  183. package/ftm-researcher/references/council-integration.md +193 -193
  184. package/ftm-researcher/references/output-format.md +203 -203
  185. package/ftm-researcher/references/synthesis-pipeline.md +165 -165
  186. package/ftm-researcher/scripts/score_credibility.py +234 -234
  187. package/ftm-researcher/scripts/validate_research.py +92 -92
  188. package/ftm-researcher.yml +2 -2
  189. package/ftm-resume/SKILL.md +518 -518
  190. package/ftm-resume/references/protocols/VALIDATION.md +172 -172
  191. package/ftm-resume.yml +2 -2
  192. package/ftm-retro/SKILL.md +380 -380
  193. package/ftm-retro/references/protocols/SCORING-RUBRICS.md +89 -89
  194. package/ftm-retro/references/templates/REPORT-FORMAT.md +109 -109
  195. package/ftm-retro.yml +2 -2
  196. package/ftm-routine/SKILL.md +170 -170
  197. package/ftm-routine.yml +4 -4
  198. package/ftm-state/blackboard/capabilities.json +5 -5
  199. package/ftm-state/blackboard/capabilities.schema.json +27 -27
  200. package/ftm-state/blackboard/context.json +23 -23
  201. package/ftm-state/blackboard/experiences/index.json +9 -9
  202. package/ftm-state/blackboard/patterns.json +6 -6
  203. package/ftm-state/schemas/context.schema.json +130 -130
  204. package/ftm-state/schemas/experience-index.schema.json +77 -77
  205. package/ftm-state/schemas/experience.schema.json +78 -78
  206. package/ftm-state/schemas/patterns.schema.json +44 -44
  207. package/ftm-upgrade/SKILL.md +194 -194
  208. package/ftm-upgrade/scripts/check-version.sh +76 -76
  209. package/ftm-upgrade/scripts/upgrade.sh +143 -143
  210. package/ftm-upgrade.yml +2 -2
  211. package/ftm-verify.yml +2 -2
  212. package/ftm.yml +2 -2
  213. package/hooks/ftm-blackboard-enforcer.sh +93 -93
  214. package/hooks/ftm-discovery-reminder.sh +90 -90
  215. package/hooks/ftm-drafts-gate.sh +61 -61
  216. package/hooks/ftm-event-logger.mjs +107 -107
  217. package/hooks/ftm-map-autodetect.sh +79 -79
  218. package/hooks/ftm-pending-sync-check.sh +22 -22
  219. package/hooks/ftm-plan-gate.sh +92 -92
  220. package/hooks/ftm-post-commit-trigger.sh +57 -57
  221. package/hooks/settings-template.json +81 -81
  222. package/install.sh +363 -363
  223. package/package.json +84 -84
  224. package/uninstall.sh +25 -25
@@ -1,186 +1,186 @@
1
- # Skill State Capture and Restoration Protocols
2
-
3
- This document defines exactly what state must be captured (by ftm-pause) and restored (by ftm-resume) for each ftm skill. It is the shared contract between the two skills.
4
-
5
- ---
6
-
7
- ## ftm-brainstorm
8
-
9
- ### State to Capture
10
-
11
- **Phase tracking:**
12
- - Current phase (0, 1, 2, or 3)
13
- - If Phase 1: which round (1, 2, or 3), which path (A: Fresh Idea or B: Brain Dump)
14
- - If Phase 2: how many research+challenge turns have been completed
15
- - If Phase 3: which section of the plan has been presented (Vision, Tasks, Agents, or complete)
16
-
17
- **Phase 0 context:**
18
- - The full repo scan results (project type, tech stack, architecture, patterns, infrastructure, scale)
19
- - Whether the scan was skipped (no git repo) and any stack info gathered from the user instead
20
-
21
- **Phase 1 — Intake:**
22
- - The user's original idea/request (verbatim if short, summarized if long)
23
- - If Path B: the full brain dump extraction (decisions made, open questions, assumptions, contradictions, gaps)
24
- - All user answers from each completed round
25
- - Research Sprint 1 results (landscape context) — all findings from Web Researcher, GitHub Explorer, Competitive Analyst
26
- - Research Sprint 2 results (constraint-scoped research) — all findings from all three agents
27
- - If Path B: the novelty map (which claims are solved/partially solved/novel)
28
-
29
- **Phase 2 — Research + Challenge Loop:**
30
- - Every completed turn's 5 suggestions (or fewer if weak results) with evidence and links
31
- - Every challenge posed and the user's response
32
- - Every question asked and the user's answer
33
- - Accumulated decisions and direction chosen
34
- - Research agent results from each turn (summarized — full URLs and key findings, not raw agent output)
35
- - The current "direction" the brainstorm is heading (architecture chosen, scope narrowed, etc.)
36
-
37
- **Phase 3 — Plan Generation:**
38
- - Which sections have been presented and approved (Vision, Tasks, Agents/Waves)
39
- - The plan content generated so far
40
- - The plan file path if it's been saved
41
- - User feedback on each section
42
-
43
- ### Restoration Instructions
44
-
45
- On resume, reload Phase 0 context into the project context register. Reload the full context register from Phase 2 state so the next research sprint does not re-search prior ground. Resume at exactly the turn number and phase detail captured — if the user was mid-Phase 2, the next action is a research sprint responding to their last answer.
46
-
47
- ---
48
-
49
- ## ftm-executor
50
-
51
- ### State to Capture
52
-
53
- **Plan context:**
54
- - Plan file path (absolute)
55
- - Plan title and summary
56
- - Total task count
57
- - Agent team composition (agent names, roles, task assignments)
58
-
59
- **Execution progress:**
60
- - Current wave number
61
- - For each task: status (pending / in-progress / complete / failed / blocked)
62
- - For completed tasks: commit hashes, audit results (pass/fail/auto-fixed), brief summary of what was done
63
- - For in-progress tasks: which agent is working on it, what's been done so far
64
- - For failed/blocked tasks: what went wrong, error details
65
-
66
- **Worktree state:**
67
- - List of all worktree branches and their paths
68
- - Which worktrees are active vs merged vs abandoned
69
- - Any merge results or conflicts encountered
70
- - The main/working branch name
71
-
72
- **Verification state:**
73
- - Post-task audit results for each completed task
74
- - Any manual intervention items outstanding
75
- - Full test suite status (last run result)
76
-
77
- ### Restoration Instructions
78
-
79
- On resume, verify that all worktrees in the saved state still exist on disk (`git worktree list`). If any are missing, note them for the user before continuing. Resume from the current wave, skipping tasks already marked complete. If a task was in-progress, treat it as needing restart from the beginning of that task.
80
-
81
- ---
82
-
83
- ## ftm-debug
84
-
85
- ### State to Capture
86
-
87
- **Problem context:**
88
- - The original problem statement (symptom, expected behavior, what's been tried, when it started, reproduction steps)
89
- - Codebase reconnaissance results (entry points, call graph, state flow, dependencies, recent changes, test coverage, config, error handling)
90
- - The investigation plan (likely category, which agents deployed, worktree strategy)
91
-
92
- **Phase 1 — Investigation results:**
93
- - Instrumenter report: what was instrumented, log point locations, DEBUG-INSTRUMENTATION.md content
94
- - Researcher report: findings with sources, relevance, solutions, confidence, RESEARCH-FINDINGS.md content
95
- - Reproducer report: trigger command, consistency, boundaries, minimal test path, REPRODUCTION.md content
96
- - Hypothesizer report: all hypotheses ranked with claims, mechanisms, code paths, evidence, HYPOTHESES.md content
97
-
98
- **Phase 2 — Synthesis & Solve:**
99
- - Cross-reference analysis (how findings align or conflict)
100
- - Recommended fix approach
101
- - Solver attempts: which hypotheses tried, what was implemented, commit hashes
102
- - FIX-SUMMARY.md content if fix was applied
103
-
104
- **Phase 3 — Review & Verify:**
105
- - Reviewer verdict (APPROVED / APPROVED WITH CHANGES / NEEDS REWORK)
106
- - REVIEW-VERDICT.md content
107
- - How many solver-reviewer iterations completed
108
- - Outstanding issues from review
109
-
110
- **Worktree state:**
111
- - debug-instrumentation branch and path
112
- - debug-reproduction branch and path
113
- - debug-fix branch and path (including any fix attempt sub-branches)
114
- - Which worktrees still exist vs cleaned up
115
-
116
- ### Restoration Instructions
117
-
118
- On resume, verify debug worktrees still exist. Re-read any artifact files referenced in the state (HYPOTHESES.md, REPRODUCTION.md, etc.) to reload their content into context. Resume at the exact phase captured — if mid-Phase 2, proceed to the next solver iteration using the saved hypotheses and prior solver attempts.
119
-
120
- ---
121
-
122
- ## ftm-council
123
-
124
- ### State to Capture
125
-
126
- **Council setup:**
127
- - The council prompt (the framed problem statement)
128
- - Whether the user confirmed/edited the prompt
129
- - Prerequisites check result (codex and gemini available?)
130
-
131
- **Deliberation state:**
132
- - Current round number (1-5)
133
- - For each completed round, each model's full response:
134
- - Research summary (what files examined, what was found)
135
- - Position (their stance)
136
- - Reasoning (with code references)
137
- - Concerns
138
- - Confidence level
139
- - For rebuttal rounds: each model's updated position, new evidence, responses to other models, remaining disagreements
140
- - Alignment analysis after each round (agreement areas, divergence points, different research paths, majority forming?)
141
-
142
- **Outcome:**
143
- - Whether consensus has been reached (and if so, which 2 models agreed)
144
- - The verdict if delivered (decision, agreed by, dissent, evidence basis)
145
- - If no consensus after 5 rounds: the synthesis and options presented
146
-
147
- ### Restoration Instructions
148
-
149
- On resume, re-present the council prompt and the round history as a summary before continuing. If consensus was already reached, surface the verdict and ask the user what they want next. If still in deliberation, resume with the next model dispatch using full prior-round context.
150
-
151
- ---
152
-
153
- ## ftm-audit
154
-
155
- ### State to Capture
156
-
157
- **Trigger context:**
158
- - What triggered the audit (manual invocation, post-task from executor, specific files/scope)
159
- - Scope (full project, specific files, specific task's changes)
160
-
161
- **Phase 0 — Project patterns:**
162
- - Detected framework, router, state management, API layer, build tool
163
- - Active dimensions (D1-D5) and their configuration
164
- - Any unusual patterns noted
165
-
166
- **Layer 1 — knip results:**
167
- - Full knip output (categorized: unused files, unused exports, unused deps, unlisted deps, unresolved imports)
168
- - Each finding with file:line
169
-
170
- **Layer 2 — Adversarial audit results:**
171
- - Each finding with type, location, evidence, and which dimension failed
172
- - Wiring contract checks if applicable (which checks passed, which failed)
173
-
174
- **Layer 3 — Auto-fix results:**
175
- - Fixes applied (finding, fix description, verification result)
176
- - Manual intervention items (finding, reason auto-fix skipped, suggested action)
177
- - Re-verification results
178
- - Current iteration count (of max 3)
179
-
180
- **Final status:**
181
- - PASS or FAIL
182
- - Remaining issues count and details
183
-
184
- ### Restoration Instructions
185
-
186
- On resume, skip any layers already completed. If mid-Layer 3 auto-fix loop, restore the iteration count and continue from where it left off. If the final status was PASS, surface the result and confirm with the user before doing anything further.
1
+ # Skill State Capture and Restoration Protocols
2
+
3
+ This document defines exactly what state must be captured (by ftm-pause) and restored (by ftm-resume) for each ftm skill. It is the shared contract between the two skills.
4
+
5
+ ---
6
+
7
+ ## ftm-brainstorm
8
+
9
+ ### State to Capture
10
+
11
+ **Phase tracking:**
12
+ - Current phase (0, 1, 2, or 3)
13
+ - If Phase 1: which round (1, 2, or 3), which path (A: Fresh Idea or B: Brain Dump)
14
+ - If Phase 2: how many research+challenge turns have been completed
15
+ - If Phase 3: which section of the plan has been presented (Vision, Tasks, Agents, or complete)
16
+
17
+ **Phase 0 context:**
18
+ - The full repo scan results (project type, tech stack, architecture, patterns, infrastructure, scale)
19
+ - Whether the scan was skipped (no git repo) and any stack info gathered from the user instead
20
+
21
+ **Phase 1 — Intake:**
22
+ - The user's original idea/request (verbatim if short, summarized if long)
23
+ - If Path B: the full brain dump extraction (decisions made, open questions, assumptions, contradictions, gaps)
24
+ - All user answers from each completed round
25
+ - Research Sprint 1 results (landscape context) — all findings from Web Researcher, GitHub Explorer, Competitive Analyst
26
+ - Research Sprint 2 results (constraint-scoped research) — all findings from all three agents
27
+ - If Path B: the novelty map (which claims are solved/partially solved/novel)
28
+
29
+ **Phase 2 — Research + Challenge Loop:**
30
+ - Every completed turn's 5 suggestions (or fewer if weak results) with evidence and links
31
+ - Every challenge posed and the user's response
32
+ - Every question asked and the user's answer
33
+ - Accumulated decisions and direction chosen
34
+ - Research agent results from each turn (summarized — full URLs and key findings, not raw agent output)
35
+ - The current "direction" the brainstorm is heading (architecture chosen, scope narrowed, etc.)
36
+
37
+ **Phase 3 — Plan Generation:**
38
+ - Which sections have been presented and approved (Vision, Tasks, Agents/Waves)
39
+ - The plan content generated so far
40
+ - The plan file path if it's been saved
41
+ - User feedback on each section
42
+
43
+ ### Restoration Instructions
44
+
45
+ On resume, reload Phase 0 context into the project context register. Reload the full context register from Phase 2 state so the next research sprint does not re-search prior ground. Resume at exactly the turn number and phase detail captured — if the user was mid-Phase 2, the next action is a research sprint responding to their last answer.
46
+
47
+ ---
48
+
49
+ ## ftm-executor
50
+
51
+ ### State to Capture
52
+
53
+ **Plan context:**
54
+ - Plan file path (absolute)
55
+ - Plan title and summary
56
+ - Total task count
57
+ - Agent team composition (agent names, roles, task assignments)
58
+
59
+ **Execution progress:**
60
+ - Current wave number
61
+ - For each task: status (pending / in-progress / complete / failed / blocked)
62
+ - For completed tasks: commit hashes, audit results (pass/fail/auto-fixed), brief summary of what was done
63
+ - For in-progress tasks: which agent is working on it, what's been done so far
64
+ - For failed/blocked tasks: what went wrong, error details
65
+
66
+ **Worktree state:**
67
+ - List of all worktree branches and their paths
68
+ - Which worktrees are active vs merged vs abandoned
69
+ - Any merge results or conflicts encountered
70
+ - The main/working branch name
71
+
72
+ **Verification state:**
73
+ - Post-task audit results for each completed task
74
+ - Any manual intervention items outstanding
75
+ - Full test suite status (last run result)
76
+
77
+ ### Restoration Instructions
78
+
79
+ On resume, verify that all worktrees in the saved state still exist on disk (`git worktree list`). If any are missing, note them for the user before continuing. Resume from the current wave, skipping tasks already marked complete. If a task was in-progress, treat it as needing restart from the beginning of that task.
80
+
81
+ ---
82
+
83
+ ## ftm-debug
84
+
85
+ ### State to Capture
86
+
87
+ **Problem context:**
88
+ - The original problem statement (symptom, expected behavior, what's been tried, when it started, reproduction steps)
89
+ - Codebase reconnaissance results (entry points, call graph, state flow, dependencies, recent changes, test coverage, config, error handling)
90
+ - The investigation plan (likely category, which agents deployed, worktree strategy)
91
+
92
+ **Phase 1 — Investigation results:**
93
+ - Instrumenter report: what was instrumented, log point locations, DEBUG-INSTRUMENTATION.md content
94
+ - Researcher report: findings with sources, relevance, solutions, confidence, RESEARCH-FINDINGS.md content
95
+ - Reproducer report: trigger command, consistency, boundaries, minimal test path, REPRODUCTION.md content
96
+ - Hypothesizer report: all hypotheses ranked with claims, mechanisms, code paths, evidence, HYPOTHESES.md content
97
+
98
+ **Phase 2 — Synthesis & Solve:**
99
+ - Cross-reference analysis (how findings align or conflict)
100
+ - Recommended fix approach
101
+ - Solver attempts: which hypotheses tried, what was implemented, commit hashes
102
+ - FIX-SUMMARY.md content if fix was applied
103
+
104
+ **Phase 3 — Review & Verify:**
105
+ - Reviewer verdict (APPROVED / APPROVED WITH CHANGES / NEEDS REWORK)
106
+ - REVIEW-VERDICT.md content
107
+ - How many solver-reviewer iterations completed
108
+ - Outstanding issues from review
109
+
110
+ **Worktree state:**
111
+ - debug-instrumentation branch and path
112
+ - debug-reproduction branch and path
113
+ - debug-fix branch and path (including any fix attempt sub-branches)
114
+ - Which worktrees still exist vs cleaned up
115
+
116
+ ### Restoration Instructions
117
+
118
+ On resume, verify debug worktrees still exist. Re-read any artifact files referenced in the state (HYPOTHESES.md, REPRODUCTION.md, etc.) to reload their content into context. Resume at the exact phase captured — if mid-Phase 2, proceed to the next solver iteration using the saved hypotheses and prior solver attempts.
119
+
120
+ ---
121
+
122
+ ## ftm-council
123
+
124
+ ### State to Capture
125
+
126
+ **Council setup:**
127
+ - The council prompt (the framed problem statement)
128
+ - Whether the user confirmed/edited the prompt
129
+ - Prerequisites check result (codex and gemini available?)
130
+
131
+ **Deliberation state:**
132
+ - Current round number (1-5)
133
+ - For each completed round, each model's full response:
134
+ - Research summary (what files examined, what was found)
135
+ - Position (their stance)
136
+ - Reasoning (with code references)
137
+ - Concerns
138
+ - Confidence level
139
+ - For rebuttal rounds: each model's updated position, new evidence, responses to other models, remaining disagreements
140
+ - Alignment analysis after each round (agreement areas, divergence points, different research paths, majority forming?)
141
+
142
+ **Outcome:**
143
+ - Whether consensus has been reached (and if so, which 2 models agreed)
144
+ - The verdict if delivered (decision, agreed by, dissent, evidence basis)
145
+ - If no consensus after 5 rounds: the synthesis and options presented
146
+
147
+ ### Restoration Instructions
148
+
149
+ On resume, re-present the council prompt and the round history as a summary before continuing. If consensus was already reached, surface the verdict and ask the user what they want next. If still in deliberation, resume with the next model dispatch using full prior-round context.
150
+
151
+ ---
152
+
153
+ ## ftm-audit
154
+
155
+ ### State to Capture
156
+
157
+ **Trigger context:**
158
+ - What triggered the audit (manual invocation, post-task from executor, specific files/scope)
159
+ - Scope (full project, specific files, specific task's changes)
160
+
161
+ **Phase 0 — Project patterns:**
162
+ - Detected framework, router, state management, API layer, build tool
163
+ - Active dimensions (D1-D5) and their configuration
164
+ - Any unusual patterns noted
165
+
166
+ **Layer 1 — knip results:**
167
+ - Full knip output (categorized: unused files, unused exports, unused deps, unlisted deps, unresolved imports)
168
+ - Each finding with file:line
169
+
170
+ **Layer 2 — Adversarial audit results:**
171
+ - Each finding with type, location, evidence, and which dimension failed
172
+ - Wiring contract checks if applicable (which checks passed, which failed)
173
+
174
+ **Layer 3 — Auto-fix results:**
175
+ - Fixes applied (finding, fix description, verification result)
176
+ - Manual intervention items (finding, reason auto-fix skipped, suggested action)
177
+ - Re-verification results
178
+ - Current iteration count (of max 3)
179
+
180
+ **Final status:**
181
+ - PASS or FAIL
182
+ - Remaining issues count and details
183
+
184
+ ### Restoration Instructions
185
+
186
+ On resume, skip any layers already completed. If mid-Layer 3 auto-fix loop, restore the iteration count and continue from where it left off. If the final status was PASS, surface the result and confirm with the user before doing anything further.
@@ -1,80 +1,80 @@
1
- # State Validation Logic
2
-
3
- This document defines all validation checks performed before and after writing state to disk.
4
-
5
- ---
6
-
7
- ## Pre-Write Validation
8
-
9
- Before writing `~/.claude/ftm-state/STATE.md`, verify the following:
10
-
11
- ### Skill Detection Confirmed
12
-
13
- - A ftm skill was positively identified from the conversation context
14
- - If no skill detected: halt and tell the user "No active ftm session detected" — do not write a blank or partial state file
15
-
16
- ### Required Frontmatter Fields Present
17
-
18
- The YAML frontmatter block must contain:
19
- - `skill` — one of: ftm-brainstorm, ftm-executor, ftm-debug, ftm-council, ftm-audit
20
- - `phase` — the current phase number or stage name for that skill
21
- - `phase_detail` — a human-readable one-liner about exactly where the session stopped
22
- - `timestamp` — ISO 8601 format (YYYY-MM-DDThh:mm:ss)
23
- - `project_dir` — absolute path to the working directory
24
-
25
- Git fields (`git_branch`, `git_commit`) are required only if a git repo is present. If no repo, omit them rather than leaving them blank.
26
-
27
- ### State File Contains Actual Content
28
-
29
- - "Next Step" section must be specific and actionable — not a placeholder like "[describe next step]"
30
- - Decisions Made section must reflect real decisions from the conversation, not template text
31
- - If the session was very early (e.g., Phase 0 only), the "Captured" summary should say so explicitly
32
-
33
- ### Artifacts Verified
34
-
35
- For each artifact path listed in the state file:
36
- - The file must exist on disk at the recorded path
37
- - If an artifact path is stale (file was deleted or moved), note it with `[NOT FOUND]` rather than silently omitting it
38
-
39
- ---
40
-
41
- ## Post-Write Validation
42
-
43
- After writing the state file, verify:
44
-
45
- ### File Was Written Successfully
46
-
47
- - The state file exists at `~/.claude/ftm-state/STATE.md`
48
- - File size is non-zero
49
- - The frontmatter block is parseable (starts with `---`, contains required keys)
50
-
51
- ### State Is Resumable
52
-
53
- The written state must pass the "cold start test": a fresh conversation with no prior context should be able to reconstruct the session from the state file alone, without needing to ask the user "where were we?" Concretely:
54
- - The skill and phase are unambiguous
55
- - The Next Step section tells ftm-resume exactly what action to take first
56
- - Enough prior context is captured that the first response after resume won't require re-explaining the project
57
-
58
- ---
59
-
60
- ## Edge Case Handling
61
-
62
- ### Multiple Skills Active
63
-
64
- If two ftm skills were invoked in the same conversation (e.g., brainstorm followed by executor), save the most recently active one to `STATE.md`. Save the other to `STATE-[skill].md` in the same directory. Both files go through the same validation.
65
-
66
- ### Overwriting Existing State
67
-
68
- Overwrite `STATE.md` without prompting. The previous state was either already resumed and consumed, or abandoned. Validation still applies to the new file.
69
-
70
- ### No Git Repo
71
-
72
- Skip `git_branch` and `git_commit` fields entirely. Record only `project_dir`. Do not write empty string values for these fields — omit them from the frontmatter block.
73
-
74
- ### Very Early Session (Phase 0 or Step 1 Only)
75
-
76
- Capture whatever exists. Even a Phase 0 repo scan is worth saving. The "Next Step" section should note that the user needs to answer the first intake question. This passes validation — sparse state is valid state.
77
-
78
- ### Large State Files
79
-
80
- Do not truncate. Some sessions accumulate substantial state — 8+ brainstorm turns with full research results, or an executor session with 20+ tasks. The state file can be large. Completeness is required for reliable restoration.
1
+ # State Validation Logic
2
+
3
+ This document defines all validation checks performed before and after writing state to disk.
4
+
5
+ ---
6
+
7
+ ## Pre-Write Validation
8
+
9
+ Before writing `~/.claude/ftm-state/STATE.md`, verify the following:
10
+
11
+ ### Skill Detection Confirmed
12
+
13
+ - A ftm skill was positively identified from the conversation context
14
+ - If no skill detected: halt and tell the user "No active ftm session detected" — do not write a blank or partial state file
15
+
16
+ ### Required Frontmatter Fields Present
17
+
18
+ The YAML frontmatter block must contain:
19
+ - `skill` — one of: ftm-brainstorm, ftm-executor, ftm-debug, ftm-council, ftm-audit
20
+ - `phase` — the current phase number or stage name for that skill
21
+ - `phase_detail` — a human-readable one-liner about exactly where the session stopped
22
+ - `timestamp` — ISO 8601 format (YYYY-MM-DDThh:mm:ss)
23
+ - `project_dir` — absolute path to the working directory
24
+
25
+ Git fields (`git_branch`, `git_commit`) are required only if a git repo is present. If no repo, omit them rather than leaving them blank.
26
+
27
+ ### State File Contains Actual Content
28
+
29
+ - "Next Step" section must be specific and actionable — not a placeholder like "[describe next step]"
30
+ - Decisions Made section must reflect real decisions from the conversation, not template text
31
+ - If the session was very early (e.g., Phase 0 only), the "Captured" summary should say so explicitly
32
+
33
+ ### Artifacts Verified
34
+
35
+ For each artifact path listed in the state file:
36
+ - The file must exist on disk at the recorded path
37
+ - If an artifact path is stale (file was deleted or moved), note it with `[NOT FOUND]` rather than silently omitting it
38
+
39
+ ---
40
+
41
+ ## Post-Write Validation
42
+
43
+ After writing the state file, verify:
44
+
45
+ ### File Was Written Successfully
46
+
47
+ - The state file exists at `~/.claude/ftm-state/STATE.md`
48
+ - File size is non-zero
49
+ - The frontmatter block is parseable (starts with `---`, contains required keys)
50
+
51
+ ### State Is Resumable
52
+
53
+ The written state must pass the "cold start test": a fresh conversation with no prior context should be able to reconstruct the session from the state file alone, without needing to ask the user "where were we?" Concretely:
54
+ - The skill and phase are unambiguous
55
+ - The Next Step section tells ftm-resume exactly what action to take first
56
+ - Enough prior context is captured that the first response after resume won't require re-explaining the project
57
+
58
+ ---
59
+
60
+ ## Edge Case Handling
61
+
62
+ ### Multiple Skills Active
63
+
64
+ If two ftm skills were invoked in the same conversation (e.g., brainstorm followed by executor), save the most recently active one to `STATE.md`. Save the other to `STATE-[skill].md` in the same directory. Both files go through the same validation.
65
+
66
+ ### Overwriting Existing State
67
+
68
+ Overwrite `STATE.md` without prompting. The previous state was either already resumed and consumed, or abandoned. Validation still applies to the new file.
69
+
70
+ ### No Git Repo
71
+
72
+ Skip `git_branch` and `git_commit` fields entirely. Record only `project_dir`. Do not write empty string values for these fields — omit them from the frontmatter block.
73
+
74
+ ### Very Early Session (Phase 0 or Step 1 Only)
75
+
76
+ Capture whatever exists. Even a Phase 0 repo scan is worth saving. The "Next Step" section should note that the user needs to answer the first intake question. This passes validation — sparse state is valid state.
77
+
78
+ ### Large State Files
79
+
80
+ Do not truncate. Some sessions accumulate substantial state — 8+ brainstorm turns with full research results, or an executor session with 20+ tasks. The state file can be large. Completeness is required for reliable restoration.
package/ftm-pause.yml CHANGED
@@ -1,2 +1,2 @@
1
- name: ftm-pause
2
- description: Save the current ftm skill session state so work can be resumed in a new conversation. Use when user says "pause", "save state", "I need to stop", "continue later", "ftm pause", "save progress", or is about to end a session mid-workflow. Works with any ftm skill (brainstorm, executor, debug, council, audit).
1
+ name: ftm-pause
2
+ description: Save the current ftm skill session state so work can be resumed in a new conversation. Use when user says "pause", "save state", "I need to stop", "continue later", "ftm pause", "save progress", or is about to end a session mid-workflow. Works with any ftm skill (brainstorm, executor, debug, council, audit).