@encore-os/eos-spec 0.13.0 → 0.15.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/commands/build-embeddings.d.ts +1 -1
- package/dist/commands/build-embeddings.js +4 -4
- package/dist/commands/build-embeddings.js.map +1 -1
- package/dist/commands/create.d.ts +32 -0
- package/dist/commands/create.js +176 -16
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/freshness.d.ts +1 -1
- package/dist/commands/freshness.js +4 -4
- package/dist/commands/freshness.js.map +1 -1
- package/dist/commands/index-spec.d.ts +22 -0
- package/dist/commands/index-spec.js +48 -0
- package/dist/commands/index-spec.js.map +1 -0
- package/dist/commands/promote.d.ts +46 -0
- package/dist/commands/promote.js +175 -0
- package/dist/commands/promote.js.map +1 -0
- package/dist/commands/verify-acs.d.ts +9 -1
- package/dist/commands/verify-acs.js +93 -31
- package/dist/commands/verify-acs.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.js +20 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +33 -1
- package/dist/lib/config.js +34 -2
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/design-doc.d.ts +26 -0
- package/dist/lib/design-doc.js +42 -0
- package/dist/lib/design-doc.js.map +1 -0
- package/dist/lib/exec.d.ts +6 -1
- package/dist/lib/exec.js +5 -1
- package/dist/lib/exec.js.map +1 -1
- package/dist/lib/frontmatter.d.ts +15 -0
- package/dist/lib/frontmatter.js +34 -0
- package/dist/lib/frontmatter.js.map +1 -1
- package/dist/lib/git-ids.d.ts +11 -0
- package/dist/lib/git-ids.js +56 -0
- package/dist/lib/git-ids.js.map +1 -0
- package/dist/lib/handoff.d.ts +27 -0
- package/dist/lib/handoff.js +21 -0
- package/dist/lib/handoff.js.map +1 -0
- package/dist/lib/pipeline-config.d.ts +7 -5
- package/dist/lib/pipeline-config.js +17 -6
- package/dist/lib/pipeline-config.js.map +1 -1
- package/dist/lib/precedent-search.d.ts +31 -1
- package/dist/lib/precedent-search.js +13 -6
- package/dist/lib/precedent-search.js.map +1 -1
- package/dist/lib/seed-acs.d.ts +10 -0
- package/dist/lib/seed-acs.js +20 -0
- package/dist/lib/seed-acs.js.map +1 -0
- package/dist/lib/spec-id-guard.d.ts +19 -0
- package/dist/lib/spec-id-guard.js +34 -0
- package/dist/lib/spec-id-guard.js.map +1 -0
- package/dist/lib/spec-index.d.ts +20 -0
- package/dist/lib/spec-index.js +80 -0
- package/dist/lib/spec-index.js.map +1 -0
- package/dist/lib/version.d.ts +1 -1
- package/dist/lib/version.js +1 -1
- package/dist/pure.d.ts +2 -0
- package/dist/pure.js +7 -0
- package/dist/pure.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { basename, dirname, isAbsolute, relative } from 'node:path';
|
|
3
|
+
import { resolveHandoff } from '../lib/config.js';
|
|
4
|
+
import { addClaim, DEFAULT_TTL_MINUTES } from '../lib/claims.js';
|
|
5
|
+
import { setDesignDocStatusShipped } from '../lib/design-doc.js';
|
|
6
|
+
import { appendAcceptanceCriteria, setDesignDoc } from '../lib/frontmatter.js';
|
|
7
|
+
import { emit, ErrorCode, getGlobalOptions } from '../lib/output.js';
|
|
8
|
+
import { getRepoRoot, isKnownCore, isProtectedBranch } from '../lib/repo.js';
|
|
9
|
+
import { placeholderAcs } from '../lib/seed-acs.js';
|
|
10
|
+
import { assertSafeSpecFilename } from '../lib/spec-id-guard.js';
|
|
11
|
+
import { withEventLog } from '../lib/with-event-log.js';
|
|
12
|
+
import { resolveClaimedBy } from './claim.js';
|
|
13
|
+
import { humanizeName, nextFreeId, scaffoldSpec, slugify } from './create.js';
|
|
14
|
+
const TEMPLATES = ['full', 'lite', 'micro'];
|
|
15
|
+
function fail(code, message) {
|
|
16
|
+
const e = new Error(message);
|
|
17
|
+
e.code = code;
|
|
18
|
+
throw e;
|
|
19
|
+
}
|
|
20
|
+
/** Derive a spec slug from a design-doc basename: drop the extension, a leading
|
|
21
|
+
* `YYYY-MM-DD-` date prefix, and a trailing `-design`, then slugify. */
|
|
22
|
+
function slugFromDesignDoc(designDocPath) {
|
|
23
|
+
const stem = basename(designDocPath)
|
|
24
|
+
.replace(/\.md$/i, '')
|
|
25
|
+
.replace(/^\d{4}-\d{2}-\d{2}-/, '')
|
|
26
|
+
.replace(/-design$/i, '');
|
|
27
|
+
return slugify(stem);
|
|
28
|
+
}
|
|
29
|
+
export function promoteDesignDoc(repoRoot, opts) {
|
|
30
|
+
const core = opts.core.toLowerCase();
|
|
31
|
+
if (!isKnownCore(core, repoRoot)) {
|
|
32
|
+
fail(ErrorCode.UNKNOWN_CORE, `promote: unknown core "${opts.core}" (not declared in specs/config.yaml)`);
|
|
33
|
+
}
|
|
34
|
+
if (opts.template !== undefined && !TEMPLATES.includes(opts.template)) {
|
|
35
|
+
fail(ErrorCode.INVALID_ARGUMENT, `promote: --template must be one of ${TEMPLATES.join(' | ')}`);
|
|
36
|
+
}
|
|
37
|
+
const designDocAbs = isAbsolute(opts.designDoc) ? opts.designDoc : `${repoRoot}/${opts.designDoc}`;
|
|
38
|
+
if (!existsSync(designDocAbs)) {
|
|
39
|
+
fail(ErrorCode.INVALID_ARGUMENT, `promote: design doc not found: ${opts.designDoc}`);
|
|
40
|
+
}
|
|
41
|
+
const designDocText = readFileSync(designDocAbs, 'utf8');
|
|
42
|
+
const designDocRel = isAbsolute(opts.designDoc) ? relative(repoRoot, opts.designDoc) : opts.designDoc;
|
|
43
|
+
const slug = slugify(opts.slug ?? slugFromDesignDoc(designDocAbs));
|
|
44
|
+
if (!slug)
|
|
45
|
+
fail(ErrorCode.INVALID_ARGUMENT, `promote: could not derive a slug from "${opts.designDoc}" — pass --name`);
|
|
46
|
+
const specId = nextFreeId(repoRoot, core, 'base');
|
|
47
|
+
assertSafeSpecFilename(core, specId, slug);
|
|
48
|
+
const handoff = resolveHandoff(repoRoot, opts.configOverride);
|
|
49
|
+
// Render the templated spec (not written yet), then seed placeholder ACs and stamp the
|
|
50
|
+
// design_doc backlink so the file is born AC-bearing + back-linked in one write.
|
|
51
|
+
const scaffold = scaffoldSpec(repoRoot, {
|
|
52
|
+
id: specId,
|
|
53
|
+
core,
|
|
54
|
+
slug,
|
|
55
|
+
title: opts.title ?? humanizeName(slug), // a readable H1/title, not the bare id
|
|
56
|
+
template: opts.template,
|
|
57
|
+
write: false,
|
|
58
|
+
configOverride: opts.configOverride,
|
|
59
|
+
});
|
|
60
|
+
const acs = placeholderAcs();
|
|
61
|
+
let specText = appendAcceptanceCriteria(scaffold.content, acs);
|
|
62
|
+
specText = setDesignDoc(specText, [designDocRel]);
|
|
63
|
+
const specWritten = opts.write && !existsSync(scaffold.path);
|
|
64
|
+
if (specWritten) {
|
|
65
|
+
mkdirSync(dirname(scaffold.path), { recursive: true });
|
|
66
|
+
writeFileSync(scaffold.path, specText, 'utf8');
|
|
67
|
+
}
|
|
68
|
+
// Flip the design doc's lifecycle line to the configured shipped marker (write-if-changed).
|
|
69
|
+
const flipped = setDesignDocStatusShipped(designDocText, specId, {
|
|
70
|
+
lifecycleLine: handoff.lifecycle_line,
|
|
71
|
+
shippedMarker: handoff.shipped_marker,
|
|
72
|
+
});
|
|
73
|
+
const designDocWritten = opts.write && flipped !== designDocText;
|
|
74
|
+
if (designDocWritten)
|
|
75
|
+
writeFileSync(designDocAbs, flipped, 'utf8');
|
|
76
|
+
// Claim the id up front so a parallel worktree can't duplicate the work. Fail-open:
|
|
77
|
+
// a repo with no writable claim store must never make promote unusable.
|
|
78
|
+
let claimed = false;
|
|
79
|
+
if (opts.write) {
|
|
80
|
+
try {
|
|
81
|
+
addClaim(repoRoot, specId, {
|
|
82
|
+
by: resolveClaimedBy(opts.by, repoRoot),
|
|
83
|
+
ttlMinutes: opts.ttlMinutes ?? DEFAULT_TTL_MINUTES,
|
|
84
|
+
});
|
|
85
|
+
claimed = true;
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
/* no claim store / non-writable dir → proceed without a claim */
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
specId,
|
|
93
|
+
specPath: scaffold.path,
|
|
94
|
+
designDoc: designDocRel,
|
|
95
|
+
acSeeded: acs.length,
|
|
96
|
+
claimed,
|
|
97
|
+
specWritten,
|
|
98
|
+
designDocWritten,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function formatPromoteText(r, write) {
|
|
102
|
+
const verb = write ? 'Promoted' : 'Would promote';
|
|
103
|
+
return (`${verb} ${r.designDoc} → ${r.specId} (${r.specPath})\n` +
|
|
104
|
+
` acceptance_criteria seeded: ${r.acSeeded} (present-but-planned)\n` +
|
|
105
|
+
` design_doc backlink + Status flip: ${write ? (r.designDocWritten ? 'written' : 'already shipped') : 'dry-run'}\n` +
|
|
106
|
+
` claim: ${r.claimed ? 'held' : write ? 'skipped (no claim store)' : 'dry-run'}\n` +
|
|
107
|
+
` next: eos-spec next --spec ${r.specId}`);
|
|
108
|
+
}
|
|
109
|
+
export function registerPromote(program) {
|
|
110
|
+
program
|
|
111
|
+
.command('promote')
|
|
112
|
+
.description('Promote an approved design doc into a claimed, AC-bearing eos-spec (brainstorm→spec, one action)')
|
|
113
|
+
.option('--design-doc <path>', 'Path to the approved design doc (required)')
|
|
114
|
+
.option('--core <core>', 'Target core (required)')
|
|
115
|
+
.option('--name <slug>', 'Spec name slug (default: derived from the design-doc filename)')
|
|
116
|
+
.option('--template <t>', 'Template tier: full | lite | micro')
|
|
117
|
+
.option('--dry-run', 'Compute the result without writing anything', false)
|
|
118
|
+
.option('--by <who>', 'Claim identity (default: env EOS_SPEC_CLAIMED_BY / worktree name)')
|
|
119
|
+
.option('--ttl <min>', 'Claim TTL in minutes')
|
|
120
|
+
.action(withEventLog('promote', async (options, cmd) => {
|
|
121
|
+
const global = getGlobalOptions(cmd);
|
|
122
|
+
const repoRoot = getRepoRoot(global.repoRoot);
|
|
123
|
+
if (!options.designDoc || !options.core) {
|
|
124
|
+
emit(global, {
|
|
125
|
+
ok: false,
|
|
126
|
+
error: {
|
|
127
|
+
code: ErrorCode.SCOPE_REQUIRED,
|
|
128
|
+
message: 'promote requires --design-doc <path> and --core <core>',
|
|
129
|
+
},
|
|
130
|
+
data: null,
|
|
131
|
+
text: 'promote: requires --design-doc <path> and --core <core>',
|
|
132
|
+
exitCode: 2,
|
|
133
|
+
});
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
const write = !options.dryRun;
|
|
137
|
+
if (write && isProtectedBranch(repoRoot)) {
|
|
138
|
+
emit(global, {
|
|
139
|
+
ok: false,
|
|
140
|
+
error: {
|
|
141
|
+
code: ErrorCode.VALIDATION_FAILED,
|
|
142
|
+
message: 'promote: refusing to write on a protected branch (main/master); use a feature branch or --dry-run',
|
|
143
|
+
},
|
|
144
|
+
data: null,
|
|
145
|
+
text: 'promote: refusing to write on a protected branch (main/master); use a feature branch or --dry-run',
|
|
146
|
+
exitCode: 2,
|
|
147
|
+
});
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
try {
|
|
151
|
+
const result = promoteDesignDoc(repoRoot, {
|
|
152
|
+
designDoc: options.designDoc,
|
|
153
|
+
core: options.core,
|
|
154
|
+
slug: options.name,
|
|
155
|
+
template: options.template,
|
|
156
|
+
write,
|
|
157
|
+
by: options.by,
|
|
158
|
+
ttlMinutes: options.ttl ? Number(options.ttl) : undefined,
|
|
159
|
+
configOverride: global.config,
|
|
160
|
+
});
|
|
161
|
+
emit(global, { ok: true, data: result, text: formatPromoteText(result, write) });
|
|
162
|
+
}
|
|
163
|
+
catch (e) {
|
|
164
|
+
const raw = e.code;
|
|
165
|
+
const code = raw && Object.values(ErrorCode).includes(raw) ? raw : ErrorCode.IO_ERROR;
|
|
166
|
+
emit(global, {
|
|
167
|
+
ok: false,
|
|
168
|
+
error: { code, message: e.message },
|
|
169
|
+
data: null,
|
|
170
|
+
text: e.message,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}));
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=promote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promote.js","sourceRoot":"","sources":["../../src/commands/promote.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Command } from 'commander';
|
|
2
|
+
import { type LaneDef } from '../lib/config.js';
|
|
2
3
|
export type Section = 'acceptance_criteria' | 'user_stories' | 'requirements';
|
|
3
4
|
export type Item = {
|
|
4
5
|
section: Section;
|
|
@@ -7,7 +8,14 @@ export type Item = {
|
|
|
7
8
|
};
|
|
8
9
|
/** Flatten a spec's frontmatter AC/US/FR into a uniform item list (id + current status). */
|
|
9
10
|
export declare function resolveItems(text: string): Item[];
|
|
10
|
-
/** Split backing test files into
|
|
11
|
+
/** Split backing test files into their Vitest lane ('root' + any config-driven
|
|
12
|
+
* `verify_lanes` prefix, keyed by lane) vs. genuinely deferred (no lane claims it). */
|
|
13
|
+
export declare function partitionBackingFilesWithLanes(files: string[], laneDefs: LaneDef[]): {
|
|
14
|
+
lanes: Map<string, string[]>;
|
|
15
|
+
deferred: string[];
|
|
16
|
+
};
|
|
17
|
+
/** Split backing test files into those the root Vitest can run vs. deferred lanes.
|
|
18
|
+
* Back-compat shim over `partitionBackingFilesWithLanes` with no configured lanes. */
|
|
11
19
|
export declare function partitionBackingFiles(files: string[]): {
|
|
12
20
|
rootVitest: string[];
|
|
13
21
|
deferred: string[];
|
|
@@ -2,7 +2,7 @@ import { execFileSync } from 'node:child_process';
|
|
|
2
2
|
import { readFileSync, readdirSync, writeFileSync } from 'node:fs';
|
|
3
3
|
import { tmpdir } from 'node:os';
|
|
4
4
|
import { join, relative } from 'node:path';
|
|
5
|
-
import { resolveDiscoveryPaths } from '../lib/config.js';
|
|
5
|
+
import { resolveDiscoveryPaths, resolveVerifyLanes } from '../lib/config.js';
|
|
6
6
|
import { readFrontmatter, setRequirementStatus } from '../lib/frontmatter.js';
|
|
7
7
|
import { emit, getGlobalOptions } from '../lib/output.js';
|
|
8
8
|
import { withEventLog } from '../lib/with-event-log.js';
|
|
@@ -22,33 +22,39 @@ export function resolveItems(text) {
|
|
|
22
22
|
out.push({ section: 'requirements', id: fr.id, status: fr.status });
|
|
23
23
|
return out;
|
|
24
24
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
const TEST_FILE_RE = /\.(test|spec)\.tsx?$/;
|
|
26
|
+
/** Split backing test files into their Vitest lane ('root' + any config-driven
|
|
27
|
+
* `verify_lanes` prefix, keyed by lane) vs. genuinely deferred (no lane claims it). */
|
|
28
|
+
export function partitionBackingFilesWithLanes(files, laneDefs) {
|
|
29
|
+
const lanes = new Map();
|
|
28
30
|
const deferred = [];
|
|
29
31
|
for (const f of files) {
|
|
30
|
-
if ((f.startsWith('src/') || f.startsWith('scripts/')) &&
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
if ((f.startsWith('src/') || f.startsWith('scripts/')) && TEST_FILE_RE.test(f)) {
|
|
33
|
+
lanes.set('root', [...(lanes.get('root') ?? []), f]);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
const lane = laneDefs.find((l) => f.startsWith(l.prefix) && TEST_FILE_RE.test(f));
|
|
37
|
+
if (lane)
|
|
38
|
+
lanes.set(lane.prefix, [...(lanes.get(lane.prefix) ?? []), f]);
|
|
39
|
+
else
|
|
40
|
+
deferred.push(f);
|
|
41
|
+
}
|
|
34
42
|
}
|
|
35
|
-
return {
|
|
43
|
+
return { lanes, deferred };
|
|
36
44
|
}
|
|
37
|
-
/**
|
|
38
|
-
|
|
45
|
+
/** Split backing test files into those the root Vitest can run vs. deferred lanes.
|
|
46
|
+
* Back-compat shim over `partitionBackingFilesWithLanes` with no configured lanes. */
|
|
47
|
+
export function partitionBackingFiles(files) {
|
|
48
|
+
const { lanes, deferred } = partitionBackingFilesWithLanes(files, []);
|
|
49
|
+
return { rootVitest: lanes.get('root') ?? [], deferred };
|
|
50
|
+
}
|
|
51
|
+
/** Parse a Vitest `--reporter=json` output file into rel-path (from `repoRoot`) →
|
|
52
|
+
* {passed,failed,skipped}. The reporter always names each test file by its absolute
|
|
53
|
+
* filesystem path regardless of the `cwd` Vitest ran under, so re-relativizing every
|
|
54
|
+
* key against `repoRoot` — not the invocation cwd — is what "re-prefixes results back
|
|
55
|
+
* to repo-relative" for a lane run; no separate remap step is needed. */
|
|
56
|
+
function parseVitestJsonReport(repoRoot, outFile) {
|
|
39
57
|
const stats = new Map();
|
|
40
|
-
if (relFiles.length === 0)
|
|
41
|
-
return stats;
|
|
42
|
-
const outFile = join(tmpdir(), `eos-verify-acs-${process.pid}.json`);
|
|
43
|
-
try {
|
|
44
|
-
execFileSync('bunx', ['vitest', 'run', ...relFiles, '--reporter=json', `--outputFile=${outFile}`], {
|
|
45
|
-
cwd: repoRoot,
|
|
46
|
-
stdio: ['ignore', 'ignore', 'inherit'],
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
/* nonzero exit = a failing test; the JSON report still carries the per-file outcome */
|
|
51
|
-
}
|
|
52
58
|
let report;
|
|
53
59
|
try {
|
|
54
60
|
report = JSON.parse(readFileSync(outFile, 'utf8'));
|
|
@@ -70,6 +76,58 @@ function runRootVitest(repoRoot, relFiles) {
|
|
|
70
76
|
}
|
|
71
77
|
return stats;
|
|
72
78
|
}
|
|
79
|
+
/** Run root-Vitest files, returning rel-path → {passed,failed,skipped}. */
|
|
80
|
+
function runRootVitest(repoRoot, relFiles) {
|
|
81
|
+
if (relFiles.length === 0)
|
|
82
|
+
return new Map();
|
|
83
|
+
const outFile = join(tmpdir(), `eos-verify-acs-${process.pid}.json`);
|
|
84
|
+
try {
|
|
85
|
+
execFileSync('bunx', ['vitest', 'run', ...relFiles, '--reporter=json', `--outputFile=${outFile}`], {
|
|
86
|
+
cwd: repoRoot,
|
|
87
|
+
stdio: ['ignore', 'ignore', 'inherit'],
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
/* nonzero exit = a failing test; the JSON report still carries the per-file outcome */
|
|
92
|
+
}
|
|
93
|
+
return parseVitestJsonReport(repoRoot, outFile);
|
|
94
|
+
}
|
|
95
|
+
/** Run one config-driven lane's backing files with Vitest in `lane.cwd` (v1: JSON
|
|
96
|
+
* reporter only), returning the same rel-path (from `repoRoot`) → FileStat shape as
|
|
97
|
+
* `runRootVitest`. `relFiles` are repo-relative (e.g. `runner/src/b.test.ts`) and are
|
|
98
|
+
* re-relativized into the lane's `cwd` (e.g. `src/b.test.ts`) for the invocation, since
|
|
99
|
+
* Vitest resolves its file args against its own `cwd`, not the repo root. */
|
|
100
|
+
function runLaneVitest(repoRoot, lane, relFiles) {
|
|
101
|
+
if (relFiles.length === 0)
|
|
102
|
+
return new Map();
|
|
103
|
+
const laneCwd = join(repoRoot, lane.cwd);
|
|
104
|
+
const laneFiles = relFiles.map((f) => relative(laneCwd, join(repoRoot, f)));
|
|
105
|
+
const outFile = join(tmpdir(), `eos-verify-acs-lane-${process.pid}-${lane.prefix.replace(/[^a-zA-Z0-9]/g, '_')}.json`);
|
|
106
|
+
const [cmd, ...cmdArgs] = (lane.command ?? 'bunx vitest run').split(/\s+/);
|
|
107
|
+
try {
|
|
108
|
+
execFileSync(cmd, [...cmdArgs, ...laneFiles, '--reporter=json', `--outputFile=${outFile}`], {
|
|
109
|
+
cwd: laneCwd,
|
|
110
|
+
stdio: ['ignore', 'ignore', 'inherit'],
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
/* nonzero exit = a failing test; the JSON report still carries the per-file outcome */
|
|
115
|
+
}
|
|
116
|
+
return parseVitestJsonReport(repoRoot, outFile);
|
|
117
|
+
}
|
|
118
|
+
/** Merge a lane's stats into the accumulated map. `partitionBackingFilesWithLanes`
|
|
119
|
+
* assigns each file to exactly one lane, so two lanes should never both produce the
|
|
120
|
+
* same repo-relative key — a collision means a `verify_lanes` prefix overlaps root's
|
|
121
|
+
* `src/`/`scripts/` or another lane's prefix, which is a config error worth failing
|
|
122
|
+
* loudly on rather than silently letting one lane's result clobber another's. */
|
|
123
|
+
function mergeLaneStats(into, from) {
|
|
124
|
+
for (const [key, val] of from) {
|
|
125
|
+
if (into.has(key)) {
|
|
126
|
+
throw new Error(`verify-acs: verify_lanes collision on "${key}" — check for overlapping lane prefixes`);
|
|
127
|
+
}
|
|
128
|
+
into.set(key, val);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
73
131
|
/** id → Set(backing test files, repo-relative) for one spec (per-file granularity).
|
|
74
132
|
* `roots` is config-resolved by the caller (TOOL-03); defaults to the fork layout. */
|
|
75
133
|
function backlinkFilesByItem(repoRoot, specId, roots) {
|
|
@@ -134,21 +192,25 @@ export function registerVerifyAcs(program) {
|
|
|
134
192
|
const text = readFileSync(spec.path, 'utf8');
|
|
135
193
|
const items = resolveItems(text);
|
|
136
194
|
const { verifiesBacklinkRoots } = resolveDiscoveryPaths(repoRoot, global.config);
|
|
195
|
+
const laneDefs = resolveVerifyLanes(repoRoot, global.config);
|
|
137
196
|
const backlinkFiles = backlinkFilesByItem(repoRoot, spec.id, verifiesBacklinkRoots);
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
])
|
|
141
|
-
const
|
|
197
|
+
const allFiles = [...new Set([...backlinkFiles.values()].flatMap((s) => [...s]))];
|
|
198
|
+
const { lanes: allLanes } = partitionBackingFilesWithLanes(allFiles, laneDefs);
|
|
199
|
+
const stats = runRootVitest(repoRoot, allLanes.get('root') ?? []);
|
|
200
|
+
for (const lane of laneDefs) {
|
|
201
|
+
mergeLaneStats(stats, runLaneVitest(repoRoot, lane, allLanes.get(lane.prefix) ?? []));
|
|
202
|
+
}
|
|
142
203
|
const results = items.map((it) => {
|
|
143
204
|
const files = [...(backlinkFiles.get(it.id) ?? [])];
|
|
144
|
-
const {
|
|
145
|
-
const
|
|
205
|
+
const { lanes, deferred } = partitionBackingFilesWithLanes(files, laneDefs);
|
|
206
|
+
const laneFiles = [...lanes.values()].flat();
|
|
207
|
+
const v = verdictFor(laneFiles, stats);
|
|
146
208
|
const reason = !files.length
|
|
147
209
|
? 'no @verifies backlink'
|
|
148
|
-
:
|
|
210
|
+
: laneFiles.length === 0
|
|
149
211
|
? `not_run (lane not wired: ${deferred.join(', ')})`
|
|
150
212
|
: v.reason;
|
|
151
|
-
return { ...it, files, proven:
|
|
213
|
+
return { ...it, files, proven: laneFiles.length > 0 && v.proven, reason };
|
|
152
214
|
});
|
|
153
215
|
if (options.enforce) {
|
|
154
216
|
const liars = results.filter((r) => r.status === 'verified' && !r.proven);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-acs.js","sourceRoot":"","sources":["../../src/commands/verify-acs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verify-acs.js","sourceRoot":"","sources":["../../src/commands/verify-acs.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
export type { SpecFile, SpecSignals, MissingSpecDiagnosis } from './lib/specs.js';
|
|
3
3
|
export { listSpecs, findSpec, findSpecsById, deriveSignals, diagnoseMissingSpec } from './lib/specs.js';
|
|
4
|
-
export { loadConfig, resetConfigCache, coresFromConfig, migrationsDir, generatedTestsDir, verifiesScanRoots, verifiesBacklinkRoots, resolveDiscoveryPaths, type SpecConfig, type CoreDef, type DiscoveryPaths, } from './lib/config.js';
|
|
4
|
+
export { loadConfig, resetConfigCache, coresFromConfig, migrationsDir, generatedTestsDir, verifiesScanRoots, verifiesBacklinkRoots, resolveDiscoveryPaths, resolveHandoff, type SpecConfig, type CoreDef, type DiscoveryPaths, } from './lib/config.js';
|
|
5
|
+
export { handoffConfig, DEFAULT_HANDOFF, type HandoffConfig } from './lib/handoff.js';
|
|
5
6
|
export type { EmbeddingsSource } from './lib/embeddings-source.js';
|
|
6
7
|
export { embeddingsSourceFromConfig, FilesystemEmbeddingsSource } from './lib/embeddings-source.js';
|
|
8
|
+
export { buildSpecIndex, extractSummary } from './lib/spec-index.js';
|
|
9
|
+
export type { SpecIndexEntry } from './lib/precedent-search.js';
|
|
7
10
|
export { recommendAction } from './commands/next.js';
|
|
8
11
|
export type { NextAction } from './lib/next-action.js';
|
|
9
12
|
export { getRepoRoot, coresList } from './lib/repo.js';
|
|
@@ -18,6 +21,8 @@ export { parseComplianceSignoff } from './lib/compliance-signoff.js';
|
|
|
18
21
|
export { loadEnforcementAllowlist, type EnforcementAllowlist } from './lib/enforcement-allowlist.js';
|
|
19
22
|
export type { SessionState } from './lib/session-state.js';
|
|
20
23
|
export { runPipeline, HALT_BEFORE_IMPLEMENT } from './lib/run-pipeline.js';
|
|
24
|
+
export { promoteDesignDoc } from './commands/promote.js';
|
|
25
|
+
export type { PromoteResult, PromoteOptions } from './commands/promote.js';
|
|
21
26
|
export type { RunAutonomy, RunNextAction, GateExecution, GateExecutor, RunGateEvent, RunHaltReason, RunResult, RunDeps, RunConfig, } from './lib/run-pipeline.js';
|
|
22
27
|
/** The fully-registered CLI program. Exported (not parsed on import — the parse
|
|
23
28
|
* call below is guarded by the main-module check) so the command-surface gate
|
package/dist/index.js
CHANGED
|
@@ -17,12 +17,14 @@ import { registerBuildEmbeddings } from './commands/build-embeddings.js';
|
|
|
17
17
|
import { registerFreshness } from './commands/freshness.js';
|
|
18
18
|
import { registerFunnel } from './commands/funnel.js';
|
|
19
19
|
import { registerGenTests } from './commands/gen-tests.js';
|
|
20
|
+
import { registerIndex } from './commands/index-spec.js';
|
|
20
21
|
import { registerInit } from './commands/init.js';
|
|
21
22
|
import { registerList } from './commands/list.js';
|
|
22
23
|
import { registerMetrics } from './commands/metrics.js';
|
|
23
24
|
import { registerNext } from './commands/next.js';
|
|
24
25
|
import { registerPrecedent } from './commands/precedent.js';
|
|
25
26
|
import { registerProceed } from './commands/proceed.js';
|
|
27
|
+
import { registerPromote } from './commands/promote.js';
|
|
26
28
|
import { registerProfile } from './commands/profile.js';
|
|
27
29
|
import { registerReady } from './commands/ready.js';
|
|
28
30
|
import { registerReconcile } from './commands/reconcile.js';
|
|
@@ -37,8 +39,17 @@ import { registerValidate } from './commands/validate.js';
|
|
|
37
39
|
import { registerVerifyAcs } from './commands/verify-acs.js';
|
|
38
40
|
import { registerVerifyRollout } from './commands/verifyRollout.js';
|
|
39
41
|
export { listSpecs, findSpec, findSpecsById, deriveSignals, diagnoseMissingSpec } from './lib/specs.js';
|
|
40
|
-
export { loadConfig, resetConfigCache, coresFromConfig, migrationsDir, generatedTestsDir, verifiesScanRoots, verifiesBacklinkRoots, resolveDiscoveryPaths, } from './lib/config.js';
|
|
42
|
+
export { loadConfig, resetConfigCache, coresFromConfig, migrationsDir, generatedTestsDir, verifiesScanRoots, verifiesBacklinkRoots, resolveDiscoveryPaths, resolveHandoff, } from './lib/config.js';
|
|
43
|
+
// Brainstorm→spec handoff config (issue #60): the pure per-key merge + defaults a
|
|
44
|
+
// Switchboard app / the `promote` verb reads. `handoffConfig`/`HandoffConfig` are
|
|
45
|
+
// fs-free (also on `/pure`); `resolveHandoff` (above) is the fs-bound resolver.
|
|
46
|
+
export { handoffConfig, DEFAULT_HANDOFF } from './lib/handoff.js';
|
|
41
47
|
export { embeddingsSourceFromConfig, FilesystemEmbeddingsSource } from './lib/embeddings-source.js';
|
|
48
|
+
// Built-in spec-index generator (Phase 2a): the projection `eos-spec index`
|
|
49
|
+
// writes and `searchSpecs` falls back to in memory — exported so a consumer
|
|
50
|
+
// with its own generator script (builder's build-spec-index.mjs) can delete it
|
|
51
|
+
// and import the engine's.
|
|
52
|
+
export { buildSpecIndex, extractSummary } from './lib/spec-index.js';
|
|
42
53
|
// ── Consumer surface (epic #300, Wave 3a — encoreos repoint) ─────────────────
|
|
43
54
|
// The other heavy consumer (encoreos: navigator evals, verification-debt and
|
|
44
55
|
// scorecard scripts, the navigator-SSOT and compliance/UI-evidence gates) reaches
|
|
@@ -80,6 +91,11 @@ export { loadEnforcementAllowlist } from './lib/enforcement-allowlist.js';
|
|
|
80
91
|
// consumer pays no fs cost; it is deliberately NOT on `/pure` (per #29). Types are
|
|
81
92
|
// exported so a consumer can implement `GateExecutor`/`RunDeps` against the contract.
|
|
82
93
|
export { runPipeline, HALT_BEFORE_IMPLEMENT } from './lib/run-pipeline.js';
|
|
94
|
+
// The brainstorm→spec `promote` seam (issue #60): the SAME engine function the CLI
|
|
95
|
+
// runs, exported so a Switchboard app (Spec Studio's "Promote to spec" action) mints
|
|
96
|
+
// a spec through one code path. fs-bound (reads/writes files, shells git) — main entry
|
|
97
|
+
// only, never `/pure`.
|
|
98
|
+
export { promoteDesignDoc } from './commands/promote.js';
|
|
83
99
|
import { ENGINE_VERSION } from './lib/version.js';
|
|
84
100
|
/** The fully-registered CLI program. Exported (not parsed on import — the parse
|
|
85
101
|
* call below is guarded by the main-module check) so the command-surface gate
|
|
@@ -107,7 +123,9 @@ registerNext(program);
|
|
|
107
123
|
registerReady(program);
|
|
108
124
|
registerClaim(program);
|
|
109
125
|
registerPrecedent(program);
|
|
126
|
+
registerIndex(program);
|
|
110
127
|
registerProceed(program);
|
|
128
|
+
registerPromote(program);
|
|
111
129
|
registerStatus(program);
|
|
112
130
|
registerList(program);
|
|
113
131
|
registerCreate(program);
|
|
@@ -151,6 +169,7 @@ Examples:
|
|
|
151
169
|
$ eos-spec status --spec PF-37 # Detail spec status (phases, tests, deferred)
|
|
152
170
|
$ eos-spec list --core pm --status InProgress
|
|
153
171
|
$ eos-spec create PF-99 "Foo Feature" # Scaffold spec/plan/tasks files (stubs)
|
|
172
|
+
$ eos-spec promote --design-doc docs/superpowers/specs/x-design.md --core web # Brainstorm→spec: claim + collision-safe id + AC seed + design_doc backlink + Status flip
|
|
154
173
|
$ eos-spec tasks PF-99 # Generate or refresh TASKS file
|
|
155
174
|
$ eos-spec complete --spec PF-37 --update-registry
|
|
156
175
|
$ eos-spec close-out --spec LO-50 # Verified close-out: promote status->complete when ACs are verified at tasks_generated
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAWpE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACxG,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAWpE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACxG,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,GAIf,MAAM,iBAAiB,CAAC;AACzB,kFAAkF;AAClF,kFAAkF;AAClF,gFAAgF;AAChF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAsB,MAAM,kBAAkB,CAAC;AAEtF,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACpG,4EAA4E;AAC5E,4EAA4E;AAC5E,+EAA+E;AAC/E,2BAA2B;AAC3B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrE,gFAAgF;AAChF,6EAA6E;AAC7E,kFAAkF;AAClF,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAChF,iFAAiF;AACjF,qEAAqE;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,gFAAgF;AAChF,0EAA0E;AAC1E,4EAA4E;AAC5E,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAChF,mFAAmF;AACnF,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,IAAI,GAGL,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,oFAAoF;AACpF,8FAA8F;AAC9F,mFAAmF;AACnF,uEAAuE;AACvE,OAAO,EAML,YAAY,EACZ,wBAAwB,EACxB,cAAc,EACd,eAAe,EACf,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,kFAAkF;AAClF,iFAAiF;AACjF,OAAO,EAAE,wBAAwB,EAA6B,MAAM,gCAAgC,CAAC;AAErG,2EAA2E;AAC3E,yEAAyE;AACzE,mFAAmF;AACnF,wEAAwE;AACxE,kFAAkF;AAClF,mFAAmF;AACnF,sFAAsF;AACtF,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,mFAAmF;AACnF,qFAAqF;AACrF,uFAAuF;AACvF,uBAAuB;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAazD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;qEAEqE;AACrE,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAErC,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CACV,yKAAyK,CAC1K;KACA,OAAO,CAAC,cAAc,CAAC;KACvB,MAAM,CAAC,oBAAoB,EAAE,gEAAgE,CAAC;KAC9F,MAAM,CACL,iBAAiB,EACjB,+GAA+G,CAChH;KACA,MAAM,CAAC,QAAQ,EAAE,4CAA4C,EAAE,KAAK,CAAC;KACrE,MAAM,CAAC,SAAS,EAAE,+BAA+B,EAAE,KAAK,CAAC,CAAC;AAE7D,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;IAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,EAAuB,CAAC;IACvD,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,oCAAoC,MAAM,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC3B,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,eAAe,CAAC,OAAO,CAAC,CAAC;AAEzB,OAAO,CAAC,WAAW,CACjB,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CD,CACA,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAc;IACtC,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type HandoffConfig } from './handoff.js';
|
|
1
2
|
export type CoreDef = {
|
|
2
3
|
id: string;
|
|
3
4
|
name: string;
|
|
@@ -16,6 +17,14 @@ export type ArchivePolicy = {
|
|
|
16
17
|
preserves: string[];
|
|
17
18
|
removes_from: string[];
|
|
18
19
|
};
|
|
20
|
+
/** One `verify-acs` lane: backing files whose repo-relative path starts with `prefix`
|
|
21
|
+
* run via Vitest in `cwd` instead of landing in `deferred`. V1 is Vitest-JSON-reporter
|
|
22
|
+
* only; `command` defaults to `bunx vitest run`. */
|
|
23
|
+
export type LaneDef = {
|
|
24
|
+
prefix: string;
|
|
25
|
+
cwd: string;
|
|
26
|
+
command?: string;
|
|
27
|
+
};
|
|
19
28
|
export type SpecConfig = {
|
|
20
29
|
version: number;
|
|
21
30
|
last_updated: string;
|
|
@@ -80,12 +89,22 @@ export type SpecConfig = {
|
|
|
80
89
|
verification_coverage_min?: number;
|
|
81
90
|
per_core?: Record<string, number>;
|
|
82
91
|
};
|
|
92
|
+
/** Additional Vitest lanes for `verify-acs`: prefix-matched backing files run in
|
|
93
|
+
* `cwd` instead of `deferred` (Phase 2a Task 2). Absent ⇒ [] — every non-`src/`/
|
|
94
|
+
* `scripts/` backing file stays deferred, exactly as before this feature. */
|
|
95
|
+
verify_lanes?: LaneDef[];
|
|
96
|
+
/** Brainstorm→spec handoff tuning for the `promote` verb (design-doc dir, lifecycle
|
|
97
|
+
* line, shipped marker, template map). Additive + fully defaulted — absent ⇒
|
|
98
|
+
* `DEFAULT_HANDOFF` (a repo without it behaves exactly as before). See handoff.ts. */
|
|
99
|
+
handoff?: HandoffConfig;
|
|
83
100
|
};
|
|
84
101
|
export declare function loadConfig(repoRoot: string, configOverride?: string): SpecConfig;
|
|
85
102
|
export declare function resetConfigCache(): void;
|
|
86
103
|
export declare function coresFromConfig(config: SpecConfig): string[];
|
|
87
104
|
export declare function isKnownCoreFromConfig(config: SpecConfig, core: string): boolean;
|
|
88
|
-
/** Resolve a flat template key (e.g. 'full_spec', 'plan') to its path relative to repo
|
|
105
|
+
/** Resolve a flat template key (e.g. 'full_spec', 'plan') to its path relative to repo
|
|
106
|
+
* root. Null-safe: a config with no `templates:` block resolves to null, so the caller
|
|
107
|
+
* falls back to the conventional `specs/_templates/<NAME>.md` default. */
|
|
89
108
|
export declare function resolveTemplatePath(config: SpecConfig, key: string): string | null;
|
|
90
109
|
/** Dir holding committed SQL migrations, relative to repo root. */
|
|
91
110
|
export declare function migrationsDir(config: SpecConfig): string;
|
|
@@ -95,6 +114,19 @@ export declare function generatedTestsDir(config: SpecConfig): string;
|
|
|
95
114
|
export declare function verifiesScanRoots(config: SpecConfig): string[];
|
|
96
115
|
/** Roots walked for a single spec's `@verifies` backing-test backlinks. */
|
|
97
116
|
export declare function verifiesBacklinkRoots(config: SpecConfig): string[];
|
|
117
|
+
/** Config-driven `verify-acs` Vitest lanes (Phase 2a Task 2). Absent ⇒ []. */
|
|
118
|
+
export declare function verifyLanes(config: SpecConfig): LaneDef[];
|
|
119
|
+
/** Resolve `verify_lanes` from `specs/config.yaml`, fail-safe to `[]` when the repo has
|
|
120
|
+
* no config file (or the key is absent) — so a repo without lane config keeps every
|
|
121
|
+
* non-root backing file deferred exactly as before this feature. Kept separate from
|
|
122
|
+
* `resolveDiscoveryPaths` so its `DiscoveryPaths` result shape is unaffected. */
|
|
123
|
+
export declare function resolveVerifyLanes(repoRoot: string, configOverride?: string): LaneDef[];
|
|
124
|
+
/** Resolve the brainstorm→spec `handoff:` block from `specs/config.yaml`, per-key
|
|
125
|
+
* merged over `DEFAULT_HANDOFF` and fail-safe to the documented defaults when the
|
|
126
|
+
* repo has no config file (or no `handoff:` key). Mirrors `resolveVerifyLanes`. The
|
|
127
|
+
* `promote` verb reads this so its behavior is config-tuned per repo but identical
|
|
128
|
+
* by default across every eos-spec repo. */
|
|
129
|
+
export declare function resolveHandoff(repoRoot: string, configOverride?: string): Required<HandoffConfig>;
|
|
98
130
|
export type DiscoveryPaths = {
|
|
99
131
|
migrationsDir: string;
|
|
100
132
|
generatedTestsDir: string;
|