synthesis-project-resume · v1.0.0 · 2026-09-20 · sha256 16c5fd006591beed
synthesis-project-resume v1.0.0A
Immutable. This exact content is served forever at /api/v1/blob/16c5fd006591beed.
--- name: synthesis-project-resume description: "Start or resume any synthesis project in any harness on any machine with full verified context: classify the session (continuing, fresh, or wrong-project paste), load index plus CONTEXT plus REFERENCE plus recent sessions, respect live foreign claims, surface cross-machine changes, and upgrade stale project formats. Use when pasting a console resume prompt or (re)opening project work." license: "CC0-1.0" depends_on: [] metadata: author: "Rajiv Pant" version: "1.0.0" source_repo: "github.com/synthesisengineering/synthesis-skills" source_type: "public" --- # Project Resume **Version 1.0.0** (2026-09-20): first release — the R1–R10 resume contract, the three-way session classification, the one-screen resumption brief, and `scripts/resume_probe.py` for machine-readable project status. The normative contract is [references/requirements.md](references/requirements.md). This file is the operating protocol. It assumes nothing about the harness beyond a file system and git: no slash commands, no plugin loader, no MCP servers. ## 1. Invocation The console emits the resume prompt (R1): ``` Resume synthesis project <id> (source <name>). Skill: <abs path>/skills/synthesis-project-resume/SKILL.md ``` Read the skill file at the given path first — it is this file, and the path is how skill-less harnesses (Cursor and later arrivals) reach it. Resolve the source name to its repo checkout: the principal's workspace layout, or ask once and remember. Unknown project id means R6 (start): interview briefly (name, goal, workspace, repo family) and scaffold per the project-management contract, then continue as a fresh resume. ## 2. Classify the session (R2) Compare the requested project against the project your loaded context names — the index entry, CONTEXT, or working files already live in this session: 1. **Continuing** — same project already live. Say so in one line and keep working. Never reload-and-resummarize live context. 2. **Fresh** — no project loaded. Run the fresh-resume load (§3). 3. **Wrong-project paste** — a different project is live here. STOP. Name both projects and what is at stake in the live one, then ask whether to switch, and wait. Never strand live work silently. When the session's project is ambiguous (fragments of several projects in context), treat it as case 3 and name the candidates. False continuity corrupts; false caution costs one question. ## 3. Fresh-resume load (R3, R5, R8) 1. Pull the knowledge repo (fast-forward only; divergence is reported, never force-resolved). 2. Read the index entry, `RESUME_STATE.json` (v2; verify the skeleton when present), `CURRENT_STATE.json` (operational handoff, when present), `CONTEXT.md`, `REFERENCE.md`, the two most recent session files, and any handoff queue entries — in that order. 3. Run `scripts/resume_probe.py` for the machine-readable status (newest session, cross-machine changes, format version). 4. Check the coordination board for live foreign claims on the project paths (R4). Overlap means read-only until the principal decides — say who, what, since when. 5. Check the format version (R9). Older than installed means migrate-verify-resume through the versioned format contract before any other write. 6. Deliver the one-screen resumption brief: goal in one line, where it stands, the newest three facts, open loops with owners, the suggested next action. State what was loaded and the newest item's date. ## 4. Cross-machine surfacing (R5) `git log` on the project path since this machine's last touch is part of every brief: "Mac B moved this yesterday — two session appends and a REFERENCE update." The principal should feel continuity, not a cold start. When the probe cannot reach the remotes, say so once (R10) and resume from local state. ## 5. What the skill refuses - Switching projects on a wrong-project paste without confirmation. - Writing through a live foreign claim. - Claiming context it did not read. - Resuming a stale-format project without migrating it first. - Force-resolving repo divergence to make a resume "clean."