feed-the-machine 1.6.1 → 1.7.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 (269) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +170 -170
  3. package/bin/brain.py +1340 -0
  4. package/bin/convert_claude_skills_to_codex.py +490 -0
  5. package/bin/generate-manifest.mjs +463 -463
  6. package/bin/harden_codex_skills.py +141 -0
  7. package/bin/install.mjs +491 -491
  8. package/bin/migrate-eng-buddy-data.py +875 -0
  9. package/bin/playbook_engine/__init__.py +1 -0
  10. package/bin/playbook_engine/conftest.py +8 -0
  11. package/bin/playbook_engine/extractor.py +33 -0
  12. package/bin/playbook_engine/manager.py +102 -0
  13. package/bin/playbook_engine/models.py +84 -0
  14. package/bin/playbook_engine/registry.py +35 -0
  15. package/bin/playbook_engine/test_extractor.py +72 -0
  16. package/bin/playbook_engine/test_integration.py +129 -0
  17. package/bin/playbook_engine/test_manager.py +85 -0
  18. package/bin/playbook_engine/test_models.py +166 -0
  19. package/bin/playbook_engine/test_registry.py +67 -0
  20. package/bin/playbook_engine/test_tracer.py +86 -0
  21. package/bin/playbook_engine/tracer.py +93 -0
  22. package/bin/tasks_db.py +456 -0
  23. package/docs/HOOKS.md +243 -243
  24. package/docs/INBOX.md +233 -233
  25. package/ftm/SKILL.md +125 -122
  26. package/ftm-audit/SKILL.md +623 -623
  27. package/ftm-audit/references/protocols/PROJECT-PATTERNS.md +91 -91
  28. package/ftm-audit/references/protocols/RUNTIME-WIRING.md +66 -66
  29. package/ftm-audit/references/protocols/WIRING-CONTRACTS.md +135 -135
  30. package/ftm-audit/references/strategies/AUTO-FIX-STRATEGIES.md +69 -69
  31. package/ftm-audit/references/templates/REPORT-FORMAT.md +96 -96
  32. package/ftm-audit/scripts/run-knip.sh +23 -23
  33. package/ftm-audit.yml +2 -2
  34. package/ftm-brainstorm/SKILL.md +1003 -498
  35. package/ftm-brainstorm/evals/evals.json +180 -100
  36. package/ftm-brainstorm/evals/promptfoo.yaml +109 -109
  37. package/ftm-brainstorm/references/agent-prompts.md +552 -224
  38. package/ftm-brainstorm/references/plan-template.md +209 -121
  39. package/ftm-brainstorm.yml +2 -2
  40. package/ftm-browse/SKILL.md +454 -454
  41. package/ftm-browse/daemon/browser-manager.ts +206 -206
  42. package/ftm-browse/daemon/bun.lock +30 -30
  43. package/ftm-browse/daemon/cli.ts +347 -347
  44. package/ftm-browse/daemon/commands.ts +410 -410
  45. package/ftm-browse/daemon/main.ts +357 -357
  46. package/ftm-browse/daemon/package.json +17 -17
  47. package/ftm-browse/daemon/server.ts +189 -189
  48. package/ftm-browse/daemon/snapshot.ts +519 -519
  49. package/ftm-browse/daemon/tsconfig.json +22 -22
  50. package/ftm-browse.yml +4 -4
  51. package/ftm-capture/SKILL.md +370 -370
  52. package/ftm-capture.yml +4 -4
  53. package/ftm-codex-gate/SKILL.md +361 -361
  54. package/ftm-codex-gate.yml +2 -2
  55. package/ftm-config/SKILL.md +422 -345
  56. package/ftm-config.default.yml +125 -82
  57. package/ftm-config.yml +44 -2
  58. package/ftm-council/SKILL.md +416 -416
  59. package/ftm-council/references/prompts/CLAUDE-INVESTIGATION.md +60 -60
  60. package/ftm-council/references/prompts/CODEX-INVESTIGATION.md +58 -58
  61. package/ftm-council/references/prompts/GEMINI-INVESTIGATION.md +58 -58
  62. package/ftm-council/references/prompts/REBUTTAL-TEMPLATE.md +57 -57
  63. package/ftm-council/references/protocols/PREREQUISITES.md +47 -47
  64. package/ftm-council/references/protocols/STEP-0-FRAMING.md +46 -46
  65. package/ftm-council.yml +2 -2
  66. package/ftm-dashboard/SKILL.md +163 -163
  67. package/ftm-dashboard.yml +4 -4
  68. package/ftm-debug/SKILL.md +1037 -1037
  69. package/ftm-debug/references/phases/PHASE-0-INTAKE.md +58 -58
  70. package/ftm-debug/references/phases/PHASE-1-TRIAGE.md +46 -46
  71. package/ftm-debug/references/phases/PHASE-2-WAR-ROOM-AGENTS.md +279 -279
  72. package/ftm-debug/references/phases/PHASE-3-TO-6-EXECUTION.md +436 -436
  73. package/ftm-debug/references/protocols/BLACKBOARD.md +86 -86
  74. package/ftm-debug/references/protocols/EDGE-CASES.md +103 -103
  75. package/ftm-debug.yml +2 -2
  76. package/ftm-diagram/SKILL.md +277 -277
  77. package/ftm-diagram.yml +2 -2
  78. package/ftm-executor/SKILL.md +777 -777
  79. package/ftm-executor/references/STYLE-TEMPLATE.md +73 -73
  80. package/ftm-executor/references/phases/PHASE-0-VERIFICATION.md +62 -62
  81. package/ftm-executor/references/phases/PHASE-2-AGENT-ASSEMBLY.md +34 -34
  82. package/ftm-executor/references/phases/PHASE-3-WORKTREES.md +38 -38
  83. package/ftm-executor/references/phases/PHASE-4-5-AUDIT.md +72 -72
  84. package/ftm-executor/references/phases/PHASE-4-DISPATCH.md +66 -66
  85. package/ftm-executor/references/phases/PHASE-5-5-CODEX-GATE.md +73 -73
  86. package/ftm-executor/references/protocols/DOCUMENTATION-BOOTSTRAP.md +36 -36
  87. package/ftm-executor/references/protocols/MODEL-PROFILE.md +59 -59
  88. package/ftm-executor/references/protocols/PROGRESS-TRACKING.md +66 -66
  89. package/ftm-executor/runtime/ftm-runtime.mjs +252 -252
  90. package/ftm-executor/runtime/package.json +8 -8
  91. package/ftm-executor.yml +2 -2
  92. package/ftm-git/SKILL.md +441 -441
  93. package/ftm-git/evals/evals.json +26 -26
  94. package/ftm-git/evals/promptfoo.yaml +75 -75
  95. package/ftm-git/hooks/post-commit-experience.sh +92 -92
  96. package/ftm-git/references/patterns/SECRET-PATTERNS.md +104 -104
  97. package/ftm-git/references/protocols/REMEDIATION.md +139 -139
  98. package/ftm-git/scripts/pre-commit-secrets.sh +110 -110
  99. package/ftm-git.yml +2 -2
  100. package/ftm-inbox/backend/__pycache__/main.cpython-314.pyc +0 -0
  101. package/ftm-inbox/backend/adapters/_retry.py +64 -64
  102. package/ftm-inbox/backend/adapters/base.py +230 -230
  103. package/ftm-inbox/backend/adapters/freshservice.py +104 -104
  104. package/ftm-inbox/backend/adapters/gmail.py +125 -125
  105. package/ftm-inbox/backend/adapters/jira.py +136 -136
  106. package/ftm-inbox/backend/adapters/registry.py +192 -192
  107. package/ftm-inbox/backend/adapters/slack.py +110 -110
  108. package/ftm-inbox/backend/db/connection.py +54 -54
  109. package/ftm-inbox/backend/db/schema.py +78 -78
  110. package/ftm-inbox/backend/executor/__init__.py +7 -7
  111. package/ftm-inbox/backend/executor/engine.py +149 -149
  112. package/ftm-inbox/backend/executor/step_runner.py +98 -98
  113. package/ftm-inbox/backend/main.py +103 -103
  114. package/ftm-inbox/backend/models/__init__.py +1 -1
  115. package/ftm-inbox/backend/models/unified_task.py +36 -36
  116. package/ftm-inbox/backend/planner/__init__.py +6 -6
  117. package/ftm-inbox/backend/planner/__pycache__/__init__.cpython-314.pyc +0 -0
  118. package/ftm-inbox/backend/planner/__pycache__/generator.cpython-314.pyc +0 -0
  119. package/ftm-inbox/backend/planner/__pycache__/schema.cpython-314.pyc +0 -0
  120. package/ftm-inbox/backend/planner/generator.py +127 -127
  121. package/ftm-inbox/backend/planner/schema.py +34 -34
  122. package/ftm-inbox/backend/requirements.txt +5 -5
  123. package/ftm-inbox/backend/routes/__pycache__/plan.cpython-314.pyc +0 -0
  124. package/ftm-inbox/backend/routes/execute.py +186 -186
  125. package/ftm-inbox/backend/routes/health.py +52 -52
  126. package/ftm-inbox/backend/routes/inbox.py +68 -68
  127. package/ftm-inbox/backend/routes/plan.py +271 -271
  128. package/ftm-inbox/bin/launchagent.mjs +91 -91
  129. package/ftm-inbox/bin/setup.mjs +188 -188
  130. package/ftm-inbox/bin/start.sh +10 -10
  131. package/ftm-inbox/bin/status.sh +17 -17
  132. package/ftm-inbox/bin/stop.sh +8 -8
  133. package/ftm-inbox/config.example.yml +55 -55
  134. package/ftm-inbox/package-lock.json +2898 -2898
  135. package/ftm-inbox/package.json +26 -26
  136. package/ftm-inbox/postcss.config.js +6 -6
  137. package/ftm-inbox/src/app.css +199 -199
  138. package/ftm-inbox/src/app.html +18 -18
  139. package/ftm-inbox/src/lib/api.ts +166 -166
  140. package/ftm-inbox/src/lib/components/ExecutionLog.svelte +81 -81
  141. package/ftm-inbox/src/lib/components/InboxFeed.svelte +143 -143
  142. package/ftm-inbox/src/lib/components/PlanStep.svelte +271 -271
  143. package/ftm-inbox/src/lib/components/PlanView.svelte +206 -206
  144. package/ftm-inbox/src/lib/components/StreamPanel.svelte +99 -99
  145. package/ftm-inbox/src/lib/components/TaskCard.svelte +190 -190
  146. package/ftm-inbox/src/lib/components/ui/EmptyState.svelte +63 -63
  147. package/ftm-inbox/src/lib/components/ui/KawaiiCard.svelte +86 -86
  148. package/ftm-inbox/src/lib/components/ui/PillButton.svelte +106 -106
  149. package/ftm-inbox/src/lib/components/ui/StatusBadge.svelte +67 -67
  150. package/ftm-inbox/src/lib/components/ui/StreamDrawer.svelte +149 -149
  151. package/ftm-inbox/src/lib/components/ui/ThemeToggle.svelte +80 -80
  152. package/ftm-inbox/src/lib/theme.ts +47 -47
  153. package/ftm-inbox/src/routes/+layout.svelte +76 -76
  154. package/ftm-inbox/src/routes/+page.svelte +401 -401
  155. package/ftm-inbox/svelte.config.js +12 -12
  156. package/ftm-inbox/tailwind.config.ts +63 -63
  157. package/ftm-inbox/tsconfig.json +13 -13
  158. package/ftm-inbox/vite.config.ts +6 -6
  159. package/ftm-intent/SKILL.md +241 -241
  160. package/ftm-intent.yml +2 -2
  161. package/ftm-manifest.json +3794 -3794
  162. package/ftm-map/SKILL.md +291 -291
  163. package/ftm-map/scripts/db.py +712 -712
  164. package/ftm-map/scripts/index.py +415 -415
  165. package/ftm-map/scripts/parser.py +224 -224
  166. package/ftm-map/scripts/queries/go-tags.scm +20 -20
  167. package/ftm-map/scripts/queries/javascript-tags.scm +35 -35
  168. package/ftm-map/scripts/queries/python-tags.scm +31 -31
  169. package/ftm-map/scripts/queries/ruby-tags.scm +19 -19
  170. package/ftm-map/scripts/queries/rust-tags.scm +37 -37
  171. package/ftm-map/scripts/queries/typescript-tags.scm +41 -41
  172. package/ftm-map/scripts/query.py +301 -301
  173. package/ftm-map/scripts/ranker.py +377 -377
  174. package/ftm-map/scripts/requirements.txt +5 -5
  175. package/ftm-map/scripts/setup-hooks.sh +27 -27
  176. package/ftm-map/scripts/setup.sh +56 -56
  177. package/ftm-map/scripts/test_db.py +364 -364
  178. package/ftm-map/scripts/test_parser.py +174 -174
  179. package/ftm-map/scripts/test_query.py +183 -183
  180. package/ftm-map/scripts/test_ranker.py +199 -199
  181. package/ftm-map/scripts/views.py +591 -591
  182. package/ftm-map.yml +2 -2
  183. package/ftm-mind/SKILL.md +201 -1943
  184. package/ftm-mind/evals/promptfoo.yaml +142 -142
  185. package/ftm-mind/references/blackboard-protocol.md +110 -0
  186. package/ftm-mind/references/blackboard-schema.md +328 -328
  187. package/ftm-mind/references/complexity-guide.md +110 -110
  188. package/ftm-mind/references/complexity-sizing.md +138 -0
  189. package/ftm-mind/references/decide-act-protocol.md +172 -0
  190. package/ftm-mind/references/direct-execution.md +51 -0
  191. package/ftm-mind/references/environment-discovery.md +77 -0
  192. package/ftm-mind/references/event-registry.md +319 -319
  193. package/ftm-mind/references/mcp-inventory.md +300 -296
  194. package/ftm-mind/references/ops-routing.md +47 -0
  195. package/ftm-mind/references/orient-protocol.md +234 -0
  196. package/ftm-mind/references/personality.md +40 -0
  197. package/ftm-mind/references/protocols/COMPLEXITY-SIZING.md +72 -72
  198. package/ftm-mind/references/protocols/MCP-HEURISTICS.md +32 -32
  199. package/ftm-mind/references/protocols/PLAN-APPROVAL.md +80 -80
  200. package/ftm-mind/references/reflexion-protocol.md +249 -249
  201. package/ftm-mind/references/routing/SCENARIOS.md +22 -22
  202. package/ftm-mind/references/routing-scenarios.md +35 -35
  203. package/ftm-mind.yml +2 -2
  204. package/ftm-ops.yml +4 -0
  205. package/ftm-pause/SKILL.md +395 -395
  206. package/ftm-pause/references/protocols/SKILL-RESTORE-PROTOCOLS.md +186 -186
  207. package/ftm-pause/references/protocols/VALIDATION.md +80 -80
  208. package/ftm-pause.yml +2 -2
  209. package/ftm-researcher/SKILL.md +275 -275
  210. package/ftm-researcher/evals/agent-diversity.yaml +17 -17
  211. package/ftm-researcher/evals/synthesis-quality.yaml +12 -12
  212. package/ftm-researcher/evals/trigger-accuracy.yaml +39 -39
  213. package/ftm-researcher/references/adaptive-search.md +116 -116
  214. package/ftm-researcher/references/agent-prompts.md +193 -193
  215. package/ftm-researcher/references/council-integration.md +193 -193
  216. package/ftm-researcher/references/output-format.md +203 -203
  217. package/ftm-researcher/references/synthesis-pipeline.md +165 -165
  218. package/ftm-researcher/scripts/score_credibility.py +234 -234
  219. package/ftm-researcher/scripts/validate_research.py +92 -92
  220. package/ftm-researcher.yml +2 -2
  221. package/ftm-resume/SKILL.md +518 -518
  222. package/ftm-resume/references/protocols/VALIDATION.md +172 -172
  223. package/ftm-resume.yml +2 -2
  224. package/ftm-retro/SKILL.md +380 -380
  225. package/ftm-retro/references/protocols/SCORING-RUBRICS.md +89 -89
  226. package/ftm-retro/references/templates/REPORT-FORMAT.md +109 -109
  227. package/ftm-retro.yml +2 -2
  228. package/ftm-routine/SKILL.md +170 -170
  229. package/ftm-routine.yml +4 -4
  230. package/ftm-state/blackboard/capabilities.json +5 -5
  231. package/ftm-state/blackboard/capabilities.schema.json +27 -27
  232. package/ftm-state/blackboard/context.json +37 -23
  233. package/ftm-state/blackboard/experiences/doom-statusline-fix.json +26 -0
  234. package/ftm-state/blackboard/experiences/hackathon-pages-site.json +26 -0
  235. package/ftm-state/blackboard/experiences/hindsight-sso-kickoff.json +42 -0
  236. package/ftm-state/blackboard/experiences/index.json +58 -9
  237. package/ftm-state/blackboard/experiences/learning-ragnarok-api-access.json +23 -0
  238. package/ftm-state/blackboard/experiences/nordlayer-members-auto-assign.json +26 -0
  239. package/ftm-state/blackboard/experiences/saml2aws-stale-session-fix.json +41 -0
  240. package/ftm-state/blackboard/patterns.json +6 -6
  241. package/ftm-state/schemas/context.schema.json +130 -130
  242. package/ftm-state/schemas/experience-index.schema.json +77 -77
  243. package/ftm-state/schemas/experience.schema.json +78 -78
  244. package/ftm-state/schemas/patterns.schema.json +44 -44
  245. package/ftm-upgrade/SKILL.md +194 -194
  246. package/ftm-upgrade/scripts/check-version.sh +76 -76
  247. package/ftm-upgrade/scripts/upgrade.sh +143 -143
  248. package/ftm-upgrade.yml +2 -2
  249. package/ftm-verify.yml +2 -2
  250. package/ftm.yml +2 -2
  251. package/hooks/ftm-auto-log.sh +137 -0
  252. package/hooks/ftm-blackboard-enforcer.sh +93 -93
  253. package/hooks/ftm-discovery-reminder.sh +90 -90
  254. package/hooks/ftm-drafts-gate.sh +61 -61
  255. package/hooks/ftm-event-logger.mjs +107 -107
  256. package/hooks/ftm-install-hooks.sh +240 -0
  257. package/hooks/ftm-learning-capture.sh +117 -0
  258. package/hooks/ftm-map-autodetect.sh +79 -79
  259. package/hooks/ftm-pending-sync-check.sh +22 -22
  260. package/hooks/ftm-plan-gate.sh +92 -92
  261. package/hooks/ftm-post-commit-trigger.sh +57 -57
  262. package/hooks/ftm-post-compaction.sh +138 -0
  263. package/hooks/ftm-pre-compaction.sh +147 -0
  264. package/hooks/ftm-session-end.sh +52 -0
  265. package/hooks/ftm-session-snapshot.sh +213 -0
  266. package/hooks/settings-template.json +81 -81
  267. package/install.sh +363 -363
  268. package/package.json +84 -84
  269. 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).