wingfoil 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -6
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/init-command.d.ts.map +1 -1
- package/dist/cli/init-command.js +2 -1
- package/dist/cli/init-command.js.map +1 -1
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +117 -29
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/registrar.d.ts +15 -6
- package/dist/cli/registrar.d.ts.map +1 -1
- package/dist/cli/registrar.js +4 -0
- package/dist/cli/registrar.js.map +1 -1
- package/dist/core/exit-code.d.ts.map +1 -1
- package/dist/core/exit-code.js +7 -6
- package/dist/core/exit-code.js.map +1 -1
- package/dist/core/index.d.ts +5 -4
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +232 -89
- package/dist/core/index.js.map +1 -1
- package/dist/core/init.d.ts +5 -3
- package/dist/core/init.d.ts.map +1 -1
- package/dist/core/init.js +5 -3
- package/dist/core/init.js.map +1 -1
- package/dist/core/registry.d.ts +69 -17
- package/dist/core/registry.d.ts.map +1 -1
- package/dist/core/registry.js.map +1 -1
- package/dist/directives/schema.d.ts +3 -3
- package/dist/directives/schema.js +3 -3
- package/dist/mcp/index.d.ts +1 -1
- package/dist/memory/add.d.ts +62 -5
- package/dist/memory/add.d.ts.map +1 -1
- package/dist/memory/add.js +130 -7
- package/dist/memory/add.js.map +1 -1
- package/dist/memory/audit.d.ts +26 -6
- package/dist/memory/audit.d.ts.map +1 -1
- package/dist/memory/audit.js +27 -11
- package/dist/memory/audit.js.map +1 -1
- package/dist/memory/commit-message.js +1 -1
- package/dist/memory/commit-message.js.map +1 -1
- package/dist/memory/history.d.ts +1 -1
- package/dist/memory/history.js +1 -1
- package/dist/memory/index.d.ts +3 -3
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +6 -2
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/state-machine.js +2 -2
- package/dist/storage/templates.d.ts.map +1 -1
- package/dist/storage/templates.js +12 -1
- package/dist/storage/templates.js.map +1 -1
- package/dist/validation/id.d.ts +26 -0
- package/dist/validation/id.d.ts.map +1 -1
- package/dist/validation/id.js +64 -1
- package/dist/validation/id.js.map +1 -1
- package/dist/validation/index.d.ts +1 -1
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +4 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/secret-scan.d.ts +7 -5
- package/dist/validation/secret-scan.d.ts.map +1 -1
- package/dist/validation/secret-scan.js +7 -5
- package/dist/validation/secret-scan.js.map +1 -1
- package/dist/workflow/schema.d.ts.map +1 -1
- package/dist/workflow/schema.js +27 -1
- package/dist/workflow/schema.js.map +1 -1
- package/package.json +23 -9
package/dist/memory/add.js
CHANGED
|
@@ -6,6 +6,10 @@ exports.hasNumericToken = hasNumericToken;
|
|
|
6
6
|
exports.resolveTypeDirectory = resolveTypeDirectory;
|
|
7
7
|
exports.nextSequenceNumber = nextSequenceNumber;
|
|
8
8
|
exports.renderAddDocument = renderAddDocument;
|
|
9
|
+
exports.parseSetOptions = parseSetOptions;
|
|
10
|
+
exports.unknownSetNames = unknownSetNames;
|
|
11
|
+
exports.expandFieldTokens = expandFieldTokens;
|
|
12
|
+
exports.writtenFields = writtenFields;
|
|
9
13
|
/**
|
|
10
14
|
* Pure/domain helpers behind `wingfoil memory add` (P1.3, task-020-implement-memory-add). Factored
|
|
11
15
|
* out of the `CoreResult`-wrapped orchestration in `src/core` so that (mirroring `dna set`'s split —
|
|
@@ -25,13 +29,17 @@ const TOKEN_RE = /\{([^{}]+)\}/g;
|
|
|
25
29
|
/**
|
|
26
30
|
* Turn a human `--title` into a single, valid `[a-z0-9-.]` ID slug piece (spec-009-validation-strategy
|
|
27
31
|
* §1's ID character class, the same one `generateId` enforces): lowercase, every run of characters
|
|
28
|
-
* outside `[a-z0-9]` collapsed to one `-`, and no leading/trailing/doubled
|
|
29
|
-
*
|
|
32
|
+
* outside `[a-z0-9]` collapsed to one `-`, and no leading/trailing/doubled `-` — except that a run
|
|
33
|
+
* consisting of exactly one `.` between two alphanumerics is **kept** (`v0.2` → `v0.2`,
|
|
34
|
+
* `dl-107` S1 (a), task-110). That is the character rule `generateId`'s Pass-B slug check
|
|
35
|
+
* (`[a-z0-9.]+(?:-[a-z0-9.]+)*`) already accepts, so the slugifier and the validator share one rule
|
|
36
|
+
* instead of the slug being stricter than the id it feeds. Ids added before this rule are untouched:
|
|
37
|
+
* an id is immutable once added.
|
|
30
38
|
*/
|
|
31
39
|
function slugifyTitle(title) {
|
|
32
40
|
return title
|
|
33
41
|
.toLowerCase()
|
|
34
|
-
.replace(/[^a-z0-9]+/g, '-')
|
|
42
|
+
.replace(/[^a-z0-9]+/g, (run, offset, text) => run === '.' && offset > 0 && offset + run.length < text.length ? '.' : '-')
|
|
35
43
|
.replace(/^-+|-+$/g, '');
|
|
36
44
|
}
|
|
37
45
|
/**
|
|
@@ -62,10 +70,11 @@ function hasNumericToken(idPattern) {
|
|
|
62
70
|
* (spec-001-memory-yaml-schema `MemoryTypeEntry.path`, e.g. `docs/memory/decision/{id}.md`) rendered
|
|
63
71
|
* with a dummy `{id}` and reduced to its containing directory. The directory portion never depends on
|
|
64
72
|
* the concrete id value, so this is well-defined before the id is generated (used by
|
|
65
|
-
* {@link nextSequenceNumber} to count existing siblings).
|
|
73
|
+
* {@link nextSequenceNumber} to count existing siblings). `values` fills any other path token —
|
|
74
|
+
* `{release-line}`, `{scope}` — from `memory add --set` (task-110); `id` is always the dummy.
|
|
66
75
|
*/
|
|
67
|
-
function resolveTypeDirectory(root, pathPattern) {
|
|
68
|
-
return (0, path_1.dirname)((0, path_1.join)(root, (0, storage_1.renderMemoryPath)(pathPattern, { id: '__id__' })));
|
|
76
|
+
function resolveTypeDirectory(root, pathPattern, values = {}) {
|
|
77
|
+
return (0, path_1.dirname)((0, path_1.join)(root, (0, storage_1.renderMemoryPath)(pathPattern, { ...values, id: '__id__' })));
|
|
69
78
|
}
|
|
70
79
|
/**
|
|
71
80
|
* The next sequence number for a `{n}`-token id: `1 +` the count of existing files in `dir` whose
|
|
@@ -105,7 +114,8 @@ function setFrontmatterField(frontmatter, key, valueYaml) {
|
|
|
105
114
|
/**
|
|
106
115
|
* Copy a type's `template.file` scaffold verbatim and fill only the frontmatter skeleton `memory.add`
|
|
107
116
|
* pins (P1.3; spec-010-memory-frontmatter-schema): the generated `id`, the `--title`, the
|
|
108
|
-
* initial `status: draft`,
|
|
117
|
+
* initial `status: draft`, when `--tags` was supplied the `tags` flow sequence, and the `--set` fields
|
|
118
|
+
* {@link AddDocumentFields.fields} carries (task-110). Every other
|
|
109
119
|
* field (notably `type` and `tmpl_version`, spec-010: not touched by add) and the whole body are left
|
|
110
120
|
* exactly as the scaffold had them. `title`/`tags` are JSON-quoted (valid YAML double-quoted scalars /
|
|
111
121
|
* flow sequences), so an arbitrary title with spaces or colons is written safely.
|
|
@@ -126,6 +136,119 @@ function renderAddDocument(scaffold, fields) {
|
|
|
126
136
|
const flow = `[${fields.tags.map((tag) => JSON.stringify(tag)).join(',')}]`;
|
|
127
137
|
fm = setFrontmatterField(fm, 'tags', flow);
|
|
128
138
|
}
|
|
139
|
+
for (const [name, value] of fields.fields ?? []) {
|
|
140
|
+
fm = setFrontmatterField(fm, name, JSON.stringify(value));
|
|
141
|
+
}
|
|
129
142
|
return `---\n${fm}\n---\n${body}`;
|
|
130
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* Names `memory add --set` refuses (`spec-008-cli-grammar` §10): the fields `memory add` fills itself
|
|
146
|
+
* or through its own option (`id`, `type`, `status`, `title`, `tags`), and the tokens with a source of
|
|
147
|
+
* their own (`n`, `slug`, `date`, `author` — `spec-001`'s placeholder table).
|
|
148
|
+
*/
|
|
149
|
+
const RESERVED_SET_NAMES = new Set(['id', 'type', 'status', 'title', 'tags', 'n', 'slug', 'date', 'author']);
|
|
150
|
+
/** A `--set` field name: `[a-z][a-z0-9_-]*` — the same shape `idPatternIssues` accepts for a token. */
|
|
151
|
+
const SET_NAME_RE = /^[a-z][a-z0-9_-]*$/;
|
|
152
|
+
/**
|
|
153
|
+
* Tokens that are workflow **context** rather than a frontmatter field (`spec-001`, `dl-107` S2 (c)):
|
|
154
|
+
* written into the document only where its template declares a field of that name.
|
|
155
|
+
*/
|
|
156
|
+
const CONTEXT_TOKENS = new Set(['workflow', 'phase', 'scope']);
|
|
157
|
+
/**
|
|
158
|
+
* Parse `memory add`'s repeatable `--set <name>=<value>` occurrences (`spec-008-cli-grammar` §10,
|
|
159
|
+
* task-110). The CLI hands every occurrence as a string array; a single string is one occurrence;
|
|
160
|
+
* `undefined` is none. `<name>` is split from `<value>` at the FIRST `=`.
|
|
161
|
+
*
|
|
162
|
+
* Every refusal here is a property of how the argument is spelled, decided before anything is read,
|
|
163
|
+
* so the caller raises it as a usage error (exit 2) — the first failing occurrence, in the order
|
|
164
|
+
* given, with §10's exact message. Pure and order-preserving (REQ-SYS-07).
|
|
165
|
+
*/
|
|
166
|
+
function parseSetOptions(raw) {
|
|
167
|
+
const occurrences = raw === undefined ? [] : typeof raw === 'string' ? [raw] : raw;
|
|
168
|
+
const values = {};
|
|
169
|
+
for (const occurrence of occurrences) {
|
|
170
|
+
const eq = occurrence.indexOf('=');
|
|
171
|
+
if (eq <= 0) {
|
|
172
|
+
return { ok: false, message: `invalid flag value: --set expects <name>=<value>, got "${occurrence}"` };
|
|
173
|
+
}
|
|
174
|
+
const name = occurrence.slice(0, eq);
|
|
175
|
+
const value = occurrence.slice(eq + 1);
|
|
176
|
+
if (!SET_NAME_RE.test(name)) {
|
|
177
|
+
return { ok: false, message: `invalid flag value: --set name "${name}" is not a field name ([a-z][a-z0-9_-]*)` };
|
|
178
|
+
}
|
|
179
|
+
if (RESERVED_SET_NAMES.has(name)) {
|
|
180
|
+
return {
|
|
181
|
+
ok: false,
|
|
182
|
+
message: `invalid flag value: --set cannot set "${name}": memory add fills it itself or through its own option`,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
if (value.trim().length === 0) {
|
|
186
|
+
return { ok: false, message: `invalid flag value: --set ${name} must not be blank` };
|
|
187
|
+
}
|
|
188
|
+
if (Object.prototype.hasOwnProperty.call(values, name)) {
|
|
189
|
+
return { ok: false, message: `invalid flag value: --set ${name} given more than once` };
|
|
190
|
+
}
|
|
191
|
+
values[name] = value;
|
|
192
|
+
}
|
|
193
|
+
return { ok: true, values };
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* The `--set` names a type's committed patterns cannot use: every name that is not a token of its
|
|
197
|
+
* `id_pattern` or of its `path` (other than `{id}`), in the order given. `memory add` refuses them
|
|
198
|
+
* (exit 1, `spec-008` §10) rather than writing a field no token reads.
|
|
199
|
+
*/
|
|
200
|
+
function unknownSetNames(values, idPattern, pathPattern) {
|
|
201
|
+
const tokens = new Set([...(0, validation_1.patternTokens)(idPattern), ...(0, validation_1.patternTokens)(pathPattern)]);
|
|
202
|
+
tokens.delete('id');
|
|
203
|
+
return Object.keys(values).filter((name) => !tokens.has(name));
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Materialize an `id_pattern`'s frontmatter and context tokens (`{kind}`, `{version}`, `{workflow}`,
|
|
207
|
+
* …) from the `--set` values, leaving `{slug}`, the `{n}` family and the not-yet-implemented
|
|
208
|
+
* `{date}`/`{author}` in place — `spec-001`'s fixed expansion order (`{date}` → `{author}` → field and
|
|
209
|
+
* context tokens → `{slug}` → `{n}`), so the `{n}` counter regexp built from the result sees a
|
|
210
|
+
* fully-materialized prefix (task-110).
|
|
211
|
+
*
|
|
212
|
+
* @throws {@link ValidationError} naming every field token with no value
|
|
213
|
+
* (`missing value for token {<name>}: give it with --set <name>=<value>`) and every value outside
|
|
214
|
+
* the ID character class, in pattern order — the same `E_INVALID_ID` code `generateId` raises.
|
|
215
|
+
*/
|
|
216
|
+
function expandFieldTokens(idPattern, values) {
|
|
217
|
+
const issues = [];
|
|
218
|
+
const expanded = idPattern.replace(TOKEN_RE, (whole, token) => {
|
|
219
|
+
if (/^n+$/.test(token) || RESERVED_SET_NAMES.has(token))
|
|
220
|
+
return whole;
|
|
221
|
+
const value = values[token];
|
|
222
|
+
if (value === undefined) {
|
|
223
|
+
issues.push(fieldIssue(idPattern, `missing value for token {${token}}: give it with --set ${token}=<value>`));
|
|
224
|
+
return whole;
|
|
225
|
+
}
|
|
226
|
+
if (!(0, validation_1.isIdPiece)(value)) {
|
|
227
|
+
issues.push(fieldIssue(idPattern, `value for token {${token}} is not a valid [a-z0-9-.] piece: "${value}"`));
|
|
228
|
+
return whole;
|
|
229
|
+
}
|
|
230
|
+
return value;
|
|
231
|
+
});
|
|
232
|
+
if (issues.length > 0)
|
|
233
|
+
throw new validation_1.ValidationError(issues);
|
|
234
|
+
return expanded;
|
|
235
|
+
}
|
|
236
|
+
function fieldIssue(pattern, message) {
|
|
237
|
+
return { code: 'E_INVALID_ID', path: 'id', file: pattern, message };
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* The `--set` values `memory add` writes into the new document's frontmatter, as `[name, value]`
|
|
241
|
+
* pairs sorted by name (REQ-SYS-07). A field token is always written, so the id and the field cannot
|
|
242
|
+
* disagree (`dl-107` S2 (a)); a context token (`workflow`, `phase`, `scope`) only where the committed
|
|
243
|
+
* scaffold's frontmatter declares that key (`dl-107` S2 (c) — `plan` declares `workflow` and `phase`,
|
|
244
|
+
* not `scope`).
|
|
245
|
+
*/
|
|
246
|
+
function writtenFields(scaffold, values) {
|
|
247
|
+
const { frontmatter } = (0, storage_1.splitFrontmatter)(scaffold);
|
|
248
|
+
const declared = (key) => frontmatter !== null && new RegExp(`^[ \\t]*${escapeRegExp(key)}:`, 'm').test(frontmatter);
|
|
249
|
+
return Object.keys(values)
|
|
250
|
+
.sort()
|
|
251
|
+
.filter((name) => !CONTEXT_TOKENS.has(name) || declared(name))
|
|
252
|
+
.map((name) => [name, values[name]]);
|
|
253
|
+
}
|
|
131
254
|
//# sourceMappingURL=add.js.map
|
package/dist/memory/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/memory/add.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/memory/add.ts"],"names":[],"mappings":"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"}
|
package/dist/memory/audit.d.ts
CHANGED
|
@@ -139,7 +139,7 @@ export interface MemoryTransition {
|
|
|
139
139
|
* guesses.
|
|
140
140
|
*
|
|
141
141
|
* This was never the hypothetical the TSDoc here used to call "a documented edge case, not a live
|
|
142
|
-
* defect": `
|
|
142
|
+
* defect": the Memory folder's `planning/v1/*` became `planning/rl-v1/*` in a single commit,
|
|
143
143
|
* moving five `release` elements at once, precisely BECAUSE the `release` type's `path` pattern
|
|
144
144
|
* interpolates a component — the release-line id — that itself changed. Any edit to a `path`
|
|
145
145
|
* pattern, or to an id one interpolates, renames documents.
|
|
@@ -152,6 +152,7 @@ export interface MemoryTransition {
|
|
|
152
152
|
export declare function reconstructMemoryTransitions(root: string, relativePath: string): MemoryTransition[];
|
|
153
153
|
/** One disagreement between the commit subject's `[old → new]` bracket and the frontmatter actually committed. */
|
|
154
154
|
export interface ConsistencyMismatch {
|
|
155
|
+
readonly kind: 'mismatch';
|
|
155
156
|
readonly sha: string;
|
|
156
157
|
readonly subject: string;
|
|
157
158
|
readonly declared: {
|
|
@@ -163,15 +164,34 @@ export interface ConsistencyMismatch {
|
|
|
163
164
|
readonly to: string | null;
|
|
164
165
|
};
|
|
165
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* A `wf(…)` commit subject that carries a bracket (a `[` or a `]`) which reads as a transition in
|
|
169
|
+
* neither arrow form — an unknown arrow (`[triaged => planned]`), an unbalanced bracket, a bracket with
|
|
170
|
+
* no from-state, or a trailing bracket that is not a transition. It is reported rather than skipped so
|
|
171
|
+
* that an empty result from {@link verifyTransitionConsistency} means "checked", never "passed over"
|
|
172
|
+
* (`task-109`, `bug-137`).
|
|
173
|
+
*/
|
|
174
|
+
export interface UnparseableTransition {
|
|
175
|
+
readonly kind: 'unparseable';
|
|
176
|
+
readonly sha: string;
|
|
177
|
+
readonly subject: string;
|
|
178
|
+
}
|
|
179
|
+
/** One finding of {@link verifyTransitionConsistency}, discriminated by `kind`. */
|
|
180
|
+
export type TransitionFinding = ConsistencyMismatch | UnparseableTransition;
|
|
166
181
|
/**
|
|
167
182
|
* Cross-check, for every transition that carries a `[old → new]` bracket in its subject (`approve`/
|
|
168
183
|
* `reject`/`deprecate`, per CLAUDE.md §5.1 — a plain `add`/`submit` subject has no bracket and is
|
|
169
184
|
* skipped), that the bracket's declared states agree with the states independently derived from the
|
|
170
|
-
* document's own frontmatter at that commit ({@link reconstructMemoryTransitions}).
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
185
|
+
* document's own frontmatter at that commit ({@link reconstructMemoryTransitions}).
|
|
186
|
+
*
|
|
187
|
+
* The bracket is read in either arrow form, `→` or `->`, with the same result. A `wf(…)` subject that
|
|
188
|
+
* carries a bracket readable in neither form is reported as an {@link UnparseableTransition} instead
|
|
189
|
+
* of being passed over; a subject outside the `wf(…)` grammar that merely quotes a bracket in prose is
|
|
190
|
+
* not. Returns `[]` when every bracketed transition was parsed and agrees — REQ-SEC-02/REQ-STATE-02's
|
|
191
|
+
* "no drift between the two views"; any entry is either a genuine inconsistency (e.g. a hand-edited
|
|
192
|
+
* commit message that doesn't match what was actually written to disk) or a bracket the check could
|
|
193
|
+
* not read.
|
|
174
194
|
*/
|
|
175
|
-
export declare function verifyTransitionConsistency(root: string, relativePath: string):
|
|
195
|
+
export declare function verifyTransitionConsistency(root: string, relativePath: string): TransitionFinding[];
|
|
176
196
|
export {};
|
|
177
197
|
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/memory/audit.ts"],"names":[],"mappings":"AA2CA,kGAAkG;AAClG,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4FAA4F;IAC5F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4FAA4F;IAC5F,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAQD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAMvE;AAID;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAY/F;AAID,kGAAkG;AAClG,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAUD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE7D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAO3E;AAID,+GAA+G;AAC/G,KAAK,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAI7E;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC3C;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AA8CD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAuBnG;AAID,kHAAkH;AAClH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CAChF;
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/memory/audit.ts"],"names":[],"mappings":"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"}
|
package/dist/memory/audit.js
CHANGED
|
@@ -218,7 +218,7 @@ function readStatusAt(root, sha, historicalPath) {
|
|
|
218
218
|
* guesses.
|
|
219
219
|
*
|
|
220
220
|
* This was never the hypothetical the TSDoc here used to call "a documented edge case, not a live
|
|
221
|
-
* defect": `
|
|
221
|
+
* defect": the Memory folder's `planning/v1/*` became `planning/rl-v1/*` in a single commit,
|
|
222
222
|
* moving five `release` elements at once, precisely BECAUSE the `release` type's `path` pattern
|
|
223
223
|
* interpolates a component — the release-line id — that itself changed. Any edit to a `path`
|
|
224
224
|
* pattern, or to an id one interpolates, renames documents.
|
|
@@ -252,29 +252,45 @@ function reconstructMemoryTransitions(root, relativePath) {
|
|
|
252
252
|
return transitions;
|
|
253
253
|
}
|
|
254
254
|
// Matches the `[old-state → new-state]` bracket CLAUDE.md §5.1 mandates on approve/reject/deprecate
|
|
255
|
-
// subjects
|
|
256
|
-
|
|
255
|
+
// subjects. The canonical arrow is U+2192 (`./commit-message.ts` writes only that one); the ASCII
|
|
256
|
+
// `->` is read as its equivalent, because hand-written history carries it (`bug-137`). The lazy first
|
|
257
|
+
// group stops at the FIRST arrow, so a multi-hop `[a → b → c]` keeps its historical reading:
|
|
258
|
+
// from `a`, to `b → c`.
|
|
259
|
+
const BRACKET_RE = /\[([^[\]]+?)\s*(?:→|->)\s*([^[\]]+?)\]\s*$/;
|
|
260
|
+
// A subject in the Memory commit grammar (`wf({type}): …`) that contains any bracket character — the
|
|
261
|
+
// set of subjects that must either parse with {@link BRACKET_RE} or be reported as unparseable.
|
|
262
|
+
const WF_SUBJECT_WITH_BRACKET_RE = /^wf\([^)]*\):.*[[\]]/;
|
|
257
263
|
/**
|
|
258
264
|
* Cross-check, for every transition that carries a `[old → new]` bracket in its subject (`approve`/
|
|
259
265
|
* `reject`/`deprecate`, per CLAUDE.md §5.1 — a plain `add`/`submit` subject has no bracket and is
|
|
260
266
|
* skipped), that the bracket's declared states agree with the states independently derived from the
|
|
261
|
-
* document's own frontmatter at that commit ({@link reconstructMemoryTransitions}).
|
|
262
|
-
*
|
|
263
|
-
*
|
|
264
|
-
*
|
|
267
|
+
* document's own frontmatter at that commit ({@link reconstructMemoryTransitions}).
|
|
268
|
+
*
|
|
269
|
+
* The bracket is read in either arrow form, `→` or `->`, with the same result. A `wf(…)` subject that
|
|
270
|
+
* carries a bracket readable in neither form is reported as an {@link UnparseableTransition} instead
|
|
271
|
+
* of being passed over; a subject outside the `wf(…)` grammar that merely quotes a bracket in prose is
|
|
272
|
+
* not. Returns `[]` when every bracketed transition was parsed and agrees — REQ-SEC-02/REQ-STATE-02's
|
|
273
|
+
* "no drift between the two views"; any entry is either a genuine inconsistency (e.g. a hand-edited
|
|
274
|
+
* commit message that doesn't match what was actually written to disk) or a bracket the check could
|
|
275
|
+
* not read.
|
|
265
276
|
*/
|
|
266
277
|
function verifyTransitionConsistency(root, relativePath) {
|
|
267
278
|
const transitions = reconstructMemoryTransitions(root, relativePath);
|
|
268
|
-
const
|
|
279
|
+
const findings = [];
|
|
269
280
|
for (const transition of transitions) {
|
|
270
281
|
const match = BRACKET_RE.exec(transition.subject);
|
|
271
|
-
if (!match)
|
|
282
|
+
if (!match) {
|
|
283
|
+
if (WF_SUBJECT_WITH_BRACKET_RE.test(transition.subject)) {
|
|
284
|
+
findings.push({ kind: 'unparseable', sha: transition.sha, subject: transition.subject });
|
|
285
|
+
}
|
|
272
286
|
continue;
|
|
287
|
+
}
|
|
273
288
|
const [, declaredFromRaw = '', declaredToRaw = ''] = match;
|
|
274
289
|
const declaredFrom = declaredFromRaw.trim();
|
|
275
290
|
const declaredTo = declaredToRaw.trim();
|
|
276
291
|
if (declaredFrom !== transition.fromState || declaredTo !== transition.toState) {
|
|
277
|
-
|
|
292
|
+
findings.push({
|
|
293
|
+
kind: 'mismatch',
|
|
278
294
|
sha: transition.sha,
|
|
279
295
|
subject: transition.subject,
|
|
280
296
|
declared: { from: declaredFrom, to: declaredTo },
|
|
@@ -282,6 +298,6 @@ function verifyTransitionConsistency(root, relativePath) {
|
|
|
282
298
|
});
|
|
283
299
|
}
|
|
284
300
|
}
|
|
285
|
-
return
|
|
301
|
+
return findings;
|
|
286
302
|
}
|
|
287
303
|
//# sourceMappingURL=audit.js.map
|
package/dist/memory/audit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/memory/audit.ts"],"names":[],"mappings":";;AAkFA,gDAMC;AAaD,4CAYC;AA+CD,8CAEC;AAkBD,sDAOC;AA4GD,oEAuBC;
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/memory/audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ exports.reasonDefect = reasonDefect;
|
|
|
6
6
|
exports.parseReasonBlock = parseReasonBlock;
|
|
7
7
|
exports.parseApproverTrailerLine = parseApproverTrailerLine;
|
|
8
8
|
exports.formatMemoryCommitMessage = formatMemoryCommitMessage;
|
|
9
|
-
/** The arrow
|
|
9
|
+
/** The canonical arrow written in `[from → to]` subject brackets (U+2192); `./audit.ts`'s `BRACKET_RE` also reads the ASCII `->` (`bug-137`). */
|
|
10
10
|
const ARROW = '→';
|
|
11
11
|
// --- The reason grammar (dl-067-reason-trailer-contract) ---------------------------------------
|
|
12
12
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit-message.js","sourceRoot":"","sources":["../../src/memory/commit-message.ts"],"names":[],"mappings":";;AAkFA,kDAEC;AAsBD,0CAUC;AAqBD,oCAaC;AAqCD,4CAUC;AAWD,4DAMC;AA0CD,8DAmBC;AAxPD,
|
|
1
|
+
{"version":3,"file":"commit-message.js","sourceRoot":"","sources":["../../src/memory/commit-message.ts"],"names":[],"mappings":"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"}
|
package/dist/memory/history.d.ts
CHANGED
|
@@ -29,7 +29,7 @@ export interface MemoryHistoryEntry {
|
|
|
29
29
|
* kinds of edge, and they mean opposite things for an audit trail:
|
|
30
30
|
*
|
|
31
31
|
* - **`R` (rename)** — the element continuing under a new name. Keep following. This is not a
|
|
32
|
-
* hypothetical requirement: `
|
|
32
|
+
* hypothetical requirement: the Memory folder's `planning/v1/*` became `planning/rl-v1/*` in
|
|
33
33
|
* one commit in this repository, moving five `release` elements at once, because the `release`
|
|
34
34
|
* type's `path` pattern interpolates the release-line id (`memory.yaml`). For one of them a plain
|
|
35
35
|
* `git log -- <path>` returns a single commit where the followed walk returns seven, so dropping
|
package/dist/memory/history.js
CHANGED
|
@@ -54,7 +54,7 @@ const CREATION_PROBE_ARGS = ['--follow', '--diff-filter=C', '--format=%H'];
|
|
|
54
54
|
* kinds of edge, and they mean opposite things for an audit trail:
|
|
55
55
|
*
|
|
56
56
|
* - **`R` (rename)** — the element continuing under a new name. Keep following. This is not a
|
|
57
|
-
* hypothetical requirement: `
|
|
57
|
+
* hypothetical requirement: the Memory folder's `planning/v1/*` became `planning/rl-v1/*` in
|
|
58
58
|
* one commit in this repository, moving five `release` elements at once, because the `release`
|
|
59
59
|
* type's `path` pattern interpolates the release-line id (`memory.yaml`). For one of them a plain
|
|
60
60
|
* `git log -- <path>` returns a single commit where the followed walk returns seven, so dropping
|
package/dist/memory/index.d.ts
CHANGED
|
@@ -45,8 +45,8 @@ export { getMemoryHistory } from './history';
|
|
|
45
45
|
export type { MemoryHistoryEntry } from './history';
|
|
46
46
|
export { writeMemoryEntry } from './entry';
|
|
47
47
|
export type { MemoryEntryWrite } from './entry';
|
|
48
|
-
export { hasNumericToken, nextSequenceNumber, parseTags, renderAddDocument, resolveTypeDirectory, slugifyTitle, } from './add';
|
|
49
|
-
export type { AddDocumentFields } from './add';
|
|
48
|
+
export { expandFieldTokens, hasNumericToken, nextSequenceNumber, parseSetOptions, parseTags, renderAddDocument, resolveTypeDirectory, slugifyTitle, unknownSetNames, writtenFields, } from './add';
|
|
49
|
+
export type { AddDocumentFields, ParsedSetOptions } from './add';
|
|
50
50
|
export { formatMemoryCommitMessage, normalizeReason, parseApproverTrailerLine, parseReasonBlock, reasonDefect, reasonDefectMessage, } from './commit-message';
|
|
51
51
|
export type { CommitApprover, MemoryCommitMessageInput, ReasonDefect } from './commit-message';
|
|
52
52
|
export { describeDocumentChanges, removeFrontmatterField, setFrontmatterField, verifyDocumentEdit, verifyFrontmatterEdit, } from './frontmatter-edit';
|
|
@@ -54,5 +54,5 @@ export type { DocumentScope } from './frontmatter-edit';
|
|
|
54
54
|
export { missingRequiredFields, REJECTION_REASON_FIELD, renderSubmitDocument } from './submit';
|
|
55
55
|
export { renderRejectDocument } from './reject';
|
|
56
56
|
export { auditAttribution, isValidAttribution, parseApprovalMetadata, parseCommitReason, reconstructMemoryTransitions, verifyTransitionConsistency, } from './audit';
|
|
57
|
-
export type { AttributionEntry, ApprovalMetadata, MemoryTransition, ConsistencyMismatch } from './audit';
|
|
57
|
+
export type { AttributionEntry, ApprovalMetadata, MemoryTransition, ConsistencyMismatch, TransitionFinding, UnparseableTransition, } from './audit';
|
|
58
58
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,WAAW,EAAG,QAAiB,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,gCAAgC,EAChC,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,WAAW,EAAG,QAAiB,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,gCAAgC,EAChC,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,aAAa,GACd,MAAM,OAAO,CAAC;AACf,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EACL,yBAAyB,EACzB,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,cAAc,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,SAAS,CAAC"}
|
package/dist/memory/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.verifyTransitionConsistency = exports.reconstructMemoryTransitions = exports.parseCommitReason = exports.parseApprovalMetadata = void 0;
|
|
3
|
+
exports.REJECTION_REASON_FIELD = exports.missingRequiredFields = exports.verifyFrontmatterEdit = exports.verifyDocumentEdit = exports.setFrontmatterField = exports.removeFrontmatterField = exports.describeDocumentChanges = exports.reasonDefectMessage = exports.reasonDefect = exports.parseReasonBlock = exports.parseApproverTrailerLine = exports.normalizeReason = exports.formatMemoryCommitMessage = exports.writtenFields = exports.unknownSetNames = exports.slugifyTitle = exports.resolveTypeDirectory = exports.renderAddDocument = exports.parseTags = exports.parseSetOptions = exports.nextSequenceNumber = exports.hasNumericToken = exports.expandFieldTokens = exports.writeMemoryEntry = exports.getMemoryHistory = exports.validateSearchQuery = exports.searchMemoryDocuments = exports.loadMemoryDocumentSummary = exports.listMemoryDocumentsByType = exports.listMemoryDocumentPaths = exports.findMemoryDocumentByTypeAndId = exports.findMemoryDocumentById = exports.E_EMPTY_SEARCH_QUERY = exports.computeMemoryContentRoots = exports.validateFrontmatterState = exports.SUPERSEDED_STATE = exports.resolveTypeTransition = exports.resolveTransitionTarget = exports.resolveStateMachine = exports.isArchivedStatus = exports.E_INVALID_TRANSITION = exports.E_INVALID_STATE = exports.DEPRECATED_STATE = exports.DEFAULT_STATE_MACHINE = exports.ARCHIVED_STATUSES = exports.TemplateConfig = exports.StateMachine = exports.MemoryTypeEntry = exports.MemoryYaml = exports.MODULE_NAME = void 0;
|
|
4
|
+
exports.verifyTransitionConsistency = exports.reconstructMemoryTransitions = exports.parseCommitReason = exports.parseApprovalMetadata = exports.isValidAttribution = exports.auditAttribution = exports.renderRejectDocument = exports.renderSubmitDocument = void 0;
|
|
5
5
|
/**
|
|
6
6
|
* `memory` module — Project Memory pillar; git-backed documents with per-type state machines
|
|
7
7
|
* (P1.13). `memory.yaml`'s schema (spec-001-memory-yaml-schema) lives here — the pillar owns its own
|
|
@@ -72,12 +72,16 @@ Object.defineProperty(exports, "getMemoryHistory", { enumerable: true, get: func
|
|
|
72
72
|
var entry_1 = require("./entry");
|
|
73
73
|
Object.defineProperty(exports, "writeMemoryEntry", { enumerable: true, get: function () { return entry_1.writeMemoryEntry; } });
|
|
74
74
|
var add_1 = require("./add");
|
|
75
|
+
Object.defineProperty(exports, "expandFieldTokens", { enumerable: true, get: function () { return add_1.expandFieldTokens; } });
|
|
75
76
|
Object.defineProperty(exports, "hasNumericToken", { enumerable: true, get: function () { return add_1.hasNumericToken; } });
|
|
76
77
|
Object.defineProperty(exports, "nextSequenceNumber", { enumerable: true, get: function () { return add_1.nextSequenceNumber; } });
|
|
78
|
+
Object.defineProperty(exports, "parseSetOptions", { enumerable: true, get: function () { return add_1.parseSetOptions; } });
|
|
77
79
|
Object.defineProperty(exports, "parseTags", { enumerable: true, get: function () { return add_1.parseTags; } });
|
|
78
80
|
Object.defineProperty(exports, "renderAddDocument", { enumerable: true, get: function () { return add_1.renderAddDocument; } });
|
|
79
81
|
Object.defineProperty(exports, "resolveTypeDirectory", { enumerable: true, get: function () { return add_1.resolveTypeDirectory; } });
|
|
80
82
|
Object.defineProperty(exports, "slugifyTitle", { enumerable: true, get: function () { return add_1.slugifyTitle; } });
|
|
83
|
+
Object.defineProperty(exports, "unknownSetNames", { enumerable: true, get: function () { return add_1.unknownSetNames; } });
|
|
84
|
+
Object.defineProperty(exports, "writtenFields", { enumerable: true, get: function () { return add_1.writtenFields; } });
|
|
81
85
|
var commit_message_1 = require("./commit-message");
|
|
82
86
|
Object.defineProperty(exports, "formatMemoryCommitMessage", { enumerable: true, get: function () { return commit_message_1.formatMemoryCommitMessage; } });
|
|
83
87
|
Object.defineProperty(exports, "normalizeReason", { enumerable: true, get: function () { return commit_message_1.normalizeReason; } });
|
package/dist/memory/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":";;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACU,QAAA,WAAW,GAAG,QAAiB,CAAC;AAE7C,mCAAqF;AAA5E,oGAAA,UAAU,OAAA;AAAE,yGAAA,eAAe,OAAA;AAAE,sGAAA,YAAY,OAAA;AAAE,wGAAA,cAAc,OAAA;AAClE,iDAYyB;AAXvB,kHAAA,iBAAiB,OAAA;AACjB,sHAAA,qBAAqB,OAAA;AACrB,iHAAA,gBAAgB,OAAA;AAChB,gHAAA,eAAe,OAAA;AACf,qHAAA,oBAAoB,OAAA;AACpB,iHAAA,gBAAgB,OAAA;AAChB,oHAAA,mBAAmB,OAAA;AACnB,wHAAA,uBAAuB,OAAA;AACvB,sHAAA,qBAAqB,OAAA;AACrB,iHAAA,gBAAgB,OAAA;AAChB,yHAAA,wBAAwB,OAAA;AAG1B,iCAUiB;AATf,kHAAA,yBAAyB,OAAA;AACzB,6GAAA,oBAAoB,OAAA;AACpB,+GAAA,sBAAsB,OAAA;AACtB,sHAAA,6BAA6B,OAAA;AAC7B,gHAAA,uBAAuB,OAAA;AACvB,kHAAA,yBAAyB,OAAA;AACzB,kHAAA,yBAAyB,OAAA;AACzB,8GAAA,qBAAqB,OAAA;AACrB,4GAAA,mBAAmB,OAAA;AAQrB,qCAA6C;AAApC,2GAAA,gBAAgB,OAAA;AAEzB,iCAA2C;AAAlC,yGAAA,gBAAgB,OAAA;AAEzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":";;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACU,QAAA,WAAW,GAAG,QAAiB,CAAC;AAE7C,mCAAqF;AAA5E,oGAAA,UAAU,OAAA;AAAE,yGAAA,eAAe,OAAA;AAAE,sGAAA,YAAY,OAAA;AAAE,wGAAA,cAAc,OAAA;AAClE,iDAYyB;AAXvB,kHAAA,iBAAiB,OAAA;AACjB,sHAAA,qBAAqB,OAAA;AACrB,iHAAA,gBAAgB,OAAA;AAChB,gHAAA,eAAe,OAAA;AACf,qHAAA,oBAAoB,OAAA;AACpB,iHAAA,gBAAgB,OAAA;AAChB,oHAAA,mBAAmB,OAAA;AACnB,wHAAA,uBAAuB,OAAA;AACvB,sHAAA,qBAAqB,OAAA;AACrB,iHAAA,gBAAgB,OAAA;AAChB,yHAAA,wBAAwB,OAAA;AAG1B,iCAUiB;AATf,kHAAA,yBAAyB,OAAA;AACzB,6GAAA,oBAAoB,OAAA;AACpB,+GAAA,sBAAsB,OAAA;AACtB,sHAAA,6BAA6B,OAAA;AAC7B,gHAAA,uBAAuB,OAAA;AACvB,kHAAA,yBAAyB,OAAA;AACzB,kHAAA,yBAAyB,OAAA;AACzB,8GAAA,qBAAqB,OAAA;AACrB,4GAAA,mBAAmB,OAAA;AAQrB,qCAA6C;AAApC,2GAAA,gBAAgB,OAAA;AAEzB,iCAA2C;AAAlC,yGAAA,gBAAgB,OAAA;AAEzB,6BAWe;AAVb,wGAAA,iBAAiB,OAAA;AACjB,sGAAA,eAAe,OAAA;AACf,yGAAA,kBAAkB,OAAA;AAClB,sGAAA,eAAe,OAAA;AACf,gGAAA,SAAS,OAAA;AACT,wGAAA,iBAAiB,OAAA;AACjB,2GAAA,oBAAoB,OAAA;AACpB,mGAAA,YAAY,OAAA;AACZ,sGAAA,eAAe,OAAA;AACf,oGAAA,aAAa,OAAA;AAGf,mDAO0B;AANxB,2HAAA,yBAAyB,OAAA;AACzB,iHAAA,eAAe,OAAA;AACf,0HAAA,wBAAwB,OAAA;AACxB,kHAAA,gBAAgB,OAAA;AAChB,8GAAA,YAAY,OAAA;AACZ,qHAAA,mBAAmB,OAAA;AAGrB,uDAM4B;AAL1B,2HAAA,uBAAuB,OAAA;AACvB,0HAAA,sBAAsB,OAAA;AACtB,uHAAA,mBAAmB,OAAA;AACnB,sHAAA,kBAAkB,OAAA;AAClB,yHAAA,qBAAqB,OAAA;AAGvB,mCAA+F;AAAtF,+GAAA,qBAAqB,OAAA;AAAE,gHAAA,sBAAsB,OAAA;AAAE,8GAAA,oBAAoB,OAAA;AAC5E,mCAAgD;AAAvC,8GAAA,oBAAoB,OAAA;AAC7B,iCAOiB;AANf,yGAAA,gBAAgB,OAAA;AAChB,2GAAA,kBAAkB,OAAA;AAClB,8GAAA,qBAAqB,OAAA;AACrB,0GAAA,iBAAiB,OAAA;AACjB,qHAAA,4BAA4B,OAAA;AAC5B,oHAAA,2BAA2B,OAAA"}
|
|
@@ -65,7 +65,7 @@ exports.validateFrontmatterState = validateFrontmatterState;
|
|
|
65
65
|
*
|
|
66
66
|
* **Type resolution (REQ-STATE-08):** `resolveStateMachine` resolves a type's machine as
|
|
67
67
|
* `types.<name>.states ?? defaults.states ?? `{@link DEFAULT_STATE_MACHINE}. task-005's own tests
|
|
68
|
-
* exercise only the real types registered in
|
|
68
|
+
* exercise only the real types registered in `.wingfoil/memory.yaml`, every one of which
|
|
69
69
|
* declares its own `states` block — so the `?? defaults.states` arm was left uncovered by that task,
|
|
70
70
|
* and `task-010-default-state-machine-fallback` closed that gap with a throwaway fixture type
|
|
71
71
|
* (declared with no `states:` key) in `test/memory/state-machine.test.ts`. The **third** arm is
|
|
@@ -361,7 +361,7 @@ function resolveTypeTransition(memoryYaml, typeName, currentState, op, filePath
|
|
|
361
361
|
* are not. Omitting this arm is what task-036's first pass got wrong: the `reject` verb would write
|
|
362
362
|
* a status that this very function then declared invalid, leaving the document unmovable —
|
|
363
363
|
* a REQ-SYS-04 violation for a config shape spec-001 names by example. No type registered in
|
|
364
|
-
*
|
|
364
|
+
* `.wingfoil/memory.yaml` currently exercises it (all three of its reject targets —
|
|
365
365
|
* `draft`, `closed`, `in-progress` — happen to be `sequence` members), so it is covered by a
|
|
366
366
|
* synthetic fixture machine in `test/memory/state-machine.test.ts`.
|
|
367
367
|
* 3. **{@link DEPRECATED_STATE}** — the reserved implicit wildcard target every type reaches via
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/storage/templates.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAE3D,wGAAwG;AACxG,MAAM,WAAW,kBAAkB;IACjC,oGAAoG;IACpG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,wFAAwF;IACxF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yFAAyF;IACzF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAkBD,8FAA8F;AAC9F,eAAO,MAAM,SAAS,EAAE,SAAS,kBAAkB,EAAoB,CAAC;AAExE,kGAAkG;AAClG,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAAiC,CAAC;AAE9E,uGAAuG;AACvG,eAAO,MAAM,gBAAgB,EAAE,MAAmB,CAAC;AAEnD,oGAAoG;AACpG,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAGvE;AAED,iGAAiG;AACjG,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,CAExE;AAID;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,UAAU,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,kGAAkG;AAClG,eAAO,MAAM,sBAAsB,kCAAwC,CAAC;AAE5E,kGAAkG;AAClG,eAAO,MAAM,qBAAqB,iCAAuC,CAAC;AAyB1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,qBAAqB,EAAE,CAO9F;
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/storage/templates.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAE3D,wGAAwG;AACxG,MAAM,WAAW,kBAAkB;IACjC,oGAAoG;IACpG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,wFAAwF;IACxF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yFAAyF;IACzF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAkBD,8FAA8F;AAC9F,eAAO,MAAM,SAAS,EAAE,SAAS,kBAAkB,EAAoB,CAAC;AAExE,kGAAkG;AAClG,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAAiC,CAAC;AAE9E,uGAAuG;AACvG,eAAO,MAAM,gBAAgB,EAAE,MAAmB,CAAC;AAEnD,oGAAoG;AACpG,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAGvE;AAED,iGAAiG;AACjG,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,CAExE;AAID;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,UAAU,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,kGAAkG;AAClG,eAAO,MAAM,sBAAsB,kCAAwC,CAAC;AAE5E,kGAAkG;AAClG,eAAO,MAAM,qBAAqB,iCAAuC,CAAC;AAyB1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,qBAAqB,EAAE,CAO9F;AAyRD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,GAAG,YAAY,EAAE,CA2CxE"}
|
|
@@ -132,7 +132,7 @@ const MEMORY_TYPES = ['adr', 'bug', 'decision-log', 'release', 'release-line', '
|
|
|
132
132
|
* grammar, `src/validation/id.ts`) — required by `memoryAdd` (`src/core/index.ts`) even though
|
|
133
133
|
* `memory.yaml`'s own schema only marks the field `.optional()` (bug-005-init-scaffold-fails-schema-validation:
|
|
134
134
|
* without this, a freshly-`init`'d project's `wingfoil memory add` fails on every type). Mirrors this
|
|
135
|
-
* repository's own dogfooded
|
|
135
|
+
* repository's own dogfooded `.wingfoil/memory.yaml` scheme, a sensible [AUTHORING] default
|
|
136
136
|
* a user is free to change.
|
|
137
137
|
*/
|
|
138
138
|
const MEMORY_ID_PATTERNS = {
|
|
@@ -165,6 +165,10 @@ function dnaYaml(def) {
|
|
|
165
165
|
// array too; an empty list is schema-valid (the `Team` schema's role cross-check is vacuous over no
|
|
166
166
|
// members) and is the right default for a fresh, person-less scaffold — the user adds real members
|
|
167
167
|
// via `dna set` once the project has a team.
|
|
168
|
+
// `stacks.technologies` stays an empty list — dropping the key would make the first `dna add` rewrite
|
|
169
|
+
// the file without its comments — but carries the `{name, category}` shape and a commented-out
|
|
170
|
+
// example above it, because `category` is required and a bare `- name: X` fails validation
|
|
171
|
+
// (bug-139-dna-scaffold-hides-required-category, task-118).
|
|
168
172
|
const methodologies = def.methodologies.map((m) => ` - name: ${m}`).join('\n');
|
|
169
173
|
return `# Project DNA (P2.4) — scaffolded by \`wingfoil init\` (${def.name} template).
|
|
170
174
|
# Structural map of the project: modules, stacks, team + roles, resource paths. Customize freely.
|
|
@@ -180,6 +184,13 @@ modules: []
|
|
|
180
184
|
|
|
181
185
|
# Stacks — technologies + methodologies in use. The methodologies come from the ${def.name} template.
|
|
182
186
|
stacks:
|
|
187
|
+
# Each technology is a {name, category} entry: \`category\` is required (free text: language,
|
|
188
|
+
# runtime, framework, database, ...); \`version\` and \`notes\` are optional. To declare one, replace
|
|
189
|
+
# \`technologies: []\` with a list like this example, uncommented:
|
|
190
|
+
# technologies:
|
|
191
|
+
# - name: TypeScript
|
|
192
|
+
# category: language
|
|
193
|
+
# or run: wingfoil dna add stacks.technologies --value TypeScript --entry-category language
|
|
183
194
|
technologies: []
|
|
184
195
|
methodologies:
|
|
185
196
|
${methodologies}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/storage/templates.ts"],"names":[],"mappings":";;;AA4DA,0CAGC;AAGD,4DAEC;AAuFD,wDAOC;
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/storage/templates.ts"],"names":[],"mappings":"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"}
|