specweave 3.1.13 → 3.1.15
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/.claude-plugin/marketplace.json +2 -2
- package/README.md +7 -7
- package/bin/specweave.js +17 -1
- package/dist/src/cli/commands/ac.d.ts +32 -0
- package/dist/src/cli/commands/ac.d.ts.map +1 -0
- package/dist/src/cli/commands/ac.js +118 -0
- package/dist/src/cli/commands/ac.js.map +1 -0
- package/dist/src/cli/commands/init.js +1 -1
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/skills.d.ts +2 -2
- package/dist/src/cli/commands/skills.d.ts.map +1 -1
- package/dist/src/cli/commands/skills.js +17 -9
- package/dist/src/cli/commands/skills.js.map +1 -1
- package/dist/src/cli/commands/task.d.ts.map +1 -1
- package/dist/src/cli/commands/task.js +3 -1
- package/dist/src/cli/commands/task.js.map +1 -1
- package/dist/src/cli/commands/verify.d.ts.map +1 -1
- package/dist/src/cli/commands/verify.js +6 -2
- package/dist/src/cli/commands/verify.js.map +1 -1
- package/dist/src/core/config/types.d.ts +1 -1
- package/dist/src/core/hooks/handlers/stop.d.ts.map +1 -1
- package/dist/src/core/hooks/handlers/stop.js +4 -2
- package/dist/src/core/hooks/handlers/stop.js.map +1 -1
- package/dist/src/core/increment/auto-commit.d.ts +4 -4
- package/dist/src/core/increment/auto-commit.d.ts.map +1 -1
- package/dist/src/core/increment/auto-commit.js +2 -2
- package/dist/src/core/increment/auto-commit.js.map +1 -1
- package/dist/src/core/increment/completion-validator.d.ts.map +1 -1
- package/dist/src/core/increment/completion-validator.js +5 -2
- package/dist/src/core/increment/completion-validator.js.map +1 -1
- package/dist/src/core/session/handoff-all.d.ts.map +1 -1
- package/dist/src/core/session/handoff-all.js +5 -2
- package/dist/src/core/session/handoff-all.js.map +1 -1
- package/dist/src/core/session/handoff-report.d.ts.map +1 -1
- package/dist/src/core/session/handoff-report.js +4 -1
- package/dist/src/core/session/handoff-report.js.map +1 -1
- package/dist/src/core/session/pickup.d.ts +3 -0
- package/dist/src/core/session/pickup.d.ts.map +1 -1
- package/dist/src/core/session/pickup.js +15 -6
- package/dist/src/core/session/pickup.js.map +1 -1
- package/dist/src/core/skills/catalog.d.ts +1 -1
- package/dist/src/core/skills/catalog.d.ts.map +1 -1
- package/dist/src/core/skills/catalog.js +0 -2
- package/dist/src/core/skills/catalog.js.map +1 -1
- package/dist/src/core/skills/project-skills.d.ts +0 -10
- package/dist/src/core/skills/project-skills.d.ts.map +1 -1
- package/dist/src/core/skills/project-skills.js +6 -2
- package/dist/src/core/skills/project-skills.js.map +1 -1
- package/dist/src/core/tasks/accepted-skip.d.ts +54 -0
- package/dist/src/core/tasks/accepted-skip.d.ts.map +1 -0
- package/dist/src/core/tasks/accepted-skip.js +49 -0
- package/dist/src/core/tasks/accepted-skip.js.map +1 -0
- package/dist/src/core/tasks/closure-gate.d.ts.map +1 -1
- package/dist/src/core/tasks/closure-gate.js +4 -0
- package/dist/src/core/tasks/closure-gate.js.map +1 -1
- package/dist/src/core/tasks/ledger.d.ts +48 -1
- package/dist/src/core/tasks/ledger.d.ts.map +1 -1
- package/dist/src/core/tasks/ledger.js +64 -2
- package/dist/src/core/tasks/ledger.js.map +1 -1
- package/dist/src/core/tasks/verify-runner.d.ts +21 -3
- package/dist/src/core/tasks/verify-runner.d.ts.map +1 -1
- package/dist/src/core/tasks/verify-runner.js +25 -9
- package/dist/src/core/tasks/verify-runner.js.map +1 -1
- package/dist/src/dashboard/server/data/plan-timeline.js +1 -1
- package/dist/src/dashboard/server/data/plan-timeline.js.map +1 -1
- package/package.json +1 -1
- package/plugins/PLUGINS-INDEX.md +3 -3
- package/plugins/specweave/.claude-plugin/plugin.json +2 -2
- package/plugins/specweave/PLUGIN.md +7 -4
- package/plugins/specweave/marketplace.json +7 -8
- package/plugins/specweave/skills/auto/SKILL.md +2 -1
- package/plugins/specweave/skills/auto/agents/openai.yaml +1 -1
- package/plugins/specweave/skills/do/SKILL.md +3 -2
- package/plugins/specweave/skills/do/agents/openai.yaml +3 -0
- package/plugins/specweave/skills/done/SKILL.md +22 -1
- package/plugins/specweave/skills/done/agents/openai.yaml +3 -0
- package/plugins/specweave/{skills-optional → skills}/grill-me/SKILL.md +5 -4
- package/plugins/specweave/skills/grill-me/agents/openai.yaml +3 -0
- package/plugins/specweave/skills/handoff/SKILL.md +3 -2
- package/plugins/specweave/skills/handoff/agents/openai.yaml +3 -0
- package/plugins/specweave/skills/increment/SKILL.md +3 -3
- package/plugins/specweave/skills/increment/agents/openai.yaml +3 -0
- package/plugins/specweave/skills/review/SKILL.md +2 -1
- package/plugins/specweave/skills/review/agents/openai.yaml +3 -0
- package/plugins/specweave/skills-catalog.json +15 -7
- package/plugins/specweave/skills-optional/glossary/SKILL.md +2 -1
- package/plugins/specweave/skills-optional/glossary/agents/openai.yaml +3 -0
- package/plugins/specweave/skills-optional/jev/SKILL.md +2 -1
- package/plugins/specweave/skills-optional/jev/agents/openai.yaml +3 -0
- package/plugins/specweave/skills-optional/project/SKILL.md +2 -1
- package/plugins/specweave/skills-optional/project/agents/openai.yaml +3 -0
- package/plugins/specweave/skills-optional/sync/SKILL.md +2 -1
- package/plugins/specweave/skills-optional/sync/agents/openai.yaml +3 -0
- /package/plugins/specweave/{skills-optional → skills}/grill-me/references/credits.md +0 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Accepted skips — each AC's acceptance from spec.md, its tasks and the
|
|
3
|
+
* ledger's `accept-skip` events.
|
|
4
|
+
*
|
|
5
|
+
* A person may accept skipping a named check of an AC that cannot be run (no
|
|
6
|
+
* license, no installation). The ledger keeps who, when, why and their
|
|
7
|
+
* authorization (see core/tasks/ledger.ts). An accepted skip is never
|
|
8
|
+
* verification: it does not tick the AC, does not count toward `acs.done`,
|
|
9
|
+
* and leaves every other requirement of the AC as it was.
|
|
10
|
+
*
|
|
11
|
+
* met ticked in spec.md, or met by its tasks, with no waiver
|
|
12
|
+
* mixed met the same way, plus at least one accepted skip
|
|
13
|
+
* skipped-accepted not met, at least one accepted skip, and no task that
|
|
14
|
+
* cites the AC is still open, claimed, blocked or stale
|
|
15
|
+
* open anything else; its accepted skips are still listed
|
|
16
|
+
*
|
|
17
|
+
* The ledger has no per-check pass receipt, so "every remaining check is
|
|
18
|
+
* waived" is read as "nothing that covers the AC is unresolved".
|
|
19
|
+
*
|
|
20
|
+
* @module core/tasks/accepted-skip
|
|
21
|
+
*/
|
|
22
|
+
const TERMINAL = new Set(['done', 'skipped']);
|
|
23
|
+
/** Add `acceptance` and `waivers` to ACs already passed through deriveAcStatus. */
|
|
24
|
+
export function deriveAcAcceptance(acs, board) {
|
|
25
|
+
const skips = board?.fold.acceptedSkips ?? [];
|
|
26
|
+
return acs.map((a) => {
|
|
27
|
+
const waivers = skips
|
|
28
|
+
.filter((s) => s.ac === a.id.toUpperCase())
|
|
29
|
+
.map(({ ac: _ac, ...w }) => w);
|
|
30
|
+
const unresolved = (a.tasks ?? []).some((t) => !TERMINAL.has(t.status));
|
|
31
|
+
const acceptance = a.done
|
|
32
|
+
? waivers.length ? 'mixed' : 'met'
|
|
33
|
+
: waivers.length && !unresolved ? 'skipped-accepted' : 'open';
|
|
34
|
+
return { ...a, acceptance, waivers };
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/** Whether an AC lets the increment close: met (alone or mixed) or skipped-accepted. */
|
|
38
|
+
export function acCloses(a) {
|
|
39
|
+
return a.done || a.acceptance === 'skipped-accepted';
|
|
40
|
+
}
|
|
41
|
+
/** ACs that still keep the increment from closing: neither met nor skipped-accepted. */
|
|
42
|
+
export function acsLeftToClose(acs, board) {
|
|
43
|
+
return deriveAcAcceptance(acs, board).filter((a) => !acCloses(a));
|
|
44
|
+
}
|
|
45
|
+
/** JSON shape of an AC for `task list --json` and `pickup --json`. */
|
|
46
|
+
export function acJson(a) {
|
|
47
|
+
return { id: a.id, text: a.text, done: a.done, via: a.via ?? 'none', acceptance: a.acceptance, tasks: a.tasks ?? [], waivers: a.waivers };
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=accepted-skip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accepted-skip.js","sourceRoot":"","sources":["../../../../src/core/tasks/accepted-skip.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAgBH,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAE9C,mFAAmF;AACnF,MAAM,UAAU,kBAAkB,CAAC,GAAc,EAAE,KAAuB;IACxE,MAAM,KAAK,GAAG,KAAK,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;IAC9C,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACnB,MAAM,OAAO,GAAG,KAAK;aAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;aAC1C,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACxE,MAAM,UAAU,GAAiB,CAAC,CAAC,IAAI;YACrC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;YAClC,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC;QAChE,OAAO,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,QAAQ,CAAC,CAA+C;IACtE,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,KAAK,kBAAkB,CAAC;AACvD,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,cAAc,CAAC,GAAc,EAAE,KAAuB;IACpE,OAAO,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,MAAM,CAAC,CAAoB;IACzC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;AAC5I,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"closure-gate.d.ts","sourceRoot":"","sources":["../../../../src/core/tasks/closure-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,uCAAuC;IACvC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;;OAIG;IACH,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"closure-gate.d.ts","sourceRoot":"","sources":["../../../../src/core/tasks/closure-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,uCAAuC;IACvC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;;OAIG;IACH,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,iBAAiB,CA2D7H"}
|
|
@@ -49,6 +49,10 @@ export function checkClosureGate(incrementDir, incrementId, opts = {}) {
|
|
|
49
49
|
}
|
|
50
50
|
else {
|
|
51
51
|
info.push(`verify ok (${verify.ranAt}; ${verify.commands.length} command(s); ACs ${verify.acs.done}/${verify.acs.total})`);
|
|
52
|
+
// Accepted skips close an AC without verifying it: name every one.
|
|
53
|
+
const accepted = (verify.acs.items ?? []).filter((a) => a.acceptance === 'skipped-accepted').map((a) => a.id);
|
|
54
|
+
if (accepted.length)
|
|
55
|
+
info.push(`skipped (accepted), not verified: ${accepted.join(', ')} — see reports/verify.md`);
|
|
52
56
|
// An `ok` report that still has open ACs can only come from a spec with no
|
|
53
57
|
// AC lines at all, or a hand-edited verify.json. Say so out loud.
|
|
54
58
|
const unchecked = describeUncheckedAcs(verify.acs);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"closure-gate.js","sourceRoot":"","sources":["../../../../src/core/tasks/closure-gate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"closure-gate.js","sourceRoot":"","sources":["../../../../src/core/tasks/closure-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,16 @@
|
|
|
21
21
|
* what). A `wait` whose note is empty, `none`, `cleared` or
|
|
22
22
|
* `resolved` clears the earlier ones. `handoff --all` lists them.
|
|
23
23
|
*
|
|
24
|
+
* `accept-skip` is keyed by an AC id (`t: "AC-03"`) and one named check of
|
|
25
|
+
* that AC. It records that a person accepted skipping the check (no license,
|
|
26
|
+
* no installation) and never changes task state or counts as verified:
|
|
27
|
+
*
|
|
28
|
+
* {"t":"AC-03","e":"accept-skip","by":"claude@mbp","at":"…","check":"wonder-full-shown-when-entitled",
|
|
29
|
+
* "reason":"…","acceptedBy":"anton","acceptedAt":"…","authorization":"…"}
|
|
30
|
+
*
|
|
31
|
+
* `specweave ac accept-skip` writes it; core/tasks/accepted-skip.ts derives
|
|
32
|
+
* each AC's `acceptance` from it.
|
|
33
|
+
*
|
|
24
34
|
* Writes are single-line O_APPEND appends (same rationale as
|
|
25
35
|
* core/sync/event-queue.ts): atomic for short lines on every major OS, so two
|
|
26
36
|
* agents in one working tree never tear each other's lines. Across worktrees or
|
|
@@ -31,7 +41,9 @@
|
|
|
31
41
|
*/
|
|
32
42
|
export type TaskEventType = 'claim' | 'done' | 'release' | 'block' | 'skip';
|
|
33
43
|
export type IncrementEventType = 'note' | 'session' | 'handoff' | 'pickup' | 'wait';
|
|
34
|
-
|
|
44
|
+
/** An AC-level event: a person accepted skipping one named check of an AC. */
|
|
45
|
+
export type AcEventType = 'accept-skip';
|
|
46
|
+
export type LedgerEventType = TaskEventType | IncrementEventType | AcEventType;
|
|
35
47
|
/** Task id used by increment-level events (notes, sessions, handoffs). */
|
|
36
48
|
export declare const INCREMENT_EVENT_TASK = "*";
|
|
37
49
|
export interface LedgerEvent {
|
|
@@ -53,7 +65,32 @@ export interface LedgerEvent {
|
|
|
53
65
|
link?: string;
|
|
54
66
|
/** Model the writing agent ran on, when its environment names one (see {@link detectModel}). */
|
|
55
67
|
model?: string;
|
|
68
|
+
/** `accept-skip`: the named check of the AC that is skipped. */
|
|
69
|
+
check?: string;
|
|
70
|
+
/** `accept-skip`: why the check cannot be run (no license, no installation, …). */
|
|
71
|
+
reason?: string;
|
|
72
|
+
/** `accept-skip`: the person who accepted the skip. */
|
|
73
|
+
acceptedBy?: string;
|
|
74
|
+
/** `accept-skip`: when that person accepted it (ISO-8601). */
|
|
75
|
+
acceptedAt?: string;
|
|
76
|
+
/** `accept-skip`: their authorization, quoted, or a message/thread reference. */
|
|
77
|
+
authorization?: string;
|
|
78
|
+
}
|
|
79
|
+
/** One accepted skip as the fold keeps it: the AC, its named check and who accepted it. */
|
|
80
|
+
export interface AcceptedSkip {
|
|
81
|
+
ac: string;
|
|
82
|
+
check: string;
|
|
83
|
+
reason: string;
|
|
84
|
+
acceptedBy: string;
|
|
85
|
+
acceptedAt: string;
|
|
86
|
+
authorization: string;
|
|
87
|
+
/** Agent that recorded it. */
|
|
88
|
+
by: string;
|
|
89
|
+
/** When it was recorded. */
|
|
90
|
+
at: string;
|
|
56
91
|
}
|
|
92
|
+
/** Fields an `accept-skip` must carry, in ledger key order. */
|
|
93
|
+
export declare const ACCEPT_SKIP_FIELDS: readonly ["check", "reason", "acceptedBy", "acceptedAt", "authorization"];
|
|
57
94
|
/** Longest card line kept in the ledger; longer text is truncated with `…`. */
|
|
58
95
|
export declare const MAX_CARD_LINE = 100;
|
|
59
96
|
/** One-line card text capped at {@link MAX_CARD_LINE}. `truncated` lets callers warn. */
|
|
@@ -92,6 +129,11 @@ export interface LedgerFold {
|
|
|
92
129
|
line?: string;
|
|
93
130
|
link?: string;
|
|
94
131
|
}>;
|
|
132
|
+
/**
|
|
133
|
+
* Accepted skips, oldest first: the first complete `accept-skip` per
|
|
134
|
+
* (AC, check). They never change `tasks`; see core/tasks/accepted-skip.ts.
|
|
135
|
+
*/
|
|
136
|
+
acceptedSkips: AcceptedSkip[];
|
|
95
137
|
}
|
|
96
138
|
export declare const LEDGER_FILE = "ledger.jsonl";
|
|
97
139
|
export declare const DEFAULT_LEASE_HOURS = 2;
|
|
@@ -138,6 +180,8 @@ export declare function parseLedger(content: string): {
|
|
|
138
180
|
events: LedgerEvent[];
|
|
139
181
|
malformed: number;
|
|
140
182
|
};
|
|
183
|
+
/** Why an `accept-skip` cannot be kept, or undefined when it is complete. */
|
|
184
|
+
export declare function acceptSkipProblem(ev: LedgerEvent): string | undefined;
|
|
141
185
|
export interface FoldOptions {
|
|
142
186
|
/** "Now" for staleness computation (default: current time). */
|
|
143
187
|
now?: Date;
|
|
@@ -158,6 +202,9 @@ export interface FoldOptions {
|
|
|
158
202
|
* - `block` on open or by the owner → blocked(by). Non-owner → ignored.
|
|
159
203
|
* - `skip` requires a note (reason) and is terminal (`skipped`); accepted on
|
|
160
204
|
* open, by the owner, or when the current claim is stale.
|
|
205
|
+
* - `accept-skip` never touches task state. The first complete one per
|
|
206
|
+
* (AC, check) is kept in `acceptedSkips`; later duplicates and incomplete
|
|
207
|
+
* ones are ignored with a reason.
|
|
161
208
|
* - Final pass: claimed older than the lease → `stale`.
|
|
162
209
|
*/
|
|
163
210
|
export declare function foldLedger(events: LedgerEvent[], opts?: FoldOptions): LedgerFold;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../../../src/core/tasks/ledger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../../../src/core/tasks/ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,16 @@
|
|
|
21
21
|
* what). A `wait` whose note is empty, `none`, `cleared` or
|
|
22
22
|
* `resolved` clears the earlier ones. `handoff --all` lists them.
|
|
23
23
|
*
|
|
24
|
+
* `accept-skip` is keyed by an AC id (`t: "AC-03"`) and one named check of
|
|
25
|
+
* that AC. It records that a person accepted skipping the check (no license,
|
|
26
|
+
* no installation) and never changes task state or counts as verified:
|
|
27
|
+
*
|
|
28
|
+
* {"t":"AC-03","e":"accept-skip","by":"claude@mbp","at":"…","check":"wonder-full-shown-when-entitled",
|
|
29
|
+
* "reason":"…","acceptedBy":"anton","acceptedAt":"…","authorization":"…"}
|
|
30
|
+
*
|
|
31
|
+
* `specweave ac accept-skip` writes it; core/tasks/accepted-skip.ts derives
|
|
32
|
+
* each AC's `acceptance` from it.
|
|
33
|
+
*
|
|
24
34
|
* Writes are single-line O_APPEND appends (same rationale as
|
|
25
35
|
* core/sync/event-queue.ts): atomic for short lines on every major OS, so two
|
|
26
36
|
* agents in one working tree never tear each other's lines. Across worktrees or
|
|
@@ -36,6 +46,8 @@ import { touchIncrementUpdated } from './increment-updated.js';
|
|
|
36
46
|
import { recordIncrementWork } from './work-session.js';
|
|
37
47
|
/** Task id used by increment-level events (notes, sessions, handoffs). */
|
|
38
48
|
export const INCREMENT_EVENT_TASK = '*';
|
|
49
|
+
/** Fields an `accept-skip` must carry, in ledger key order. */
|
|
50
|
+
export const ACCEPT_SKIP_FIELDS = ['check', 'reason', 'acceptedBy', 'acceptedAt', 'authorization'];
|
|
39
51
|
/** Longest card line kept in the ledger; longer text is truncated with `…`. */
|
|
40
52
|
export const MAX_CARD_LINE = 100;
|
|
41
53
|
/** One-line card text capped at {@link MAX_CARD_LINE}. `truncated` lets callers warn. */
|
|
@@ -47,7 +59,7 @@ export function clampCardLine(text) {
|
|
|
47
59
|
}
|
|
48
60
|
export const LEDGER_FILE = 'ledger.jsonl';
|
|
49
61
|
export const DEFAULT_LEASE_HOURS = 2;
|
|
50
|
-
const VALID_EVENTS = new Set(['claim', 'done', 'release', 'block', 'skip', 'note', 'session', 'handoff', 'pickup', 'wait']);
|
|
62
|
+
const VALID_EVENTS = new Set(['claim', 'done', 'release', 'block', 'skip', 'note', 'session', 'handoff', 'pickup', 'wait', 'accept-skip']);
|
|
51
63
|
const INCREMENT_EVENTS = new Set(['note', 'session', 'handoff', 'pickup', 'wait']);
|
|
52
64
|
/** Resolve the ledger path for an increment directory. */
|
|
53
65
|
export function ledgerPath(incrementDir) {
|
|
@@ -137,6 +149,13 @@ export function formatLedgerLine(event) {
|
|
|
137
149
|
ordered.link = event.link.trim();
|
|
138
150
|
if (event.model?.trim())
|
|
139
151
|
ordered.model = event.model.trim();
|
|
152
|
+
if (event.e === 'accept-skip') {
|
|
153
|
+
for (const k of ACCEPT_SKIP_FIELDS) {
|
|
154
|
+
const v = event[k]?.trim();
|
|
155
|
+
if (v)
|
|
156
|
+
ordered[k] = v;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
140
159
|
return JSON.stringify(ordered) + '\n';
|
|
141
160
|
}
|
|
142
161
|
/**
|
|
@@ -184,6 +203,7 @@ export function parseLedger(content) {
|
|
|
184
203
|
...(typeof obj.line === 'string' && obj.line.trim() ? { line: clampCardLine(obj.line).line } : {}),
|
|
185
204
|
...(typeof obj.link === 'string' && obj.link.trim() ? { link: obj.link.trim() } : {}),
|
|
186
205
|
...(typeof obj.model === 'string' && obj.model.trim() ? { model: obj.model.trim() } : {}),
|
|
206
|
+
...(obj.e === 'accept-skip' ? acceptSkipFields(obj) : {}),
|
|
187
207
|
});
|
|
188
208
|
}
|
|
189
209
|
else {
|
|
@@ -196,6 +216,27 @@ export function parseLedger(content) {
|
|
|
196
216
|
}
|
|
197
217
|
return { events, malformed };
|
|
198
218
|
}
|
|
219
|
+
/** The `accept-skip` identity fields of a parsed line that are non-empty strings. */
|
|
220
|
+
function acceptSkipFields(obj) {
|
|
221
|
+
const out = {};
|
|
222
|
+
for (const k of ACCEPT_SKIP_FIELDS) {
|
|
223
|
+
const v = obj[k];
|
|
224
|
+
if (typeof v === 'string' && v.trim())
|
|
225
|
+
out[k] = v.trim();
|
|
226
|
+
}
|
|
227
|
+
return out;
|
|
228
|
+
}
|
|
229
|
+
/** Why an `accept-skip` cannot be kept, or undefined when it is complete. */
|
|
230
|
+
export function acceptSkipProblem(ev) {
|
|
231
|
+
if (ev.t === INCREMENT_EVENT_TASK || !/^AC-/i.test(ev.t))
|
|
232
|
+
return 'accept-skip needs an AC id';
|
|
233
|
+
const missing = ACCEPT_SKIP_FIELDS.filter((k) => !ev[k]?.trim());
|
|
234
|
+
if (missing.length)
|
|
235
|
+
return `accept-skip without ${missing.join(', ')}`;
|
|
236
|
+
if (Number.isNaN(Date.parse(ev.acceptedAt)))
|
|
237
|
+
return 'accept-skip with an unreadable acceptedAt';
|
|
238
|
+
return undefined;
|
|
239
|
+
}
|
|
199
240
|
/**
|
|
200
241
|
* Deterministic fold: events sorted by (at, by, file order); per task:
|
|
201
242
|
*
|
|
@@ -210,6 +251,9 @@ export function parseLedger(content) {
|
|
|
210
251
|
* - `block` on open or by the owner → blocked(by). Non-owner → ignored.
|
|
211
252
|
* - `skip` requires a note (reason) and is terminal (`skipped`); accepted on
|
|
212
253
|
* open, by the owner, or when the current claim is stale.
|
|
254
|
+
* - `accept-skip` never touches task state. The first complete one per
|
|
255
|
+
* (AC, check) is kept in `acceptedSkips`; later duplicates and incomplete
|
|
256
|
+
* ones are ignored with a reason.
|
|
213
257
|
* - Final pass: claimed older than the lease → `stale`.
|
|
214
258
|
*/
|
|
215
259
|
export function foldLedger(events, opts = {}) {
|
|
@@ -230,6 +274,7 @@ export function foldLedger(events, opts = {}) {
|
|
|
230
274
|
const tasks = new Map();
|
|
231
275
|
const ignored = [];
|
|
232
276
|
const cards = new Map();
|
|
277
|
+
const acceptedSkips = [];
|
|
233
278
|
const recordCard = (ev) => {
|
|
234
279
|
if (ev.t === INCREMENT_EVENT_TASK)
|
|
235
280
|
return;
|
|
@@ -249,6 +294,23 @@ export function foldLedger(events, opts = {}) {
|
|
|
249
294
|
recordCard(ev);
|
|
250
295
|
continue;
|
|
251
296
|
}
|
|
297
|
+
if (ev.e === 'accept-skip') {
|
|
298
|
+
const problem = acceptSkipProblem(ev);
|
|
299
|
+
if (problem) {
|
|
300
|
+
ignored.push({ event: ev, reason: problem });
|
|
301
|
+
continue;
|
|
302
|
+
}
|
|
303
|
+
const ac = ev.t.toUpperCase();
|
|
304
|
+
if (acceptedSkips.some((s) => s.ac === ac && s.check.toLowerCase() === ev.check.toLowerCase())) {
|
|
305
|
+
ignored.push({ event: ev, reason: `${ac} check ${ev.check} already accepted` });
|
|
306
|
+
continue;
|
|
307
|
+
}
|
|
308
|
+
acceptedSkips.push({
|
|
309
|
+
ac, check: ev.check, reason: ev.reason, acceptedBy: ev.acceptedBy,
|
|
310
|
+
acceptedAt: ev.acceptedAt, authorization: ev.authorization, by: ev.by, at: ev.at,
|
|
311
|
+
});
|
|
312
|
+
continue;
|
|
313
|
+
}
|
|
252
314
|
const ignoredBefore = ignored.length;
|
|
253
315
|
const cur = tasks.get(ev.t) ?? { status: 'open' };
|
|
254
316
|
const atMs = Date.parse(ev.at);
|
|
@@ -331,7 +393,7 @@ export function foldLedger(events, opts = {}) {
|
|
|
331
393
|
tasks.set(t, { ...state, status: 'stale' });
|
|
332
394
|
}
|
|
333
395
|
}
|
|
334
|
-
return { tasks, malformed: 0, ignored, cards };
|
|
396
|
+
return { tasks, malformed: 0, ignored, cards, acceptedSkips };
|
|
335
397
|
}
|
|
336
398
|
/** Read + fold a ledger file in one call. */
|
|
337
399
|
export function foldLedgerFile(ledgerFile, opts = {}) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../../../src/core/tasks/ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAMxD,0EAA0E;AAC1E,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAuBxC,+EAA+E;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC,yFAAyF;AACzF,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,IAAI,CAAC,MAAM,IAAI,aAAa;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC1E,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACrF,CAAC;AA+BD,MAAM,CAAC,MAAM,WAAW,GAAG,cAAc,CAAC;AAC1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,MAAM,YAAY,GAAwB,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AACjJ,MAAM,gBAAgB,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAExG,0DAA0D;AAC1D,MAAM,UAAU,UAAU,CAAC,YAAoB;IAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,MAAM,QAAQ,GAAG,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;IAC7C,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,MAAM,QAAQ,GAAG,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1D,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC;IAClE,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;IACzD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,WAAW;QAAE,OAAO,QAAQ,CAAC;IACvF,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IAC5F,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IACzF,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,eAAe;QAAE,OAAO,QAAQ,CAAC;IAC7F,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,UAAU;QAAE,OAAO,QAAQ,CAAC;IACpE,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,aAAa;QAAE,OAAO,SAAS,CAAC;IACzE,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC;IACpG,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC;IAClF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,IAAI,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/E,IAAI,GAAG,CAAC,kBAAkB,KAAK,MAAM,IAAI,GAAG,CAAC,WAAW;QAAE,OAAO,OAAO,CAAC;IACzE,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC;IAClC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACvC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,eAAe,CAAC,MAAyB,OAAO,CAAC,GAAG;IAClE,MAAM,GAAG,GAAuC,EAAE,MAAM,EAAE,GAAG,CAAC,sBAAsB,EAAE,KAAK,EAAE,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACpH,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,sBAAsB,IAAI,GAAG,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;AACvI,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC9D,MAAM,QAAQ,GAAG,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;IAC7C,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IACnG,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,gBAAgB,CAAC,KAAkB;IACjD,2DAA2D;IAC3D,MAAM,OAAO,GAA2B,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;IAC/F,IAAI,KAAK,CAAC,IAAI;QAAE,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAC1C,IAAI,KAAK,CAAC,QAAQ;QAAE,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IACtD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,IAAI;YAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAChC,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE;QAAE,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACzD,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE;QAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC5D,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,UAAkB,EAAE,KAAkB;IAChE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACrF,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACvH,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1D,4EAA4E;IAC5E,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;AACzF,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,UAAU,CAAC,UAAkB;IAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IACpE,OAAO,WAAW,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,kFAAkF;IAClF,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAyB,CAAC;YACrD,IACE,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,CAAC;gBAClC,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpD,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,IAAI,GAAG,CAAC,EAAE;gBACpC,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAC/D,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC;oBACV,CAAC,EAAE,GAAG,CAAC,CAAC;oBACR,CAAC,EAAE,GAAG,CAAC,CAAoB;oBAC3B,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3D,GAAG,CAAC,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvE,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClG,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrF,GAAG,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC1F,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,SAAS,EAAE,CAAC;YACd,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC;AASD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,UAAU,CAAC,MAAqB,EAAE,OAAoB,EAAE;IACtE,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,mBAAmB,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACvE,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAEjD,MAAM,MAAM,GAAG,MAAM;SAClB,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;SAC3B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;YAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEpB,MAAM,KAAK,GAAG,IAAI,GAAG,EAA2B,CAAC;IACjD,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAwB,IAAI,GAAG,EAAE,CAAC;IAC7C,MAAM,UAAU,GAAG,CAAC,EAAe,EAAE,EAAE;QACrC,IAAI,EAAE,CAAC,CAAC,KAAK,oBAAoB;YAAE,OAAO;QAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,EAAE,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QACjC,IAAI,EAAE,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QACjC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,KAAsB,EAAE,IAAY,EAAW,EAAE,CAClE,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IAExE,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QACxB,6EAA6E;QAC7E,6EAA6E;QAC7E,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,IAAI,EAAE,CAAC,CAAC,KAAK,MAAM;gBAAE,UAAU,CAAC,EAAE,CAAC,CAAC;YACpC,SAAS;QACX,CAAC;QACD,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;QACrC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAA0B,EAAE,CAAC;QACtE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,WAAW,GACf,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAEtG,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC;YACb,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBAC/H,IAAI,WAAW,EAAE,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBACxF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/E,MAAM;YACR,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBACjH,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBAChG,IAAI,WAAW,EAAE,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBACxF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;gBACnG,MAAM;YACR,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBACxJ,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBAC9F,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;gBACnD,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBAC/H,IAAI,WAAW,EAAE,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBACxF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/E,MAAM;YACR,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBACvG,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBAC/H,IAAI,WAAW,EAAE,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBACxF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/E,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,aAAa;YAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;YAC1D,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACjD,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,cAAc,CAAC,UAAkB,EAAE,OAAoB,EAAE;IACvE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtC,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,mBAAmB,CAAC,UAAkB,EAAE,KAA4B;IAClF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAS,KAAK,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC;IAC/D,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC,MAAM;SACjC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,EAAU,EAAE,MAAyB,OAAO,CAAC,GAAG;IACpG,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IACtB,MAAM,IAAI,GAAG,WAAW,EAAE,EAAE,CAAC;IAC7B,IAAI,mBAAmB,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5F,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3G,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,aAAa,CAAC,KAAkC;IAC9D,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACrD,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,CAAC,OAAO,WAAW,KAAK,CAAC,EAAE,EAAE,CAAC;QAC1C,KAAK,SAAS,CAAC,CAAC,OAAO,cAAc,KAAK,CAAC,EAAE,UAAU,KAAK,CAAC,KAAK,EAAE,CAAC;QACrE,KAAK,OAAO,CAAC,CAAC,OAAO,kBAAkB,KAAK,CAAC,EAAE,UAAU,KAAK,CAAC,KAAK,EAAE,CAAC;QACvE,KAAK,SAAS,CAAC,CAAC,OAAO,cAAc,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACtF,KAAK,SAAS,CAAC,CAAC,OAAO,cAAc,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACxF,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../../../src/core/tasks/ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
* @module core/tasks/verify-runner
|
|
11
11
|
*/
|
|
12
12
|
import { type TaskBoard } from './task-board.js';
|
|
13
|
+
import { type AcAcceptance, type AcAcceptanceEntry, type AcWaiver } from './accepted-skip.js';
|
|
14
|
+
import type { AcceptedSkip } from './ledger.js';
|
|
13
15
|
export interface VerifyCommandResult {
|
|
14
16
|
cmd: string;
|
|
15
17
|
exit: number;
|
|
@@ -19,7 +21,7 @@ export interface VerifyCommandResult {
|
|
|
19
21
|
export interface VerifyReport {
|
|
20
22
|
/**
|
|
21
23
|
* Ready to close: every verification command exited 0 AND every acceptance
|
|
22
|
-
* criterion in spec.md is
|
|
24
|
+
* criterion in spec.md is met or skipped-accepted. Consulted by the closure gate.
|
|
23
25
|
*/
|
|
24
26
|
ok: boolean;
|
|
25
27
|
ranAt: string;
|
|
@@ -28,9 +30,16 @@ export interface VerifyReport {
|
|
|
28
30
|
cmd: string;
|
|
29
31
|
exit: number;
|
|
30
32
|
}>;
|
|
33
|
+
/**
|
|
34
|
+
* `done` counts met ACs (mixed ones included, since their tasks met them);
|
|
35
|
+
* accepted skips never add to it. `skippedAccepted` counts ACs closed only
|
|
36
|
+
* by accepted skips, `mixed` the met ACs that also carry one.
|
|
37
|
+
*/
|
|
31
38
|
acs: {
|
|
32
39
|
total: number;
|
|
33
40
|
done: number;
|
|
41
|
+
skippedAccepted?: number;
|
|
42
|
+
mixed?: number;
|
|
34
43
|
items?: VerifyAcItem[];
|
|
35
44
|
};
|
|
36
45
|
tasks: {
|
|
@@ -45,6 +54,8 @@ export interface VerifyReport {
|
|
|
45
54
|
by?: string;
|
|
46
55
|
reason?: string;
|
|
47
56
|
}>;
|
|
57
|
+
/** Every accepted skip in the ledger, oldest first (`specweave ac accept-skip`). */
|
|
58
|
+
acceptedSkips?: AcceptedSkip[];
|
|
48
59
|
/** Ledger lines that could not be parsed (BOM/CRLF are tolerated; this counts real junk). */
|
|
49
60
|
ledgerMalformed: number;
|
|
50
61
|
/** Why verify passed with no commands to run (`specweave verify --reason`). */
|
|
@@ -66,6 +77,10 @@ export interface VerifyAcItem {
|
|
|
66
77
|
id: string;
|
|
67
78
|
status: string;
|
|
68
79
|
}>;
|
|
80
|
+
/** met | mixed | skipped-accepted | open (core/tasks/accepted-skip.ts). */
|
|
81
|
+
acceptance: AcAcceptance;
|
|
82
|
+
/** Accepted skips recorded for this AC; never verification. */
|
|
83
|
+
waivers: AcWaiver[];
|
|
69
84
|
}
|
|
70
85
|
export interface AcEntry {
|
|
71
86
|
id: string;
|
|
@@ -83,6 +98,7 @@ export interface AcEntry {
|
|
|
83
98
|
export declare function describeUncheckedAcs(acs: {
|
|
84
99
|
total: number;
|
|
85
100
|
done: number;
|
|
101
|
+
skippedAccepted?: number;
|
|
86
102
|
}): string | undefined;
|
|
87
103
|
/** The ACs declared in an increment's spec.md (empty when there is none). */
|
|
88
104
|
export declare function readSpecAcs(incrementDir: string): AcEntry[];
|
|
@@ -118,14 +134,16 @@ export interface RunVerifyOptions {
|
|
|
118
134
|
export interface RunVerifyResult {
|
|
119
135
|
report: VerifyReport;
|
|
120
136
|
results: VerifyCommandResult[];
|
|
121
|
-
acs:
|
|
137
|
+
acs: AcAcceptanceEntry[];
|
|
122
138
|
board: TaskBoard;
|
|
123
139
|
source: string;
|
|
124
140
|
mdPath: string;
|
|
125
141
|
jsonPath: string;
|
|
126
142
|
}
|
|
127
143
|
export declare function runVerify(projectRoot: string, incrementId: string, incrementDir: string, opts?: RunVerifyOptions): Promise<RunVerifyResult>;
|
|
128
|
-
export declare function renderVerifyMd(report: VerifyReport, results: VerifyCommandResult[], acs: AcEntry
|
|
144
|
+
export declare function renderVerifyMd(report: VerifyReport, results: VerifyCommandResult[], acs: Array<AcEntry & {
|
|
145
|
+
acceptance?: AcAcceptance;
|
|
146
|
+
}>, board: TaskBoard, source: string): string;
|
|
129
147
|
/** Read reports/verify.json if present. */
|
|
130
148
|
export declare function readVerifyReport(incrementDir: string): VerifyReport | undefined;
|
|
131
149
|
//# sourceMappingURL=verify-runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-runner.d.ts","sourceRoot":"","sources":["../../../../src/core/tasks/verify-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAmC,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"verify-runner.d.ts","sourceRoot":"","sources":["../../../../src/core/tasks/verify-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,11 +13,12 @@ import * as fs from 'fs';
|
|
|
13
13
|
import * as path from 'path';
|
|
14
14
|
import { runShell } from './run-shell.js';
|
|
15
15
|
import { loadTaskBoard, renderBoardTable } from './task-board.js';
|
|
16
|
+
import { acCloses, deriveAcAcceptance } from './accepted-skip.js';
|
|
16
17
|
/** Message (and verify.md line) when there is nothing to run. */
|
|
17
18
|
export const NO_COMMANDS_MESSAGE = 'no test commands configured';
|
|
18
19
|
/** One-line human summary of open ACs, or undefined when nothing is open. */
|
|
19
20
|
export function describeUncheckedAcs(acs) {
|
|
20
|
-
const open = acs.total - acs.done;
|
|
21
|
+
const open = acs.total - acs.done - (acs.skippedAccepted ?? 0);
|
|
21
22
|
if (!Number.isFinite(open) || open <= 0)
|
|
22
23
|
return undefined;
|
|
23
24
|
return `${open} of ${acs.total} acceptance criteria not met (tick them in spec.md, or finish the tasks that cover them)`;
|
|
@@ -112,17 +113,19 @@ export async function runVerify(projectRoot, incrementId, incrementDir, opts = {
|
|
|
112
113
|
results.push({ cmd, exit: r.code, tail: r.tail, ms: Date.now() - started });
|
|
113
114
|
}
|
|
114
115
|
const board = loadTaskBoard(incrementDir, { leaseHours: opts.leaseHours });
|
|
115
|
-
const acs = deriveAcStatus(readSpecAcs(incrementDir), board);
|
|
116
|
+
const acs = deriveAcAcceptance(deriveAcStatus(readSpecAcs(incrementDir), board), board);
|
|
116
117
|
// `ok` means "this increment is ready to close": the acceptance criteria in
|
|
117
118
|
// spec.md ARE the definition of done. An AC is met when ticked by hand or
|
|
118
|
-
// when every task covering it is done in the ledger.
|
|
119
|
+
// when every task covering it is done in the ledger. An AC closed only by
|
|
120
|
+
// accepted skips (skipped-accepted) also lets it close; it is listed by
|
|
121
|
+
// name in verify.md and verify.json and never counted as met. Specs with no AC lines
|
|
119
122
|
// at all stay non-blocking (legacy increments); they are surfaced as a
|
|
120
123
|
// notice by the closure gate instead.
|
|
121
124
|
// An empty command list verifies nothing, so it fails unless a reason is
|
|
122
125
|
// recorded (`specweave verify --reason "<why>"`).
|
|
123
126
|
const reason = opts.reason?.trim() || undefined;
|
|
124
127
|
const commandsOk = results.length > 0 ? results.every((r) => r.exit === 0) : reason !== undefined;
|
|
125
|
-
const acsOk = acs.length === 0 || acs.every(
|
|
128
|
+
const acsOk = acs.length === 0 || acs.every(acCloses);
|
|
126
129
|
const report = {
|
|
127
130
|
ok: commandsOk && acsOk,
|
|
128
131
|
ranAt: new Date().toISOString(),
|
|
@@ -131,12 +134,15 @@ export async function runVerify(projectRoot, incrementId, incrementDir, opts = {
|
|
|
131
134
|
acs: {
|
|
132
135
|
total: acs.length,
|
|
133
136
|
done: acs.filter((a) => a.done).length,
|
|
134
|
-
|
|
137
|
+
skippedAccepted: acs.filter((a) => a.acceptance === 'skipped-accepted').length,
|
|
138
|
+
mixed: acs.filter((a) => a.acceptance === 'mixed').length,
|
|
139
|
+
items: acs.map((a) => ({ id: a.id, done: a.done, via: a.via ?? 'none', tasks: a.tasks ?? [], acceptance: a.acceptance, waivers: a.waivers })),
|
|
135
140
|
},
|
|
136
141
|
tasks: { total: board.counts.total, done: board.counts.done, skipped: board.counts.skipped, open: board.counts.total - board.counts.done - board.counts.skipped },
|
|
137
142
|
skipped: board.tasks
|
|
138
143
|
.filter((t) => t.state.status === 'skipped')
|
|
139
144
|
.map((t) => ({ id: t.id, by: t.state.by, reason: t.state.note })),
|
|
145
|
+
acceptedSkips: board.fold.acceptedSkips,
|
|
140
146
|
ledgerMalformed: board.fold.malformed,
|
|
141
147
|
...(reason ? { reason } : {}),
|
|
142
148
|
};
|
|
@@ -171,13 +177,23 @@ export function renderVerifyMd(report, results, acs, board, source) {
|
|
|
171
177
|
}
|
|
172
178
|
L.push('## Acceptance criteria');
|
|
173
179
|
L.push('');
|
|
174
|
-
|
|
180
|
+
const accepted = report.acs.skippedAccepted ?? 0;
|
|
181
|
+
L.push(`${report.acs.done}/${report.acs.total} met${accepted ? ` · ${accepted} skipped (accepted), not verified` : ''}`);
|
|
175
182
|
L.push('');
|
|
176
183
|
if (acs.length) {
|
|
177
|
-
L.push('| AC | Met | Text |');
|
|
178
|
-
L.push('
|
|
184
|
+
L.push('| AC | Met | Acceptance | Text |');
|
|
185
|
+
L.push('|---|---|---|---|');
|
|
179
186
|
for (const a of acs)
|
|
180
|
-
L.push(`| ${a.id} | ${a.done ? (a.via === 'ledger' ? 'x (tasks)' : 'x') : ' '} | ${a.text.replace(/\|/g, '\\|')} |`);
|
|
187
|
+
L.push(`| ${a.id} | ${a.done ? (a.via === 'ledger' ? 'x (tasks)' : 'x') : ' '} | ${a.acceptance ?? (a.done ? 'met' : 'open')} | ${a.text.replace(/\|/g, '\\|')} |`);
|
|
188
|
+
L.push('');
|
|
189
|
+
}
|
|
190
|
+
if (report.acceptedSkips?.length) {
|
|
191
|
+
L.push('### Accepted skips (not verified)');
|
|
192
|
+
L.push('');
|
|
193
|
+
const flat = (v) => v.replace(/\s+/g, ' ').trim();
|
|
194
|
+
for (const s of report.acceptedSkips) {
|
|
195
|
+
L.push(`- ${s.ac} check \`${flat(s.check)}\` — ${flat(s.reason)}. Accepted by ${flat(s.acceptedBy)} at ${s.acceptedAt}; authorization: ${flat(s.authorization)} (recorded by ${s.by} at ${s.at})`);
|
|
196
|
+
}
|
|
181
197
|
L.push('');
|
|
182
198
|
}
|
|
183
199
|
L.push('## Tasks (ledger)');
|