@encore-os/eos-spec 0.14.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/create.d.ts +24 -0
- package/dist/commands/create.js +67 -19
- package/dist/commands/create.js.map +1 -1
- 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/index.d.ts +4 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +14 -1
- package/dist/lib/config.js +18 -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/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/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/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
|
@@ -10,5 +10,29 @@ export declare function registerCreate(program: Command): void;
|
|
|
10
10
|
export declare function normalizeScaffoldedAcceptanceCriteria(template: string): string;
|
|
11
11
|
export declare function specSubdirForId(id: string, specsPath: string): string;
|
|
12
12
|
export declare function applyHeader(template: string, id: string, title?: string): string;
|
|
13
|
+
export declare function slugify(s: string): string;
|
|
13
14
|
export declare function nextFreeId(repoRoot: string, core: string, kind: 'base' | 'ux'): string;
|
|
15
|
+
/**
|
|
16
|
+
* Scaffold a single spec file from the configured template — the reusable core of
|
|
17
|
+
* `create`'s spec-write step (issue #60 A5), extracted so the `promote` verb mints the
|
|
18
|
+
* SAME templated, AC-normalized file the CLI does. Resolves the template tier
|
|
19
|
+
* (`full`→full_spec, `lite`→lite_spec, `micro`→enhancement_single; default full_spec),
|
|
20
|
+
* applies the header, and writes only when `write && !exists`. Returns the target path
|
|
21
|
+
* and whether a file was actually written (false on dry-run or when the file already
|
|
22
|
+
* exists). The #54 born-AC normalization is applied so a scaffolded spec can never
|
|
23
|
+
* inherit a verified/complete AC from a consumer template.
|
|
24
|
+
*/
|
|
25
|
+
export declare function scaffoldSpec(repoRoot: string, opts: {
|
|
26
|
+
id: string;
|
|
27
|
+
core: string;
|
|
28
|
+
slug: string;
|
|
29
|
+
title?: string;
|
|
30
|
+
template?: 'full' | 'lite' | 'micro';
|
|
31
|
+
write: boolean;
|
|
32
|
+
configOverride?: string;
|
|
33
|
+
}): {
|
|
34
|
+
path: string;
|
|
35
|
+
created: boolean;
|
|
36
|
+
content: string;
|
|
37
|
+
};
|
|
14
38
|
export declare function humanizeName(slug: string): string;
|
package/dist/commands/create.js
CHANGED
|
@@ -5,9 +5,11 @@ import { loadConfig, resolveTemplatePath } from '../lib/config.js';
|
|
|
5
5
|
import { addClaim, DEFAULT_TTL_MINUTES } from '../lib/claims.js';
|
|
6
6
|
import { runScript } from '../lib/exec.js';
|
|
7
7
|
import { logEvent, RUN_ID } from '../lib/events.js';
|
|
8
|
+
import { gitClaimedIdNumbers } from '../lib/git-ids.js';
|
|
8
9
|
import { ErrorCode, emit, emitContinuing, getGlobalOptions } from '../lib/output.js';
|
|
9
10
|
import { searchSpecs } from '../lib/precedent-search.js';
|
|
10
11
|
import { getRepoRoot, isKnownCore } from '../lib/repo.js';
|
|
12
|
+
import { assertSafeSpecFilename } from '../lib/spec-id-guard.js';
|
|
11
13
|
import { findSpecsById } from '../lib/specs.js';
|
|
12
14
|
import { withEventLog } from '../lib/with-event-log.js';
|
|
13
15
|
export function registerCreate(program) {
|
|
@@ -160,29 +162,29 @@ export function registerCreate(program) {
|
|
|
160
162
|
const created = [];
|
|
161
163
|
const skipped = [];
|
|
162
164
|
const config = loadConfig(repoRoot, global.config);
|
|
163
|
-
const specsDir = join(repoRoot, 'specs', core, specSubdirForId(upper, config.paths.specs));
|
|
164
165
|
const plansDir = join(repoRoot, 'specs', core, config.paths.plans);
|
|
165
166
|
const tasksDir = join(repoRoot, 'specs', core, config.paths.tasks);
|
|
166
|
-
mkdirSync(specsDir, { recursive: true });
|
|
167
167
|
if (options.withPlan)
|
|
168
168
|
mkdirSync(plansDir, { recursive: true });
|
|
169
169
|
if (options.withTasks)
|
|
170
170
|
mkdirSync(tasksDir, { recursive: true });
|
|
171
|
-
const tmplKey = options.enhancement ? 'enhancement_single' : options.lite ? 'lite_spec' : 'full_spec';
|
|
172
|
-
const tmplPath = resolveTemplatePath(config, tmplKey);
|
|
173
|
-
const tmplName = tmplPath
|
|
174
|
-
? tmplPath.split('/').pop()
|
|
175
|
-
: options.enhancement
|
|
176
|
-
? 'SPEC_TEMPLATE_LITE.md'
|
|
177
|
-
: options.lite
|
|
178
|
-
? 'SPEC_TEMPLATE_LITE.md'
|
|
179
|
-
: 'SPEC_TEMPLATE.md';
|
|
180
|
-
// #54: a scaffolded AC must never be born verified/hand_closed/complete — the
|
|
181
|
-
// engine's own fixture/production templates are clean, but a CONSUMER repo's
|
|
182
|
-
// template can carry a poisoned status, corrupting the trust chain from birth.
|
|
183
|
-
// Guard here (not in the template) so it holds regardless of template origin.
|
|
184
|
-
const specSource = normalizeScaffoldedAcceptanceCriteria(readTemplate(repoRoot, tmplName));
|
|
185
171
|
const slug = slugify(options.name ? String(options.name) : title || upper);
|
|
172
|
+
// Refuse a filename the id grammar would over-match or the loader would drop —
|
|
173
|
+
// at mint time, not post-merge (issue #60, AC-E3). scaffoldSpec (below) writes
|
|
174
|
+
// the templated, #54-AC-normalized spec the same way `create` always has.
|
|
175
|
+
try {
|
|
176
|
+
assertSafeSpecFilename(core, upper, slug);
|
|
177
|
+
}
|
|
178
|
+
catch (e) {
|
|
179
|
+
emit(global, {
|
|
180
|
+
ok: false,
|
|
181
|
+
error: { code: ErrorCode.INVALID_ARGUMENT, message: e.message },
|
|
182
|
+
data: { id: upper, slug },
|
|
183
|
+
text: e.message,
|
|
184
|
+
});
|
|
185
|
+
return; // emit() is `never` in prod; the explicit return keeps intent clear + matches promote
|
|
186
|
+
}
|
|
187
|
+
const template = options.enhancement ? 'micro' : options.lite ? 'lite' : 'full';
|
|
186
188
|
// Tier-2 precedent auto-run (design §4.3): surface related existing specs on
|
|
187
189
|
// every create. Warn-only — printed, telemetered, never blocking — and
|
|
188
190
|
// fail-open so a broken search can never block scaffolding (design §7).
|
|
@@ -231,8 +233,16 @@ export function registerCreate(program) {
|
|
|
231
233
|
// never throw from telemetry
|
|
232
234
|
}
|
|
233
235
|
}
|
|
234
|
-
const
|
|
235
|
-
|
|
236
|
+
const spec = scaffoldSpec(repoRoot, {
|
|
237
|
+
id: upper,
|
|
238
|
+
core,
|
|
239
|
+
slug,
|
|
240
|
+
title: title || upper,
|
|
241
|
+
template,
|
|
242
|
+
write: true,
|
|
243
|
+
configOverride: global.config,
|
|
244
|
+
});
|
|
245
|
+
(spec.created ? created : skipped).push(spec.path);
|
|
236
246
|
if (options.withPlan) {
|
|
237
247
|
const planTmpl = resolveTemplatePath(config, 'plan');
|
|
238
248
|
const planName = planTmpl ? planTmpl.split('/').pop() : 'PLAN_TEMPLATE.md';
|
|
@@ -325,7 +335,7 @@ function writeIfMissing(target, content, created, skipped) {
|
|
|
325
335
|
writeFileSync(target, content, 'utf8');
|
|
326
336
|
created.push(target);
|
|
327
337
|
}
|
|
328
|
-
function slugify(s) {
|
|
338
|
+
export function slugify(s) {
|
|
329
339
|
return s
|
|
330
340
|
.toLowerCase()
|
|
331
341
|
.replace(/[^a-z0-9]+/g, '-')
|
|
@@ -354,9 +364,47 @@ export function nextFreeId(repoRoot, core, kind) {
|
|
|
354
364
|
}
|
|
355
365
|
}
|
|
356
366
|
max = Math.max(max, scanOriginRefsMaxId(repoRoot, core, re));
|
|
367
|
+
// Also fold ids burned only in git history or reserved in a sibling branch NAME —
|
|
368
|
+
// the gap the current-tree scans above can't see (issue #60, AC-E3). Base ids only:
|
|
369
|
+
// the helper keys on `<CORE>-<n>`, which never matches the `<CORE>-UX-<n>` sequence.
|
|
370
|
+
if (kind === 'base')
|
|
371
|
+
max = Math.max(max, ...gitClaimedIdNumbers(repoRoot, core));
|
|
357
372
|
const n = String(max + 1).padStart(2, '0');
|
|
358
373
|
return kind === 'ux' ? `${upper}-UX-${n}` : `${upper}-${n}`;
|
|
359
374
|
}
|
|
375
|
+
/**
|
|
376
|
+
* Scaffold a single spec file from the configured template — the reusable core of
|
|
377
|
+
* `create`'s spec-write step (issue #60 A5), extracted so the `promote` verb mints the
|
|
378
|
+
* SAME templated, AC-normalized file the CLI does. Resolves the template tier
|
|
379
|
+
* (`full`→full_spec, `lite`→lite_spec, `micro`→enhancement_single; default full_spec),
|
|
380
|
+
* applies the header, and writes only when `write && !exists`. Returns the target path
|
|
381
|
+
* and whether a file was actually written (false on dry-run or when the file already
|
|
382
|
+
* exists). The #54 born-AC normalization is applied so a scaffolded spec can never
|
|
383
|
+
* inherit a verified/complete AC from a consumer template.
|
|
384
|
+
*/
|
|
385
|
+
export function scaffoldSpec(repoRoot, opts) {
|
|
386
|
+
const upper = opts.id.toUpperCase();
|
|
387
|
+
const config = loadConfig(repoRoot, opts.configOverride);
|
|
388
|
+
const tmplKey = opts.template === 'micro' ? 'enhancement_single' : opts.template === 'lite' ? 'lite_spec' : 'full_spec';
|
|
389
|
+
const tmplPath = resolveTemplatePath(config, tmplKey);
|
|
390
|
+
const tmplName = tmplPath
|
|
391
|
+
? tmplPath.split('/').pop()
|
|
392
|
+
: tmplKey === 'full_spec'
|
|
393
|
+
? 'SPEC_TEMPLATE.md'
|
|
394
|
+
: 'SPEC_TEMPLATE_LITE.md';
|
|
395
|
+
const specSource = normalizeScaffoldedAcceptanceCriteria(readTemplate(repoRoot, tmplName));
|
|
396
|
+
const content = applyHeader(specSource, upper, opts.title || upper);
|
|
397
|
+
const specsDir = join(repoRoot, 'specs', opts.core, specSubdirForId(upper, config.paths.specs));
|
|
398
|
+
const path = join(specsDir, `${upper}-${opts.slug}.md`);
|
|
399
|
+
// `content` is returned regardless of `write` so a caller (the `promote` verb) can
|
|
400
|
+
// transform it — seed ACs, add the design_doc backlink — and control the final write
|
|
401
|
+
// itself, including a dry-run that renders without touching disk.
|
|
402
|
+
if (!opts.write || existsSync(path))
|
|
403
|
+
return { path, created: false, content };
|
|
404
|
+
mkdirSync(specsDir, { recursive: true });
|
|
405
|
+
writeFileSync(path, content, 'utf8');
|
|
406
|
+
return { path, created: true, content };
|
|
407
|
+
}
|
|
360
408
|
/** Bounds on the origin-refs scan below, so a repo with an unusually large number
|
|
361
409
|
* of fetched remote-tracking refs can't turn a `create` call into a hang: each git
|
|
362
410
|
* call is individually timeout-guarded, and the ref count is capped. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* The `promote` verb — the brainstorm→spec handoff, in one engine action (issue #60,
|
|
4
|
+
* P1 engine half). It lives at the command layer because it composes `create`'s
|
|
5
|
+
* scaffolding + id-allocation (the `lib` layer never imports `commands/`, and the
|
|
6
|
+
* scaffolding primitives are command-owned) with the pure lib writers; `promoteDesignDoc`
|
|
7
|
+
* is exported as a plain function (unit-testable, surfaced on the package main entry as
|
|
8
|
+
* the Spec-Studio seam) and `registerPromote` is its thin CLI adapter.
|
|
9
|
+
*
|
|
10
|
+
* `promoteDesignDoc` turns an approved design doc into a collision-safe, AC-bearing,
|
|
11
|
+
* back-linked, claimed spec: allocate a git-aware id → guard the filename → scaffold the
|
|
12
|
+
* template → seed present-but-`planned` placeholder ACs (never born AC-less) → stamp the
|
|
13
|
+
* `design_doc:` backlink → flip the design doc's lifecycle line to the configured shipped
|
|
14
|
+
* marker → take a claim lease. All writes are gated on `opts.write` (dry-run renders
|
|
15
|
+
* without touching disk), mirroring `closeout-core`'s read→transform→write-if-changed
|
|
16
|
+
* model. The protected-branch refusal lives in the command adapter, not here.
|
|
17
|
+
*/
|
|
18
|
+
export type PromoteOptions = {
|
|
19
|
+
/** Path (repo-relative or absolute) to the approved design doc. */
|
|
20
|
+
designDoc: string;
|
|
21
|
+
core: string;
|
|
22
|
+
/** Spec name slug; defaults to the design-doc basename (date prefix + `-design` stripped). */
|
|
23
|
+
slug?: string;
|
|
24
|
+
title?: string;
|
|
25
|
+
template?: 'full' | 'lite' | 'micro';
|
|
26
|
+
/** When false, compute the full result but write nothing (dry-run). */
|
|
27
|
+
write: boolean;
|
|
28
|
+
/** Claim identity; defaults via resolveClaimedBy (env / worktree basename). */
|
|
29
|
+
by?: string;
|
|
30
|
+
ttlMinutes?: number;
|
|
31
|
+
/** Passthrough for the CLI `--config` override (handoff/config resolution). */
|
|
32
|
+
configOverride?: string;
|
|
33
|
+
};
|
|
34
|
+
export type PromoteResult = {
|
|
35
|
+
specId: string;
|
|
36
|
+
/** Absolute path to the (would-be) spec file. */
|
|
37
|
+
specPath: string;
|
|
38
|
+
/** Repo-relative design-doc path recorded as the backlink. */
|
|
39
|
+
designDoc: string;
|
|
40
|
+
acSeeded: number;
|
|
41
|
+
claimed: boolean;
|
|
42
|
+
specWritten: boolean;
|
|
43
|
+
designDocWritten: boolean;
|
|
44
|
+
};
|
|
45
|
+
export declare function promoteDesignDoc(repoRoot: string, opts: PromoteOptions): PromoteResult;
|
|
46
|
+
export declare function registerPromote(program: Command): void;
|
|
@@ -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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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
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';
|
|
7
8
|
export { buildSpecIndex, extractSummary } from './lib/spec-index.js';
|
|
@@ -20,6 +21,8 @@ export { parseComplianceSignoff } from './lib/compliance-signoff.js';
|
|
|
20
21
|
export { loadEnforcementAllowlist, type EnforcementAllowlist } from './lib/enforcement-allowlist.js';
|
|
21
22
|
export type { SessionState } from './lib/session-state.js';
|
|
22
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';
|
|
23
26
|
export type { RunAutonomy, RunNextAction, GateExecution, GateExecutor, RunGateEvent, RunHaltReason, RunResult, RunDeps, RunConfig, } from './lib/run-pipeline.js';
|
|
24
27
|
/** The fully-registered CLI program. Exported (not parsed on import — the parse
|
|
25
28
|
* call below is guarded by the main-module check) so the command-surface gate
|
package/dist/index.js
CHANGED
|
@@ -24,6 +24,7 @@ import { registerMetrics } from './commands/metrics.js';
|
|
|
24
24
|
import { registerNext } from './commands/next.js';
|
|
25
25
|
import { registerPrecedent } from './commands/precedent.js';
|
|
26
26
|
import { registerProceed } from './commands/proceed.js';
|
|
27
|
+
import { registerPromote } from './commands/promote.js';
|
|
27
28
|
import { registerProfile } from './commands/profile.js';
|
|
28
29
|
import { registerReady } from './commands/ready.js';
|
|
29
30
|
import { registerReconcile } from './commands/reconcile.js';
|
|
@@ -38,7 +39,11 @@ import { registerValidate } from './commands/validate.js';
|
|
|
38
39
|
import { registerVerifyAcs } from './commands/verify-acs.js';
|
|
39
40
|
import { registerVerifyRollout } from './commands/verifyRollout.js';
|
|
40
41
|
export { listSpecs, findSpec, findSpecsById, deriveSignals, diagnoseMissingSpec } from './lib/specs.js';
|
|
41
|
-
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';
|
|
42
47
|
export { embeddingsSourceFromConfig, FilesystemEmbeddingsSource } from './lib/embeddings-source.js';
|
|
43
48
|
// Built-in spec-index generator (Phase 2a): the projection `eos-spec index`
|
|
44
49
|
// writes and `searchSpecs` falls back to in memory — exported so a consumer
|
|
@@ -86,6 +91,11 @@ export { loadEnforcementAllowlist } from './lib/enforcement-allowlist.js';
|
|
|
86
91
|
// consumer pays no fs cost; it is deliberately NOT on `/pure` (per #29). Types are
|
|
87
92
|
// exported so a consumer can implement `GateExecutor`/`RunDeps` against the contract.
|
|
88
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';
|
|
89
99
|
import { ENGINE_VERSION } from './lib/version.js';
|
|
90
100
|
/** The fully-registered CLI program. Exported (not parsed on import — the parse
|
|
91
101
|
* call below is guarded by the main-module check) so the command-surface gate
|
|
@@ -115,6 +125,7 @@ registerClaim(program);
|
|
|
115
125
|
registerPrecedent(program);
|
|
116
126
|
registerIndex(program);
|
|
117
127
|
registerProceed(program);
|
|
128
|
+
registerPromote(program);
|
|
118
129
|
registerStatus(program);
|
|
119
130
|
registerList(program);
|
|
120
131
|
registerCreate(program);
|
|
@@ -158,6 +169,7 @@ Examples:
|
|
|
158
169
|
$ eos-spec status --spec PF-37 # Detail spec status (phases, tests, deferred)
|
|
159
170
|
$ eos-spec list --core pm --status InProgress
|
|
160
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
|
|
161
173
|
$ eos-spec tasks PF-99 # Generate or refresh TASKS file
|
|
162
174
|
$ eos-spec complete --spec PF-37 --update-registry
|
|
163
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,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,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":"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"}
|
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;
|
|
@@ -92,12 +93,18 @@ export type SpecConfig = {
|
|
|
92
93
|
* `cwd` instead of `deferred` (Phase 2a Task 2). Absent ⇒ [] — every non-`src/`/
|
|
93
94
|
* `scripts/` backing file stays deferred, exactly as before this feature. */
|
|
94
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;
|
|
95
100
|
};
|
|
96
101
|
export declare function loadConfig(repoRoot: string, configOverride?: string): SpecConfig;
|
|
97
102
|
export declare function resetConfigCache(): void;
|
|
98
103
|
export declare function coresFromConfig(config: SpecConfig): string[];
|
|
99
104
|
export declare function isKnownCoreFromConfig(config: SpecConfig, core: string): boolean;
|
|
100
|
-
/** 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. */
|
|
101
108
|
export declare function resolveTemplatePath(config: SpecConfig, key: string): string | null;
|
|
102
109
|
/** Dir holding committed SQL migrations, relative to repo root. */
|
|
103
110
|
export declare function migrationsDir(config: SpecConfig): string;
|
|
@@ -114,6 +121,12 @@ export declare function verifyLanes(config: SpecConfig): LaneDef[];
|
|
|
114
121
|
* non-root backing file deferred exactly as before this feature. Kept separate from
|
|
115
122
|
* `resolveDiscoveryPaths` so its `DiscoveryPaths` result shape is unaffected. */
|
|
116
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>;
|
|
117
130
|
export type DiscoveryPaths = {
|
|
118
131
|
migrationsDir: string;
|
|
119
132
|
generatedTestsDir: string;
|