instar 1.3.192 → 1.3.193
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/skills/autonomous/hooks/autonomous-stop-hook.sh +61 -10
- package/dist/core/CompletionEvaluator.d.ts +29 -0
- package/dist/core/CompletionEvaluator.d.ts.map +1 -1
- package/dist/core/CompletionEvaluator.js +80 -0
- package/dist/core/CompletionEvaluator.js.map +1 -1
- package/dist/core/MessagingToneGate.d.ts +2 -2
- package/dist/core/MessagingToneGate.d.ts.map +1 -1
- package/dist/core/MessagingToneGate.js +23 -2
- package/dist/core/MessagingToneGate.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +10 -8
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/reviewers/standards-conformance.d.ts +45 -0
- package/dist/core/reviewers/standards-conformance.d.ts.map +1 -1
- package/dist/core/reviewers/standards-conformance.js +100 -0
- package/dist/core/reviewers/standards-conformance.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +19 -0
- package/dist/server/routes.js.map +1 -1
- package/dist/server/specReviewRoutes.d.ts +6 -0
- package/dist/server/specReviewRoutes.d.ts.map +1 -1
- package/dist/server/specReviewRoutes.js +27 -0
- package/dist/server/specReviewRoutes.js.map +1 -1
- package/package.json +1 -1
- package/scripts/instar-dev-precommit.js +59 -0
- package/src/data/builtin-manifest.json +62 -62
- package/upgrades/1.3.193.md +29 -0
- package/upgrades/side-effects/autonomous-operation-judgment-and-approval-as-data.md +98 -0
|
@@ -11,6 +11,12 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { Router } from 'express';
|
|
13
13
|
import type { IntelligenceProvider } from '../core/types.js';
|
|
14
|
+
/**
|
|
15
|
+
* Extract the `parent-principle` value from a spec's YAML frontmatter
|
|
16
|
+
* (Constitutional Traceability). Returns '' when absent — the caller then knows
|
|
17
|
+
* the spec named no parent (a block-worthy condition: name a real parent).
|
|
18
|
+
*/
|
|
19
|
+
export declare function extractParentPrinciple(md: string): string;
|
|
14
20
|
export declare function createSpecReviewRoutes(deps: {
|
|
15
21
|
intelligence: IntelligenceProvider | null;
|
|
16
22
|
/** Path to docs/STANDARDS-REGISTRY.md (the constitution). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specReviewRoutes.d.ts","sourceRoot":"","sources":["../../src/server/specReviewRoutes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAsC7D,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,YAAY,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC1C,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IACrB,4FAA4F;IAC5F,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;CACzC,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"specReviewRoutes.d.ts","sourceRoot":"","sources":["../../src/server/specReviewRoutes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAsC7D;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAKzD;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,YAAY,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC1C,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IACrB,4FAA4F;IAC5F,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;CACzC,GAAG,MAAM,CA6ET;AAED,8EAA8E;AAC9E,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,oBAAoB,GAAG,IAAI,EACzC,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;;;GAWxC"}
|
|
@@ -37,6 +37,18 @@ function saveMetrics(file, m) {
|
|
|
37
37
|
console.error(`[specReviewRoutes] metrics save failed: ${err}`);
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Extract the `parent-principle` value from a spec's YAML frontmatter
|
|
42
|
+
* (Constitutional Traceability). Returns '' when absent — the caller then knows
|
|
43
|
+
* the spec named no parent (a block-worthy condition: name a real parent).
|
|
44
|
+
*/
|
|
45
|
+
export function extractParentPrinciple(md) {
|
|
46
|
+
const fm = md.match(/^---\r?\n([\s\S]*?)\r?\n---/);
|
|
47
|
+
if (!fm)
|
|
48
|
+
return '';
|
|
49
|
+
const m = fm[1].match(/^parent-principle:\s*(.+)$/m);
|
|
50
|
+
return m ? m[1].trim().replace(/^["']|["']$/g, '') : '';
|
|
51
|
+
}
|
|
40
52
|
export function createSpecReviewRoutes(deps) {
|
|
41
53
|
const router = Router();
|
|
42
54
|
const enabled = deps.enabled !== false;
|
|
@@ -89,6 +101,17 @@ export function createSpecReviewRoutes(deps) {
|
|
|
89
101
|
}
|
|
90
102
|
const canary = runRegistryCanary(articles);
|
|
91
103
|
const report = await reviewer.review(markdown, articles);
|
|
104
|
+
// Constitutional Traceability (Part C): attach the fit verdict for the spec's
|
|
105
|
+
// named parent constitutional standard. parentPrinciple comes from the request
|
|
106
|
+
// body or the spec's frontmatter; when present, judgeFit returns fit/weak/none
|
|
107
|
+
// (and fails open to 'fit' when the reviewer is degraded). Absent → no fit field
|
|
108
|
+
// (the caller — e.g. the pre-commit gate — treats a missing parent as block).
|
|
109
|
+
const parentPrinciple = (typeof req.body?.parentPrinciple === 'string' && req.body.parentPrinciple.trim())
|
|
110
|
+
? req.body.parentPrinciple.trim()
|
|
111
|
+
: extractParentPrinciple(markdown);
|
|
112
|
+
if (parentPrinciple) {
|
|
113
|
+
report.fit = await reviewer.judgeFit(markdown, parentPrinciple, articles);
|
|
114
|
+
}
|
|
92
115
|
// Record metrics (best-effort).
|
|
93
116
|
try {
|
|
94
117
|
const m = loadMetrics(metricsFile);
|
|
@@ -115,6 +138,10 @@ export async function runConformanceCheck(markdown, registryMarkdown, intelligen
|
|
|
115
138
|
const canary = runRegistryCanary(articles);
|
|
116
139
|
const reviewer = new StandardsConformanceReviewer(intelligence, { model });
|
|
117
140
|
const report = await reviewer.review(markdown, articles);
|
|
141
|
+
const parentPrinciple = extractParentPrinciple(markdown);
|
|
142
|
+
if (parentPrinciple) {
|
|
143
|
+
report.fit = await reviewer.judgeFit(markdown, parentPrinciple, articles);
|
|
144
|
+
}
|
|
118
145
|
return { report, registryCanary: canary };
|
|
119
146
|
}
|
|
120
147
|
//# sourceMappingURL=specReviewRoutes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specReviewRoutes.js","sourceRoot":"","sources":["../../src/server/specReviewRoutes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"specReviewRoutes.js","sourceRoot":"","sources":["../../src/server/specReviewRoutes.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -496,6 +496,65 @@ if (staged.includes(spec) && !staged.includes(eli16Rel)) {
|
|
|
496
496
|
);
|
|
497
497
|
}
|
|
498
498
|
|
|
499
|
+
// ─── Step 7.6: Constitutional Traceability (No Unconstitutional Work) ──────
|
|
500
|
+
// Every spec must trace to a real constitutional standard with an indisputable
|
|
501
|
+
// fit. This commit-time gate enforces the STRUCTURAL half (always-on, server-free):
|
|
502
|
+
// the spec's parent-principle frontmatter must be PRESENT and RESOLVE to a real
|
|
503
|
+
// article heading in docs/STANDARDS-REGISTRY.md. The QUALITATIVE "indisputable fit"
|
|
504
|
+
// judgment (fit/weak/none) is the review-time reviewer's job — POST
|
|
505
|
+
// /spec/conformance-check now returns report.fit — so a weak/none fit is caught and
|
|
506
|
+
// resolved before approval, not at commit (where a 150s LLM call would hang every
|
|
507
|
+
// commit). A non-resolving parent is the signal to amend the constitution (propose a
|
|
508
|
+
// new standard) or recognize the work as unconstitutional. Fail-OPEN if the registry
|
|
509
|
+
// is unreadable — never block work because the constitution can't be read.
|
|
510
|
+
{
|
|
511
|
+
const parentMatch = specFm.match(/^\s*parent-principle\s*:\s*(.+)$/m);
|
|
512
|
+
const parent = parentMatch ? parentMatch[1].trim().replace(/^["']|["']$/g, '') : '';
|
|
513
|
+
if (!parent) {
|
|
514
|
+
blockCommit(
|
|
515
|
+
inScopeFiles,
|
|
516
|
+
[
|
|
517
|
+
`Spec ${spec} names no parent-principle (Constitutional Traceability).`,
|
|
518
|
+
'Every spec MUST name the constitutional standard it serves, with an indisputable fit.',
|
|
519
|
+
'Add a frontmatter line, e.g.:',
|
|
520
|
+
' parent-principle: "<exact article name from docs/STANDARDS-REGISTRY.md>"',
|
|
521
|
+
'',
|
|
522
|
+
'If no current standard covers this work, that is the signal to either amend the',
|
|
523
|
+
'constitution (propose a new standard, get it ratified) or recognize the work as',
|
|
524
|
+
'unconstitutional — do not ship it unanchored.',
|
|
525
|
+
].join('\n'),
|
|
526
|
+
);
|
|
527
|
+
}
|
|
528
|
+
let registryNames = [];
|
|
529
|
+
try {
|
|
530
|
+
const reg = fs.readFileSync(path.join(ROOT, 'docs', 'STANDARDS-REGISTRY.md'), 'utf8');
|
|
531
|
+
registryNames = (reg.match(/^###\s+(.+)$/gm) || []).map((h) => h.replace(/^###\s+/, '').trim());
|
|
532
|
+
} catch {
|
|
533
|
+
// Registry unreadable → cannot resolve; fail-open (skip the resolution check).
|
|
534
|
+
registryNames = [];
|
|
535
|
+
}
|
|
536
|
+
if (parent && registryNames.length) {
|
|
537
|
+
const pl = parent.toLowerCase();
|
|
538
|
+
const resolves = registryNames.some((n) => {
|
|
539
|
+
const nl = n.toLowerCase();
|
|
540
|
+
return pl.includes(nl) || nl.includes(pl);
|
|
541
|
+
});
|
|
542
|
+
if (!resolves) {
|
|
543
|
+
blockCommit(
|
|
544
|
+
inScopeFiles,
|
|
545
|
+
[
|
|
546
|
+
`Spec ${spec}'s parent-principle does not resolve to a real constitutional standard.`,
|
|
547
|
+
` parent-principle: ${parent}`,
|
|
548
|
+
'',
|
|
549
|
+
'It must name (or contain) an exact article heading from docs/STANDARDS-REGISTRY.md.',
|
|
550
|
+
'A hand-wave parent fails the same as none — name the standard this work is plainly an',
|
|
551
|
+
'instance of, or amend the constitution to cover it (then the work is constitutional).',
|
|
552
|
+
].join('\n'),
|
|
553
|
+
);
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
|
|
499
558
|
// ─── Step 7.5: orphan deferrals must be tracked ───────────────────────────
|
|
500
559
|
// Why: on 2026-05-20 PR #284 shipped four of five fixes for a version-skew
|
|
501
560
|
// failure class and explicitly deferred the fifth ("lifeline auto-restart on
|