@isaacriehm/cairn-core 0.7.3 → 0.9.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/dist/.tsbuildinfo +1 -1
- package/dist/attention/bulk-accept.d.ts +0 -2
- package/dist/attention/bulk-accept.js +0 -3
- package/dist/attention/bulk-accept.js.map +1 -1
- package/dist/attention/scoring.d.ts +1 -3
- package/dist/attention/scoring.js +1 -12
- package/dist/attention/scoring.js.map +1 -1
- package/dist/claude/cache.js +1 -0
- package/dist/claude/cache.js.map +1 -1
- package/dist/claude/runner.js +25 -1
- package/dist/claude/runner.js.map +1 -1
- package/dist/claude/types.d.ts +8 -0
- package/dist/doctor/index.js +57 -0
- package/dist/doctor/index.js.map +1 -1
- package/dist/gc/citation-integrity.js +3 -1
- package/dist/gc/citation-integrity.js.map +1 -1
- package/dist/gc/doc-claims.d.ts +31 -0
- package/dist/gc/doc-claims.js +213 -0
- package/dist/gc/doc-claims.js.map +1 -0
- package/dist/gc/doc-source-drift.d.ts +31 -0
- package/dist/gc/doc-source-drift.js +190 -0
- package/dist/gc/doc-source-drift.js.map +1 -0
- package/dist/gc/index.d.ts +4 -0
- package/dist/gc/index.js +2 -0
- package/dist/gc/index.js.map +1 -1
- package/dist/gc/sweep.js +18 -0
- package/dist/gc/sweep.js.map +1 -1
- package/dist/gc/types.d.ts +2 -2
- package/dist/hooks/runners/context-threshold.d.ts +63 -0
- package/dist/hooks/runners/context-threshold.js +179 -0
- package/dist/hooks/runners/context-threshold.js.map +1 -0
- package/dist/hooks/runners/gc-autotrigger.d.ts +49 -0
- package/dist/hooks/runners/gc-autotrigger.js +87 -0
- package/dist/hooks/runners/gc-autotrigger.js.map +1 -0
- package/dist/hooks/runners/index.d.ts +2 -0
- package/dist/hooks/runners/index.js +1 -0
- package/dist/hooks/runners/index.js.map +1 -1
- package/dist/hooks/runners/payload.d.ts +10 -0
- package/dist/hooks/runners/payload.js +13 -0
- package/dist/hooks/runners/payload.js.map +1 -1
- package/dist/hooks/runners/session-end.js +2 -4
- package/dist/hooks/runners/session-end.js.map +1 -1
- package/dist/hooks/runners/session-start.js +157 -9
- package/dist/hooks/runners/session-start.js.map +1 -1
- package/dist/hooks/runners/stop.js +119 -0
- package/dist/hooks/runners/stop.js.map +1 -1
- package/dist/init/brand-derive.js +6 -1
- package/dist/init/brand-derive.js.map +1 -1
- package/dist/init/brand-setup.d.ts +12 -1
- package/dist/init/brand-setup.js +36 -1
- package/dist/init/brand-setup.js.map +1 -1
- package/dist/init/curator/corpus.d.ts +92 -0
- package/dist/init/curator/corpus.js +171 -0
- package/dist/init/curator/corpus.js.map +1 -0
- package/dist/init/curator/emit.d.ts +42 -0
- package/dist/init/curator/emit.js +230 -0
- package/dist/init/curator/emit.js.map +1 -0
- package/dist/init/curator/index.d.ts +1 -0
- package/dist/init/curator/index.js +2 -0
- package/dist/init/curator/index.js.map +1 -0
- package/dist/init/curator/regex-prefilter.d.ts +54 -0
- package/dist/init/curator/regex-prefilter.js +185 -0
- package/dist/init/curator/regex-prefilter.js.map +1 -0
- package/dist/init/curator/validate.d.ts +46 -0
- package/dist/init/curator/validate.js +100 -0
- package/dist/init/curator/validate.js.map +1 -0
- package/dist/init/curator/walker.d.ts +36 -0
- package/dist/init/curator/walker.js +380 -0
- package/dist/init/curator/walker.js.map +1 -0
- package/dist/init/eta-calibration.d.ts +39 -0
- package/dist/init/eta-calibration.js +143 -0
- package/dist/init/eta-calibration.js.map +1 -0
- package/dist/init/index.d.ts +8 -3
- package/dist/init/index.js +4 -1
- package/dist/init/index.js.map +1 -1
- package/dist/init/ingest-docs.d.ts +6 -1
- package/dist/init/ingest-docs.js.map +1 -1
- package/dist/init/init.js +15 -26
- package/dist/init/init.js.map +1 -1
- package/dist/init/mapper-merge.d.ts +4 -6
- package/dist/init/mapper-merge.js +11 -34
- package/dist/init/mapper-merge.js.map +1 -1
- package/dist/init/mapper-parallel.d.ts +0 -1
- package/dist/init/mapper-parallel.js +20 -12
- package/dist/init/mapper-parallel.js.map +1 -1
- package/dist/init/mapper-prompts.d.ts +1 -4
- package/dist/init/mapper-prompts.js +2 -6
- package/dist/init/mapper-prompts.js.map +1 -1
- package/dist/init/mapper.d.ts +8 -7
- package/dist/init/mapper.js +23 -15
- package/dist/init/mapper.js.map +1 -1
- package/dist/init/overlay.js +0 -1
- package/dist/init/overlay.js.map +1 -1
- package/dist/init/phases/1-detect.d.ts +17 -4
- package/dist/init/phases/1-detect.js +48 -4
- package/dist/init/phases/1-detect.js.map +1 -1
- package/dist/init/phases/10-rules-merge.d.ts +7 -2
- package/dist/init/phases/10-rules-merge.js +17 -32
- package/dist/init/phases/10-rules-merge.js.map +1 -1
- package/dist/init/phases/11-baseline.js.map +1 -1
- package/dist/init/phases/12-strip.js +14 -1
- package/dist/init/phases/12-strip.js.map +1 -1
- package/dist/init/phases/13-multidev.d.ts +5 -1
- package/dist/init/phases/13-multidev.js +23 -2
- package/dist/init/phases/13-multidev.js.map +1 -1
- package/dist/init/phases/3-mapper.js.map +1 -1
- package/dist/init/phases/4-seed.js +2 -3
- package/dist/init/phases/4-seed.js.map +1 -1
- package/dist/init/phases/5-preflight.d.ts +42 -0
- package/dist/init/phases/5-preflight.js +244 -0
- package/dist/init/phases/5-preflight.js.map +1 -0
- package/dist/init/phases/6-brand.js +2 -4
- package/dist/init/phases/6-brand.js.map +1 -1
- package/dist/init/phases/7-topic-index.d.ts +6 -0
- package/dist/init/phases/7-topic-index.js +13 -0
- package/dist/init/phases/7-topic-index.js.map +1 -1
- package/dist/init/phases/8-docs-ingest.d.ts +6 -5
- package/dist/init/phases/8-docs-ingest.js +16 -43
- package/dist/init/phases/8-docs-ingest.js.map +1 -1
- package/dist/init/phases/9a-walker.d.ts +15 -0
- package/dist/init/phases/9a-walker.js +63 -0
- package/dist/init/phases/9a-walker.js.map +1 -0
- package/dist/init/phases/9b-curate.d.ts +19 -0
- package/dist/init/phases/9b-curate.js +79 -0
- package/dist/init/phases/9b-curate.js.map +1 -0
- package/dist/init/phases/9c-emit.d.ts +13 -0
- package/dist/init/phases/9c-emit.js +57 -0
- package/dist/init/phases/9c-emit.js.map +1 -0
- package/dist/init/phases/index.d.ts +6 -5
- package/dist/init/phases/index.js +4 -4
- package/dist/init/phases/index.js.map +1 -1
- package/dist/init/phases/mapper-output-io.d.ts +5 -5
- package/dist/init/phases/mapper-output-io.js +5 -5
- package/dist/init/phases/orchestrator.d.ts +10 -0
- package/dist/init/phases/orchestrator.js +13 -1
- package/dist/init/phases/orchestrator.js.map +1 -1
- package/dist/init/phases/state-io.js +1 -1
- package/dist/init/phases/types.d.ts +115 -9
- package/dist/init/phases/types.js +4 -2
- package/dist/init/phases/types.js.map +1 -1
- package/dist/init/post-git-init.d.ts +53 -0
- package/dist/init/post-git-init.js +74 -0
- package/dist/init/post-git-init.js.map +1 -0
- package/dist/init/preflight-guards.d.ts +11 -2
- package/dist/init/preflight-guards.js +27 -5
- package/dist/init/preflight-guards.js.map +1 -1
- package/dist/init/rules-merge/index.d.ts +1 -1
- package/dist/init/rules-merge/ingest.d.ts +6 -1
- package/dist/init/rules-merge/ingest.js.map +1 -1
- package/dist/init/skill-budget.d.ts +39 -0
- package/dist/init/skill-budget.js +99 -0
- package/dist/init/skill-budget.js.map +1 -0
- package/dist/init/source-comments/ingest.d.ts +0 -2
- package/dist/init/source-comments/ingest.js.map +1 -1
- package/dist/init/source-comments/walker.js +2 -2
- package/dist/init/topic-index/index.d.ts +8 -0
- package/dist/init/topic-index/index.js +10 -2
- package/dist/init/topic-index/index.js.map +1 -1
- package/dist/init/topic-index/judge.d.ts +15 -0
- package/dist/init/topic-index/judge.js +15 -1
- package/dist/init/topic-index/judge.js.map +1 -1
- package/dist/init/topic-index/resolve.js +41 -14
- package/dist/init/topic-index/resolve.js.map +1 -1
- package/dist/init/types.d.ts +9 -0
- package/dist/init/walker.d.ts +1 -1
- package/dist/init/walker.js +1 -1
- package/dist/init/workflow-block.d.ts +5 -6
- package/dist/init/workflow-block.js +5 -9
- package/dist/init/workflow-block.js.map +1 -1
- package/dist/mcp/bootstrap-guard.js +2 -2
- package/dist/mcp/bootstrap-guard.js.map +1 -1
- package/dist/mcp/schemas.d.ts +34 -0
- package/dist/mcp/schemas.js +50 -0
- package/dist/mcp/schemas.js.map +1 -1
- package/dist/mcp/telemetry.d.ts +1 -1
- package/dist/mcp/tools/bootstrap-retry.d.ts +23 -0
- package/dist/mcp/tools/bootstrap-retry.js +53 -0
- package/dist/mcp/tools/bootstrap-retry.js.map +1 -0
- package/dist/mcp/tools/bulk-accept-attention.d.ts +1 -1
- package/dist/mcp/tools/bulk-accept-attention.js +4 -6
- package/dist/mcp/tools/bulk-accept-attention.js.map +1 -1
- package/dist/mcp/tools/index.js +10 -0
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/init-phases.d.ts +7 -6
- package/dist/mcp/tools/init-phases.js +36 -65
- package/dist/mcp/tools/init-phases.js.map +1 -1
- package/dist/mcp/tools/resume.d.ts +21 -0
- package/dist/mcp/tools/resume.js +88 -0
- package/dist/mcp/tools/resume.js.map +1 -0
- package/dist/mcp/tools/task-complete.d.ts +23 -0
- package/dist/mcp/tools/task-complete.js +51 -0
- package/dist/mcp/tools/task-complete.js.map +1 -0
- package/dist/mcp/tools/task-create.js +17 -11
- package/dist/mcp/tools/task-create.js.map +1 -1
- package/dist/mcp/tools/task-journal-append.d.ts +22 -0
- package/dist/mcp/tools/task-journal-append.js +44 -0
- package/dist/mcp/tools/task-journal-append.js.map +1 -0
- package/dist/paths/index.js +1 -1
- package/dist/paths/index.js.map +1 -1
- package/dist/status-line/format.js +20 -0
- package/dist/status-line/format.js.map +1 -1
- package/dist/tasks/index.d.ts +2 -0
- package/dist/tasks/index.js +2 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/lifecycle.d.ts +107 -0
- package/dist/tasks/lifecycle.js +302 -0
- package/dist/tasks/lifecycle.js.map +1 -0
- package/dist/trace/index.d.ts +1 -1
- package/dist/trace/index.js +2 -2
- package/dist/trace/index.js.map +1 -1
- package/package.json +2 -2
- package/templates/.cairn/config/trust-policy.yaml +0 -3
- package/templates/.cairn/config/workflow.md +0 -1
- package/templates/.cairn/ground/canonical-map/topics.yaml +0 -12
- package/dist/init/phases/5-pilot.d.ts +0 -10
- package/dist/init/phases/5-pilot.js +0 -108
- package/dist/init/phases/5-pilot.js.map +0 -1
- package/dist/init/phases/9-source-comments.d.ts +0 -6
- package/dist/init/phases/9-source-comments.js +0 -55
- package/dist/init/phases/9-source-comments.js.map +0 -1
- package/dist/init/phases/parallel-8910.d.ts +0 -27
- package/dist/init/phases/parallel-8910.js +0 -172
- package/dist/init/phases/parallel-8910.js.map +0 -1
- package/dist/init/phases/source-comments-output-io.d.ts +0 -84
- package/dist/init/phases/source-comments-output-io.js +0 -81
- package/dist/init/phases/source-comments-output-io.js.map +0 -1
- package/templates/.cairn/ground/capabilities/mcp-tools.yaml +0 -29
- package/templates/.cairn/ground/capabilities/skills.yaml +0 -25
- package/templates/.cairn/ground/capabilities/snippets.yaml +0 -29
|
@@ -6,8 +6,21 @@
|
|
|
6
6
|
* `outputs["12-strip"].pending` and emits one question at a time
|
|
7
7
|
* until the queue is empty.
|
|
8
8
|
*/
|
|
9
|
-
import { advancePhase } from "./orchestrator.js";
|
|
9
|
+
import { advancePhase, isSelfAdoptState } from "./orchestrator.js";
|
|
10
10
|
export async function runPhase12Strip(state) {
|
|
11
|
+
if (isSelfAdoptState(state)) {
|
|
12
|
+
const skipped = { pending: [], decisions: {} };
|
|
13
|
+
const next = {
|
|
14
|
+
...state,
|
|
15
|
+
outputs: { ...state.outputs, "12-strip": skipped },
|
|
16
|
+
answer: undefined,
|
|
17
|
+
};
|
|
18
|
+
return {
|
|
19
|
+
status: "complete",
|
|
20
|
+
nextPhase: "13-multidev",
|
|
21
|
+
state: advancePhase(next),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
11
24
|
const existing = state.outputs["12-strip"];
|
|
12
25
|
const modules = computeFlaggedModules(state);
|
|
13
26
|
// Initialize on first entry.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"12-strip.js","sourceRoot":"","sources":["../../../src/init/phases/12-strip.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"12-strip.js","sourceRoot":"","sources":["../../../src/init/phases/12-strip.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Phase 13-multidev — detect per-host package manager(s) and emit
|
|
3
|
-
* JOIN.md hints for new contributors.
|
|
3
|
+
* JOIN.md hints for new contributors. Also runs the final ground
|
|
4
|
+
* manifest rebuild so the manifest reflects every DEC / INV Phase 9c
|
|
5
|
+
* emitted; the post-commit hook + GC canary regenerate later, but a
|
|
6
|
+
* freshly-adopted repo shouldn't need a commit before the manifest
|
|
7
|
+
* is real. Idempotent.
|
|
4
8
|
*/
|
|
5
9
|
import type { PhaseResult, PhaseState } from "./types.js";
|
|
6
10
|
export declare function runPhase13Multidev(state: PhaseState): Promise<PhaseResult>;
|
|
@@ -1,17 +1,38 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Phase 13-multidev — detect per-host package manager(s) and emit
|
|
3
|
-
* JOIN.md hints for new contributors.
|
|
3
|
+
* JOIN.md hints for new contributors. Also runs the final ground
|
|
4
|
+
* manifest rebuild so the manifest reflects every DEC / INV Phase 9c
|
|
5
|
+
* emitted; the post-commit hook + GC canary regenerate later, but a
|
|
6
|
+
* freshly-adopted repo shouldn't need a commit before the manifest
|
|
7
|
+
* is real. Idempotent.
|
|
4
8
|
*/
|
|
9
|
+
import { logger } from "../../logger.js";
|
|
10
|
+
import { writeManifest } from "@isaacriehm/cairn-state";
|
|
5
11
|
import { installMultiDev, } from "../multi-dev/index.js";
|
|
6
12
|
import { advancePhase } from "./orchestrator.js";
|
|
13
|
+
const log = logger("init.phases.13-multidev");
|
|
7
14
|
export async function runPhase13Multidev(state) {
|
|
8
15
|
try {
|
|
9
16
|
const result = installMultiDev({
|
|
10
17
|
repoRoot: state.repoRoot,
|
|
11
18
|
});
|
|
19
|
+
let manifestFiles = 0;
|
|
20
|
+
try {
|
|
21
|
+
const m = writeManifest({ repoRoot: state.repoRoot, generator: "init.phase-13" });
|
|
22
|
+
manifestFiles = m.manifest.files.length;
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
log.warn({ err: String(err) }, "phase 13 manifest rebuild failed (non-fatal)");
|
|
26
|
+
}
|
|
12
27
|
const next = {
|
|
13
28
|
...state,
|
|
14
|
-
outputs: {
|
|
29
|
+
outputs: {
|
|
30
|
+
...state.outputs,
|
|
31
|
+
"13-multidev": {
|
|
32
|
+
...result,
|
|
33
|
+
manifest_files: manifestFiles,
|
|
34
|
+
},
|
|
35
|
+
},
|
|
15
36
|
};
|
|
16
37
|
return {
|
|
17
38
|
status: "complete",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"13-multidev.js","sourceRoot":"","sources":["../../../src/init/phases/13-multidev.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"13-multidev.js","sourceRoot":"","sources":["../../../src/init/phases/13-multidev.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EACL,eAAe,GAEhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,GAAG,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAiB;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAA0B,eAAe,CAAC;YACpD,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC;QAEH,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,aAAa,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;YAClF,aAAa,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,8CAA8C,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,IAAI,GAAe;YACvB,GAAG,KAAK;YACR,OAAO,EAAE;gBACP,GAAG,KAAK,CAAC,OAAO;gBAChB,aAAa,EAAE;oBACb,GAAG,MAAM;oBACT,cAAc,EAAE,aAAa;iBAC9B;aACF;SACF,CAAC;QACF,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;SAC1B,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE;gBACL,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,0BAA0B;gBACnC,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACtE;YACD,KAAK;SACN,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"3-mapper.js","sourceRoot":"","sources":["../../../src/init/phases/3-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,SAAS,EAAqB,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"3-mapper.js","sourceRoot":"","sources":["../../../src/init/phases/3-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,SAAS,EAAqB,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAiB;IACrD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACrD,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE;gBACL,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,kDAAkD;aAC5D;YACD,KAAK;SACN,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,CAAC;QACH,MAAM,MAAM,GAAiB,MAAM,SAAS,CAAC;YAC3C,SAAS;YACT,OAAO;YACP,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE;gBAC3B,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;YAC9B,CAAC;YACD,WAAW,EAAE,GAAG,EAAE;gBAChB,SAAS,IAAI,CAAC,CAAC;gBACf,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE;oBAC5B,KAAK,EAAE,UAAU;oBACjB,KAAK,EAAE,SAAS;oBAChB,KAAK,EAAE,WAAW;oBAClB,SAAS;iBACV,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;QACH,oEAAoE;QACpE,kEAAkE;QAClE,qBAAqB,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAClD,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAe;YACvB,GAAG,KAAK;YACR,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;SACrD,CAAC;QACF,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;SAC1B,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE;gBACL,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,wBAAwB;gBACjC,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACtE;YACD,KAAK;SACN,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -22,7 +22,7 @@ import { seedAttestedCommits } from "../../hooks/seed-attested.js";
|
|
|
22
22
|
import { buildProjectOverlay } from "../overlay.js";
|
|
23
23
|
import { seedCairnLayout } from "../seed.js";
|
|
24
24
|
import { updateWorkflowSlugBlock } from "../workflow-block.js";
|
|
25
|
-
import { readMapperOutputFile
|
|
25
|
+
import { readMapperOutputFile } from "./mapper-output-io.js";
|
|
26
26
|
import { advancePhase } from "./orchestrator.js";
|
|
27
27
|
export async function runPhase4Seed(state) {
|
|
28
28
|
const detection = state.outputs["1-detect"];
|
|
@@ -57,7 +57,6 @@ export async function runPhase4Seed(state) {
|
|
|
57
57
|
workflowMdPath: join(state.repoRoot, wfRel),
|
|
58
58
|
slug: projectSlug,
|
|
59
59
|
update: {
|
|
60
|
-
pilot_module: mapperOutput.pilot_module,
|
|
61
60
|
route_handler_globs: mapperOutput.route_handler_globs,
|
|
62
61
|
dto_globs: mapperOutput.dto_globs,
|
|
63
62
|
generator_source_globs: mapperOutput.generator_source_globs,
|
|
@@ -125,7 +124,7 @@ export async function runPhase4Seed(state) {
|
|
|
125
124
|
};
|
|
126
125
|
return {
|
|
127
126
|
status: "complete",
|
|
128
|
-
nextPhase: "5-
|
|
127
|
+
nextPhase: "5-preflight",
|
|
129
128
|
state: advancePhase(next),
|
|
130
129
|
};
|
|
131
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"4-seed.js","sourceRoot":"","sources":["../../../src/init/phases/4-seed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAClD,OAAO,EACL,cAAc,EACd,eAAe,
|
|
1
|
+
{"version":3,"file":"4-seed.js","sourceRoot":"","sources":["../../../src/init/phases/4-seed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase 5-preflight — count the units the long Haiku phases will
|
|
3
|
+
* process (markdown paragraphs, essay-class comment blocks, rule
|
|
4
|
+
* sections, jaccard pair estimate), then compute an aggregate ETA
|
|
5
|
+
* by multiplying counts against the per-machine calibration cache.
|
|
6
|
+
*
|
|
7
|
+
* No operator input. Always advances. Output is consumed by the
|
|
8
|
+
* cairn-adopt skill which renders a single banner immediately after
|
|
9
|
+
* this phase so the operator sees an honest pre-commit estimate
|
|
10
|
+
* before the long phases (7-topic-index → 10-rules-merge) start.
|
|
11
|
+
*
|
|
12
|
+
* Pilot scoping is gone — adoption always covers the whole repo.
|
|
13
|
+
* The operator can narrow surface area post-adoption via
|
|
14
|
+
* `cairn scope` if desired.
|
|
15
|
+
*/
|
|
16
|
+
import { type EtaPhase } from "../eta-calibration.js";
|
|
17
|
+
import type { PhaseResult, PhaseState } from "./types.js";
|
|
18
|
+
export interface PreflightUnits {
|
|
19
|
+
docFiles: number;
|
|
20
|
+
docParagraphs: number;
|
|
21
|
+
sourceFiles: number;
|
|
22
|
+
essayBlocks: number;
|
|
23
|
+
ruleH2Sections: number;
|
|
24
|
+
jaccardPairsEstimate: number;
|
|
25
|
+
}
|
|
26
|
+
export interface PreflightEta {
|
|
27
|
+
/** Best-case seconds per phase (units × calibrated rate). */
|
|
28
|
+
perPhaseSeconds: Record<EtaPhase, number>;
|
|
29
|
+
/** Sum across all four long phases. */
|
|
30
|
+
totalSeconds: number;
|
|
31
|
+
/** Buffered upper bound (totalSeconds × 1.5) for jitter / throttling. */
|
|
32
|
+
totalSecondsHigh: number;
|
|
33
|
+
}
|
|
34
|
+
export interface PreflightOutput {
|
|
35
|
+
units: PreflightUnits;
|
|
36
|
+
eta: PreflightEta;
|
|
37
|
+
/** Lines the cairn-adopt skill should render verbatim as the ETA banner. */
|
|
38
|
+
bannerLines: string[];
|
|
39
|
+
/** True when self-adopt skipped the unit scan. */
|
|
40
|
+
skipped?: "self-adopt";
|
|
41
|
+
}
|
|
42
|
+
export declare function runPhase5Preflight(state: PhaseState): Promise<PhaseResult>;
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase 5-preflight — count the units the long Haiku phases will
|
|
3
|
+
* process (markdown paragraphs, essay-class comment blocks, rule
|
|
4
|
+
* sections, jaccard pair estimate), then compute an aggregate ETA
|
|
5
|
+
* by multiplying counts against the per-machine calibration cache.
|
|
6
|
+
*
|
|
7
|
+
* No operator input. Always advances. Output is consumed by the
|
|
8
|
+
* cairn-adopt skill which renders a single banner immediately after
|
|
9
|
+
* this phase so the operator sees an honest pre-commit estimate
|
|
10
|
+
* before the long phases (7-topic-index → 10-rules-merge) start.
|
|
11
|
+
*
|
|
12
|
+
* Pilot scoping is gone — adoption always covers the whole repo.
|
|
13
|
+
* The operator can narrow surface area post-adoption via
|
|
14
|
+
* `cairn scope` if desired.
|
|
15
|
+
*/
|
|
16
|
+
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
17
|
+
import { extname, join } from "node:path";
|
|
18
|
+
import { walkFs } from "@isaacriehm/cairn-state";
|
|
19
|
+
import { walkSourceComments } from "../source-comments/walker.js";
|
|
20
|
+
import { discoverRuleSources } from "../rules-merge/discover.js";
|
|
21
|
+
import { parseRuleSections } from "../rules-merge/parse-sections.js";
|
|
22
|
+
import { readCalibration } from "../eta-calibration.js";
|
|
23
|
+
import { advancePhase, isSelfAdoptState } from "./orchestrator.js";
|
|
24
|
+
/** Hard upper bound on jaccard pair-judge calls (matches phase 7 cap). */
|
|
25
|
+
const JACCARD_PAIR_CAP = 200;
|
|
26
|
+
/** Skip dirs for the markdown walk — match the source walker's set. */
|
|
27
|
+
const DOC_SKIP_DIRS = new Set([
|
|
28
|
+
".git",
|
|
29
|
+
"node_modules",
|
|
30
|
+
"dist",
|
|
31
|
+
"build",
|
|
32
|
+
"target",
|
|
33
|
+
"out",
|
|
34
|
+
"vendor",
|
|
35
|
+
".venv",
|
|
36
|
+
".direnv",
|
|
37
|
+
".cache",
|
|
38
|
+
"coverage",
|
|
39
|
+
".next",
|
|
40
|
+
".turbo",
|
|
41
|
+
".cairn",
|
|
42
|
+
".archive",
|
|
43
|
+
]);
|
|
44
|
+
export async function runPhase5Preflight(state) {
|
|
45
|
+
if (isSelfAdoptState(state)) {
|
|
46
|
+
const skipped = {
|
|
47
|
+
units: emptyUnits(),
|
|
48
|
+
eta: zeroEta(),
|
|
49
|
+
bannerLines: ["Self-adopt mode — long phases skipped, no ETA estimate."],
|
|
50
|
+
skipped: "self-adopt",
|
|
51
|
+
};
|
|
52
|
+
const next = {
|
|
53
|
+
...state,
|
|
54
|
+
outputs: { ...state.outputs, "5-preflight": skipped },
|
|
55
|
+
};
|
|
56
|
+
return {
|
|
57
|
+
status: "complete",
|
|
58
|
+
nextPhase: "6-brand",
|
|
59
|
+
state: advancePhase(next),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
const units = countUnits(state.repoRoot);
|
|
63
|
+
const eta = estimateEta(units);
|
|
64
|
+
const bannerLines = renderBanner(units, eta);
|
|
65
|
+
const out = { units, eta, bannerLines };
|
|
66
|
+
const next = {
|
|
67
|
+
...state,
|
|
68
|
+
outputs: { ...state.outputs, "5-preflight": out },
|
|
69
|
+
};
|
|
70
|
+
return {
|
|
71
|
+
status: "complete",
|
|
72
|
+
nextPhase: "6-brand",
|
|
73
|
+
state: advancePhase(next),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function emptyUnits() {
|
|
77
|
+
return {
|
|
78
|
+
docFiles: 0,
|
|
79
|
+
docParagraphs: 0,
|
|
80
|
+
sourceFiles: 0,
|
|
81
|
+
essayBlocks: 0,
|
|
82
|
+
ruleH2Sections: 0,
|
|
83
|
+
jaccardPairsEstimate: 0,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function zeroEta() {
|
|
87
|
+
return {
|
|
88
|
+
perPhaseSeconds: {
|
|
89
|
+
"7-topic-index": 0,
|
|
90
|
+
"8-docs-ingest": 0,
|
|
91
|
+
"9-source-comments": 0,
|
|
92
|
+
"10-rules-merge": 0,
|
|
93
|
+
},
|
|
94
|
+
totalSeconds: 0,
|
|
95
|
+
totalSecondsHigh: 0,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function countUnits(repoRoot) {
|
|
99
|
+
const docs = countDocs(repoRoot);
|
|
100
|
+
const source = walkSourceComments({ repoRoot });
|
|
101
|
+
const rules = countRuleH2(repoRoot);
|
|
102
|
+
// Conservative jaccard pair estimate — phase 7 caps at 200 and the
|
|
103
|
+
// hit rate on monorepos saturates quickly. Below 50 paragraphs, every
|
|
104
|
+
// pair counts; above, assume the cap.
|
|
105
|
+
const jaccardPairsEstimate = docs.paragraphs <= 50
|
|
106
|
+
? (docs.paragraphs * (docs.paragraphs - 1)) / 2
|
|
107
|
+
: JACCARD_PAIR_CAP;
|
|
108
|
+
return {
|
|
109
|
+
docFiles: docs.files,
|
|
110
|
+
docParagraphs: docs.paragraphs,
|
|
111
|
+
sourceFiles: source.fileCountByLang
|
|
112
|
+
? Object.values(source.fileCountByLang).reduce((a, b) => a + b, 0)
|
|
113
|
+
: source.files.length,
|
|
114
|
+
essayBlocks: source.blocks.length,
|
|
115
|
+
ruleH2Sections: rules,
|
|
116
|
+
jaccardPairsEstimate: Math.min(JACCARD_PAIR_CAP, Math.round(jaccardPairsEstimate)),
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
function countDocs(repoRoot) {
|
|
120
|
+
let files = 0;
|
|
121
|
+
let paragraphs = 0;
|
|
122
|
+
// Repo-root markdown (README.md, CHANGELOG.md, AGENTS.md, etc.).
|
|
123
|
+
for (const name of safeReaddir(repoRoot)) {
|
|
124
|
+
if (!isMarkdown(name))
|
|
125
|
+
continue;
|
|
126
|
+
const abs = join(repoRoot, name);
|
|
127
|
+
const counts = countMarkdownFile(abs);
|
|
128
|
+
if (counts !== null) {
|
|
129
|
+
files += 1;
|
|
130
|
+
paragraphs += counts.paragraphs;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// docs/ subtree.
|
|
134
|
+
const docsDir = join(repoRoot, "docs");
|
|
135
|
+
if (existsSync(docsDir)) {
|
|
136
|
+
walkFs({
|
|
137
|
+
dir: docsDir,
|
|
138
|
+
repoRoot,
|
|
139
|
+
onDir: (_rel, _abs, ent) => {
|
|
140
|
+
if (DOC_SKIP_DIRS.has(ent.name))
|
|
141
|
+
return false;
|
|
142
|
+
return true;
|
|
143
|
+
},
|
|
144
|
+
onFile: (_rel, abs, ent) => {
|
|
145
|
+
if (!isMarkdown(ent.name))
|
|
146
|
+
return;
|
|
147
|
+
const counts = countMarkdownFile(abs);
|
|
148
|
+
if (counts !== null) {
|
|
149
|
+
files += 1;
|
|
150
|
+
paragraphs += counts.paragraphs;
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return { files, paragraphs };
|
|
156
|
+
}
|
|
157
|
+
function isMarkdown(name) {
|
|
158
|
+
const ext = extname(name).toLowerCase();
|
|
159
|
+
return ext === ".md" || ext === ".mdx";
|
|
160
|
+
}
|
|
161
|
+
function safeReaddir(dir) {
|
|
162
|
+
try {
|
|
163
|
+
const ents = require("node:fs").readdirSync(dir);
|
|
164
|
+
return ents;
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
return [];
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function countMarkdownFile(absPath) {
|
|
171
|
+
try {
|
|
172
|
+
const stat = statSync(absPath);
|
|
173
|
+
// Skip giant files — phase 8 skips them too in practice (over a few
|
|
174
|
+
// MB the embedding cost dominates and the operator usually wants
|
|
175
|
+
// them excluded).
|
|
176
|
+
if (stat.size > 2 * 1024 * 1024)
|
|
177
|
+
return null;
|
|
178
|
+
const body = readFileSync(absPath, "utf8");
|
|
179
|
+
// Paragraph = run of non-empty lines, separated by blank line(s).
|
|
180
|
+
const paragraphs = body
|
|
181
|
+
.split(/\n\s*\n/)
|
|
182
|
+
.map((p) => p.trim())
|
|
183
|
+
.filter((p) => p.length > 0).length;
|
|
184
|
+
return { paragraphs };
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
function countRuleH2(repoRoot) {
|
|
191
|
+
const sources = discoverRuleSources(repoRoot);
|
|
192
|
+
let total = 0;
|
|
193
|
+
for (const src of sources) {
|
|
194
|
+
try {
|
|
195
|
+
const body = readFileSync(src.absPath, "utf8");
|
|
196
|
+
const sections = parseRuleSections(body);
|
|
197
|
+
// Phase 10 issues one Haiku call per H2 (level 2). H3 sections
|
|
198
|
+
// ride along inside their parent H2's classification, so they
|
|
199
|
+
// don't add to the call count.
|
|
200
|
+
total += sections.filter((s) => s.level === 2).length;
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
// Unreadable rule file — skip silently; phase 10 will surface it.
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return total;
|
|
207
|
+
}
|
|
208
|
+
function estimateEta(units) {
|
|
209
|
+
const cal = readCalibration();
|
|
210
|
+
const perPhaseSeconds = {
|
|
211
|
+
"7-topic-index": units.jaccardPairsEstimate * cal.phases["7-topic-index"].secondsPerUnit,
|
|
212
|
+
"8-docs-ingest": units.docParagraphs * cal.phases["8-docs-ingest"].secondsPerUnit,
|
|
213
|
+
"9-source-comments": units.essayBlocks * cal.phases["9-source-comments"].secondsPerUnit,
|
|
214
|
+
"10-rules-merge": units.ruleH2Sections * cal.phases["10-rules-merge"].secondsPerUnit,
|
|
215
|
+
};
|
|
216
|
+
const totalSeconds = perPhaseSeconds["7-topic-index"] +
|
|
217
|
+
perPhaseSeconds["8-docs-ingest"] +
|
|
218
|
+
perPhaseSeconds["9-source-comments"] +
|
|
219
|
+
perPhaseSeconds["10-rules-merge"];
|
|
220
|
+
return {
|
|
221
|
+
perPhaseSeconds,
|
|
222
|
+
totalSeconds,
|
|
223
|
+
totalSecondsHigh: totalSeconds * 1.5,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
function renderBanner(units, eta) {
|
|
227
|
+
const totalLow = formatDuration(eta.totalSeconds);
|
|
228
|
+
const totalHigh = formatDuration(eta.totalSecondsHigh);
|
|
229
|
+
const lines = [];
|
|
230
|
+
lines.push(`Indexing whole repo (${units.sourceFiles} source files, ${units.essayBlocks} essay-class comments, ${units.docFiles} docs / ${units.docParagraphs} paragraphs, ${units.ruleH2Sections} rule sections).`);
|
|
231
|
+
lines.push(`Estimated time: ${totalLow}–${totalHigh}. Live ETA on statusline. /exit safe — SessionStart resumes.`);
|
|
232
|
+
return lines;
|
|
233
|
+
}
|
|
234
|
+
function formatDuration(seconds) {
|
|
235
|
+
if (seconds < 60)
|
|
236
|
+
return `${Math.max(1, Math.round(seconds))}s`;
|
|
237
|
+
const mins = Math.round(seconds / 60);
|
|
238
|
+
if (mins < 60)
|
|
239
|
+
return `${mins}m`;
|
|
240
|
+
const hours = Math.floor(mins / 60);
|
|
241
|
+
const remMins = mins % 60;
|
|
242
|
+
return remMins === 0 ? `${hours}h` : `${hours}h${remMins}m`;
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=5-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"5-preflight.js","sourceRoot":"","sources":["../../../src/init/phases/5-preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,8 +13,7 @@ import { advancePhase } from "./orchestrator.js";
|
|
|
13
13
|
const DEFAULT_VOICE = "Direct, technical, project-aware. Match the existing tone in CLAUDE.md / AGENTS.md if those files set a register; otherwise default to short sentences, full English, no marketing language.";
|
|
14
14
|
const DEFAULT_AVOID = "Marketing fluff (\"world-class\", \"revolutionary\", \"game-changing\"). Speculative claims about behavior the code does not implement. Anything that contradicts an in-scope DEC or §INV.";
|
|
15
15
|
function deriveDefaultUsers(state) {
|
|
16
|
-
const
|
|
17
|
-
const slug = detect?.project_slug ?? "this project";
|
|
16
|
+
const slug = state.outputs["1-detect"]?.project_slug ?? "this project";
|
|
18
17
|
return `Developers and operators working on ${slug}. Refine when adding consumer-facing or external personas.`;
|
|
19
18
|
}
|
|
20
19
|
export async function runPhase6Brand(state) {
|
|
@@ -25,8 +24,7 @@ export async function runPhase6Brand(state) {
|
|
|
25
24
|
if (choice === "auto-fill") {
|
|
26
25
|
const mapper = state.outputs["3-mapper"];
|
|
27
26
|
if (mapper !== undefined) {
|
|
28
|
-
const
|
|
29
|
-
const projectSlug = detect?.project_slug ?? "this-project";
|
|
27
|
+
const projectSlug = state.outputs["1-detect"]?.project_slug ?? "this-project";
|
|
30
28
|
const derived = await deriveBrandFromProject({
|
|
31
29
|
repoRoot: state.repoRoot,
|
|
32
30
|
projectSlug,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"6-brand.js","sourceRoot":"","sources":["../../../src/init/phases/6-brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAqB,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"6-brand.js","sourceRoot":"","sources":["../../../src/init/phases/6-brand.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,12 @@ export interface TopicIndexPhaseOutput {
|
|
|
13
13
|
verbatim_collisions: number;
|
|
14
14
|
semantic_collisions: number;
|
|
15
15
|
judge_calls: number;
|
|
16
|
+
/** Subset of `judge_calls` served from the on-disk Claude cache (no plan-quota burn). */
|
|
17
|
+
judge_calls_cached: number;
|
|
18
|
+
/** Subset of `judge_calls` that spawned a fresh `claude --print` subprocess. */
|
|
19
|
+
judge_calls_fresh: number;
|
|
20
|
+
/** Judge calls that threw (cache write skipped, breaker counter incremented). */
|
|
21
|
+
judge_calls_errors: number;
|
|
16
22
|
unresolved_ambiguous: number;
|
|
17
23
|
topic_count: number;
|
|
18
24
|
topic_index_path: string;
|
|
@@ -9,17 +9,30 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { logger } from "../../logger.js";
|
|
11
11
|
import { buildTopicIndex } from "../topic-index/index.js";
|
|
12
|
+
import { recordSample } from "../eta-calibration.js";
|
|
12
13
|
import { advancePhase } from "./orchestrator.js";
|
|
13
14
|
const log = logger("init.phases.7-topic-index");
|
|
14
15
|
export async function runPhase7TopicIndex(state) {
|
|
16
|
+
const startedAt = performance.now();
|
|
15
17
|
try {
|
|
16
18
|
const result = await buildTopicIndex({ repoRoot: state.repoRoot });
|
|
19
|
+
const durationMs = Math.round(performance.now() - startedAt);
|
|
20
|
+
if (result.judgeCalls > 0) {
|
|
21
|
+
recordSample({
|
|
22
|
+
phase: "7-topic-index",
|
|
23
|
+
units: result.judgeCalls,
|
|
24
|
+
durationMs,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
17
27
|
const topicCount = Object.keys(result.topicIndex.topics).length;
|
|
18
28
|
const out = {
|
|
19
29
|
block_count: result.blockCount,
|
|
20
30
|
verbatim_collisions: result.verbatimCollisions,
|
|
21
31
|
semantic_collisions: result.semanticCollisions,
|
|
22
32
|
judge_calls: result.judgeCalls,
|
|
33
|
+
judge_calls_cached: result.judgeCached,
|
|
34
|
+
judge_calls_fresh: result.judgeFresh,
|
|
35
|
+
judge_calls_errors: result.judgeErrors,
|
|
23
36
|
unresolved_ambiguous: result.unresolvedAmbiguous,
|
|
24
37
|
topic_count: topicCount,
|
|
25
38
|
topic_index_path: result.topicIndexPath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"7-topic-index.js","sourceRoot":"","sources":["../../../src/init/phases/7-topic-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,GAAG,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"7-topic-index.js","sourceRoot":"","sources":["../../../src/init/phases/7-topic-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,GAAG,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAmBhD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAiB;IACzD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;QAC7D,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YAC1B,YAAY,CAAC;gBACX,KAAK,EAAE,eAAe;gBACtB,KAAK,EAAE,MAAM,CAAC,UAAU;gBACxB,UAAU;aACX,CAAC,CAAC;QACL,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAChE,MAAM,GAAG,GAA0B;YACjC,WAAW,EAAE,MAAM,CAAC,UAAU;YAC9B,mBAAmB,EAAE,MAAM,CAAC,kBAAkB;YAC9C,mBAAmB,EAAE,MAAM,CAAC,kBAAkB;YAC9C,WAAW,EAAE,MAAM,CAAC,UAAU;YAC9B,kBAAkB,EAAE,MAAM,CAAC,WAAW;YACtC,iBAAiB,EAAE,MAAM,CAAC,UAAU;YACpC,kBAAkB,EAAE,MAAM,CAAC,WAAW;YACtC,oBAAoB,EAAE,MAAM,CAAC,mBAAmB;YAChD,WAAW,EAAE,UAAU;YACvB,gBAAgB,EAAE,MAAM,CAAC,cAAc;YACvC,eAAe,EAAE,MAAM,CAAC,aAAa;SACtC,CAAC;QACF,MAAM,IAAI,GAAe;YACvB,GAAG,KAAK;YACR,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE;YACnD,MAAM,EAAE,SAAS;SAClB,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;QAClC,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,eAAe;YAC1B,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;SAC1B,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC;QACpC,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE;gBACL,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,iCAAiC,OAAO,EAAE;aACpD;YACD,KAAK;SACN,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Phase 8-docs-ingest —
|
|
2
|
+
* Phase 8-docs-ingest — collapsed to a no-op in v0.9.0.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* The unified curator pipeline (Phase 9a/9b/9c) now subsumes docs
|
|
5
|
+
* ingestion alongside source comments and rule-file sections. This
|
|
6
|
+
* runner stays registered so resumes from old `init-state.json` files
|
|
7
|
+
* still flow through the state machine — it stamps a marker output
|
|
8
|
+
* and advances to `9a-walker`.
|
|
8
9
|
*/
|
|
9
10
|
import type { PhaseResult, PhaseState } from "./types.js";
|
|
10
11
|
export declare function runPhase8DocsIngest(state: PhaseState): Promise<PhaseResult>;
|
|
@@ -1,50 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Phase 8-docs-ingest —
|
|
2
|
+
* Phase 8-docs-ingest — collapsed to a no-op in v0.9.0.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* The unified curator pipeline (Phase 9a/9b/9c) now subsumes docs
|
|
5
|
+
* ingestion alongside source comments and rule-file sections. This
|
|
6
|
+
* runner stays registered so resumes from old `init-state.json` files
|
|
7
|
+
* still flow through the state machine — it stamps a marker output
|
|
8
|
+
* and advances to `9a-walker`.
|
|
8
9
|
*/
|
|
9
|
-
import { runDocsIngestion } from "../ingest-docs.js";
|
|
10
|
-
import { clearProgress, writeProgress } from "../progress.js";
|
|
11
10
|
import { advancePhase } from "./orchestrator.js";
|
|
12
11
|
export async function runPhase8DocsIngest(state) {
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
});
|
|
24
|
-
},
|
|
25
|
-
});
|
|
26
|
-
clearProgress(state.repoRoot);
|
|
27
|
-
const next = {
|
|
28
|
-
...state,
|
|
29
|
-
outputs: { ...state.outputs, "8-docs-ingest": result },
|
|
30
|
-
};
|
|
31
|
-
return {
|
|
32
|
-
status: "complete",
|
|
33
|
-
nextPhase: "9-source-comments",
|
|
34
|
-
state: advancePhase(next),
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
catch (err) {
|
|
38
|
-
clearProgress(state.repoRoot);
|
|
39
|
-
return {
|
|
40
|
-
status: "error",
|
|
41
|
-
error: {
|
|
42
|
-
code: "docs-ingest-failed",
|
|
43
|
-
message: "Docs ingestion pipeline failed",
|
|
44
|
-
detail: err instanceof Error ? err.stack ?? err.message : String(err),
|
|
45
|
-
},
|
|
46
|
-
state,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
12
|
+
const out = { skipped: "merged-into-9-curator" };
|
|
13
|
+
const next = {
|
|
14
|
+
...state,
|
|
15
|
+
outputs: { ...state.outputs, "8-docs-ingest": out },
|
|
16
|
+
};
|
|
17
|
+
return {
|
|
18
|
+
status: "complete",
|
|
19
|
+
nextPhase: "9a-walker",
|
|
20
|
+
state: advancePhase(next),
|
|
21
|
+
};
|
|
49
22
|
}
|
|
50
23
|
//# sourceMappingURL=8-docs-ingest.js.map
|