Skip to content

Commit 6a6104e

Browse files
committed
Use selected harness paths in Algorithm checkpointing
1 parent 25182b4 commit 6a6104e

2 files changed

Lines changed: 9 additions & 8 deletions

File tree

Releases/v5.0.0/.claude/PAI/ALGORITHM/v6.3.0.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
**The ISA has twelve sections (NEW v6.2.0).** Order is fixed: `## Problem`, `## Vision`, `## Out of Scope`, `## Principles`, `## Constraints`, `## Goal`, `## Criteria`, `## Test Strategy`, `## Features`, `## Decisions`, `## Changelog`, `## Verification`. Required sections per tier are HARD-gated (see Tier Completeness Gate below). Empty sections never appear — Bitter Pill discipline preserved. Three-guardrail taxonomy: **Principles** bind the *thinking* (substrate-independent, Deutsch reach), **Constraints** bind the *solution space* (immovable architectural mandates), **Out of Scope** binds the *vision* (anti-vision — what is *not* included, declared upfront), **Anti-criteria** bind the *test surface* (granular `Anti:` ISCs derived from Out of Scope and regression-prevention concerns). The first three are author-stated; anti-criteria are derived probes.
1414

15-
**The ISA Skill (NEW v6.2.0)** at `~/.claude/skills/ISA/` owns the canonical template, the six workflows that generate and refine ISAs (Scaffold, Interview, CheckCompleteness, Reconcile, Seed, Append), and the example library. The Algorithm OBSERVE phase invokes `Skill("ISA", "scaffold from prompt at tier T")` to produce a populated ISA at the canonical location. PLAN may invoke `Skill("ISA", "extract feature X as ephemeral file")` for Ralph Loop / Maestro work. LEARN routes Decisions / Changelog / Verification entries through `Skill("ISA", "append ...")` so the Deutsch conjecture/refutation/learning Changelog format doesn't degrade.
15+
**The ISA Skill (NEW v6.2.0)** at `<harness-home>/skills/ISA/` owns the canonical template, the six workflows that generate and refine ISAs (Scaffold, Interview, CheckCompleteness, Reconcile, Seed, Append), and the example library. The Algorithm OBSERVE phase invokes `Skill("ISA", "scaffold from prompt at tier T")` to produce a populated ISA at the canonical location. PLAN may invoke `Skill("ISA", "extract feature X as ephemeral file")` for Ralph Loop / Maestro work. LEARN routes Decisions / Changelog / Verification entries through `Skill("ISA", "append ...")` so the Deutsch conjecture/refutation/learning Changelog format doesn't degrade.
1616

1717
**The ISA is a living articulation.** OBSERVE captures the best initial framing; through pursuit — feedback, tool returns, capability outputs, ISC failures, new signal — the Goal sharpens, ISCs split or merge, the articulation tightens. Refinements are logged in `## Decisions` with a `refined:` prefix; structural learnings land in `## Changelog` in conjecture/refutation/learning format; git history of the ISA file is the trail.
1818

@@ -167,7 +167,7 @@ The `CheckCompleteness` workflow enforces this gate. A miss blocks `phase: compl
167167
- EXECUTE / VERIFY / LEARN: `Skill("ISA", "append <type> to <isa-path>: <content>")` — canonical writer for Decisions / Changelog / Verification.
168168
- LEARN: `Skill("ISA", "reconcile <ephemeral> → <master>")` — deterministic merge after ephemeral feature work.
169169

170-
**v6.2.x deferred:** parser updates so `ISASync.hook.ts`, `CheckpointPerISC.hook.ts`, and `hooks/lib/isa-utils.ts` automatically discover `<project>/ISA.md` alongside `MEMORY/WORK/` paths and parse the twelve-section frame; Pulse rendering for two homes; project-ISA seeding migration; `~/.claude/skills/ISA/Tools/*.ts` CLI implementations. Until then, the model uses Read/Edit/Write tools and invokes the ISA skill workflows directly.
170+
**v6.2.x deferred:** parser updates so `ISASync.hook.ts`, `CheckpointPerISC.hook.ts`, and `hooks/lib/isa-utils.ts` automatically discover `<project>/ISA.md` alongside `MEMORY/WORK/` paths and parse the twelve-section frame; Pulse rendering for two homes; project-ISA seeding migration; `<harness-home>/skills/ISA/Tools/*.ts` CLI implementations. Until then, the model uses Read/Edit/Write tools and invokes the ISA skill workflows directly.
171171

172172
### ISC Quality System
173173

@@ -467,7 +467,7 @@ Use `Skill("ISA", "append verification to <isa-path>: ISC-N <probe-type> <eviden
467467

468468
### 🪢 CHECKPOINTS (per-step durability)
469469

470-
Every `[ ]``[x]` ISC transition fires `CheckpointPerISC.hook.ts`. For each repo in `~/.claude/checkpoint-repos.txt` with uncommitted changes, the hook auto-commits. Idempotent via sidecar `MEMORY/WORK/{slug}/.checkpoint-state.json`. (v6.2.x: hook will also fire on `<project>/ISA.md` edits once isa-utils discovery lands.)
470+
Every `[ ]``[x]` ISC transition fires `CheckpointPerISC.hook.ts`. For each repo in `<harness-home>/checkpoint-repos.txt` with uncommitted changes, the hook auto-commits. Idempotent via sidecar `MEMORY/WORK/{slug}/.checkpoint-state.json`. (v6.2.x: hook will also fire on `<project>/ISA.md` edits once isa-utils discovery lands.)
471471

472472
━━━ ✅ VERIFY ━━━ 6/7
473473

Releases/v5.0.0/.claude/hooks/CheckpointPerISC.hook.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* MEMORY/WORK/<slug>/.
77
*
88
* For each newly-checked ISC, iterates through the allowlist of opted-in repos
9-
* (~/.claude/checkpoint-repos.txt per spec) and creates one git commit per
9+
* (<harness-home>/checkpoint-repos.txt per spec) and creates one git commit per
1010
* repo that has uncommitted changes. Commit subject:
1111
* "<ISC-id> (<slug>): <sanitized description>"
1212
*
@@ -24,13 +24,14 @@ import { execFileSync } from 'node:child_process';
2424
import { basename, dirname, join } from 'node:path';
2525
import { homedir } from 'node:os';
2626
import { parseFrontmatter, parseCriteriaList, ARTIFACT_FILENAME, LEGACY_ARTIFACT_FILENAME } from './lib/isa-utils';
27+
import { getHarnessDir } from './lib/paths';
2728

28-
// Allowlist path: top of ~/.claude per spec. We only READ this file (never
29-
// write to it), so ContainmentGuard's write restriction on bare ~/.claude
30-
// doesn't apply. One absolute repo path per line; '#' comments and blank
29+
// Allowlist path: top of the selected harness home. We only READ this file
30+
// (never write to it), so ContainmentGuard's write restriction on harness
31+
// homes doesn't apply. One absolute repo path per line; '#' comments and blank
3132
// lines are ignored. Tilde and $HOME prefixes are expanded as a quality-of-
3233
// life feature so users can write `~/Projects/foo` instead of the long form.
33-
const ALLOWLIST_PATH = join(homedir(), '.claude', 'checkpoint-repos.txt');
34+
const ALLOWLIST_PATH = join(getHarnessDir(), 'checkpoint-repos.txt');
3435
const GIT_TIMEOUT_MS = 5000;
3536

3637
interface CheckpointState {

0 commit comments

Comments
 (0)