open-wiki-spec 0.2.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -0
- package/README.md +50 -3
- package/dist/cli/commands/apply.d.ts.map +1 -1
- package/dist/cli/commands/apply.js +96 -4
- package/dist/cli/commands/apply.js.map +1 -1
- package/dist/cli/commands/archive.d.ts.map +1 -1
- package/dist/cli/commands/archive.js +19 -5
- package/dist/cli/commands/archive.js.map +1 -1
- package/dist/cli/commands/bulk-archive.d.ts +15 -0
- package/dist/cli/commands/bulk-archive.d.ts.map +1 -0
- package/dist/cli/commands/bulk-archive.js +97 -0
- package/dist/cli/commands/bulk-archive.js.map +1 -0
- package/dist/cli/commands/continue.d.ts.map +1 -1
- package/dist/cli/commands/continue.js +15 -2
- package/dist/cli/commands/continue.js.map +1 -1
- package/dist/cli/commands/error-handler.d.ts +1 -5
- package/dist/cli/commands/error-handler.d.ts.map +1 -1
- package/dist/cli/commands/error-handler.js +48 -3
- package/dist/cli/commands/error-handler.js.map +1 -1
- package/dist/cli/commands/init.d.ts +0 -3
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +22 -4
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/list.d.ts +2 -17
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +15 -3
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/migrate.d.ts.map +1 -1
- package/dist/cli/commands/migrate.js +6 -9
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/propose.d.ts.map +1 -1
- package/dist/cli/commands/propose.js +46 -6
- package/dist/cli/commands/propose.js.map +1 -1
- package/dist/cli/commands/query.d.ts.map +1 -1
- package/dist/cli/commands/query.js +101 -5
- package/dist/cli/commands/query.js.map +1 -1
- package/dist/cli/commands/retrieve.d.ts +7 -0
- package/dist/cli/commands/retrieve.d.ts.map +1 -0
- package/dist/cli/commands/retrieve.js +70 -0
- package/dist/cli/commands/retrieve.js.map +1 -0
- package/dist/cli/commands/revert.d.ts +18 -0
- package/dist/cli/commands/revert.d.ts.map +1 -0
- package/dist/cli/commands/revert.js +109 -0
- package/dist/cli/commands/revert.js.map +1 -0
- package/dist/cli/commands/status.d.ts +2 -19
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +42 -3
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/verify.d.ts.map +1 -1
- package/dist/cli/commands/verify.js +12 -1
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +68 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/init-engine.d.ts.map +1 -1
- package/dist/cli/init/init-engine.js +19 -6
- package/dist/cli/init/init-engine.js.map +1 -1
- package/dist/cli/init/meta-files.d.ts +2 -1
- package/dist/cli/init/meta-files.d.ts.map +1 -1
- package/dist/cli/init/meta-files.js +167 -8
- package/dist/cli/init/meta-files.js.map +1 -1
- package/dist/cli/init/skill-generator.d.ts +3 -0
- package/dist/cli/init/skill-generator.d.ts.map +1 -1
- package/dist/cli/init/skill-generator.js +184 -3
- package/dist/cli/init/skill-generator.js.map +1 -1
- package/dist/cli/json-envelope.d.ts +15 -0
- package/dist/cli/json-envelope.d.ts.map +1 -0
- package/dist/cli/json-envelope.js +86 -0
- package/dist/cli/json-envelope.js.map +1 -0
- package/dist/cli/schema-check.d.ts +27 -0
- package/dist/cli/schema-check.d.ts.map +1 -0
- package/dist/cli/schema-check.js +33 -0
- package/dist/cli/schema-check.js.map +1 -0
- package/dist/cli/vault-discovery.d.ts.map +1 -1
- package/dist/cli/vault-discovery.js +16 -2
- package/dist/cli/vault-discovery.js.map +1 -1
- package/dist/core/embedding/cache.d.ts +12 -3
- package/dist/core/embedding/cache.d.ts.map +1 -1
- package/dist/core/embedding/cache.js +42 -5
- package/dist/core/embedding/cache.js.map +1 -1
- package/dist/core/embedding/embedder.d.ts +18 -0
- package/dist/core/embedding/embedder.d.ts.map +1 -1
- package/dist/core/embedding/embedder.js +87 -10
- package/dist/core/embedding/embedder.js.map +1 -1
- package/dist/core/index/build.d.ts.map +1 -1
- package/dist/core/index/build.js +54 -6
- package/dist/core/index/build.js.map +1 -1
- package/dist/core/index/resolve.d.ts.map +1 -1
- package/dist/core/index/resolve.js +27 -12
- package/dist/core/index/resolve.js.map +1 -1
- package/dist/core/index/scan.d.ts +10 -1
- package/dist/core/index/scan.d.ts.map +1 -1
- package/dist/core/index/scan.js +59 -10
- package/dist/core/index/scan.js.map +1 -1
- package/dist/core/index/schema-version.d.ts +28 -0
- package/dist/core/index/schema-version.d.ts.map +1 -1
- package/dist/core/index/schema-version.js +47 -0
- package/dist/core/index/schema-version.js.map +1 -1
- package/dist/core/migrate/change-converter.d.ts.map +1 -1
- package/dist/core/migrate/change-converter.js +59 -11
- package/dist/core/migrate/change-converter.js.map +1 -1
- package/dist/core/migrate/migrate.d.ts.map +1 -1
- package/dist/core/migrate/migrate.js +115 -1
- package/dist/core/migrate/migrate.js.map +1 -1
- package/dist/core/migrate/sanitize.d.ts +17 -0
- package/dist/core/migrate/sanitize.d.ts.map +1 -0
- package/dist/core/migrate/sanitize.js +33 -0
- package/dist/core/migrate/sanitize.js.map +1 -0
- package/dist/core/migrate/spec-converter.d.ts.map +1 -1
- package/dist/core/migrate/spec-converter.js +9 -3
- package/dist/core/migrate/spec-converter.js.map +1 -1
- package/dist/core/migrate/types.d.ts +9 -0
- package/dist/core/migrate/types.d.ts.map +1 -1
- package/dist/core/parser/frontmatter-parser.d.ts +0 -6
- package/dist/core/parser/frontmatter-parser.d.ts.map +1 -1
- package/dist/core/parser/frontmatter-parser.js +59 -2
- package/dist/core/parser/frontmatter-parser.js.map +1 -1
- package/dist/core/parser/note-parser.js +15 -4
- package/dist/core/parser/note-parser.js.map +1 -1
- package/dist/core/parser/requirement-parser.js +4 -0
- package/dist/core/parser/requirement-parser.js.map +1 -1
- package/dist/core/parser/task-parser.d.ts.map +1 -1
- package/dist/core/parser/task-parser.js +19 -0
- package/dist/core/parser/task-parser.js.map +1 -1
- package/dist/core/parser/wikilink-parser.d.ts.map +1 -1
- package/dist/core/parser/wikilink-parser.js +21 -5
- package/dist/core/parser/wikilink-parser.js.map +1 -1
- package/dist/core/retrieval/classify.d.ts +11 -4
- package/dist/core/retrieval/classify.d.ts.map +1 -1
- package/dist/core/retrieval/classify.js +76 -14
- package/dist/core/retrieval/classify.js.map +1 -1
- package/dist/core/retrieval/lexical.d.ts.map +1 -1
- package/dist/core/retrieval/lexical.js +31 -12
- package/dist/core/retrieval/lexical.js.map +1 -1
- package/dist/core/retrieval/retrieve.d.ts.map +1 -1
- package/dist/core/retrieval/retrieve.js +45 -5
- package/dist/core/retrieval/retrieve.js.map +1 -1
- package/dist/core/retrieval/scoring.d.ts.map +1 -1
- package/dist/core/retrieval/scoring.js +37 -12
- package/dist/core/retrieval/scoring.js.map +1 -1
- package/dist/core/schema/change.schema.d.ts.map +1 -1
- package/dist/core/schema/change.schema.js +6 -1
- package/dist/core/schema/change.schema.js.map +1 -1
- package/dist/core/schema/feature.schema.d.ts +1 -1
- package/dist/core/schema/feature.schema.d.ts.map +1 -1
- package/dist/core/schema/feature.schema.js +1 -0
- package/dist/core/schema/feature.schema.js.map +1 -1
- package/dist/core/schema/frontmatter.d.ts +15 -0
- package/dist/core/schema/frontmatter.d.ts.map +1 -1
- package/dist/core/schema/index.d.ts +15 -0
- package/dist/core/schema/index.d.ts.map +1 -1
- package/dist/core/schema/query.schema.d.ts +15 -0
- package/dist/core/schema/query.schema.d.ts.map +1 -1
- package/dist/core/schema/query.schema.js +5 -0
- package/dist/core/schema/query.schema.js.map +1 -1
- package/dist/core/schema/templates.d.ts +0 -4
- package/dist/core/schema/templates.d.ts.map +1 -1
- package/dist/core/schema/templates.js +25 -7
- package/dist/core/schema/templates.js.map +1 -1
- package/dist/core/sequencing/analyze.d.ts.map +1 -1
- package/dist/core/sequencing/analyze.js +3 -1
- package/dist/core/sequencing/analyze.js.map +1 -1
- package/dist/core/sequencing/priority-queue.d.ts +9 -3
- package/dist/core/sequencing/priority-queue.d.ts.map +1 -1
- package/dist/core/sequencing/priority-queue.js +10 -4
- package/dist/core/sequencing/priority-queue.js.map +1 -1
- package/dist/core/sequencing/stale-detector.d.ts.map +1 -1
- package/dist/core/sequencing/stale-detector.js +5 -0
- package/dist/core/sequencing/stale-detector.js.map +1 -1
- package/dist/core/workflow/apply/apply.d.ts.map +1 -1
- package/dist/core/workflow/apply/apply.js +494 -55
- package/dist/core/workflow/apply/apply.js.map +1 -1
- package/dist/core/workflow/apply/delta-parser.d.ts.map +1 -1
- package/dist/core/workflow/apply/delta-parser.js +43 -9
- package/dist/core/workflow/apply/delta-parser.js.map +1 -1
- package/dist/core/workflow/apply/feature-updater.d.ts.map +1 -1
- package/dist/core/workflow/apply/feature-updater.js +27 -11
- package/dist/core/workflow/apply/feature-updater.js.map +1 -1
- package/dist/core/workflow/apply/types.d.ts +14 -0
- package/dist/core/workflow/apply/types.d.ts.map +1 -1
- package/dist/core/workflow/continue/continue.d.ts +18 -0
- package/dist/core/workflow/continue/continue.d.ts.map +1 -1
- package/dist/core/workflow/continue/continue.js +134 -15
- package/dist/core/workflow/continue/continue.js.map +1 -1
- package/dist/core/workflow/continue/next-action.d.ts.map +1 -1
- package/dist/core/workflow/continue/next-action.js +16 -3
- package/dist/core/workflow/continue/next-action.js.map +1 -1
- package/dist/core/workflow/continue/types.d.ts +12 -0
- package/dist/core/workflow/continue/types.d.ts.map +1 -1
- package/dist/core/workflow/propose/note-creator.d.ts +2 -2
- package/dist/core/workflow/propose/note-creator.d.ts.map +1 -1
- package/dist/core/workflow/propose/note-creator.js +89 -12
- package/dist/core/workflow/propose/note-creator.js.map +1 -1
- package/dist/core/workflow/propose/propose.d.ts.map +1 -1
- package/dist/core/workflow/propose/propose.js +190 -46
- package/dist/core/workflow/propose/propose.js.map +1 -1
- package/dist/core/workflow/propose/query-normalizer.d.ts.map +1 -1
- package/dist/core/workflow/propose/query-normalizer.js +37 -5
- package/dist/core/workflow/propose/query-normalizer.js.map +1 -1
- package/dist/core/workflow/propose/types.d.ts +15 -0
- package/dist/core/workflow/propose/types.d.ts.map +1 -1
- package/dist/core/workflow/propose/types.js +6 -1
- package/dist/core/workflow/propose/types.js.map +1 -1
- package/dist/core/workflow/query/query-note-creator.d.ts +0 -4
- package/dist/core/workflow/query/query-note-creator.d.ts.map +1 -1
- package/dist/core/workflow/query/query-note-creator.js +27 -37
- package/dist/core/workflow/query/query-note-creator.js.map +1 -1
- package/dist/core/workflow/verify/coherence.d.ts +10 -0
- package/dist/core/workflow/verify/coherence.d.ts.map +1 -1
- package/dist/core/workflow/verify/coherence.js +91 -4
- package/dist/core/workflow/verify/coherence.js.map +1 -1
- package/dist/core/workflow/verify/completeness.d.ts +1 -1
- package/dist/core/workflow/verify/completeness.d.ts.map +1 -1
- package/dist/core/workflow/verify/completeness.js +53 -10
- package/dist/core/workflow/verify/completeness.js.map +1 -1
- package/dist/core/workflow/verify/correctness.d.ts +1 -1
- package/dist/core/workflow/verify/correctness.d.ts.map +1 -1
- package/dist/core/workflow/verify/correctness.js +95 -14
- package/dist/core/workflow/verify/correctness.js.map +1 -1
- package/dist/core/workflow/verify/vault-integrity.d.ts +11 -0
- package/dist/core/workflow/verify/vault-integrity.d.ts.map +1 -1
- package/dist/core/workflow/verify/vault-integrity.js +80 -3
- package/dist/core/workflow/verify/vault-integrity.js.map +1 -1
- package/dist/core/workflow/verify/verify.d.ts +0 -5
- package/dist/core/workflow/verify/verify.d.ts.map +1 -1
- package/dist/core/workflow/verify/verify.js +54 -3
- package/dist/core/workflow/verify/verify.js.map +1 -1
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/types/cli-contracts.d.ts +78 -0
- package/dist/types/cli-contracts.d.ts.map +1 -0
- package/dist/types/cli-contracts.js +2 -0
- package/dist/types/cli-contracts.js.map +1 -0
- package/dist/types/error-codes.d.ts +25 -0
- package/dist/types/error-codes.d.ts.map +1 -0
- package/dist/types/error-codes.js +27 -0
- package/dist/types/error-codes.js.map +1 -0
- package/dist/types/frontmatter.d.ts +9 -2
- package/dist/types/frontmatter.d.ts.map +1 -1
- package/dist/types/next-action.d.ts +21 -0
- package/dist/types/next-action.d.ts.map +1 -1
- package/dist/types/retrieval.d.ts +17 -0
- package/dist/types/retrieval.d.ts.map +1 -1
- package/dist/types/verify.d.ts +58 -1
- package/dist/types/verify.d.ts.map +1 -1
- package/dist/types/verify.js +58 -1
- package/dist/types/verify.js.map +1 -1
- package/dist/utils/conventions.d.ts +9 -0
- package/dist/utils/conventions.d.ts.map +1 -0
- package/dist/utils/conventions.js +22 -0
- package/dist/utils/conventions.js.map +1 -0
- package/dist/utils/id-generator.d.ts.map +1 -1
- package/dist/utils/id-generator.js +8 -0
- package/dist/utils/id-generator.js.map +1 -1
- package/dist/utils/normalize.d.ts +7 -4
- package/dist/utils/normalize.d.ts.map +1 -1
- package/dist/utils/normalize.js +43 -6
- package/dist/utils/normalize.js.map +1 -1
- package/dist/utils/path-safety.d.ts +12 -1
- package/dist/utils/path-safety.d.ts.map +1 -1
- package/dist/utils/path-safety.js +54 -3
- package/dist/utils/path-safety.js.map +1 -1
- package/package.json +3 -2
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query note creator.
|
|
3
|
+
* Builds Query note markdown from investigation inputs.
|
|
4
|
+
*/
|
|
5
|
+
import { stringify as yamlStringify } from 'yaml';
|
|
1
6
|
/**
|
|
2
7
|
* Create a Query note markdown file from investigation results.
|
|
3
8
|
*/
|
|
@@ -14,61 +19,50 @@ export function createQueryNote(input) {
|
|
|
14
19
|
return { path, content };
|
|
15
20
|
}
|
|
16
21
|
function buildFrontmatter(id, input) {
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
const data = {
|
|
23
|
+
type: 'query',
|
|
24
|
+
id,
|
|
25
|
+
status: 'active',
|
|
26
|
+
question: input.question,
|
|
27
|
+
};
|
|
22
28
|
if (input.relatedFeatures && input.relatedFeatures.length > 0) {
|
|
23
|
-
|
|
24
|
-
for (const f of input.relatedFeatures)
|
|
25
|
-
lines.push(` - "${f}"`);
|
|
29
|
+
data.features = input.relatedFeatures;
|
|
26
30
|
}
|
|
27
31
|
if (input.relatedSystems && input.relatedSystems.length > 0) {
|
|
28
|
-
|
|
29
|
-
for (const s of input.relatedSystems)
|
|
30
|
-
lines.push(` - "${s}"`);
|
|
32
|
+
data.systems = input.relatedSystems;
|
|
31
33
|
}
|
|
32
34
|
if (input.relatedChanges && input.relatedChanges.length > 0) {
|
|
33
|
-
|
|
34
|
-
for (const c of input.relatedChanges)
|
|
35
|
-
lines.push(` - "${c}"`);
|
|
35
|
+
data.changes = input.relatedChanges;
|
|
36
36
|
}
|
|
37
37
|
if (input.relatedDecisions && input.relatedDecisions.length > 0) {
|
|
38
|
-
|
|
39
|
-
for (const d of input.relatedDecisions)
|
|
40
|
-
lines.push(` - "${d}"`);
|
|
38
|
+
data.decisions = input.relatedDecisions;
|
|
41
39
|
}
|
|
42
40
|
if (input.relatedSources && input.relatedSources.length > 0) {
|
|
43
|
-
|
|
44
|
-
for (const s of input.relatedSources)
|
|
45
|
-
lines.push(` - "${s}"`);
|
|
41
|
+
data.sources = input.relatedSources;
|
|
46
42
|
}
|
|
47
43
|
if (input.relatedQueries && input.relatedQueries.length > 0) {
|
|
48
|
-
|
|
49
|
-
for (const q of input.relatedQueries)
|
|
50
|
-
lines.push(` - "${q}"`);
|
|
44
|
+
data.related_queries = input.relatedQueries;
|
|
51
45
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
lines.push(` - "[[${c}]]"`);
|
|
55
|
-
lines.push('tags:');
|
|
56
|
-
lines.push(' - query');
|
|
46
|
+
data.consulted = input.consultedNotes.map(c => `[[${c}]]`);
|
|
47
|
+
const tags = ['query'];
|
|
57
48
|
if (input.tags) {
|
|
58
49
|
for (const t of input.tags) {
|
|
59
50
|
if (t !== 'query')
|
|
60
|
-
|
|
51
|
+
tags.push(t);
|
|
61
52
|
}
|
|
62
53
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return lines.join('\n');
|
|
54
|
+
data.tags = tags;
|
|
55
|
+
data.created_at = new Date().toLocaleDateString('en-CA');
|
|
56
|
+
return `---\n${yamlStringify(data).trimEnd()}\n---\n\n`;
|
|
67
57
|
}
|
|
68
58
|
function buildBody(input) {
|
|
69
59
|
const sections = [];
|
|
70
60
|
sections.push(`# Query: ${input.title}`);
|
|
71
61
|
sections.push('');
|
|
62
|
+
sections.push('## Purpose');
|
|
63
|
+
sections.push('');
|
|
64
|
+
sections.push(`Investigation: ${input.question}`);
|
|
65
|
+
sections.push('');
|
|
72
66
|
sections.push('## Question');
|
|
73
67
|
sections.push('');
|
|
74
68
|
sections.push(input.question);
|
|
@@ -161,8 +155,4 @@ function formatDate(date) {
|
|
|
161
155
|
const d = String(date.getDate()).padStart(2, '0');
|
|
162
156
|
return `${y}-${m}-${d}`;
|
|
163
157
|
}
|
|
164
|
-
/** Escape special characters in YAML strings */
|
|
165
|
-
function escapeYaml(s) {
|
|
166
|
-
return s.replace(/"/g, '\\"');
|
|
167
|
-
}
|
|
168
158
|
//# sourceMappingURL=query-note-creator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-note-creator.js","sourceRoot":"","sources":["../../../../src/core/workflow/query/query-note-creator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"query-note-creator.js","sourceRoot":"","sources":["../../../../src/core/workflow/query/query-note-creator.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,16 @@ export declare function checkDescriptionConsistency(allNotes: IndexRecord[]): Ve
|
|
|
23
23
|
* and missing backlinks.
|
|
24
24
|
*/
|
|
25
25
|
export declare function checkDecisionConsistency(allDecisions: IndexRecord[], allFeatures: IndexRecord[]): VerifyIssue[];
|
|
26
|
+
/**
|
|
27
|
+
* Check Feature ↔ Change bidirectional backlink consistency.
|
|
28
|
+
*
|
|
29
|
+
* When `propose` creates a Change targeting a Feature, it updates the
|
|
30
|
+
* Feature's `changes:` frontmatter field via `updateFeatureChangesField`.
|
|
31
|
+
* If that step fails (or if the user manually creates a Change), the
|
|
32
|
+
* backlink is missing. This check detects the mismatch so users can fix
|
|
33
|
+
* either side.
|
|
34
|
+
*/
|
|
35
|
+
export declare function checkFeatureChangeBacklinks(allRecords: IndexRecord[]): VerifyIssue[];
|
|
26
36
|
/**
|
|
27
37
|
* Check that all depends_on targets actually exist in the index.
|
|
28
38
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coherence.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/verify/coherence.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,WAAW,EAAE,EAC5B,KAAK,EAAE,UAAU,GAChB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"coherence.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/verify/coherence.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,WAAW,EAAE,EAC5B,KAAK,EAAE,UAAU,GAChB,WAAW,EAAE,CA0Gf;AAID;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAiDlF;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,WAAW,EAAE,EAC3B,WAAW,EAAE,WAAW,EAAE,GACzB,WAAW,EAAE,CAuDf;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,WAAW,EAAE,GACxB,WAAW,EAAE,CAuCf;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,WAAW,EAAE,EAC5B,KAAK,EAAE,UAAU,GAChB,WAAW,EAAE,CA+Bf"}
|
|
@@ -8,6 +8,21 @@ export function checkConflictsViaSequencing(activeChanges, index) {
|
|
|
8
8
|
const issues = [];
|
|
9
9
|
// Delegate to sequencing engine (expects Map<string, IndexRecord>)
|
|
10
10
|
const result = analyzeSequencing(index.records);
|
|
11
|
+
// Build a set of change-pair keys that have an actual requirement-level
|
|
12
|
+
// conflict so Feature-level `conflict_candidate` pairs that DON'T also
|
|
13
|
+
// hit a requirement collision can be surfaced as warnings instead of
|
|
14
|
+
// errors. Two Changes that touch the same Feature but modify disjoint
|
|
15
|
+
// requirements are serialization-unsafe (whoever applies second needs
|
|
16
|
+
// a rebase of base_fingerprint) but they do not step on each other's
|
|
17
|
+
// content — an error-level verdict was overly strict and caused
|
|
18
|
+
// false-positive CI failures.
|
|
19
|
+
const hasRequirementConflict = new Set();
|
|
20
|
+
for (const c of result.requirement_conflicts) {
|
|
21
|
+
const a = c.change_a;
|
|
22
|
+
const b = c.change_b;
|
|
23
|
+
const key = a < b ? `${a}|${b}` : `${b}|${a}`;
|
|
24
|
+
hasRequirementConflict.add(key);
|
|
25
|
+
}
|
|
11
26
|
// Map pairwise touches severities to VerifyIssue
|
|
12
27
|
for (const pair of result.pairwise_severities) {
|
|
13
28
|
if (pair.severity === 'blocked') {
|
|
@@ -21,13 +36,26 @@ export function checkConflictsViaSequencing(activeChanges, index) {
|
|
|
21
36
|
});
|
|
22
37
|
}
|
|
23
38
|
else if (pair.severity === 'conflict_candidate') {
|
|
39
|
+
const pairKey = pair.change_a < pair.change_b
|
|
40
|
+
? `${pair.change_a}|${pair.change_b}`
|
|
41
|
+
: `${pair.change_b}|${pair.change_a}`;
|
|
42
|
+
const alsoRequirementLevel = hasRequirementConflict.has(pairKey);
|
|
24
43
|
issues.push({
|
|
25
44
|
dimension: 'coherence',
|
|
26
|
-
|
|
45
|
+
// Downgrade to warning when the Feature-level overlap does NOT
|
|
46
|
+
// coincide with a requirement-level collision. The pair is still
|
|
47
|
+
// worth surfacing because serialization order matters, but it
|
|
48
|
+
// shouldn't block a pass.
|
|
49
|
+
severity: alsoRequirementLevel ? 'error' : 'warning',
|
|
27
50
|
code: 'TOUCHES_OVERLAP_CONFLICT',
|
|
28
|
-
message: `Changes "${pair.change_a}" and "${pair.change_b}" both touch Feature(s): ${pair.overlapping_features.join(', ')}
|
|
51
|
+
message: `Changes "${pair.change_a}" and "${pair.change_b}" both touch Feature(s): ${pair.overlapping_features.join(', ')}` +
|
|
52
|
+
(alsoRequirementLevel
|
|
53
|
+
? ' — with overlapping requirement(s); apply order must be resolved.'
|
|
54
|
+
: ' — at Feature level only; apply in order and rebase base_fingerprint if needed.'),
|
|
29
55
|
note_id: pair.change_a,
|
|
30
|
-
suggestion:
|
|
56
|
+
suggestion: alsoRequirementLevel
|
|
57
|
+
? 'Resolve the requirement collision manually; auto-apply is blocked.'
|
|
58
|
+
: 'Apply one change, then rebase the other\'s Delta Summary base_fingerprint against the new Feature content.',
|
|
31
59
|
});
|
|
32
60
|
}
|
|
33
61
|
else if (pair.severity === 'needs_review') {
|
|
@@ -181,6 +209,53 @@ export function checkDecisionConsistency(allDecisions, allFeatures) {
|
|
|
181
209
|
}
|
|
182
210
|
return issues;
|
|
183
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* Check Feature ↔ Change bidirectional backlink consistency.
|
|
214
|
+
*
|
|
215
|
+
* When `propose` creates a Change targeting a Feature, it updates the
|
|
216
|
+
* Feature's `changes:` frontmatter field via `updateFeatureChangesField`.
|
|
217
|
+
* If that step fails (or if the user manually creates a Change), the
|
|
218
|
+
* backlink is missing. This check detects the mismatch so users can fix
|
|
219
|
+
* either side.
|
|
220
|
+
*/
|
|
221
|
+
export function checkFeatureChangeBacklinks(allRecords) {
|
|
222
|
+
const issues = [];
|
|
223
|
+
const features = new Map();
|
|
224
|
+
const changes = [];
|
|
225
|
+
for (const r of allRecords) {
|
|
226
|
+
if (r.type === 'feature')
|
|
227
|
+
features.set(r.id, r);
|
|
228
|
+
if (r.type === 'change')
|
|
229
|
+
changes.push(r);
|
|
230
|
+
}
|
|
231
|
+
for (const change of changes) {
|
|
232
|
+
const featureIds = [];
|
|
233
|
+
if (change.feature)
|
|
234
|
+
featureIds.push(change.feature);
|
|
235
|
+
if (change.features)
|
|
236
|
+
featureIds.push(...change.features);
|
|
237
|
+
for (const fId of featureIds) {
|
|
238
|
+
const feature = features.get(fId);
|
|
239
|
+
if (!feature)
|
|
240
|
+
continue; // Caught by INVALID_FRONTMATTER_REF
|
|
241
|
+
// Feature.changes should contain a reference to this Change
|
|
242
|
+
const featureLinksBack = feature.changes?.includes(change.id) ?? false;
|
|
243
|
+
if (!featureLinksBack) {
|
|
244
|
+
issues.push({
|
|
245
|
+
dimension: 'coherence',
|
|
246
|
+
severity: 'warning',
|
|
247
|
+
code: 'MISSING_LINK',
|
|
248
|
+
message: `Change "${change.id}" declares feature "${fId}" but the Feature's ` +
|
|
249
|
+
`\`changes\` frontmatter does not link back to this Change.`,
|
|
250
|
+
note_id: change.id,
|
|
251
|
+
note_path: change.path,
|
|
252
|
+
suggestion: `Add "[[${change.title}]]" to the \`changes:\` list in Feature "${fId}" frontmatter.`,
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return issues;
|
|
258
|
+
}
|
|
184
259
|
/**
|
|
185
260
|
* Check that all depends_on targets actually exist in the index.
|
|
186
261
|
*/
|
|
@@ -188,7 +263,8 @@ export function checkDependsOnConsistency(activeChanges, index) {
|
|
|
188
263
|
const issues = [];
|
|
189
264
|
for (const change of activeChanges) {
|
|
190
265
|
for (const dep of change.depends_on) {
|
|
191
|
-
|
|
266
|
+
const depRecord = index.records.get(dep);
|
|
267
|
+
if (!depRecord) {
|
|
192
268
|
issues.push({
|
|
193
269
|
dimension: 'coherence',
|
|
194
270
|
severity: 'error',
|
|
@@ -199,6 +275,17 @@ export function checkDependsOnConsistency(activeChanges, index) {
|
|
|
199
275
|
suggestion: 'Fix the depends_on entry or create the missing Change note.',
|
|
200
276
|
});
|
|
201
277
|
}
|
|
278
|
+
else if (depRecord.type !== 'change') {
|
|
279
|
+
issues.push({
|
|
280
|
+
dimension: 'coherence',
|
|
281
|
+
severity: 'warning',
|
|
282
|
+
code: 'INVALID_DEPENDS_ON_TYPE',
|
|
283
|
+
message: `Change "${change.id}" depends_on "${dep}" which is a ${depRecord.type}, not a change`,
|
|
284
|
+
note_id: change.id,
|
|
285
|
+
note_path: change.path,
|
|
286
|
+
suggestion: 'depends_on should reference Change notes only.',
|
|
287
|
+
});
|
|
288
|
+
}
|
|
202
289
|
}
|
|
203
290
|
}
|
|
204
291
|
return issues;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coherence.js","sourceRoot":"","sources":["../../../../src/core/workflow/verify/coherence.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CACzC,aAA4B,EAC5B,KAAiB;IAEjB,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,mEAAmE;IACnE,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEhD,iDAAiD;IACjD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,WAAW;gBACtB,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,WAAW,IAAI,CAAC,QAAQ,oBAAoB,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACjG,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,UAAU,EAAE,2CAA2C;aACxD,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,oBAAoB,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,WAAW;gBACtB,QAAQ,EAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"coherence.js","sourceRoot":"","sources":["../../../../src/core/workflow/verify/coherence.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import type { VaultIndex, IndexRecord } from '../../../types/index.js';
|
|
|
6
6
|
import type { VerifyIssue } from '../../../types/verify.js';
|
|
7
7
|
/**
|
|
8
8
|
* Check completeness of a Feature note.
|
|
9
|
-
* Required: Purpose, Current Behavior, Requirements sections.
|
|
9
|
+
* Required: Purpose, Current Behavior, Constraints, Known Gaps, Requirements sections.
|
|
10
10
|
* Requirements must have SHALL/MUST and at least one scenario.
|
|
11
11
|
*/
|
|
12
12
|
export declare function checkFeatureCompleteness(feature: IndexRecord, _index: VaultIndex): VerifyIssue[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completeness.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/verify/completeness.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"completeness.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/verify/completeness.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAY5D;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,WAAW,EAAE,CA+FhG;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAG,WAAW,EAAE,CA2H9F;AAsCD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,EAAE,CA8CrE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { FEATURE_REQUIRED_SECTIONS } from '../../schema/feature.schema.js';
|
|
2
2
|
const CHANGE_REQUIRED_SECTIONS = ['Why'];
|
|
3
3
|
/** Sections whose body must contain meaningful content (not just a heading). */
|
|
4
4
|
const CHANGE_CONTENT_REQUIRED_SECTIONS = ['Why', 'Delta Summary', 'Tasks', 'Validation'];
|
|
@@ -8,7 +8,7 @@ const MIN_SECTION_CONTENT_LENGTH = 10;
|
|
|
8
8
|
const COMPLEX_CHANGE_DELTA_THRESHOLD = 3;
|
|
9
9
|
/**
|
|
10
10
|
* Check completeness of a Feature note.
|
|
11
|
-
* Required: Purpose, Current Behavior, Requirements sections.
|
|
11
|
+
* Required: Purpose, Current Behavior, Constraints, Known Gaps, Requirements sections.
|
|
12
12
|
* Requirements must have SHALL/MUST and at least one scenario.
|
|
13
13
|
*/
|
|
14
14
|
export function checkFeatureCompleteness(feature, _index) {
|
|
@@ -39,28 +39,64 @@ export function checkFeatureCompleteness(feature, _index) {
|
|
|
39
39
|
suggestion: 'Add at least one "### Requirement: <name>" under the Requirements section.',
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
|
-
//
|
|
42
|
+
// Duplicate requirement name check: the parser skips the second
|
|
43
|
+
// occurrence and records a parse error, but that error doesn't make
|
|
44
|
+
// it into the verify report on its own. Surface duplicates here so
|
|
45
|
+
// users see a clear completeness error instead of silently losing a
|
|
46
|
+
// requirement entry. Note: seen is built from parser output, which
|
|
47
|
+
// already deduped — so duplicates show up as "parser skipped N".
|
|
48
|
+
// We detect via raw headings instead: count `### Requirement: X`
|
|
49
|
+
// occurrences across the Feature's headings list.
|
|
50
|
+
const requirementHeadingCounts = new Map();
|
|
51
|
+
for (const heading of feature.headings) {
|
|
52
|
+
const match = heading.match(/^Requirement:\s*(.+)$/i);
|
|
53
|
+
if (match) {
|
|
54
|
+
const name = match[1].trim();
|
|
55
|
+
requirementHeadingCounts.set(name, (requirementHeadingCounts.get(name) ?? 0) + 1);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
for (const [name, count] of requirementHeadingCounts) {
|
|
59
|
+
if (count > 1) {
|
|
60
|
+
issues.push({
|
|
61
|
+
dimension: 'completeness',
|
|
62
|
+
severity: 'error',
|
|
63
|
+
code: 'MISSING_REQUIREMENTS',
|
|
64
|
+
message: `Requirement "${name}" in Feature "${feature.id}" appears ${count} times — each name must be unique within the Feature.`,
|
|
65
|
+
note_id: feature.id,
|
|
66
|
+
note_path: feature.path,
|
|
67
|
+
suggestion: `Rename the duplicate headings (e.g., "${name} (auth flow)", "${name} (legacy)") or merge them into one requirement.`,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Each requirement must have SHALL/MUST and at least one scenario.
|
|
72
|
+
// Migrated notes (from OpenSpec) may not follow this convention — downgrade to warning.
|
|
73
|
+
const isMigrated = feature.tags?.includes('migrated') ?? false;
|
|
74
|
+
const reqSeverity = isMigrated ? 'warning' : 'error';
|
|
43
75
|
for (const req of feature.requirements) {
|
|
44
76
|
if (!/\b(SHALL|MUST)\b/.test(req.normative)) {
|
|
45
77
|
issues.push({
|
|
46
78
|
dimension: 'completeness',
|
|
47
|
-
severity:
|
|
79
|
+
severity: reqSeverity,
|
|
48
80
|
code: 'MISSING_REQUIREMENTS',
|
|
49
81
|
message: `Requirement "${req.name}" in Feature "${feature.id}" lacks SHALL or MUST keyword`,
|
|
50
82
|
note_id: feature.id,
|
|
51
83
|
note_path: feature.path,
|
|
52
|
-
suggestion:
|
|
84
|
+
suggestion: isMigrated
|
|
85
|
+
? 'Migrated requirement — consider adding SHALL/MUST when updating this Feature.'
|
|
86
|
+
: 'Normative statements must contain SHALL or MUST.',
|
|
53
87
|
});
|
|
54
88
|
}
|
|
55
89
|
if (req.scenarios.length === 0) {
|
|
56
90
|
issues.push({
|
|
57
91
|
dimension: 'completeness',
|
|
58
|
-
severity:
|
|
92
|
+
severity: reqSeverity,
|
|
59
93
|
code: 'MISSING_REQUIREMENTS',
|
|
60
94
|
message: `Requirement "${req.name}" in Feature "${feature.id}" has no scenario defined`,
|
|
61
95
|
note_id: feature.id,
|
|
62
96
|
note_path: feature.path,
|
|
63
|
-
suggestion:
|
|
97
|
+
suggestion: isMigrated
|
|
98
|
+
? 'Migrated requirement — consider adding WHEN/THEN scenarios when updating.'
|
|
99
|
+
: 'Add at least one "#### Scenario:" with WHEN/THEN format.',
|
|
64
100
|
});
|
|
65
101
|
}
|
|
66
102
|
}
|
|
@@ -87,16 +123,23 @@ export function checkChangeCompleteness(change, _index) {
|
|
|
87
123
|
});
|
|
88
124
|
}
|
|
89
125
|
}
|
|
90
|
-
// Delta Summary check
|
|
126
|
+
// Delta Summary check. Migrated changes (OpenSpec's free-form
|
|
127
|
+
// "What Changes" doesn't map cleanly to canonical delta_summary) get
|
|
128
|
+
// a warning instead of an error so a fresh migration doesn't fail
|
|
129
|
+
// verify out of the gate. Authors still need to fill in canonical
|
|
130
|
+
// delta_summary before `ows apply` can run.
|
|
131
|
+
const isMigratedChange = change.tags?.includes('migrated') ?? false;
|
|
91
132
|
if (change.delta_summary.length === 0) {
|
|
92
133
|
issues.push({
|
|
93
134
|
dimension: 'completeness',
|
|
94
|
-
severity: 'error',
|
|
135
|
+
severity: isMigratedChange ? 'warning' : 'error',
|
|
95
136
|
code: 'MISSING_DELTA_SUMMARY',
|
|
96
137
|
message: `Change "${change.id}" has no Delta Summary entries`,
|
|
97
138
|
note_id: change.id,
|
|
98
139
|
note_path: change.path,
|
|
99
|
-
suggestion:
|
|
140
|
+
suggestion: isMigratedChange
|
|
141
|
+
? 'Migrated from OpenSpec — fill in canonical Delta Summary (ADDED/MODIFIED/REMOVED/RENAMED) before applying.'
|
|
142
|
+
: 'Add a Delta Summary with ADDED/MODIFIED/REMOVED/RENAMED operations.',
|
|
100
143
|
});
|
|
101
144
|
}
|
|
102
145
|
// Tasks check
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completeness.js","sourceRoot":"","sources":["../../../../src/core/workflow/verify/completeness.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"completeness.js","sourceRoot":"","sources":["../../../../src/core/workflow/verify/completeness.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@ export declare function checkStatusTransition(change: IndexRecord, index: VaultI
|
|
|
29
29
|
* so per-record comparison is always a no-op. Instead, we surface index-level
|
|
30
30
|
* schema_mismatch warnings (e.g., missing schema.md).
|
|
31
31
|
*/
|
|
32
|
-
export declare function checkSchemaVersionMatch(_note: IndexRecord,
|
|
32
|
+
export declare function checkSchemaVersionMatch(_note: IndexRecord, declaredVersion: string, index?: VaultIndex): VerifyIssue[];
|
|
33
33
|
/**
|
|
34
34
|
* Check drift between Delta Summary and current Feature state based on Change status.
|
|
35
35
|
* Drift is acceptable during active work but is an error for applied Changes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"correctness.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/verify/correctness.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"correctness.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/verify/correctness.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAQ5D;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAkKlG;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAuDpF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAiF3F;AAED;;GAEG;AACH;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,WAAW,EAAE,CA+CtH;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,UAAU,EACjB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC5B,WAAW,EAAE,CAiEf;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAgC/F"}
|