forgecraft-mcp 1.3.2 → 1.6.1
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/README.md +2 -2
- package/dist/analyzers/anchors/anchor-loader.d.ts +47 -0
- package/dist/analyzers/anchors/anchor-loader.d.ts.map +1 -0
- package/dist/analyzers/anchors/anchor-loader.js +113 -0
- package/dist/analyzers/anchors/anchor-loader.js.map +1 -0
- package/dist/analyzers/anti-pattern.d.ts.map +1 -1
- package/dist/analyzers/anti-pattern.js +38 -26
- package/dist/analyzers/anti-pattern.js.map +1 -1
- package/dist/analyzers/completeness-helpers.d.ts +5 -0
- package/dist/analyzers/completeness-helpers.d.ts.map +1 -1
- package/dist/analyzers/completeness-helpers.js +17 -0
- package/dist/analyzers/completeness-helpers.js.map +1 -1
- package/dist/analyzers/completeness.d.ts.map +1 -1
- package/dist/analyzers/completeness.js +4 -4
- package/dist/analyzers/completeness.js.map +1 -1
- package/dist/analyzers/gs-scorer.d.ts +3 -1
- package/dist/analyzers/gs-scorer.d.ts.map +1 -1
- package/dist/analyzers/gs-scorer.js +5 -2
- package/dist/analyzers/gs-scorer.js.map +1 -1
- package/dist/analyzers/scorers/composable-scorer.d.ts +4 -2
- package/dist/analyzers/scorers/composable-scorer.d.ts.map +1 -1
- package/dist/analyzers/scorers/composable-scorer.js +50 -2
- package/dist/analyzers/scorers/composable-scorer.js.map +1 -1
- package/dist/analyzers/scorers/executable-scorer.d.ts +3 -2
- package/dist/analyzers/scorers/executable-scorer.d.ts.map +1 -1
- package/dist/analyzers/scorers/executable-scorer.js +64 -4
- package/dist/analyzers/scorers/executable-scorer.js.map +1 -1
- package/dist/analyzers/scorers/scorer-utils.d.ts +5 -3
- package/dist/analyzers/scorers/scorer-utils.d.ts.map +1 -1
- package/dist/analyzers/scorers/scorer-utils.js +34 -9
- package/dist/analyzers/scorers/scorer-utils.js.map +1 -1
- package/dist/analyzers/scorers/self-describing-scorer.d.ts +7 -4
- package/dist/analyzers/scorers/self-describing-scorer.d.ts.map +1 -1
- package/dist/analyzers/scorers/self-describing-scorer.js +17 -18
- package/dist/analyzers/scorers/self-describing-scorer.js.map +1 -1
- package/dist/artifacts/commit-hooks.d.ts +1 -1
- package/dist/artifacts/commit-hooks.d.ts.map +1 -1
- package/dist/artifacts/commit-hooks.js +2 -0
- package/dist/artifacts/commit-hooks.js.map +1 -1
- package/dist/cli/commands.d.ts +35 -1
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +109 -2
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +7 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +10 -1
- package/dist/cli.js.map +1 -1
- package/dist/disciplines/catalog.d.ts +16 -0
- package/dist/disciplines/catalog.d.ts.map +1 -0
- package/dist/disciplines/catalog.js +196 -0
- package/dist/disciplines/catalog.js.map +1 -0
- package/dist/disciplines/runner.d.ts +13 -0
- package/dist/disciplines/runner.d.ts.map +1 -0
- package/dist/disciplines/runner.js +35 -0
- package/dist/disciplines/runner.js.map +1 -0
- package/dist/registry/remote-gates.js +1 -1
- package/dist/registry/remote-gates.js.map +1 -1
- package/dist/sentinel/detect.d.ts +41 -0
- package/dist/sentinel/detect.d.ts.map +1 -0
- package/dist/sentinel/detect.js +122 -0
- package/dist/sentinel/detect.js.map +1 -0
- package/dist/sentinel/write.d.ts +54 -0
- package/dist/sentinel/write.d.ts.map +1 -0
- package/dist/sentinel/write.js +75 -0
- package/dist/sentinel/write.js.map +1 -0
- package/dist/shared/cnt-health.d.ts.map +1 -1
- package/dist/shared/cnt-health.js +12 -4
- package/dist/shared/cnt-health.js.map +1 -1
- package/dist/shared/config.d.ts +8 -0
- package/dist/shared/config.d.ts.map +1 -1
- package/dist/shared/config.js +23 -0
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/project-gates-helpers.d.ts +9 -0
- package/dist/shared/project-gates-helpers.d.ts.map +1 -1
- package/dist/shared/project-gates-helpers.js +35 -0
- package/dist/shared/project-gates-helpers.js.map +1 -1
- package/dist/shared/result-utils.d.ts +27 -0
- package/dist/shared/result-utils.d.ts.map +1 -0
- package/dist/shared/result-utils.js +41 -0
- package/dist/shared/result-utils.js.map +1 -0
- package/dist/shared/types/config.d.ts +7 -1
- package/dist/shared/types/config.d.ts.map +1 -1
- package/dist/shared/types/gates.d.ts +28 -0
- package/dist/shared/types/gates.d.ts.map +1 -1
- package/dist/shared/types/project.d.ts +66 -0
- package/dist/shared/types/project.d.ts.map +1 -1
- package/dist/shared/types/project.js.map +1 -1
- package/dist/shared/types/verify.d.ts +51 -1
- package/dist/shared/types/verify.d.ts.map +1 -1
- package/dist/shared/types/verify.js +37 -1
- package/dist/shared/types/verify.js.map +1 -1
- package/dist/tools/advise-session-advisor.d.ts +16 -0
- package/dist/tools/advise-session-advisor.d.ts.map +1 -0
- package/dist/tools/advise-session-advisor.js +89 -0
- package/dist/tools/advise-session-advisor.js.map +1 -0
- package/dist/tools/advise-session-signals.d.ts +21 -0
- package/dist/tools/advise-session-signals.d.ts.map +1 -0
- package/dist/tools/advise-session-signals.js +113 -0
- package/dist/tools/advise-session-signals.js.map +1 -0
- package/dist/tools/advise-session.d.ts +22 -0
- package/dist/tools/advise-session.d.ts.map +1 -0
- package/dist/tools/advise-session.js +31 -0
- package/dist/tools/advise-session.js.map +1 -0
- package/dist/tools/change-request.d.ts +53 -0
- package/dist/tools/change-request.d.ts.map +1 -0
- package/dist/tools/change-request.js +375 -0
- package/dist/tools/change-request.js.map +1 -0
- package/dist/tools/check-cascade-contracts.d.ts +13 -0
- package/dist/tools/check-cascade-contracts.d.ts.map +1 -1
- package/dist/tools/check-cascade-contracts.js +73 -2
- package/dist/tools/check-cascade-contracts.js.map +1 -1
- package/dist/tools/check-cascade.d.ts +4 -3
- package/dist/tools/check-cascade.d.ts.map +1 -1
- package/dist/tools/check-cascade.js +30 -12
- package/dist/tools/check-cascade.js.map +1 -1
- package/dist/tools/check-spec-consistency.d.ts +25 -0
- package/dist/tools/check-spec-consistency.d.ts.map +1 -0
- package/dist/tools/check-spec-consistency.js +339 -0
- package/dist/tools/check-spec-consistency.js.map +1 -0
- package/dist/tools/check-t4.d.ts +54 -0
- package/dist/tools/check-t4.d.ts.map +1 -0
- package/dist/tools/check-t4.js +305 -0
- package/dist/tools/check-t4.js.map +1 -0
- package/dist/tools/close-cycle-helpers.d.ts +21 -2
- package/dist/tools/close-cycle-helpers.d.ts.map +1 -1
- package/dist/tools/close-cycle-helpers.js +66 -10
- package/dist/tools/close-cycle-helpers.js.map +1 -1
- package/dist/tools/close-cycle.d.ts +2 -2
- package/dist/tools/close-cycle.d.ts.map +1 -1
- package/dist/tools/close-cycle.js +342 -4
- package/dist/tools/close-cycle.js.map +1 -1
- package/dist/tools/consolidate-status.d.ts +112 -0
- package/dist/tools/consolidate-status.d.ts.map +1 -0
- package/dist/tools/consolidate-status.js +356 -0
- package/dist/tools/consolidate-status.js.map +1 -0
- package/dist/tools/executable-gates.d.ts +52 -0
- package/dist/tools/executable-gates.d.ts.map +1 -0
- package/dist/tools/executable-gates.js +332 -0
- package/dist/tools/executable-gates.js.map +1 -0
- package/dist/tools/forgecraft-dispatch-extended.d.ts.map +1 -1
- package/dist/tools/forgecraft-dispatch-extended.js +75 -0
- package/dist/tools/forgecraft-dispatch-extended.js.map +1 -1
- package/dist/tools/forgecraft-dispatch.d.ts.map +1 -1
- package/dist/tools/forgecraft-dispatch.js +21 -0
- package/dist/tools/forgecraft-dispatch.js.map +1 -1
- package/dist/tools/forgecraft-router.d.ts +8 -0
- package/dist/tools/forgecraft-router.d.ts.map +1 -1
- package/dist/tools/forgecraft-router.js +21 -1
- package/dist/tools/forgecraft-router.js.map +1 -1
- package/dist/tools/forgecraft-schema-params.d.ts +61 -4
- package/dist/tools/forgecraft-schema-params.d.ts.map +1 -1
- package/dist/tools/forgecraft-schema-params.js +95 -0
- package/dist/tools/forgecraft-schema-params.js.map +1 -1
- package/dist/tools/forgecraft-schema.d.ts +62 -5
- package/dist/tools/forgecraft-schema.d.ts.map +1 -1
- package/dist/tools/forgecraft-schema.js +24 -0
- package/dist/tools/forgecraft-schema.js.map +1 -1
- package/dist/tools/gate-violations.d.ts +59 -0
- package/dist/tools/gate-violations.d.ts.map +1 -0
- package/dist/tools/gate-violations.js +152 -0
- package/dist/tools/gate-violations.js.map +1 -0
- package/dist/tools/generate-adr.js +6 -6
- package/dist/tools/generate-adr.js.map +1 -1
- package/dist/tools/generate-env-probe.d.ts +49 -0
- package/dist/tools/generate-env-probe.d.ts.map +1 -0
- package/dist/tools/generate-env-probe.js +365 -0
- package/dist/tools/generate-env-probe.js.map +1 -0
- package/dist/tools/generate-harness.d.ts +52 -0
- package/dist/tools/generate-harness.d.ts.map +1 -0
- package/dist/tools/generate-harness.js +333 -0
- package/dist/tools/generate-harness.js.map +1 -0
- package/dist/tools/generate-roadmap.d.ts +1 -1
- package/dist/tools/generate-roadmap.d.ts.map +1 -1
- package/dist/tools/generate-roadmap.js +38 -4
- package/dist/tools/generate-roadmap.js.map +1 -1
- package/dist/tools/generate-session-prompt.d.ts +4 -4
- package/dist/tools/generate-session-prompt.d.ts.map +1 -1
- package/dist/tools/generate-session-prompt.js +66 -16
- package/dist/tools/generate-session-prompt.js.map +1 -1
- package/dist/tools/generate-slo-probe.d.ts +53 -0
- package/dist/tools/generate-slo-probe.d.ts.map +1 -0
- package/dist/tools/generate-slo-probe.js +366 -0
- package/dist/tools/generate-slo-probe.js.map +1 -0
- package/dist/tools/layer-status-gates.d.ts +24 -0
- package/dist/tools/layer-status-gates.d.ts.map +1 -0
- package/dist/tools/layer-status-gates.js +151 -0
- package/dist/tools/layer-status-gates.js.map +1 -0
- package/dist/tools/layer-status.d.ts +133 -0
- package/dist/tools/layer-status.d.ts.map +1 -0
- package/dist/tools/layer-status.js +593 -0
- package/dist/tools/layer-status.js.map +1 -0
- package/dist/tools/postcondition-coverage.d.ts +57 -0
- package/dist/tools/postcondition-coverage.d.ts.map +1 -0
- package/dist/tools/postcondition-coverage.js +256 -0
- package/dist/tools/postcondition-coverage.js.map +1 -0
- package/dist/tools/probe-runners.d.ts +21 -0
- package/dist/tools/probe-runners.d.ts.map +1 -0
- package/dist/tools/probe-runners.js +246 -0
- package/dist/tools/probe-runners.js.map +1 -0
- package/dist/tools/probe-templates.d.ts +27 -0
- package/dist/tools/probe-templates.d.ts.map +1 -0
- package/dist/tools/probe-templates.js +279 -0
- package/dist/tools/probe-templates.js.map +1 -0
- package/dist/tools/propose-session.d.ts +28 -0
- package/dist/tools/propose-session.d.ts.map +1 -0
- package/dist/tools/propose-session.js +333 -0
- package/dist/tools/propose-session.js.map +1 -0
- package/dist/tools/roadmap-builder.d.ts +34 -1
- package/dist/tools/roadmap-builder.d.ts.map +1 -1
- package/dist/tools/roadmap-builder.js +153 -11
- package/dist/tools/roadmap-builder.js.map +1 -1
- package/dist/tools/run-env-probe.d.ts +57 -0
- package/dist/tools/run-env-probe.d.ts.map +1 -0
- package/dist/tools/run-env-probe.js +270 -0
- package/dist/tools/run-env-probe.js.map +1 -0
- package/dist/tools/run-harness.d.ts +52 -0
- package/dist/tools/run-harness.d.ts.map +1 -0
- package/dist/tools/run-harness.js +279 -0
- package/dist/tools/run-harness.js.map +1 -0
- package/dist/tools/run-slo-probe.d.ts +50 -0
- package/dist/tools/run-slo-probe.d.ts.map +1 -0
- package/dist/tools/run-slo-probe.js +281 -0
- package/dist/tools/run-slo-probe.js.map +1 -0
- package/dist/tools/scaffold-writer.d.ts.map +1 -1
- package/dist/tools/scaffold-writer.js +4 -0
- package/dist/tools/scaffold-writer.js.map +1 -1
- package/dist/tools/session-prompt-builders.d.ts +20 -0
- package/dist/tools/session-prompt-builders.d.ts.map +1 -1
- package/dist/tools/session-prompt-builders.js +111 -14
- package/dist/tools/session-prompt-builders.js.map +1 -1
- package/dist/tools/session-prompt-sections.d.ts +4 -2
- package/dist/tools/session-prompt-sections.d.ts.map +1 -1
- package/dist/tools/session-prompt-sections.js +22 -10
- package/dist/tools/session-prompt-sections.js.map +1 -1
- package/dist/tools/setup-monitoring.d.ts +41 -0
- package/dist/tools/setup-monitoring.d.ts.map +1 -0
- package/dist/tools/setup-monitoring.js +364 -0
- package/dist/tools/setup-monitoring.js.map +1 -0
- package/dist/tools/verify-formatter.d.ts.map +1 -1
- package/dist/tools/verify-formatter.js +15 -1
- package/dist/tools/verify-formatter.js.map +1 -1
- package/dist/tools/verify.d.ts.map +1 -1
- package/dist/tools/verify.js +3 -0
- package/dist/tools/verify.js.map +1 -1
- package/package.json +11 -2
- package/templates/api/harness/uc-template.hurl +20 -0
- package/templates/docs-manifest.yaml +224 -0
- package/templates/game/harness/uc-template.sim.ts +29 -0
- package/templates/universal/claude-md-blocks/layer-navigation.md +20 -0
- package/templates/universal/claude-md-blocks/nfr-contracts.md +22 -0
- package/templates/universal/hooks.yaml +212 -20
- package/templates/web-react/harness/uc-template.spec.ts +35 -0
|
@@ -8,8 +8,9 @@
|
|
|
8
8
|
* 4. Calls contributeGates() for generalizable gates and promotes them
|
|
9
9
|
* 5. Detects CodeSeeker gates that need to be run
|
|
10
10
|
*/
|
|
11
|
-
import { existsSync, readFileSync } from "fs";
|
|
12
|
-
import { join } from "path";
|
|
11
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
12
|
+
import { join, dirname } from "node:path";
|
|
13
|
+
import { buildLayerReport } from "./layer-status.js";
|
|
13
14
|
import { runCascadeChecks, isCascadeComplete, loadCascadeDecisions, } from "./check-cascade.js";
|
|
14
15
|
import { contributeGates } from "./contribute-gate.js";
|
|
15
16
|
import { getActiveProjectGates, promoteGate } from "../shared/project-gates.js";
|
|
@@ -18,8 +19,9 @@ import { scoreGsProperties, findDirectDbCallsInRoutes, findMissingTestFiles, } f
|
|
|
18
19
|
import { computeSRealized, appendGsScoreRow, } from "../shared/gs-score-logger.js";
|
|
19
20
|
import { readExperimentConfig } from "../shared/config.js";
|
|
20
21
|
import { deriveTestCommand, findCodeseekerGates, findNextRoadmapItem, markRoadmapItemDone, formatCloseCycleResult, } from "./close-cycle-helpers.js";
|
|
22
|
+
import { getImplementingChanges } from "./change-request.js";
|
|
21
23
|
import { suggestVersionBump, appendChangelogEntry, } from "./close-cycle-versioning.js";
|
|
22
|
-
export { deriveTestCommand, findNextRoadmapItem, markRoadmapItemDone, formatCloseCycleResult, findCodeseekerGates, } from "./close-cycle-helpers.js";
|
|
24
|
+
export { deriveTestCommand, findNextRoadmapItem, parseRoadmapItems, markRoadmapItemDone, formatCloseCycleResult, findCodeseekerGates, } from "./close-cycle-helpers.js";
|
|
23
25
|
export { suggestVersionBump, appendChangelogEntry, readCommitsSinceLastTag, } from "./close-cycle-versioning.js";
|
|
24
26
|
// -- Implementation --------------------------------------------------
|
|
25
27
|
/**
|
|
@@ -51,6 +53,26 @@ export async function closeCycle(options) {
|
|
|
51
53
|
ready: false,
|
|
52
54
|
};
|
|
53
55
|
}
|
|
56
|
+
// Step 1.5 -- In-flight change check
|
|
57
|
+
const implementingChanges = getImplementingChanges(projectRoot);
|
|
58
|
+
if (implementingChanges.length > 0) {
|
|
59
|
+
const blockers = implementingChanges.map((c) => c.required_gates.length > 0
|
|
60
|
+
? `${c.id} (gates: ${c.required_gates.join(", ")})`
|
|
61
|
+
: c.id);
|
|
62
|
+
return {
|
|
63
|
+
cascadeStatus: "fail",
|
|
64
|
+
cascadeBlockers: blockers,
|
|
65
|
+
gatesAssessed: 0,
|
|
66
|
+
gatesPromoted: 0,
|
|
67
|
+
codeseekerGates: [],
|
|
68
|
+
nextSteps: [
|
|
69
|
+
`${implementingChanges.length} change(s) still in 'implementing' status — verify or close them before close_cycle:`,
|
|
70
|
+
...implementingChanges.map((c) => ` • ${c.id}: ${c.title}${c.required_gates.length > 0 ? ` (requires: ${c.required_gates.join(", ")})` : ""}`),
|
|
71
|
+
"Run `list_changes` to review. Set status to 'verified' or 'closed' in .forgecraft/changes/<id>.yaml.",
|
|
72
|
+
],
|
|
73
|
+
ready: false,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
54
76
|
// Step 2 -- Test command
|
|
55
77
|
const testCommand = deriveTestCommand(projectRoot);
|
|
56
78
|
// Step 3 -- Gate assessment and contribution
|
|
@@ -156,6 +178,307 @@ export async function closeCycle(options) {
|
|
|
156
178
|
...(experiment?.id ? { experimentId: experiment.id } : {}),
|
|
157
179
|
};
|
|
158
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Derive the "Next Action" string for .claude/state.md using waterfall logic.
|
|
183
|
+
* First gap in the layer stack wins.
|
|
184
|
+
*/
|
|
185
|
+
function deriveNextAction(l1GateViolations, l2Covered, total, harnessRun, l3Status, l4Status) {
|
|
186
|
+
if (l1GateViolations.length > 0) {
|
|
187
|
+
return `Resolve ${l1GateViolations.length} active gate violation${l1GateViolations.length === 1 ? "" : "s"}. Run \`layer_status\` to see details.`;
|
|
188
|
+
}
|
|
189
|
+
if (l2Covered < total) {
|
|
190
|
+
const missing = total - l2Covered;
|
|
191
|
+
return `Add harness specs for ${missing} UC${missing === 1 ? "" : "s"} missing probes. Run \`generate_harness\`.`;
|
|
192
|
+
}
|
|
193
|
+
if (!harnessRun) {
|
|
194
|
+
return "Run `run_harness` to verify behavioral contracts.";
|
|
195
|
+
}
|
|
196
|
+
if ((harnessRun.notImplemented ?? 0) > 0) {
|
|
197
|
+
const n = harnessRun.notImplemented;
|
|
198
|
+
return `Implement ${n} stub probe${n === 1 ? "" : "s"} — not_implemented probes exit 0 but verify nothing. Fill the TODO sections.`;
|
|
199
|
+
}
|
|
200
|
+
if (harnessRun.failed > 0) {
|
|
201
|
+
return `Fix ${harnessRun.failed} failing L2 probe${harnessRun.failed === 1 ? "" : "s"} — specification violations. Regenerate from spec.`;
|
|
202
|
+
}
|
|
203
|
+
if (l3Status === "not-started" || l3Status === "partial") {
|
|
204
|
+
return "Run `run_env_probe` to verify environment contracts.";
|
|
205
|
+
}
|
|
206
|
+
if (l4Status === "not-started" || l4Status === "partial") {
|
|
207
|
+
return "Run `run_slo_probe` to verify SLO monitoring contracts.";
|
|
208
|
+
}
|
|
209
|
+
return "All layers verified. Advance to next roadmap item via `generate_session_prompt`.";
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Write .claude/state.md after a successful cycle.
|
|
213
|
+
* Non-throwing — errors are silently swallowed to avoid breaking close_cycle.
|
|
214
|
+
*/
|
|
215
|
+
function writeStateLeaf(projectDir, timestamp) {
|
|
216
|
+
try {
|
|
217
|
+
const report = buildLayerReport(projectDir);
|
|
218
|
+
const total = report.ucs.length;
|
|
219
|
+
const l2Covered = report.l2.filter((u) => u.hasProbe).length;
|
|
220
|
+
// Read harness run evidence
|
|
221
|
+
const harnessRunPath = join(projectDir, ".forgecraft", "harness-run.json");
|
|
222
|
+
let harnessRun = null;
|
|
223
|
+
if (existsSync(harnessRunPath)) {
|
|
224
|
+
try {
|
|
225
|
+
const raw = JSON.parse(readFileSync(harnessRunPath, "utf-8"));
|
|
226
|
+
if (raw.timestamp) {
|
|
227
|
+
const notImplemented = (raw.results ?? []).filter((r) => r.status === "not_implemented").length;
|
|
228
|
+
harnessRun = {
|
|
229
|
+
passed: raw.passed ?? 0,
|
|
230
|
+
failed: raw.failed ?? 0,
|
|
231
|
+
notImplemented: notImplemented > 0 ? notImplemented : undefined,
|
|
232
|
+
timestamp: raw.timestamp,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
// ignore
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
// Read env probe evidence
|
|
241
|
+
const envProbeRunPath = join(projectDir, ".forgecraft", "env-probe-run.json");
|
|
242
|
+
let envProbeTimestamp = "not run";
|
|
243
|
+
let envProbeStatus = "not-started";
|
|
244
|
+
if (existsSync(envProbeRunPath)) {
|
|
245
|
+
try {
|
|
246
|
+
const raw = JSON.parse(readFileSync(envProbeRunPath, "utf-8"));
|
|
247
|
+
envProbeTimestamp = raw.timestamp ?? "not run";
|
|
248
|
+
const passed = raw.passed ?? 0;
|
|
249
|
+
const failed = raw.failed ?? 0;
|
|
250
|
+
envProbeStatus =
|
|
251
|
+
failed > 0 ? "partial" : passed > 0 ? "complete" : "not-started";
|
|
252
|
+
}
|
|
253
|
+
catch {
|
|
254
|
+
// ignore
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
// Read SLO probe evidence
|
|
258
|
+
const sloProbeRunPath = join(projectDir, ".forgecraft", "slo-probe-run.json");
|
|
259
|
+
let sloProbeTimestamp = "not run";
|
|
260
|
+
let sloProbeStatus = "not-started";
|
|
261
|
+
if (existsSync(sloProbeRunPath)) {
|
|
262
|
+
try {
|
|
263
|
+
const raw = JSON.parse(readFileSync(sloProbeRunPath, "utf-8"));
|
|
264
|
+
sloProbeTimestamp = raw.timestamp ?? "not run";
|
|
265
|
+
const passed = raw.passed ?? 0;
|
|
266
|
+
const failed = raw.failed ?? 0;
|
|
267
|
+
sloProbeStatus =
|
|
268
|
+
failed > 0 ? "partial" : passed > 0 ? "complete" : "not-started";
|
|
269
|
+
}
|
|
270
|
+
catch {
|
|
271
|
+
// ignore
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
const l1GateCount = report.l1GateViolations.length;
|
|
275
|
+
const l2Total = report.l2.length;
|
|
276
|
+
const harnessTimestamp = harnessRun?.timestamp ?? "not run";
|
|
277
|
+
const harnessLine = harnessRun
|
|
278
|
+
? `${harnessRun.passed}/${l2Total} probes passing`
|
|
279
|
+
: "not run";
|
|
280
|
+
const violationLines = report.l1GateViolations.length > 0
|
|
281
|
+
? report.l1GateViolations
|
|
282
|
+
.map((v) => `- [${v.gateId}]: ${v.message ?? "gate violation"}`)
|
|
283
|
+
.join("\n")
|
|
284
|
+
: "None";
|
|
285
|
+
const driftLine = "None detected";
|
|
286
|
+
const cascadeResult = `PASS`;
|
|
287
|
+
const nextAction = deriveNextAction(report.l1GateViolations, l2Covered, total, harnessRun, report.l3, report.l4);
|
|
288
|
+
const lines = [
|
|
289
|
+
"# Project State",
|
|
290
|
+
`_Last updated by close_cycle: ${timestamp}_`,
|
|
291
|
+
"",
|
|
292
|
+
"## Layer Completion",
|
|
293
|
+
"| Layer | Status | Evidence |",
|
|
294
|
+
"|---|---|---|",
|
|
295
|
+
`| L1 Blueprint | ${total}/${total} UCs · ${l1GateCount} gate violation${l1GateCount === 1 ? "" : "s"} | close_cycle: ${timestamp} |`,
|
|
296
|
+
`| L2 Harness | ${harnessLine} | harness-run.json: ${harnessTimestamp} |`,
|
|
297
|
+
`| L3 Environment | ${envProbeStatus} | env-probe-run.json: ${envProbeTimestamp} |`,
|
|
298
|
+
`| L4 Monitoring | ${sloProbeStatus} | slo-probe-run.json: ${sloProbeTimestamp} |`,
|
|
299
|
+
"",
|
|
300
|
+
"## Active Gate Violations",
|
|
301
|
+
violationLines,
|
|
302
|
+
"",
|
|
303
|
+
"## Spec Drift",
|
|
304
|
+
driftLine,
|
|
305
|
+
"",
|
|
306
|
+
"## Last Cycle",
|
|
307
|
+
`${timestamp} — cascade: ${cascadeResult} · gates: ${l1GateCount} violation${l1GateCount === 1 ? "" : "s"} · harness: ${harnessLine}`,
|
|
308
|
+
"",
|
|
309
|
+
"## Next Action",
|
|
310
|
+
nextAction,
|
|
311
|
+
];
|
|
312
|
+
const outPath = join(projectDir, ".claude", "state.md");
|
|
313
|
+
mkdirSync(dirname(outPath), { recursive: true });
|
|
314
|
+
writeFileSync(outPath, lines.join("\n"), "utf-8");
|
|
315
|
+
}
|
|
316
|
+
catch {
|
|
317
|
+
// non-throwing
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Write docs/layer-status.md snapshot after a successful cycle.
|
|
322
|
+
* Non-throwing — errors are silently swallowed to avoid breaking close_cycle.
|
|
323
|
+
*/
|
|
324
|
+
function writeLayerStatusSnapshot(projectDir, timestamp, harnessSection) {
|
|
325
|
+
try {
|
|
326
|
+
const report = buildLayerReport(projectDir);
|
|
327
|
+
const total = report.ucs.length;
|
|
328
|
+
const l2Covered = report.l2.filter((u) => u.hasProbe).length;
|
|
329
|
+
// Probe file counts
|
|
330
|
+
const harnessRunPath = join(projectDir, ".forgecraft", "harness-run.json");
|
|
331
|
+
let harnessTimestamp = "(not run)";
|
|
332
|
+
let harnessPassed = 0;
|
|
333
|
+
let harnessFailed = 0;
|
|
334
|
+
if (existsSync(harnessRunPath)) {
|
|
335
|
+
try {
|
|
336
|
+
const run = JSON.parse(readFileSync(harnessRunPath, "utf-8"));
|
|
337
|
+
harnessTimestamp = run.timestamp ?? "(not run)";
|
|
338
|
+
harnessPassed = run.passed ?? 0;
|
|
339
|
+
harnessFailed = run.failed ?? 0;
|
|
340
|
+
}
|
|
341
|
+
catch {
|
|
342
|
+
// ignore
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
// Determine next action from harness section
|
|
346
|
+
const nextAction = harnessSection.some((l) => l.includes("⛔"))
|
|
347
|
+
? "Resolve failing probes — they are specification violations. Regenerate from spec."
|
|
348
|
+
: harnessSection.some((l) => l.includes("no execution evidence"))
|
|
349
|
+
? "Run run_harness to generate behavioral execution evidence."
|
|
350
|
+
: "All probes passing — commit changes and advance the cycle.";
|
|
351
|
+
const l3Status = report.l3;
|
|
352
|
+
const l4Status = report.l4;
|
|
353
|
+
const lines = [
|
|
354
|
+
"# Layer Status Snapshot",
|
|
355
|
+
`_Last updated by close_cycle: ${timestamp}_`,
|
|
356
|
+
"",
|
|
357
|
+
"## L1: Blueprint",
|
|
358
|
+
`${total}/${total} cascade steps passing`,
|
|
359
|
+
`Active gate violations: ${report.l1GateViolations.length} (see layer_status for details)`,
|
|
360
|
+
"",
|
|
361
|
+
"## L2: Behavioral Harness",
|
|
362
|
+
`${l2Covered}/${total} use cases with probe specs`,
|
|
363
|
+
`Last run: ${harnessTimestamp} — ${harnessPassed} passed / ${harnessFailed} failed`,
|
|
364
|
+
"",
|
|
365
|
+
"## L3: Environment",
|
|
366
|
+
l3Status,
|
|
367
|
+
"",
|
|
368
|
+
"## L4: Monitoring",
|
|
369
|
+
l4Status,
|
|
370
|
+
"",
|
|
371
|
+
"## Next Action",
|
|
372
|
+
nextAction,
|
|
373
|
+
];
|
|
374
|
+
const outPath = join(projectDir, "docs", "layer-status.md");
|
|
375
|
+
mkdirSync(dirname(outPath), { recursive: true });
|
|
376
|
+
writeFileSync(outPath, lines.join("\n"), "utf-8");
|
|
377
|
+
}
|
|
378
|
+
catch {
|
|
379
|
+
// non-throwing
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Build the L2 harness section for the close-cycle report.
|
|
384
|
+
* Non-throwing — missing/unparseable harness-run.json produces a "no evidence" section.
|
|
385
|
+
*/
|
|
386
|
+
function buildHarnessSection(projectDir) {
|
|
387
|
+
const harnessRunPath = join(projectDir, ".forgecraft", "harness-run.json");
|
|
388
|
+
const harnessSection = [""];
|
|
389
|
+
if (existsSync(harnessRunPath)) {
|
|
390
|
+
try {
|
|
391
|
+
const run = JSON.parse(readFileSync(harnessRunPath, "utf-8"));
|
|
392
|
+
const total = run.passed + run.failed + run.errors + run.notFound;
|
|
393
|
+
const pct = total > 0 ? Math.round((run.passed / total) * 100) : 0;
|
|
394
|
+
harnessSection.push(`### L2 Harness: ${run.passed}/${total} probes passing (${pct}%)`);
|
|
395
|
+
if (run.failed > 0) {
|
|
396
|
+
harnessSection.push(`⛔ ${run.failed} failing probe(s) — resolve before advancing.`);
|
|
397
|
+
harnessSection.push("Failing probes are specification violations. Regenerate from spec.");
|
|
398
|
+
}
|
|
399
|
+
const notImpl = (run.results ?? []).filter((r) => r.status === "not_implemented");
|
|
400
|
+
if (notImpl.length > 0) {
|
|
401
|
+
harnessSection.push(`⛔ ${notImpl.length} probe(s) are not_implemented — fill TODO sections before close_cycle.`);
|
|
402
|
+
harnessSection.push(` Affected: ${notImpl.map((r) => r.ucId).join(", ")}`);
|
|
403
|
+
harnessSection.push(" A not_implemented probe exits 0 but verifies nothing — false confidence.");
|
|
404
|
+
}
|
|
405
|
+
if (pct < 50) {
|
|
406
|
+
harnessSection.push(`⚠️ L2 coverage below 50% — expand harness before pre-release.`);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
catch {
|
|
410
|
+
harnessSection.push("### L2 Harness: no execution evidence");
|
|
411
|
+
harnessSection.push("Run run_harness before close_cycle for behavioral execution evidence.");
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
else {
|
|
415
|
+
harnessSection.push("### L2 Harness: no execution evidence");
|
|
416
|
+
harnessSection.push("Run run_harness before close_cycle for behavioral execution evidence.");
|
|
417
|
+
}
|
|
418
|
+
return harnessSection;
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Build the L3 env probe section for the close-cycle report.
|
|
422
|
+
* Non-throwing — missing/unparseable env-probe-run.json produces a "not yet run" section.
|
|
423
|
+
*/
|
|
424
|
+
function buildEnvProbeSection(projectDir) {
|
|
425
|
+
const envProbeRunPath = join(projectDir, ".forgecraft", "env-probe-run.json");
|
|
426
|
+
const section = [""];
|
|
427
|
+
if (existsSync(envProbeRunPath)) {
|
|
428
|
+
try {
|
|
429
|
+
const run = JSON.parse(readFileSync(envProbeRunPath, "utf-8"));
|
|
430
|
+
const total = run.passed + run.failed;
|
|
431
|
+
if (run.failed > 0) {
|
|
432
|
+
section.push(`### L3 Env Probes: ${run.passed}/${total} passing`);
|
|
433
|
+
section.push(`⛔ ${run.failed} failing env probe(s) — environment contracts not satisfied.`);
|
|
434
|
+
}
|
|
435
|
+
else {
|
|
436
|
+
section.push(`### L3 Env Probes: ${run.passed}/${total} passing`);
|
|
437
|
+
section.push(`✅ All env probes passing — environment contracts verified.`);
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
catch {
|
|
441
|
+
section.push("### L3 Env Probes: not yet run");
|
|
442
|
+
section.push(" Run `run_env_probe` to verify environment contracts.");
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
else {
|
|
446
|
+
section.push("### L3 Env Probes: not yet run");
|
|
447
|
+
section.push(" Run `run_env_probe` to verify environment contracts.");
|
|
448
|
+
}
|
|
449
|
+
return section;
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Build the L4 slo probe section for the close-cycle report.
|
|
453
|
+
* Non-throwing — missing/unparseable slo-probe-run.json produces a "not yet run" section.
|
|
454
|
+
*/
|
|
455
|
+
function buildSloProbeSection(projectDir) {
|
|
456
|
+
const sloProbeRunPath = join(projectDir, ".forgecraft", "slo-probe-run.json");
|
|
457
|
+
const section = [""];
|
|
458
|
+
if (existsSync(sloProbeRunPath)) {
|
|
459
|
+
try {
|
|
460
|
+
const run = JSON.parse(readFileSync(sloProbeRunPath, "utf-8"));
|
|
461
|
+
const total = run.passed + run.failed;
|
|
462
|
+
if (run.failed > 0) {
|
|
463
|
+
section.push(`### L4 SLO Probes: ${run.passed}/${total} passing`);
|
|
464
|
+
section.push(`⛔ ${run.failed} failing SLO probe(s) — monitoring contracts not satisfied.`);
|
|
465
|
+
}
|
|
466
|
+
else {
|
|
467
|
+
section.push(`### L4 SLO Probes: ${run.passed}/${total} passing`);
|
|
468
|
+
section.push(`✅ All SLO probes passing — monitoring contracts verified.`);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
catch {
|
|
472
|
+
section.push("### L4 SLO Probes: not yet run");
|
|
473
|
+
section.push(" Run `run_slo_probe` to verify monitoring contracts.");
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
else {
|
|
477
|
+
section.push("### L4 SLO Probes: not yet run");
|
|
478
|
+
section.push(" Run `run_slo_probe` to verify monitoring contracts.");
|
|
479
|
+
}
|
|
480
|
+
return section;
|
|
481
|
+
}
|
|
159
482
|
/**
|
|
160
483
|
* MCP handler for the close_cycle action.
|
|
161
484
|
*
|
|
@@ -180,8 +503,23 @@ export async function closeCycleHandler(args) {
|
|
|
180
503
|
if (roadmapItem && result.cascadeStatus === "pass" && !dryRun) {
|
|
181
504
|
markRoadmapItemDone(projectRoot, roadmapItem);
|
|
182
505
|
}
|
|
506
|
+
const reportLines = [formatCloseCycleResult(result)];
|
|
507
|
+
// Append L2 Harness section when cascade passed
|
|
508
|
+
if (result.cascadeStatus === "pass") {
|
|
509
|
+
const harnessLines = buildHarnessSection(projectRoot);
|
|
510
|
+
reportLines.push(...harnessLines);
|
|
511
|
+
const envProbeLines = buildEnvProbeSection(projectRoot);
|
|
512
|
+
reportLines.push(...envProbeLines);
|
|
513
|
+
const sloProbeLines = buildSloProbeSection(projectRoot);
|
|
514
|
+
reportLines.push(...sloProbeLines);
|
|
515
|
+
// Write docs/layer-status.md snapshot
|
|
516
|
+
const cycleTimestamp = new Date().toISOString();
|
|
517
|
+
writeLayerStatusSnapshot(projectRoot, cycleTimestamp, harnessLines);
|
|
518
|
+
// Write .claude/state.md sentinel leaf
|
|
519
|
+
writeStateLeaf(projectRoot, cycleTimestamp);
|
|
520
|
+
}
|
|
183
521
|
return {
|
|
184
|
-
content: [{ type: "text", text:
|
|
522
|
+
content: [{ type: "text", text: reportLines.join("\n") }],
|
|
185
523
|
};
|
|
186
524
|
}
|
|
187
525
|
//# sourceMappingURL=close-cycle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"close-cycle.js","sourceRoot":"","sources":["../../src/tools/close-cycle.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"close-cycle.js","sourceRoot":"","sources":["../../src/tools/close-cycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* consolidate_status tool.
|
|
3
|
+
*
|
|
4
|
+
* Produces a compact, structured project state snapshot — cascade score,
|
|
5
|
+
* roadmap progress, recent git activity, and Status.md summary — in one call.
|
|
6
|
+
* Closes the session drift gap: every session prompt starts with current state
|
|
7
|
+
* rather than stale spec state.
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import type { ToolResult } from "../shared/types.js";
|
|
11
|
+
export declare const consolidateStatusSchema: z.ZodObject<{
|
|
12
|
+
project_dir: z.ZodString;
|
|
13
|
+
}, "strip", z.ZodTypeAny, {
|
|
14
|
+
project_dir: string;
|
|
15
|
+
}, {
|
|
16
|
+
project_dir: string;
|
|
17
|
+
}>;
|
|
18
|
+
export type ConsolidateStatusInput = z.infer<typeof consolidateStatusSchema>;
|
|
19
|
+
export interface ConsolidatedStatus {
|
|
20
|
+
/** ISO timestamp of when the snapshot was taken */
|
|
21
|
+
readonly generatedAt: string;
|
|
22
|
+
/** X/Y required cascade steps passing */
|
|
23
|
+
readonly cascadeScore: {
|
|
24
|
+
readonly passing: number;
|
|
25
|
+
readonly required: number;
|
|
26
|
+
};
|
|
27
|
+
/** Human-readable cascade lines, e.g. "✅ functional_spec" */
|
|
28
|
+
readonly cascadeLines: ReadonlyArray<string>;
|
|
29
|
+
/** Roadmap progress */
|
|
30
|
+
readonly roadmap: {
|
|
31
|
+
readonly total: number;
|
|
32
|
+
readonly done: number;
|
|
33
|
+
readonly nextId: string | null;
|
|
34
|
+
readonly nextTitle: string | null;
|
|
35
|
+
} | null;
|
|
36
|
+
/** Last N git commit subjects */
|
|
37
|
+
readonly recentCommits: ReadonlyArray<string>;
|
|
38
|
+
/** Uncommitted changed files (M/A/D prefix) */
|
|
39
|
+
readonly uncommittedFiles: ReadonlyArray<string>;
|
|
40
|
+
/** Detected test command */
|
|
41
|
+
readonly testCommand: string | null;
|
|
42
|
+
/** Count of active gate violations (newer than last commit) */
|
|
43
|
+
readonly activeViolationCount: number;
|
|
44
|
+
/** Summary of active violations for prompt embedding */
|
|
45
|
+
readonly activeViolationSummary: ReadonlyArray<string>;
|
|
46
|
+
/** Last section of Status.md, truncated */
|
|
47
|
+
readonly statusSummary: string;
|
|
48
|
+
/** L1–L4 layer completion summary */
|
|
49
|
+
readonly layerSummary: {
|
|
50
|
+
readonly l1: {
|
|
51
|
+
readonly passing: number;
|
|
52
|
+
readonly total: number;
|
|
53
|
+
};
|
|
54
|
+
readonly l2: {
|
|
55
|
+
readonly passing: number;
|
|
56
|
+
readonly total: number;
|
|
57
|
+
};
|
|
58
|
+
readonly l3: "not-started" | "partial" | "complete";
|
|
59
|
+
readonly l4: "not-started" | "partial" | "complete";
|
|
60
|
+
} | null;
|
|
61
|
+
/** ISO timestamp of last harness run, or null if never run */
|
|
62
|
+
readonly harnessLastRun: string | null;
|
|
63
|
+
/** Number of probes that passed in the last harness run */
|
|
64
|
+
readonly harnessPassed: number;
|
|
65
|
+
/** Total number of results in the last harness run */
|
|
66
|
+
readonly harnessTotal: number;
|
|
67
|
+
/** L3 env probe: last run timestamp, or null */
|
|
68
|
+
readonly envProbeLastRun?: string | null;
|
|
69
|
+
/** L3 env probe: number of passing probes */
|
|
70
|
+
readonly envProbePassed?: number;
|
|
71
|
+
/** L3 env probe: total probes run */
|
|
72
|
+
readonly envProbeTotal?: number;
|
|
73
|
+
/** L4 slo probe: last run timestamp, or null */
|
|
74
|
+
readonly sloProbeLastRun?: string | null;
|
|
75
|
+
/** L4 slo probe: number of passing probes */
|
|
76
|
+
readonly sloProbePassed?: number;
|
|
77
|
+
/** L4 slo probe: total probes run */
|
|
78
|
+
readonly sloProbeTotal?: number;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Produce a live project state snapshot and return it as a text block.
|
|
82
|
+
*
|
|
83
|
+
* @param args - Validated input
|
|
84
|
+
* @returns MCP-style tool result with formatted snapshot text
|
|
85
|
+
*/
|
|
86
|
+
export declare function consolidateStatusHandler(args: ConsolidateStatusInput): Promise<ToolResult>;
|
|
87
|
+
/**
|
|
88
|
+
* Build a ConsolidatedStatus snapshot from the project directory.
|
|
89
|
+
* All reads are non-throwing — missing artifacts produce empty/null fields.
|
|
90
|
+
*
|
|
91
|
+
* @param projectDir - Absolute path to project root
|
|
92
|
+
* @returns Structured project state snapshot
|
|
93
|
+
*/
|
|
94
|
+
export declare function buildConsolidatedStatus(projectDir: string): ConsolidatedStatus;
|
|
95
|
+
/**
|
|
96
|
+
* Read the last N git commit subjects from the project directory.
|
|
97
|
+
* Returns empty array when git is unavailable or directory is not a repo.
|
|
98
|
+
*/
|
|
99
|
+
export declare function readRecentCommits(projectDir: string, count: number): ReadonlyArray<string>;
|
|
100
|
+
/**
|
|
101
|
+
* Read uncommitted changed files (staged + unstaged), up to maxFiles.
|
|
102
|
+
* Returns empty array when git is unavailable.
|
|
103
|
+
*/
|
|
104
|
+
export declare function readUncommittedFiles(projectDir: string, maxFiles: number): ReadonlyArray<string>;
|
|
105
|
+
/**
|
|
106
|
+
* Format a ConsolidatedStatus snapshot as a human-readable markdown block.
|
|
107
|
+
*
|
|
108
|
+
* @param snapshot - The structured snapshot to format
|
|
109
|
+
* @returns Formatted markdown text
|
|
110
|
+
*/
|
|
111
|
+
export declare function formatConsolidatedStatus(snapshot: ConsolidatedStatus): string;
|
|
112
|
+
//# sourceMappingURL=consolidate-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consolidate-status.d.ts","sourceRoot":"","sources":["../../src/tools/consolidate-status.ts"],"names":[],"mappings":"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"}
|