@dougharness/cli 1.4.0 → 1.5.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/dist/ablate.js +2 -2
- package/dist/ablate.js.map +1 -1
- package/node_modules/@dougharness/flow/.claude-plugin/plugin.json +1 -1
- package/node_modules/@dougharness/flow/agents/planner.md +1 -0
- package/node_modules/@dougharness/flow/lib/board.mjs +9 -9
- package/node_modules/@dougharness/flow/lib/card-loop.mjs +44 -5
- package/node_modules/@dougharness/flow/lib/decisions.mjs +2 -4
- package/node_modules/@dougharness/flow/lib/learn.mjs +95 -54
- package/node_modules/@dougharness/flow/lib/memory.mjs +1380 -44
- package/node_modules/@dougharness/flow/lib/plan.mjs +40 -0
- package/node_modules/@dougharness/flow/package.json +1 -1
- package/node_modules/@dougharness/flow/scripts/autopilot.mjs +162 -1
- package/node_modules/@dougharness/flow/scripts/board.mjs +38 -14
- package/node_modules/@dougharness/flow/scripts/learn.mjs +1 -1
- package/node_modules/@dougharness/flow/scripts/memory.mjs +658 -36
- package/node_modules/@dougharness/flow/scripts/plan.mjs +3 -3
- package/node_modules/@dougharness/flow/skills/doug-hand/SKILL.md +6 -2
- package/node_modules/@dougharness/flow/skills/doug-learn/SKILL.md +1 -1
- package/node_modules/@dougharness/flow/skills/doug-next/SKILL.md +2 -0
- package/node_modules/@dougharness/flow/skills/doug-start/SKILL.md +9 -8
- package/node_modules/@dougharness/flow/skills/doug-swarm/SKILL.md +1 -1
- package/node_modules/@dougharness/flow/skills/run-report/SKILL.md +1 -1
- package/node_modules/@dougharness/flow/workflows/card-queen.js +44 -5
- package/node_modules/@dougharness/flow/workflows/doug-implement.js +34 -19
- package/node_modules/@dougharness/gates/.claude-plugin/plugin.json +1 -1
- package/node_modules/@dougharness/gates/lib/baseline.mjs +9 -0
- package/node_modules/@dougharness/gates/lib/block-ledger.mjs +5 -3
- package/node_modules/@dougharness/gates/lib/verified-tree.mjs +33 -0
- package/node_modules/@dougharness/gates/package.json +1 -1
- package/node_modules/@dougharness/gates/scripts/stop-gate.mjs +48 -33
- package/node_modules/@dougharness/gates/scripts/verify.mjs +20 -4
- package/package.json +3 -3
package/dist/ablate.js
CHANGED
|
@@ -17,8 +17,8 @@ was in scope; mean cost is over the sessions whose cost the runner could read. A
|
|
|
17
17
|
memory-measure) is compared against "pipeline" on five measures, including mean turns, with a shipping verdict.
|
|
18
18
|
`;
|
|
19
19
|
// The three install conditions, then the orchestration arms in evals/run.mjs (compared against pipeline).
|
|
20
|
-
const CONDITION_ORDER = ["baseline", "gates", "full", "pipeline", "swarm", "swarm-cheap", "crew", "swarm-crew", "memory"];
|
|
21
|
-
const ARM_CONDITIONS = ["swarm", "swarm-cheap", "crew", "swarm-crew"];
|
|
20
|
+
const CONDITION_ORDER = ["baseline", "gates", "full", "pipeline", "swarm", "swarm-cheap", "crew", "swarm-crew", "testers", "memory"];
|
|
21
|
+
const ARM_CONDITIONS = ["swarm", "swarm-cheap", "crew", "swarm-crew", "testers"];
|
|
22
22
|
// The memory arm (card memory-measure) is compared against pipeline separately from the other arms above: on
|
|
23
23
|
// five measures, not four (mean turns joins the other four), with its own swarm-rule verdict line.
|
|
24
24
|
const MEMORY_CONDITION = "memory";
|
package/dist/ablate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ablate.js","sourceRoot":"","sources":["../src/ablate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ablate.js","sourceRoot":"","sources":["../src/ablate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "doug-flow",
|
|
3
3
|
"displayName": "Doug Flow",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.5.0",
|
|
5
5
|
"description": "Plan, approve, implement one task per worktree, verify, review. A deterministic Workflow-tool template plus planner, implementer, verifier, and reviewer subagents. The plan is a file; nothing is implemented until you approve it.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Doug contributors"
|
|
@@ -64,6 +64,7 @@ Model tiers: CLAUDE.md may have a `## Models` table naming a model and effort pe
|
|
|
64
64
|
- Do not invent files that do not exist unless the task creates them; say so in the spec.
|
|
65
65
|
- Do not plan refactors, renames, or cleanups that the request did not ask for.
|
|
66
66
|
- If the request is ambiguous in a way that changes the plan materially, write the plan under the most likely reading and state the assumption in the goal.
|
|
67
|
+
- A signature, type, or return shape the request states reaches the plan verbatim: the planner may add detail but never changes a stated contract. Quote each stated signature in backticks, character for character as the request gives it, in an acceptance line and in the spec of the task that owns it. `plan.mjs validate` rejects a task spec that quotes the same name with a different signature (the ts-orders rerun, 2026-10-23: the request said `byCategory(products: Product[]): Record<string, string[]>`, the plan said another shape, and the held-out test failed).
|
|
67
68
|
- Status is always `draft`. Only the user approves.
|
|
68
69
|
- When the request comes from a board card (the prompt starts with `Board card <id>, title "<title>"`), the plan title is the card title verbatim and `"card": "<id>"` is set in the plan file; plans that do not come from a card have no `card` field.
|
|
69
70
|
- State a guarantee over the input domain, never as an absolute. "never throws" or "for any input" hands the adversary a blocker every pass (throwing getters, revoked proxies, Symbols); write "returns an error list for any value JSON.parse can produce" or name the one catch-all behavior for everything else. A spec must not contradict its own acceptance criteria; check them against each other before writing.
|
|
@@ -1057,12 +1057,12 @@ function wallRow(wall, flags) {
|
|
|
1057
1057
|
|
|
1058
1058
|
// The first prose line of a rehearsal entry. The start scenario runs in an empty git repo; every other scenario
|
|
1059
1059
|
// (start-feature included) on the ts-basic fixture, the rule rehearse-lib's rehearsalNote uses.
|
|
1060
|
-
function rehearsalLine(rehearsal, cardId) {
|
|
1061
|
-
const where = rehearsal === "start" ? "an empty git repo" :
|
|
1060
|
+
function rehearsalLine(rehearsal, cardId, fixture = null) {
|
|
1061
|
+
const where = rehearsal === "start" ? "an empty git repo" : `the ${fixture || "ts-basic"} fixture`;
|
|
1062
1062
|
return `Rehearsal ${rehearsal} for card \`${cardId}\` on ${where} (scripts/rehearse.mjs); the commit and gate below are the fixture's, not this repository's.`;
|
|
1063
1063
|
}
|
|
1064
1064
|
|
|
1065
|
-
export function runEntry({ card, report, cost = null, codexCost = null, wallClock = null, wall = null, mergeCommit = null, record = null, adversary = [], date = new Date().toISOString().slice(0, 10), batch = null, sharedCost = null, taskIds = [], note = null, rehearsal = null, rehearsalOutcome = null }) {
|
|
1065
|
+
export function runEntry({ card, report, cost = null, codexCost = null, wallClock = null, wall = null, mergeCommit = null, record = null, adversary = [], date = new Date().toISOString().slice(0, 10), batch = null, sharedCost = null, taskIds = [], note = null, rehearsal = null, rehearsalOutcome = null, fixture = null, forcedLanding = false }) {
|
|
1066
1066
|
const inBatch = Array.isArray(batch) && batch.length > 1;
|
|
1067
1067
|
if (inBatch) report = filterReportForCard(report, card.id, taskIds);
|
|
1068
1068
|
const lines = [];
|
|
@@ -1071,13 +1071,13 @@ export function runEntry({ card, report, cost = null, codexCost = null, wallCloc
|
|
|
1071
1071
|
const batchNote = inBatch ? `, in one plan with ${listOthers(batch, card.id)} (one approval, one run, one landing)` : "";
|
|
1072
1072
|
lines.push(
|
|
1073
1073
|
rehearsal
|
|
1074
|
-
? rehearsalLine(rehearsal, card.id)
|
|
1074
|
+
? rehearsalLine(rehearsal, card.id, fixture)
|
|
1075
1075
|
: `Ran through /doug-next on this repo from card \`${card.id}\`${record ? ` in \`${record}\`` : ""}${batchNote}. Plan "${report.plan}", integration branch \`${report.integrationBranch}\`${report.modelsSource ? `, models from ${report.modelsSource}` : ""}.`,
|
|
1076
1076
|
);
|
|
1077
1077
|
lines.push("");
|
|
1078
1078
|
lines.push("| Measure | Value |");
|
|
1079
1079
|
lines.push("|---|---|");
|
|
1080
|
-
lines.push(`| Outcome | ${rehearsal ? `rehearsal ${rehearsal} ${rehearsalOutcome}` : outcomeOf(report)}${!rehearsal && pausedAt(report) ? `; next: ${listNext(report)}` : ""} |`);
|
|
1080
|
+
lines.push(`| Outcome | ${rehearsal ? `rehearsal ${rehearsal} ${rehearsalOutcome}` : forcedLanding ? `landed after plan.mjs done --force; last run ${outcomeOf(report)}` : outcomeOf(report)}${!rehearsal && !forcedLanding && pausedAt(report) ? `; next: ${listNext(report)}` : ""} |`);
|
|
1081
1081
|
lines.push(`| Cost | ${cost === null ? "not measured" : `$${Number(cost).toFixed(2)}${inBatch ? " for this card's tasks" : ""}`} |`);
|
|
1082
1082
|
if (!inBatch || batch[0] === card.id) {
|
|
1083
1083
|
lines.push(
|
|
@@ -1149,13 +1149,13 @@ export function handWallVerdict(card, wallClock, table = WALL_BUDGET_MIN) {
|
|
|
1149
1149
|
|
|
1150
1150
|
// The live-runs entry for a hand-track card (decision 0005): no workflow report and no levels, so it records what
|
|
1151
1151
|
// doug-hand can measure: the landing commit, the wall clock, and the gate result, plus an optional note.
|
|
1152
|
-
export function handEntry({ card, commit = null, wallClock = null, gate = null, note = null, record = null, date = new Date().toISOString().slice(0, 10), rehearsal = null, rehearsalOutcome = null, table = WALL_BUDGET_MIN, cost = null }) {
|
|
1152
|
+
export function handEntry({ card, commit = null, wallClock = null, gate = null, note = null, record = null, date = new Date().toISOString().slice(0, 10), rehearsal = null, rehearsalOutcome = null, fixture = null, table = WALL_BUDGET_MIN, cost = null }) {
|
|
1153
1153
|
const lines = [];
|
|
1154
1154
|
lines.push(`## ${date}, ${card.id}: ${card.title}`);
|
|
1155
1155
|
lines.push("");
|
|
1156
1156
|
lines.push(
|
|
1157
1157
|
rehearsal
|
|
1158
|
-
? rehearsalLine(rehearsal, card.id)
|
|
1158
|
+
? rehearsalLine(rehearsal, card.id, fixture)
|
|
1159
1159
|
: `Built by hand through doug-hand from card \`${card.id}\`${record ? ` in \`${record}\`` : ""} (hand track: a gated by-hand change); no workflow run.`,
|
|
1160
1160
|
);
|
|
1161
1161
|
lines.push("");
|
|
@@ -1280,10 +1280,10 @@ function wallNote(wall, flags) {
|
|
|
1280
1280
|
|
|
1281
1281
|
// Three lines for the chat after a run: the outcome, the tasks, and what stopped or was not met. Everything in it
|
|
1282
1282
|
// is read from the report; nothing is estimated.
|
|
1283
|
-
export function runSummary({ report, cost = null, codexCost = null, wallClock = null, wall = null, mergeCommit = null, batch = null, card = null }) {
|
|
1283
|
+
export function runSummary({ report, forcedLanding = false, cost = null, codexCost = null, wallClock = null, wall = null, mergeCommit = null, batch = null, card = null }) {
|
|
1284
1284
|
const tasks = (report.levels || []).flatMap((l) => (l.tasks || []).map((t) => ({ level: l, task: t })));
|
|
1285
1285
|
const integrated = tasks.filter(({ level }) => level.integration && level.integration.ok).length;
|
|
1286
|
-
const outcome = outcomeOf(report);
|
|
1286
|
+
const outcome = forcedLanding ? `landed after plan.mjs done --force; last run ${outcomeOf(report)}` : outcomeOf(report);
|
|
1287
1287
|
const first = `${report.plan}: ${outcome}; ${tasks.length} task${tasks.length === 1 ? "" : "s"}, ${integrated} integrated; wall ${wallClock === null ? "not measured" : wallClock}; cost ${cost === null ? "not measured" : `$${Number(cost).toFixed(2)}`}${codexCost === null ? "" : `; Codex $${Number(codexCost).toFixed(2)}`}${mergeCommit ? `; landed as ${mergeCommit}` : ""}${wallNote(wall, wall ? wallFlagsFor(wall, report, batch, card) : [])}.`;
|
|
1288
1288
|
const second = tasks.length
|
|
1289
1289
|
? tasks.map(({ task: t }) => {
|
|
@@ -59,7 +59,11 @@ export const BRIEF_RULES = {
|
|
|
59
59
|
seats: ["tester", "coder", "reviewer"],
|
|
60
60
|
},
|
|
61
61
|
"lessons-verbatim": {
|
|
62
|
-
text: "
|
|
62
|
+
text: "Run memory.mjs brief-lessons <card-id> <repo-root>, passing the REPO ROOT named in this brief as [dir], and return its block for this card verbatim in lessons; never paraphrase it.",
|
|
63
|
+
seats: ["lead"],
|
|
64
|
+
},
|
|
65
|
+
"lessons-fetch": {
|
|
66
|
+
text: "For each indexed lesson the card needs, run memory.mjs lesson show <id> <repo-root> --card <card-id>, passing the REPO ROOT named in this brief as [dir], and append its output verbatim to lessons below the brief-lessons block; never cut or paraphrase a fetched lesson.",
|
|
63
67
|
seats: ["lead"],
|
|
64
68
|
},
|
|
65
69
|
"facts-cited": {
|
|
@@ -104,7 +108,7 @@ export const BRIEF_RULES = {
|
|
|
104
108
|
},
|
|
105
109
|
"no-trailers": {
|
|
106
110
|
text: "Commit without Co-Authored-By or Claude-Session trailers.",
|
|
107
|
-
seats: ["commit"],
|
|
111
|
+
seats: ["tester", "coder", "reviewer", "commit"],
|
|
108
112
|
},
|
|
109
113
|
"commit-foreground": {
|
|
110
114
|
text: "Run git commit in the foreground with the Bash tool timeout set to 600000 ms: the pre-commit hook runs the full unit suite and takes over the 2-minute default.",
|
|
@@ -122,6 +126,11 @@ export const BRIEF_RULES = {
|
|
|
122
126
|
text: "Run the gate commands only. Never run git add, git commit, or any other command that writes to git; the commit seat is the only seat that commits.",
|
|
123
127
|
seats: ["gate"],
|
|
124
128
|
},
|
|
129
|
+
"gate-reinstall-missing-deps": {
|
|
130
|
+
text: "Before the gate commands, check that node_modules exists in the card worktree. Only when it is missing, run the INSTALL COMMAND and report it as the first commands item, then run the gate. Never install when node_modules is present.",
|
|
131
|
+
seats: ["gate"],
|
|
132
|
+
when: "install",
|
|
133
|
+
},
|
|
125
134
|
"gate-timeout-is-load": {
|
|
126
135
|
text: "When verify.mjs prints `exit timeout` for a command, report that command with timedOut: true; a timeout is load, not a red or a block, so leave blocked unset.",
|
|
127
136
|
seats: ["gate"],
|
|
@@ -406,6 +415,7 @@ const effectiveMutations = (s) => (s.lane === "lean" ? [] : s.material.mutations
|
|
|
406
415
|
|
|
407
416
|
function ruleApplies(rule, seat, s) {
|
|
408
417
|
if (!rule.seats.includes(seat)) return false;
|
|
418
|
+
if (rule.when === "install") return s.install !== null && s.install !== undefined;
|
|
409
419
|
if (rule.when === "full") return s.lane === "full";
|
|
410
420
|
if (rule.when === "tests-only") return s.lane === "tests-only";
|
|
411
421
|
if (rule.when === "mutations") {
|
|
@@ -440,7 +450,12 @@ function buildBrief(s) {
|
|
|
440
450
|
gate: fixing && s.fixFor === "gate" ? cp(s.lastGate) : null,
|
|
441
451
|
redTests: cp(s.redTests),
|
|
442
452
|
answers: (s.answers || [])
|
|
443
|
-
.filter(
|
|
453
|
+
.filter(
|
|
454
|
+
(a) =>
|
|
455
|
+
(a.seat === seat && (a.round === undefined || a.round <= (s.seatRuns[seat] || 0) + 1)) ||
|
|
456
|
+
// A reviewer answer reaches the build seat once the reviewer round it targets has run.
|
|
457
|
+
(seat === buildSeat(s) && a.seat === "reviewer" && (a.round ?? 1) <= (s.seatRuns.reviewer || 0)),
|
|
458
|
+
)
|
|
444
459
|
.map((a) => ({ question: a.question, answer: a.answer })),
|
|
445
460
|
writeTestsFirst: seat === "coder" && s.counters.coderRounds === 0 && (s.lane === "lean" || !s.testerAgent),
|
|
446
461
|
researchNote: s.researchNote,
|
|
@@ -450,6 +465,7 @@ function buildBrief(s) {
|
|
|
450
465
|
brief.install = s.install;
|
|
451
466
|
brief.base = s.base;
|
|
452
467
|
}
|
|
468
|
+
if (seat === "gate" && s.install) brief.install = s.install;
|
|
453
469
|
if (seat === "gate" || seat === "reviewer") brief.gateCommand = s.gateCommand;
|
|
454
470
|
if (seat === "commit") brief.gateTree = s.gateTree;
|
|
455
471
|
return brief;
|
|
@@ -838,6 +854,18 @@ export function next(state, handBack) {
|
|
|
838
854
|
// An evidenced major gets the same one fix pass; a major without evidence and a minor stay advisory.
|
|
839
855
|
const majors = findings.filter((f) => f.severity === "major" && nonBlank(f.evidence));
|
|
840
856
|
if (blockers.length === 0 && majors.length === 0) return advance(s, "gate", "ok", { acc });
|
|
857
|
+
// A reviewer round that carried a user answer and still has an open finding gets one extra coder round.
|
|
858
|
+
const answered = (s.answers || []).some(
|
|
859
|
+
(a) => a.seat === "reviewer" && (a.round ?? 1) <= (s.seatRuns.reviewer || 0),
|
|
860
|
+
);
|
|
861
|
+
if (s.counters.fixPasses >= 1 && answered && !s.answerCoderUsed) {
|
|
862
|
+
return advance(s, buildSeat(s), "blockers", {
|
|
863
|
+
acc,
|
|
864
|
+
fixFor: "review",
|
|
865
|
+
answerCoderUsed: true,
|
|
866
|
+
lastFindings: findings.filter((f) => f.severity !== "minor"),
|
|
867
|
+
});
|
|
868
|
+
}
|
|
841
869
|
if (s.counters.fixPasses >= 1) {
|
|
842
870
|
if (blockers.length > 0) {
|
|
843
871
|
return stopWith(
|
|
@@ -863,7 +891,16 @@ export function next(state, handBack) {
|
|
|
863
891
|
const lastGate = { commands: cp(H.commands), gateLine: H.gateLine };
|
|
864
892
|
const waited = { ...s.acc, lockWaitMs: (s.acc.lockWaitMs || 0) + (Number.isInteger(H.lockWaitMs) ? H.lockWaitMs : 0) };
|
|
865
893
|
s.acc = waited;
|
|
866
|
-
|
|
894
|
+
const isInstall = (c) => s.install && typeof c.command === "string" && c.command.trim() === `cd ${s.worktree} && ${s.install}`;
|
|
895
|
+
const failedInstall = H.commands.find((c) => isInstall(c) && c.exitCode !== 0);
|
|
896
|
+
if (failedInstall) {
|
|
897
|
+
return stopWith({ ...s, lastGate }, "setup-failed", `gate reinstall exited ${failedInstall.exitCode === null ? "without a code" : failedInstall.exitCode}`);
|
|
898
|
+
}
|
|
899
|
+
const nonInstall = H.commands.filter((c) => !isInstall(c));
|
|
900
|
+
if (nonInstall.every((c) => c.exitCode === 0)) {
|
|
901
|
+
if (!nonInstall.some((c) => typeof c.command === "string" && c.command.includes(s.gateCommand))) {
|
|
902
|
+
return stopWith({ ...s, lastGate }, "hand-back-invalid", `gate hand-back has no run of the gate command ${s.gateCommand}`);
|
|
903
|
+
}
|
|
867
904
|
return advance(s, "commit", "ok", { lastGate, gateTree: H.tree, acc: { ...waited, gateLine: H.gateLine } });
|
|
868
905
|
}
|
|
869
906
|
const redGates = s.counters.redGates + 1;
|
|
@@ -902,15 +939,17 @@ export function briefPrompt(brief, { repoRoot, worktreePath } = {}) {
|
|
|
902
939
|
out.push("ANSWERS FROM THE USER (to your design questions; build on them):\n" + bullets(b.answers.map((a) => `Q: ${a.question} A: ${a.answer}`)));
|
|
903
940
|
}
|
|
904
941
|
out.push("WORKTREE: " + worktreePath);
|
|
942
|
+
if (b.seat === "lead" && typeof repoRoot === "string" && repoRoot !== "") out.push("REPO ROOT: " + repoRoot);
|
|
905
943
|
if (b.seat === "setup") {
|
|
906
944
|
out.push(
|
|
907
945
|
"SETUP:\n" +
|
|
908
946
|
`Create the card worktree: git -C ${repoRoot} worktree add -b ${b.branch} ${worktreePath} ${b.base}\n` +
|
|
909
947
|
(b.install
|
|
910
|
-
? `Then run the install command
|
|
948
|
+
? `Then run the install command as this one literal command: cd ${worktreePath} && ${b.install}`
|
|
911
949
|
: "There is no install command; skip the install and report install as null."),
|
|
912
950
|
);
|
|
913
951
|
}
|
|
952
|
+
if (b.seat === "gate" && b.install) out.push(`INSTALL COMMAND: cd ${worktreePath} && ${b.install}`);
|
|
914
953
|
if (b.researchNote) out.push("RESEARCH NOTE:" + (b.researchNote.includes("\n") ? "\n" : " ") + b.researchNote);
|
|
915
954
|
if (b.lessons) out.push("LESSONS BLOCK verbatim:\n" + b.lessons);
|
|
916
955
|
if (b.facts.length > 0) out.push("FACTS (with sources):\n" + bullets(b.facts.map((f) => `${f.text} [${f.source}]`)));
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
// when a matching file is read. Source: https://code.claude.com/docs/en/memory.md#path-specific-rules
|
|
11
11
|
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
12
12
|
import { join } from "node:path";
|
|
13
|
-
import { unifiedDiff, writeProposals, countLines, insertBulletUnderHeading, removeExactLine } from "./learn.mjs";
|
|
13
|
+
import { unifiedDiff, writeProposals, countLines, insertBulletUnderHeading, removeExactLine, renderRule } from "./learn.mjs";
|
|
14
14
|
|
|
15
15
|
const DECISIONS_RELDIR = "docs/decisions";
|
|
16
16
|
const RULES_RELDIR = ".claude/rules";
|
|
@@ -155,9 +155,7 @@ export function proposeRule({ dir, name, paths = [], body, now = new Date() } =
|
|
|
155
155
|
if (!validRuleName(name)) return { ok: false, reason: `"${name}" is not a valid rule name (expected [a-z0-9][a-z0-9-]*, optionally one /subdir level)` };
|
|
156
156
|
if (!String(body || "").trim()) return { ok: false, reason: "body is required" };
|
|
157
157
|
const relPath = `${RULES_RELDIR}/${name}.md`;
|
|
158
|
-
const
|
|
159
|
-
const list = Array.isArray(paths) ? paths.filter((p) => String(p || "").trim()) : [];
|
|
160
|
-
const content = list.length ? `---\npaths:\n${list.map((p) => ` - "${p}"`).join("\n")}\n---\n\n${trimmedBody}\n` : `${trimmedBody}\n`;
|
|
158
|
+
const content = renderRule(paths, body);
|
|
161
159
|
const exists = existsSync(join(dir, relPath));
|
|
162
160
|
const built = buildProposal(dir, relPath, content, { kind: "rule", id: "01", reason: `${exists ? "update" : "new"} rule ${relPath}` });
|
|
163
161
|
if (!built.ok) return built;
|
|
@@ -10,7 +10,18 @@ import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync, append
|
|
|
10
10
|
import { join, relative, resolve, sep, dirname } from "node:path";
|
|
11
11
|
import { spawnSync } from "node:child_process";
|
|
12
12
|
import { createHash } from "node:crypto";
|
|
13
|
-
import { listOutcomes, listLessons,
|
|
13
|
+
import { listOutcomes, listLessons, readPitfallOccurrences, HISTORY_DIR_RELPATH } from "./memory.mjs";
|
|
14
|
+
|
|
15
|
+
export const RULE_MIN_CARDS = 3;
|
|
16
|
+
export const RULE_MIN_SESSIONS = 2;
|
|
17
|
+
|
|
18
|
+
// The one format of a .claude/rules file (learn's rule proposals and decisions.mjs proposeRule share it): a quoted
|
|
19
|
+
// `paths:` frontmatter list and the body, or the body alone with no paths.
|
|
20
|
+
export function renderRule(paths, body) {
|
|
21
|
+
const list = Array.isArray(paths) ? paths.filter((p) => String(p || "").trim()) : [];
|
|
22
|
+
const trimmed = String(body).replace(/\s+$/, "");
|
|
23
|
+
return list.length ? `---\npaths:\n${list.map((p) => ` - "${p}"`).join("\n")}\n---\n\n${trimmed}\n` : `${trimmed}\n`;
|
|
24
|
+
}
|
|
14
25
|
|
|
15
26
|
// --- collectSignals ----------------------------------------------------------------------------------------
|
|
16
27
|
|
|
@@ -80,50 +91,70 @@ function isGateFailure(row) {
|
|
|
80
91
|
return false;
|
|
81
92
|
}
|
|
82
93
|
|
|
83
|
-
//
|
|
84
|
-
//
|
|
85
|
-
//
|
|
86
|
-
//
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
94
|
+
// The file a rule proposal's `paths:` frontmatter is scoped by (card memory-failure-lessons, ADR 0019 line 60): the
|
|
95
|
+
// union over a card's history `report` entries of `filesChanged`. An absolute path counts only when it lies under
|
|
96
|
+
// that report's `worktree` and is then made relative to it; a relative path is kept; any path with a `..` segment,
|
|
97
|
+
// and any other absolute path, is dropped. Sorted, de-duplicated; never throws.
|
|
98
|
+
export function cardFilesTouched(dir, card) {
|
|
99
|
+
const out = new Set();
|
|
100
|
+
try {
|
|
101
|
+
if (typeof card !== "string" || !/^[A-Za-z0-9_.-]+$/.test(card) || card.includes("..")) return [];
|
|
102
|
+
const cardDir = join(dir, HISTORY_DIR_RELPATH, card);
|
|
103
|
+
if (!existsSync(cardDir)) return [];
|
|
104
|
+
for (const file of readdirSync(cardDir).filter((f) => f.endsWith(".jsonl")).sort()) {
|
|
105
|
+
let text;
|
|
106
|
+
try {
|
|
107
|
+
text = readFileSync(join(cardDir, file), "utf8");
|
|
108
|
+
} catch {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
for (const raw of text.split("\n")) {
|
|
112
|
+
if (raw === "") continue;
|
|
113
|
+
let entry;
|
|
114
|
+
let report;
|
|
115
|
+
try {
|
|
116
|
+
entry = JSON.parse(raw);
|
|
117
|
+
if (!entry || entry.kind !== "report") continue;
|
|
118
|
+
report = JSON.parse(entry.text);
|
|
119
|
+
} catch {
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
if (!report || !Array.isArray(report.filesChanged)) continue;
|
|
123
|
+
const worktree = typeof report.worktree === "string" && report.worktree ? report.worktree.replace(/\/+$/, "") : null;
|
|
124
|
+
for (const f of report.filesChanged) {
|
|
125
|
+
if (typeof f !== "string" || f === "" || f.split("/").includes("..")) continue;
|
|
126
|
+
if (f.startsWith("/")) {
|
|
127
|
+
if (worktree && f.startsWith(`${worktree}/`)) out.add(f.slice(worktree.length + 1));
|
|
128
|
+
} else out.add(f.replace(/^\.\//, ""));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
107
131
|
}
|
|
132
|
+
} catch {
|
|
133
|
+
// fail open: whatever was read so far
|
|
108
134
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
135
|
+
return [...out].sort();
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// A pitfall lesson's distinct cards, sessions and files from the occurrence ledger (card memory-failure-lessons).
|
|
139
|
+
// Only occurrences count: helpful counters and text similarity play no part (ADR 0019 lines 39 and 60). A null
|
|
140
|
+
// session never counts toward the sessions.
|
|
141
|
+
function collectPitfallSignals(dir, live) {
|
|
142
|
+
const pitfalls = new Map(live.filter((l) => l.kind === "pitfall").map((l) => [l.id, l]));
|
|
143
|
+
const byLesson = new Map();
|
|
144
|
+
for (const o of readPitfallOccurrences(dir)) {
|
|
145
|
+
if (!pitfalls.has(o.lesson)) continue;
|
|
146
|
+
const cur = byLesson.get(o.lesson) || { cards: new Set(), sessions: new Set(), citations: [] };
|
|
147
|
+
if (typeof o.card === "string" && o.card) cur.cards.add(o.card);
|
|
148
|
+
if (typeof o.session === "string" && o.session) cur.sessions.add(o.session);
|
|
149
|
+
cur.citations.push(o.citation);
|
|
150
|
+
byLesson.set(o.lesson, cur);
|
|
124
151
|
}
|
|
125
|
-
|
|
126
|
-
|
|
152
|
+
return [...byLesson.entries()]
|
|
153
|
+
.map(([id, v]) => {
|
|
154
|
+
const cards = [...v.cards].sort();
|
|
155
|
+
return { id, text: pitfalls.get(id).text, cards, sessions: [...v.sessions].sort(), citations: v.citations, files: [...new Set(cards.flatMap((c) => cardFilesTouched(dir, c)))].sort() };
|
|
156
|
+
})
|
|
157
|
+
.sort((a, b) => a.id.localeCompare(b.id));
|
|
127
158
|
}
|
|
128
159
|
|
|
129
160
|
function listTraceFiles(traceDir) {
|
|
@@ -278,7 +309,7 @@ export function collectSignals(m, { dir, traceDir, now = new Date() } = {}) {
|
|
|
278
309
|
helpful: live.filter((l) => l.helpful > 0).length,
|
|
279
310
|
harmful: live.filter((l) => l.harmful > 0).length,
|
|
280
311
|
stale: live.filter((l) => l.stale).length,
|
|
281
|
-
|
|
312
|
+
pitfalls: collectPitfallSignals(dir, live),
|
|
282
313
|
},
|
|
283
314
|
trace,
|
|
284
315
|
};
|
|
@@ -499,15 +530,25 @@ export function proposeChanges(signals, { dir, claudeMd, config, skills = [] } =
|
|
|
499
530
|
let n = 0;
|
|
500
531
|
const nextId = () => String(++n).padStart(2, "0");
|
|
501
532
|
|
|
502
|
-
// promote: a
|
|
503
|
-
|
|
504
|
-
|
|
533
|
+
// promote: a pitfall cited by RULE_MIN_CARDS distinct cards over RULE_MIN_SESSIONS distinct sessions (card
|
|
534
|
+
// memory-failure-lessons, ADR 0019 line 60). With known files it becomes a path-scoped .claude/rules file; with none, a
|
|
535
|
+
// CLAUDE.md Gotchas bullet (refused at the 60-line cap). Feedback lessons have no trigger.
|
|
536
|
+
for (const r of signals.lessons.pitfalls ?? []) {
|
|
537
|
+
if (r.cards.length < RULE_MIN_CARDS || r.sessions.length < RULE_MIN_SESSIONS) continue;
|
|
538
|
+
const evidence = { id: r.id, cards: r.cards, sessions: r.sessions, citations: r.citations, files: r.files };
|
|
539
|
+
const counted = `pitfall ${r.id} cited by ${r.cards.length} cards over ${r.sessions.length} sessions`;
|
|
540
|
+
if (r.files.length) {
|
|
541
|
+
const relPath = `.claude/rules/pitfall-${r.id}.md`;
|
|
542
|
+
const body = `${r.text}\n\nEvidence:\n${r.citations.map((c) => `- ${c}`).join("\n")}`;
|
|
543
|
+
const abs = join(dir, relPath);
|
|
544
|
+
const oldText = existsSync(abs) ? readFileSync(abs, "utf8") : "";
|
|
545
|
+
proposals.push({ id: nextId(), kind: "rule", target: relPath, reason: `${counted}; proposing a rule scoped to the files those cards touched`, evidence, diff: unifiedDiff(relPath, oldText, renderRule(r.files, body)) });
|
|
546
|
+
continue;
|
|
547
|
+
}
|
|
505
548
|
if (normalize(claudeMd).includes(normalize(r.text))) continue;
|
|
506
|
-
const heading =
|
|
507
|
-
const
|
|
508
|
-
const
|
|
509
|
-
const reason = `lesson repeated ${r.count}× (ids: ${r.ids.join(", ")}); promoting to CLAUDE.md's ${heading.replace("## ", "")}`;
|
|
510
|
-
const updated = insertBulletUnderHeading(claudeMd, heading, bulletLine);
|
|
549
|
+
const heading = "## Gotchas";
|
|
550
|
+
const reason = `${counted}; no file known, promoting to CLAUDE.md's Gotchas`;
|
|
551
|
+
const updated = insertBulletUnderHeading(claudeMd, heading, `- ${r.text}`);
|
|
511
552
|
if (updated === null) {
|
|
512
553
|
proposals.push({ id: nextId(), kind: "promote", target: "CLAUDE.md", reason: `${reason}, but CLAUDE.md has no "${heading}" section`, evidence, diff: null });
|
|
513
554
|
continue;
|
|
@@ -541,7 +582,7 @@ export function proposeChanges(signals, { dir, claudeMd, config, skills = [] } =
|
|
|
541
582
|
}
|
|
542
583
|
}
|
|
543
584
|
|
|
544
|
-
// delete: a CLAUDE.md rule line referenced by no denial, no
|
|
585
|
+
// delete: a CLAUDE.md rule line referenced by no denial, no pitfall lesson, and no block description, with
|
|
545
586
|
// enough signal density to trust the absence (>=10 outcome rows, >=5 trace files).
|
|
546
587
|
if (signals.outcomes.rows.length >= 10 && signals.trace.files.length >= 5) {
|
|
547
588
|
const blockDescriptions = signals.outcomes.rows.flatMap((r) => (r.blocks || []).map((b) => b.description || ""));
|
|
@@ -556,7 +597,7 @@ export function proposeChanges(signals, { dir, claudeMd, config, skills = [] } =
|
|
|
556
597
|
if (!tokens.length) continue;
|
|
557
598
|
const referenced =
|
|
558
599
|
signals.trace.denials.some((d) => textReferencesTokens(d.detail, tokens)) ||
|
|
559
|
-
signals.lessons.
|
|
600
|
+
(signals.lessons.pitfalls ?? []).some((r) => textReferencesTokens(r.text, tokens)) ||
|
|
560
601
|
blockDescriptions.some((d) => textReferencesTokens(d, tokens));
|
|
561
602
|
if (referenced) continue;
|
|
562
603
|
const updated = removeExactLine(claudeMd, line);
|
|
@@ -564,7 +605,7 @@ export function proposeChanges(signals, { dir, claudeMd, config, skills = [] } =
|
|
|
564
605
|
id: nextId(),
|
|
565
606
|
kind: "delete",
|
|
566
607
|
target: "CLAUDE.md",
|
|
567
|
-
reason: `no denial,
|
|
608
|
+
reason: `no denial, pitfall lesson, or block description across ${signals.outcomes.rows.length} outcome rows and ${signals.trace.files.length} trace files mentions "${tokens.join(", ")}" (rule: ${line.slice(2)})`,
|
|
568
609
|
evidence: { outcomeRows: signals.outcomes.rows.length, traceFiles: signals.trace.files.length, keyPhrase: tokens },
|
|
569
610
|
diff: updated === null ? null : unifiedDiff("CLAUDE.md", claudeMd, updated),
|
|
570
611
|
});
|