feed-the-machine 1.5.1 → 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 -623
  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 -775
  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,172 +1,172 @@
1
- # Resume Validation Protocols
2
-
3
- Before attempting to restore a session, run these environment checks. Each check either passes, warns, or blocks resumption.
4
-
5
- ---
6
-
7
- ## Check 1: State File Integrity
8
-
9
- Read `~/.claude/ftm-state/STATE.md`.
10
-
11
- **File missing:**
12
- ```
13
- No saved ftm session found at ~/.claude/ftm-state/STATE.md
14
-
15
- To save a session mid-workflow, use /ftm-pause during any active ftm skill.
16
- ```
17
- Stop here.
18
-
19
- **File exists but unparseable (missing frontmatter, malformed YAML):**
20
- ```
21
- Found state file but it appears corrupted — missing required frontmatter fields.
22
- Expected fields: skill, phase, timestamp, project_dir
23
-
24
- Would you like me to try to extract what I can from the file, or should we start fresh?
25
- ```
26
-
27
- **Required frontmatter fields:**
28
-
29
- | Field | Required | Purpose |
30
- |-------|----------|---------|
31
- | `skill` | Yes | Which ftm skill to resume |
32
- | `phase` | Yes | Which phase the skill was in |
33
- | `phase_detail` | No | Human-readable position within phase |
34
- | `timestamp` | Yes | When the session was saved |
35
- | `project_dir` | Yes | Project directory the session was working in |
36
- | `git_branch` | No | Git branch at time of save |
37
- | `git_commit` | No | HEAD commit at time of save |
38
-
39
- **Incomplete state (missing critical sections — no "Next Step," no "Context Snapshot"):**
40
-
41
- Warn: "The state file is incomplete — it may have been saved during an error. I can try to resume with what's available, but some context may be missing. Alternatively, we can start fresh."
42
-
43
- ---
44
-
45
- ## Check 2: Version Compatibility
46
-
47
- If the state file has a `ftm_version` field, compare it to the installed skill version.
48
-
49
- - **Same version**: Pass.
50
- - **Minor version difference**: Warn. "This state was saved with an older version of ftm. The workflow may behave slightly differently, but resumption should work."
51
- - **Major version difference**: Block with explanation. "This state was saved with ftm v{N}, but the installed version is v{M}. Major version changes may have altered skill structure. Resuming could produce unexpected behavior. Recommend starting fresh."
52
- - **No version field**: Proceed without warning (pre-versioning state files are assumed compatible).
53
-
54
- ---
55
-
56
- ## Check 3: Project Directory
57
-
58
- ```bash
59
- test -d "{project_dir}" && echo "EXISTS" || echo "MISSING"
60
- ```
61
-
62
- - **EXISTS**: Pass. Continue.
63
- - **MISSING**: Block. "The project directory `{project_dir}` no longer exists. Cannot resume — the codebase isn't available. Did the project move?"
64
-
65
- ---
66
-
67
- ## Check 4: Git State (if git fields present)
68
-
69
- ```bash
70
- cd "{project_dir}" && git branch --show-current && git rev-parse --short HEAD
71
- ```
72
-
73
- Compare current branch and commit against saved values.
74
-
75
- - **Same branch, same commit**: Pass — nothing changed.
76
- - **Same branch, different commit**: Warn. "The codebase has been modified since the session was saved. {N} new commits on `{branch}` since `{saved_commit}`." Show the commit log between saved and current. Ask if the user wants to continue anyway or review changes first.
77
- - **Different branch**: Warn. "You're now on branch `{current}` but the session was saved on `{saved_branch}`. Would you like to switch back to `{saved_branch}`, or continue on `{current}`?"
78
-
79
- ---
80
-
81
- ## Check 5: Worktree Branches (executor and debug only)
82
-
83
- If the state file references worktree branches:
84
-
85
- ```bash
86
- cd "{project_dir}" && git worktree list
87
- git branch --list "plan-exec/*" "debug/*"
88
- ```
89
-
90
- - **All referenced branches exist**: Pass.
91
- - **Some missing**: Warn. List which branches are missing. "These worktree branches from the saved session no longer exist: {list}. Tasks associated with these branches may need to be re-executed."
92
- - **All missing**: Warn more strongly. "All worktree branches from the saved session have been cleaned up. Completed task work may have been merged already. In-progress tasks will need to restart."
93
-
94
- ---
95
-
96
- ## Check 6: Plan File (executor only)
97
-
98
- If the state references a plan file:
99
-
100
- ```bash
101
- test -f "{plan_path}" && echo "EXISTS" || echo "MISSING"
102
- ```
103
-
104
- - **EXISTS**: Pass.
105
- - **MISSING**: Block. "The plan file `{plan_path}` no longer exists. Cannot resume executor without a plan. Do you have the plan elsewhere?"
106
-
107
- ---
108
-
109
- ## Check 7: Artifact Files (debug only)
110
-
111
- Check for any referenced artifact files (RESEARCH-FINDINGS.md, HYPOTHESES.md, REPRODUCTION.md, etc.):
112
-
113
- ```bash
114
- for f in {artifact_paths}; do test -f "$f" && echo "$f: EXISTS" || echo "$f: MISSING"; done
115
- ```
116
-
117
- - **All exist**: Pass.
118
- - **Some missing**: Warn. The state file should contain the key content from these files, so they're reconstructible. Note which are missing.
119
-
120
- ---
121
-
122
- ## Check 8: Staleness
123
-
124
- Calculate the age of the saved state by comparing the `timestamp` field to the current time.
125
-
126
- - **< 24 hours**: Fresh. No warning needed.
127
- - **1–7 days**: Mild staleness. Note and proceed: "This session is {N} days old. The codebase may have changed — check the git log above."
128
- - **> 7 days**: Present staleness options explicitly:
129
-
130
- ```
131
- This session was saved 12 days ago. The codebase has likely changed significantly.
132
-
133
- Options:
134
- 1. Resume anyway — use the saved context but some references may be outdated
135
- 2. Resume with a fresh repo scan — re-run Phase 0 to update project context, then
136
- continue from where you left off
137
- 3. Start fresh — discard this state and begin a new session
138
-
139
- Which would you prefer?
140
- ```
141
-
142
- If the user picks option 2: run Phase 0 of the relevant skill (repo scan for brainstorm, plan re-read for executor, codebase reconnaissance for debug) with fresh data. Merge the new scan with the saved state — keeping all decisions, answers, and progress but updating the project context.
143
-
144
- ---
145
-
146
- ## Check 9: Skill Availability
147
-
148
- If the state says `skill: ftm-debug` but that skill isn't in the skills directory:
149
-
150
- "The saved session requires ftm-{skill} but that skill isn't available. Install it and try again."
151
-
152
- Block resumption.
153
-
154
- ---
155
-
156
- ## Validation Summary
157
-
158
- Run all applicable checks in order. Present a consolidated summary before asking the user to confirm:
159
-
160
- ```
161
- Validation complete:
162
- ✓ State file: valid
163
- ✓ Project directory: exists
164
- ✓ Git state: same branch, 2 new commits (show log)
165
- ⚠ Worktrees: plan-exec/task-3 missing
166
- ✓ Plan file: exists
167
- ✓ Session age: 6 hours
168
-
169
- 1 warning. Ready to resume? (or review warnings first)
170
- ```
171
-
172
- A single block-level failure prevents resumption. Warnings require user acknowledgment before proceeding.
1
+ # Resume Validation Protocols
2
+
3
+ Before attempting to restore a session, run these environment checks. Each check either passes, warns, or blocks resumption.
4
+
5
+ ---
6
+
7
+ ## Check 1: State File Integrity
8
+
9
+ Read `~/.claude/ftm-state/STATE.md`.
10
+
11
+ **File missing:**
12
+ ```
13
+ No saved ftm session found at ~/.claude/ftm-state/STATE.md
14
+
15
+ To save a session mid-workflow, use /ftm-pause during any active ftm skill.
16
+ ```
17
+ Stop here.
18
+
19
+ **File exists but unparseable (missing frontmatter, malformed YAML):**
20
+ ```
21
+ Found state file but it appears corrupted — missing required frontmatter fields.
22
+ Expected fields: skill, phase, timestamp, project_dir
23
+
24
+ Would you like me to try to extract what I can from the file, or should we start fresh?
25
+ ```
26
+
27
+ **Required frontmatter fields:**
28
+
29
+ | Field | Required | Purpose |
30
+ |-------|----------|---------|
31
+ | `skill` | Yes | Which ftm skill to resume |
32
+ | `phase` | Yes | Which phase the skill was in |
33
+ | `phase_detail` | No | Human-readable position within phase |
34
+ | `timestamp` | Yes | When the session was saved |
35
+ | `project_dir` | Yes | Project directory the session was working in |
36
+ | `git_branch` | No | Git branch at time of save |
37
+ | `git_commit` | No | HEAD commit at time of save |
38
+
39
+ **Incomplete state (missing critical sections — no "Next Step," no "Context Snapshot"):**
40
+
41
+ Warn: "The state file is incomplete — it may have been saved during an error. I can try to resume with what's available, but some context may be missing. Alternatively, we can start fresh."
42
+
43
+ ---
44
+
45
+ ## Check 2: Version Compatibility
46
+
47
+ If the state file has a `ftm_version` field, compare it to the installed skill version.
48
+
49
+ - **Same version**: Pass.
50
+ - **Minor version difference**: Warn. "This state was saved with an older version of ftm. The workflow may behave slightly differently, but resumption should work."
51
+ - **Major version difference**: Block with explanation. "This state was saved with ftm v{N}, but the installed version is v{M}. Major version changes may have altered skill structure. Resuming could produce unexpected behavior. Recommend starting fresh."
52
+ - **No version field**: Proceed without warning (pre-versioning state files are assumed compatible).
53
+
54
+ ---
55
+
56
+ ## Check 3: Project Directory
57
+
58
+ ```bash
59
+ test -d "{project_dir}" && echo "EXISTS" || echo "MISSING"
60
+ ```
61
+
62
+ - **EXISTS**: Pass. Continue.
63
+ - **MISSING**: Block. "The project directory `{project_dir}` no longer exists. Cannot resume — the codebase isn't available. Did the project move?"
64
+
65
+ ---
66
+
67
+ ## Check 4: Git State (if git fields present)
68
+
69
+ ```bash
70
+ cd "{project_dir}" && git branch --show-current && git rev-parse --short HEAD
71
+ ```
72
+
73
+ Compare current branch and commit against saved values.
74
+
75
+ - **Same branch, same commit**: Pass — nothing changed.
76
+ - **Same branch, different commit**: Warn. "The codebase has been modified since the session was saved. {N} new commits on `{branch}` since `{saved_commit}`." Show the commit log between saved and current. Ask if the user wants to continue anyway or review changes first.
77
+ - **Different branch**: Warn. "You're now on branch `{current}` but the session was saved on `{saved_branch}`. Would you like to switch back to `{saved_branch}`, or continue on `{current}`?"
78
+
79
+ ---
80
+
81
+ ## Check 5: Worktree Branches (executor and debug only)
82
+
83
+ If the state file references worktree branches:
84
+
85
+ ```bash
86
+ cd "{project_dir}" && git worktree list
87
+ git branch --list "plan-exec/*" "debug/*"
88
+ ```
89
+
90
+ - **All referenced branches exist**: Pass.
91
+ - **Some missing**: Warn. List which branches are missing. "These worktree branches from the saved session no longer exist: {list}. Tasks associated with these branches may need to be re-executed."
92
+ - **All missing**: Warn more strongly. "All worktree branches from the saved session have been cleaned up. Completed task work may have been merged already. In-progress tasks will need to restart."
93
+
94
+ ---
95
+
96
+ ## Check 6: Plan File (executor only)
97
+
98
+ If the state references a plan file:
99
+
100
+ ```bash
101
+ test -f "{plan_path}" && echo "EXISTS" || echo "MISSING"
102
+ ```
103
+
104
+ - **EXISTS**: Pass.
105
+ - **MISSING**: Block. "The plan file `{plan_path}` no longer exists. Cannot resume executor without a plan. Do you have the plan elsewhere?"
106
+
107
+ ---
108
+
109
+ ## Check 7: Artifact Files (debug only)
110
+
111
+ Check for any referenced artifact files (RESEARCH-FINDINGS.md, HYPOTHESES.md, REPRODUCTION.md, etc.):
112
+
113
+ ```bash
114
+ for f in {artifact_paths}; do test -f "$f" && echo "$f: EXISTS" || echo "$f: MISSING"; done
115
+ ```
116
+
117
+ - **All exist**: Pass.
118
+ - **Some missing**: Warn. The state file should contain the key content from these files, so they're reconstructible. Note which are missing.
119
+
120
+ ---
121
+
122
+ ## Check 8: Staleness
123
+
124
+ Calculate the age of the saved state by comparing the `timestamp` field to the current time.
125
+
126
+ - **< 24 hours**: Fresh. No warning needed.
127
+ - **1–7 days**: Mild staleness. Note and proceed: "This session is {N} days old. The codebase may have changed — check the git log above."
128
+ - **> 7 days**: Present staleness options explicitly:
129
+
130
+ ```
131
+ This session was saved 12 days ago. The codebase has likely changed significantly.
132
+
133
+ Options:
134
+ 1. Resume anyway — use the saved context but some references may be outdated
135
+ 2. Resume with a fresh repo scan — re-run Phase 0 to update project context, then
136
+ continue from where you left off
137
+ 3. Start fresh — discard this state and begin a new session
138
+
139
+ Which would you prefer?
140
+ ```
141
+
142
+ If the user picks option 2: run Phase 0 of the relevant skill (repo scan for brainstorm, plan re-read for executor, codebase reconnaissance for debug) with fresh data. Merge the new scan with the saved state — keeping all decisions, answers, and progress but updating the project context.
143
+
144
+ ---
145
+
146
+ ## Check 9: Skill Availability
147
+
148
+ If the state says `skill: ftm-debug` but that skill isn't in the skills directory:
149
+
150
+ "The saved session requires ftm-{skill} but that skill isn't available. Install it and try again."
151
+
152
+ Block resumption.
153
+
154
+ ---
155
+
156
+ ## Validation Summary
157
+
158
+ Run all applicable checks in order. Present a consolidated summary before asking the user to confirm:
159
+
160
+ ```
161
+ Validation complete:
162
+ ✓ State file: valid
163
+ ✓ Project directory: exists
164
+ ✓ Git state: same branch, 2 new commits (show log)
165
+ ⚠ Worktrees: plan-exec/task-3 missing
166
+ ✓ Plan file: exists
167
+ ✓ Session age: 6 hours
168
+
169
+ 1 warning. Ready to resume? (or review warnings first)
170
+ ```
171
+
172
+ A single block-level failure prevents resumption. Warnings require user acknowledgment before proceeding.
package/ftm-resume.yml CHANGED
@@ -1,2 +1,2 @@
1
- name: ftm-resume
2
- description: Resume a previously paused ftm skill session from saved state. Use when user says "resume", "continue where we left off", "ftm resume", "pick up", or starts a new conversation wanting to continue previous ftm work.
1
+ name: ftm-resume
2
+ description: Resume a previously paused ftm skill session from saved state. Use when user says "resume", "continue where we left off", "ftm resume", "pick up", or starts a new conversation wanting to continue previous ftm work.