This file is a runbook, not a status report. It deliberately contains no counts, no percentages, no criteria state and no "where we are" narrative. Every one of those lives in the session store, which is the only thing that stays true without someone remembering to edit it.
Four separate resume documents existed before this one, all at the repository root, all disagreeing. The most authoritative-looking was the most wrong: it was undated, so it read as canonical, and it named a pickup branch that had been superseded for days. That is why this file states nothing that can rot.
git clone https://github.com/CharlesHoskinson/foreman ~/foreman
cd ~/foreman
bash env/bootstrap-wsl.sh --profile full --yes # installs every dependency
bash install.sh # links the skill into agent homes
bash env/tool-check.sh # must print READY: yes
node skills/foreman/runtime/dist/fm-session.js recoverrecover is the checkpoint. It prints the durable facts, the measurements with
their freshness, and the open obligations.
Session store roles:
.foreman/session.dbis the host canonical store for live recover..foreman/session.ndjsonis the tracked recovery sidecar.
Neither file is always current. Reconcile before you treat either as truth.
Full dependency inventory, with what breaks without each entry:
dependencies/README.md.
Use a WSL-native path on ext4 — ~/foreman. Two checkout locations have
caused real losses:
- A
/mnt/c/...checkout left the installed plugin symlink resolving to zero files while the repository shipped 76. Every session that believed it was running the installed skill was running nothing. - A checkout under
/rootbreaks Windows interop for any path beneath it (AGENT_TRAPS.mdtrap 20), and several controls silently assumed that home and failed differently for every other user.
Verify the plugin actually resolves before trusting it:
bash tools/plugin-drift.sh ~/.claude/skills/foreman skills/foreman.
main is frozen for the duration of v0.3.0. The trunk is release/v0.3.0
(PR #27). Send all v0.3.0 work there.
A hotfix is the only exception. It branches from main, merges to main, and
is cherry-picked onto release/v0.3.0 the same day:
git checkout -b hotfix/<name> origin/main
# fix, test, PR, merge
git checkout release/v0.3.0
git cherry-pick <sha>A hotfix that has not been cherry-picked by end of day is drift, and drift on this branch is what the freeze exists to prevent.
| Question | Command |
|---|---|
| What is true, and what is owed? | node skills/foreman/runtime/dist/fm-session.js recover |
| Which numbers may I still quote? | node skills/foreman/runtime/dist/fm-session.js freshness --stale-only --format tsv |
| What am I about to break? | AGENT_TRAPS.md — standing rules, read before dispatching |
| What does the active release still need? | openspec/changes/v030-release-program/tasks.md and openspec/changes/v030-release-program/sprints.md |
| What did we decide not to fix? | docs/RESIDUALS.md |
A measurement is stale when any commit has touched its declared scope since it was taken. Stale is the resting state, not an alarm — but do not quote a stale number. Every stale measurement carries the command that regenerates it; re-run it and re-record rather than repeating it.
Run the gate and read its own verdict line, not your impression of it:
FOREMAN_CI_BATS=1 bash tools/ci-local.shThe last line is CI-LOCAL RESULT PASS|FAIL gates_failed=<n>. Any script that
edits tracked files must gate its commit on its own verification and exit
non-zero on failure — a checklist corruption once reached origin because a
script printed a verification result and then committed regardless.
These need a human, not more analysis. Read them in the store rather than here, because a summary in this file would be stale within a day:
node skills/foreman/runtime/dist/fm-session.js recover | grep -A3 "OWNER DECISION"AGENT_TRAPS.md— standing rules, each earned by a specific failurebugeventlog.md— the incident ledger those rules were distilled fromdevlog/— the only artefact that accumulates; every session ends with onedependencies/README.md— what this software needs to rundocs/RESIDUALS.md— what this release does not doopenspec/changes/v030-release-program/— active v0.3.0 program