feed-the-machine 1.6.0 → 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.
- package/LICENSE +21 -21
- package/README.md +170 -170
- package/bin/brain.py +1340 -0
- package/bin/convert_claude_skills_to_codex.py +490 -0
- package/bin/generate-manifest.mjs +463 -463
- package/bin/harden_codex_skills.py +141 -0
- package/bin/install.mjs +491 -491
- package/bin/migrate-eng-buddy-data.py +875 -0
- package/bin/playbook_engine/__init__.py +1 -0
- package/bin/playbook_engine/conftest.py +8 -0
- package/bin/playbook_engine/extractor.py +33 -0
- package/bin/playbook_engine/manager.py +102 -0
- package/bin/playbook_engine/models.py +84 -0
- package/bin/playbook_engine/registry.py +35 -0
- package/bin/playbook_engine/test_extractor.py +72 -0
- package/bin/playbook_engine/test_integration.py +129 -0
- package/bin/playbook_engine/test_manager.py +85 -0
- package/bin/playbook_engine/test_models.py +166 -0
- package/bin/playbook_engine/test_registry.py +67 -0
- package/bin/playbook_engine/test_tracer.py +86 -0
- package/bin/playbook_engine/tracer.py +93 -0
- package/bin/tasks_db.py +456 -0
- package/docs/HOOKS.md +243 -243
- package/docs/INBOX.md +233 -233
- package/ftm/SKILL.md +125 -122
- package/ftm-audit/SKILL.md +623 -623
- package/ftm-audit/references/protocols/PROJECT-PATTERNS.md +91 -91
- package/ftm-audit/references/protocols/RUNTIME-WIRING.md +66 -66
- package/ftm-audit/references/protocols/WIRING-CONTRACTS.md +135 -135
- package/ftm-audit/references/strategies/AUTO-FIX-STRATEGIES.md +69 -69
- package/ftm-audit/references/templates/REPORT-FORMAT.md +96 -96
- package/ftm-audit/scripts/run-knip.sh +23 -23
- package/ftm-audit.yml +2 -2
- package/ftm-brainstorm/SKILL.md +1003 -498
- package/ftm-brainstorm/evals/evals.json +180 -100
- package/ftm-brainstorm/evals/promptfoo.yaml +109 -109
- package/ftm-brainstorm/references/agent-prompts.md +552 -224
- package/ftm-brainstorm/references/plan-template.md +209 -121
- package/ftm-brainstorm.yml +2 -2
- package/ftm-browse/SKILL.md +454 -454
- package/ftm-browse/daemon/browser-manager.ts +206 -206
- package/ftm-browse/daemon/bun.lock +30 -30
- package/ftm-browse/daemon/cli.ts +347 -347
- package/ftm-browse/daemon/commands.ts +410 -410
- package/ftm-browse/daemon/main.ts +357 -357
- package/ftm-browse/daemon/package.json +17 -17
- package/ftm-browse/daemon/server.ts +189 -189
- package/ftm-browse/daemon/snapshot.ts +519 -519
- package/ftm-browse/daemon/tsconfig.json +22 -22
- package/ftm-browse.yml +4 -4
- package/ftm-capture/SKILL.md +370 -370
- package/ftm-capture.yml +4 -4
- package/ftm-codex-gate/SKILL.md +361 -361
- package/ftm-codex-gate.yml +2 -2
- package/ftm-config/SKILL.md +422 -345
- package/ftm-config.default.yml +125 -82
- package/ftm-config.yml +44 -2
- package/ftm-council/SKILL.md +416 -416
- package/ftm-council/references/prompts/CLAUDE-INVESTIGATION.md +60 -60
- package/ftm-council/references/prompts/CODEX-INVESTIGATION.md +58 -58
- package/ftm-council/references/prompts/GEMINI-INVESTIGATION.md +58 -58
- package/ftm-council/references/prompts/REBUTTAL-TEMPLATE.md +57 -57
- package/ftm-council/references/protocols/PREREQUISITES.md +47 -47
- package/ftm-council/references/protocols/STEP-0-FRAMING.md +46 -46
- package/ftm-council.yml +2 -2
- package/ftm-dashboard/SKILL.md +163 -163
- package/ftm-dashboard.yml +4 -4
- package/ftm-debug/SKILL.md +1037 -1037
- package/ftm-debug/references/phases/PHASE-0-INTAKE.md +58 -58
- package/ftm-debug/references/phases/PHASE-1-TRIAGE.md +46 -46
- package/ftm-debug/references/phases/PHASE-2-WAR-ROOM-AGENTS.md +279 -279
- package/ftm-debug/references/phases/PHASE-3-TO-6-EXECUTION.md +436 -436
- package/ftm-debug/references/protocols/BLACKBOARD.md +86 -86
- package/ftm-debug/references/protocols/EDGE-CASES.md +103 -103
- package/ftm-debug.yml +2 -2
- package/ftm-diagram/SKILL.md +277 -277
- package/ftm-diagram.yml +2 -2
- package/ftm-executor/SKILL.md +777 -777
- package/ftm-executor/references/STYLE-TEMPLATE.md +73 -73
- package/ftm-executor/references/phases/PHASE-0-VERIFICATION.md +62 -62
- package/ftm-executor/references/phases/PHASE-2-AGENT-ASSEMBLY.md +34 -34
- package/ftm-executor/references/phases/PHASE-3-WORKTREES.md +38 -38
- package/ftm-executor/references/phases/PHASE-4-5-AUDIT.md +72 -72
- package/ftm-executor/references/phases/PHASE-4-DISPATCH.md +66 -66
- package/ftm-executor/references/phases/PHASE-5-5-CODEX-GATE.md +73 -73
- package/ftm-executor/references/protocols/DOCUMENTATION-BOOTSTRAP.md +36 -36
- package/ftm-executor/references/protocols/MODEL-PROFILE.md +59 -59
- package/ftm-executor/references/protocols/PROGRESS-TRACKING.md +66 -66
- package/ftm-executor/runtime/ftm-runtime.mjs +252 -252
- package/ftm-executor/runtime/package.json +8 -8
- package/ftm-executor.yml +2 -2
- package/ftm-git/SKILL.md +441 -441
- package/ftm-git/evals/evals.json +26 -26
- package/ftm-git/evals/promptfoo.yaml +75 -75
- package/ftm-git/hooks/post-commit-experience.sh +92 -92
- package/ftm-git/references/patterns/SECRET-PATTERNS.md +104 -104
- package/ftm-git/references/protocols/REMEDIATION.md +139 -139
- package/ftm-git/scripts/pre-commit-secrets.sh +110 -110
- package/ftm-git.yml +2 -2
- package/ftm-inbox/backend/__pycache__/main.cpython-314.pyc +0 -0
- package/ftm-inbox/backend/adapters/_retry.py +64 -64
- package/ftm-inbox/backend/adapters/base.py +230 -230
- package/ftm-inbox/backend/adapters/freshservice.py +104 -104
- package/ftm-inbox/backend/adapters/gmail.py +125 -125
- package/ftm-inbox/backend/adapters/jira.py +136 -136
- package/ftm-inbox/backend/adapters/registry.py +192 -192
- package/ftm-inbox/backend/adapters/slack.py +110 -110
- package/ftm-inbox/backend/db/connection.py +54 -54
- package/ftm-inbox/backend/db/schema.py +78 -78
- package/ftm-inbox/backend/executor/__init__.py +7 -7
- package/ftm-inbox/backend/executor/engine.py +149 -149
- package/ftm-inbox/backend/executor/step_runner.py +98 -98
- package/ftm-inbox/backend/main.py +103 -103
- package/ftm-inbox/backend/models/__init__.py +1 -1
- package/ftm-inbox/backend/models/unified_task.py +36 -36
- package/ftm-inbox/backend/planner/__init__.py +6 -6
- package/ftm-inbox/backend/planner/__pycache__/__init__.cpython-314.pyc +0 -0
- package/ftm-inbox/backend/planner/__pycache__/generator.cpython-314.pyc +0 -0
- package/ftm-inbox/backend/planner/__pycache__/schema.cpython-314.pyc +0 -0
- package/ftm-inbox/backend/planner/generator.py +127 -127
- package/ftm-inbox/backend/planner/schema.py +34 -34
- package/ftm-inbox/backend/requirements.txt +5 -5
- package/ftm-inbox/backend/routes/__pycache__/plan.cpython-314.pyc +0 -0
- package/ftm-inbox/backend/routes/execute.py +186 -186
- package/ftm-inbox/backend/routes/health.py +52 -52
- package/ftm-inbox/backend/routes/inbox.py +68 -68
- package/ftm-inbox/backend/routes/plan.py +271 -271
- package/ftm-inbox/bin/launchagent.mjs +91 -91
- package/ftm-inbox/bin/setup.mjs +188 -188
- package/ftm-inbox/bin/start.sh +10 -10
- package/ftm-inbox/bin/status.sh +17 -17
- package/ftm-inbox/bin/stop.sh +8 -8
- package/ftm-inbox/config.example.yml +55 -55
- package/ftm-inbox/package-lock.json +2898 -2898
- package/ftm-inbox/package.json +26 -26
- package/ftm-inbox/postcss.config.js +6 -6
- package/ftm-inbox/src/app.css +199 -199
- package/ftm-inbox/src/app.html +18 -18
- package/ftm-inbox/src/lib/api.ts +166 -166
- package/ftm-inbox/src/lib/components/ExecutionLog.svelte +81 -81
- package/ftm-inbox/src/lib/components/InboxFeed.svelte +143 -143
- package/ftm-inbox/src/lib/components/PlanStep.svelte +271 -271
- package/ftm-inbox/src/lib/components/PlanView.svelte +206 -206
- package/ftm-inbox/src/lib/components/StreamPanel.svelte +99 -99
- package/ftm-inbox/src/lib/components/TaskCard.svelte +190 -190
- package/ftm-inbox/src/lib/components/ui/EmptyState.svelte +63 -63
- package/ftm-inbox/src/lib/components/ui/KawaiiCard.svelte +86 -86
- package/ftm-inbox/src/lib/components/ui/PillButton.svelte +106 -106
- package/ftm-inbox/src/lib/components/ui/StatusBadge.svelte +67 -67
- package/ftm-inbox/src/lib/components/ui/StreamDrawer.svelte +149 -149
- package/ftm-inbox/src/lib/components/ui/ThemeToggle.svelte +80 -80
- package/ftm-inbox/src/lib/theme.ts +47 -47
- package/ftm-inbox/src/routes/+layout.svelte +76 -76
- package/ftm-inbox/src/routes/+page.svelte +401 -401
- package/ftm-inbox/svelte.config.js +12 -12
- package/ftm-inbox/tailwind.config.ts +63 -63
- package/ftm-inbox/tsconfig.json +13 -13
- package/ftm-inbox/vite.config.ts +6 -6
- package/ftm-intent/SKILL.md +241 -241
- package/ftm-intent.yml +2 -2
- package/ftm-manifest.json +3794 -3794
- package/ftm-map/SKILL.md +291 -291
- package/ftm-map/scripts/db.py +712 -712
- package/ftm-map/scripts/index.py +415 -415
- package/ftm-map/scripts/parser.py +224 -224
- package/ftm-map/scripts/queries/go-tags.scm +20 -20
- package/ftm-map/scripts/queries/javascript-tags.scm +35 -35
- package/ftm-map/scripts/queries/python-tags.scm +31 -31
- package/ftm-map/scripts/queries/ruby-tags.scm +19 -19
- package/ftm-map/scripts/queries/rust-tags.scm +37 -37
- package/ftm-map/scripts/queries/typescript-tags.scm +41 -41
- package/ftm-map/scripts/query.py +301 -301
- package/ftm-map/scripts/ranker.py +377 -377
- package/ftm-map/scripts/requirements.txt +5 -5
- package/ftm-map/scripts/setup-hooks.sh +27 -27
- package/ftm-map/scripts/setup.sh +56 -56
- package/ftm-map/scripts/test_db.py +364 -364
- package/ftm-map/scripts/test_parser.py +174 -174
- package/ftm-map/scripts/test_query.py +183 -183
- package/ftm-map/scripts/test_ranker.py +199 -199
- package/ftm-map/scripts/views.py +591 -591
- package/ftm-map.yml +2 -2
- package/ftm-mind/SKILL.md +201 -1943
- package/ftm-mind/evals/promptfoo.yaml +142 -142
- package/ftm-mind/references/blackboard-protocol.md +110 -0
- package/ftm-mind/references/blackboard-schema.md +328 -328
- package/ftm-mind/references/complexity-guide.md +110 -110
- package/ftm-mind/references/complexity-sizing.md +138 -0
- package/ftm-mind/references/decide-act-protocol.md +172 -0
- package/ftm-mind/references/direct-execution.md +51 -0
- package/ftm-mind/references/environment-discovery.md +77 -0
- package/ftm-mind/references/event-registry.md +319 -319
- package/ftm-mind/references/mcp-inventory.md +300 -296
- package/ftm-mind/references/ops-routing.md +47 -0
- package/ftm-mind/references/orient-protocol.md +234 -0
- package/ftm-mind/references/personality.md +40 -0
- package/ftm-mind/references/protocols/COMPLEXITY-SIZING.md +72 -72
- package/ftm-mind/references/protocols/MCP-HEURISTICS.md +32 -32
- package/ftm-mind/references/protocols/PLAN-APPROVAL.md +80 -80
- package/ftm-mind/references/reflexion-protocol.md +249 -249
- package/ftm-mind/references/routing/SCENARIOS.md +22 -22
- package/ftm-mind/references/routing-scenarios.md +35 -35
- package/ftm-mind.yml +2 -2
- package/ftm-ops.yml +4 -0
- package/ftm-pause/SKILL.md +395 -395
- package/ftm-pause/references/protocols/SKILL-RESTORE-PROTOCOLS.md +186 -186
- package/ftm-pause/references/protocols/VALIDATION.md +80 -80
- package/ftm-pause.yml +2 -2
- package/ftm-researcher/SKILL.md +275 -275
- package/ftm-researcher/evals/agent-diversity.yaml +17 -17
- package/ftm-researcher/evals/synthesis-quality.yaml +12 -12
- package/ftm-researcher/evals/trigger-accuracy.yaml +39 -39
- package/ftm-researcher/references/adaptive-search.md +116 -116
- package/ftm-researcher/references/agent-prompts.md +193 -193
- package/ftm-researcher/references/council-integration.md +193 -193
- package/ftm-researcher/references/output-format.md +203 -203
- package/ftm-researcher/references/synthesis-pipeline.md +165 -165
- package/ftm-researcher/scripts/score_credibility.py +234 -234
- package/ftm-researcher/scripts/validate_research.py +92 -92
- package/ftm-researcher.yml +2 -2
- package/ftm-resume/SKILL.md +518 -518
- package/ftm-resume/references/protocols/VALIDATION.md +172 -172
- package/ftm-resume.yml +2 -2
- package/ftm-retro/SKILL.md +380 -380
- package/ftm-retro/references/protocols/SCORING-RUBRICS.md +89 -89
- package/ftm-retro/references/templates/REPORT-FORMAT.md +109 -109
- package/ftm-retro.yml +2 -2
- package/ftm-routine/SKILL.md +170 -170
- package/ftm-routine.yml +4 -4
- package/ftm-state/blackboard/capabilities.json +5 -5
- package/ftm-state/blackboard/capabilities.schema.json +27 -27
- package/ftm-state/blackboard/context.json +37 -23
- package/ftm-state/blackboard/experiences/doom-statusline-fix.json +26 -0
- package/ftm-state/blackboard/experiences/hackathon-pages-site.json +26 -0
- package/ftm-state/blackboard/experiences/hindsight-sso-kickoff.json +42 -0
- package/ftm-state/blackboard/experiences/index.json +58 -9
- package/ftm-state/blackboard/experiences/learning-ragnarok-api-access.json +23 -0
- package/ftm-state/blackboard/experiences/nordlayer-members-auto-assign.json +26 -0
- package/ftm-state/blackboard/experiences/saml2aws-stale-session-fix.json +41 -0
- package/ftm-state/blackboard/patterns.json +6 -6
- package/ftm-state/schemas/context.schema.json +130 -130
- package/ftm-state/schemas/experience-index.schema.json +77 -77
- package/ftm-state/schemas/experience.schema.json +78 -78
- package/ftm-state/schemas/patterns.schema.json +44 -44
- package/ftm-upgrade/SKILL.md +194 -194
- package/ftm-upgrade/scripts/check-version.sh +76 -76
- package/ftm-upgrade/scripts/upgrade.sh +143 -143
- package/ftm-upgrade.yml +2 -2
- package/ftm-verify.yml +2 -2
- package/ftm.yml +2 -2
- package/hooks/ftm-auto-log.sh +137 -0
- package/hooks/ftm-blackboard-enforcer.sh +93 -93
- package/hooks/ftm-discovery-reminder.sh +90 -90
- package/hooks/ftm-drafts-gate.sh +61 -61
- package/hooks/ftm-event-logger.mjs +107 -107
- package/hooks/ftm-install-hooks.sh +240 -0
- package/hooks/ftm-learning-capture.sh +117 -0
- package/hooks/ftm-map-autodetect.sh +79 -79
- package/hooks/ftm-pending-sync-check.sh +22 -22
- package/hooks/ftm-plan-gate.sh +92 -92
- package/hooks/ftm-post-commit-trigger.sh +57 -57
- package/hooks/ftm-post-compaction.sh +138 -0
- package/hooks/ftm-pre-compaction.sh +147 -0
- package/hooks/ftm-session-end.sh +52 -0
- package/hooks/ftm-session-snapshot.sh +213 -0
- package/hooks/settings-template.json +81 -81
- package/install.sh +363 -363
- package/package.json +84 -84
- 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.
|