instar 1.3.499 → 1.3.500
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/PostUpdateMigrator.d.ts +1 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +38 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/package.json +1 -1
- package/skills/spec-converge/SKILL.md +23 -0
- package/src/data/builtin-manifest.json +19 -19
- package/upgrades/1.3.500.md +43 -0
- package/upgrades/side-effects/conformance-gate-autoinvoke.md +58 -0
package/package.json
CHANGED
|
@@ -61,6 +61,29 @@ The skill adds `review-convergence`, `review-iterations`, `review-completed-at`,
|
|
|
61
61
|
|
|
62
62
|
### Phase 1 — Initial review round
|
|
63
63
|
|
|
64
|
+
**Standards-Conformance Gate auto-invocation (MANDATORY, every round).** Before
|
|
65
|
+
spawning the reviewers, the agent calls the constitution inspector against the spec
|
|
66
|
+
and feeds its report into the round as a reviewer input:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
AUTH=$(python3 -c "import json; print(json.load(open('.instar/config.json')).get('authToken',''))" 2>/dev/null)
|
|
70
|
+
PORT=$(python3 -c "import json; print(json.load(open('.instar/config.json')).get('port',4040))" 2>/dev/null)
|
|
71
|
+
curl -sS -m 90 -X POST -H "Authorization: Bearer ${AUTH:-$INSTAR_AUTH_TOKEN}" -H 'Content-Type: application/json' \
|
|
72
|
+
-d "{\"specPath\": \"$(realpath docs/specs/<slug>.md)\"}" \
|
|
73
|
+
"http://localhost:${PORT}/spec/conformance-check"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The report is SIGNAL-ONLY (it never blocks — Signal vs. Authority), but it is not
|
|
77
|
+
optional to RUN: its per-standard flags are handed to the reviewers alongside the
|
|
78
|
+
spec (the lessons-aware reviewer in particular must engage every flagged standard),
|
|
79
|
+
and the convergence report's Iteration Summary records one line per round —
|
|
80
|
+
`Standards-Conformance Gate: ran (N flags)` or, honestly, `unavailable: <reason>`
|
|
81
|
+
(server down / route 503). An unavailable gate NEVER blocks convergence, but a
|
|
82
|
+
SKIPPED-without-reason gate fails report validation. This closes the 2026-06-12
|
|
83
|
+
finding (topic 13481): the gate shipped 2026-05-24 explicitly staged for this exact
|
|
84
|
+
wiring, and the staging lived only in prose — zero runs in 19 days. Auto-invocation
|
|
85
|
+
is now part of the round itself, not a remembered follow-up.
|
|
86
|
+
|
|
64
87
|
The skill spawns reviewers in parallel:
|
|
65
88
|
|
|
66
89
|
**Internal reviewers (Claude subagents):**
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-06-12T22:
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-06-12T22:55:28.388Z",
|
|
5
|
+
"instarVersion": "1.3.500",
|
|
6
6
|
"entryCount": 201,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"domain": "identity",
|
|
12
12
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
13
13
|
"installedPath": ".instar/hooks/instar/session-start.sh",
|
|
14
|
-
"contentHash": "
|
|
14
|
+
"contentHash": "4cadffedf5765aee7afb11ed290bbcf43545059d7dc85cea865a8982fd414f9b",
|
|
15
15
|
"since": "2025-01-01"
|
|
16
16
|
},
|
|
17
17
|
"hook:dangerous-command-guard": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"domain": "safety",
|
|
21
21
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
22
22
|
"installedPath": ".instar/hooks/instar/dangerous-command-guard.sh",
|
|
23
|
-
"contentHash": "
|
|
23
|
+
"contentHash": "4cadffedf5765aee7afb11ed290bbcf43545059d7dc85cea865a8982fd414f9b",
|
|
24
24
|
"since": "2025-01-01"
|
|
25
25
|
},
|
|
26
26
|
"hook:grounding-before-messaging": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"domain": "safety",
|
|
30
30
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
31
31
|
"installedPath": ".instar/hooks/instar/grounding-before-messaging.sh",
|
|
32
|
-
"contentHash": "
|
|
32
|
+
"contentHash": "4cadffedf5765aee7afb11ed290bbcf43545059d7dc85cea865a8982fd414f9b",
|
|
33
33
|
"since": "2025-01-01"
|
|
34
34
|
},
|
|
35
35
|
"hook:compaction-recovery": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"domain": "identity",
|
|
39
39
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
40
40
|
"installedPath": ".instar/hooks/instar/compaction-recovery.sh",
|
|
41
|
-
"contentHash": "
|
|
41
|
+
"contentHash": "4cadffedf5765aee7afb11ed290bbcf43545059d7dc85cea865a8982fd414f9b",
|
|
42
42
|
"since": "2025-01-01"
|
|
43
43
|
},
|
|
44
44
|
"hook:external-operation-gate": {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"domain": "safety",
|
|
48
48
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
49
49
|
"installedPath": ".instar/hooks/instar/external-operation-gate.js",
|
|
50
|
-
"contentHash": "
|
|
50
|
+
"contentHash": "4cadffedf5765aee7afb11ed290bbcf43545059d7dc85cea865a8982fd414f9b",
|
|
51
51
|
"since": "2025-01-01"
|
|
52
52
|
},
|
|
53
53
|
"hook:deferral-detector": {
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"domain": "safety",
|
|
57
57
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
58
58
|
"installedPath": ".instar/hooks/instar/deferral-detector.js",
|
|
59
|
-
"contentHash": "
|
|
59
|
+
"contentHash": "4cadffedf5765aee7afb11ed290bbcf43545059d7dc85cea865a8982fd414f9b",
|
|
60
60
|
"since": "2025-01-01"
|
|
61
61
|
},
|
|
62
62
|
"hook:self-stop-guard": {
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"domain": "coherence",
|
|
66
66
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
67
67
|
"installedPath": ".instar/hooks/instar/self-stop-guard.js",
|
|
68
|
-
"contentHash": "
|
|
68
|
+
"contentHash": "4cadffedf5765aee7afb11ed290bbcf43545059d7dc85cea865a8982fd414f9b",
|
|
69
69
|
"since": "2025-01-01"
|
|
70
70
|
},
|
|
71
71
|
"hook:post-action-reflection": {
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"domain": "evolution",
|
|
75
75
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
76
76
|
"installedPath": ".instar/hooks/instar/post-action-reflection.js",
|
|
77
|
-
"contentHash": "
|
|
77
|
+
"contentHash": "4cadffedf5765aee7afb11ed290bbcf43545059d7dc85cea865a8982fd414f9b",
|
|
78
78
|
"since": "2025-01-01"
|
|
79
79
|
},
|
|
80
80
|
"hook:external-communication-guard": {
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"domain": "safety",
|
|
84
84
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
85
85
|
"installedPath": ".instar/hooks/instar/external-communication-guard.js",
|
|
86
|
-
"contentHash": "
|
|
86
|
+
"contentHash": "4cadffedf5765aee7afb11ed290bbcf43545059d7dc85cea865a8982fd414f9b",
|
|
87
87
|
"since": "2025-01-01"
|
|
88
88
|
},
|
|
89
89
|
"hook:scope-coherence-collector": {
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"domain": "coherence",
|
|
93
93
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
94
94
|
"installedPath": ".instar/hooks/instar/scope-coherence-collector.js",
|
|
95
|
-
"contentHash": "
|
|
95
|
+
"contentHash": "4cadffedf5765aee7afb11ed290bbcf43545059d7dc85cea865a8982fd414f9b",
|
|
96
96
|
"since": "2025-01-01"
|
|
97
97
|
},
|
|
98
98
|
"hook:scope-coherence-checkpoint": {
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
"domain": "coherence",
|
|
102
102
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
103
103
|
"installedPath": ".instar/hooks/instar/scope-coherence-checkpoint.js",
|
|
104
|
-
"contentHash": "
|
|
104
|
+
"contentHash": "4cadffedf5765aee7afb11ed290bbcf43545059d7dc85cea865a8982fd414f9b",
|
|
105
105
|
"since": "2025-01-01"
|
|
106
106
|
},
|
|
107
107
|
"hook:free-text-guard": {
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
"domain": "safety",
|
|
111
111
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
112
112
|
"installedPath": ".instar/hooks/instar/free-text-guard.sh",
|
|
113
|
-
"contentHash": "
|
|
113
|
+
"contentHash": "4cadffedf5765aee7afb11ed290bbcf43545059d7dc85cea865a8982fd414f9b",
|
|
114
114
|
"since": "2025-01-01"
|
|
115
115
|
},
|
|
116
116
|
"hook:claim-intercept": {
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
"domain": "coherence",
|
|
120
120
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
121
121
|
"installedPath": ".instar/hooks/instar/claim-intercept.js",
|
|
122
|
-
"contentHash": "
|
|
122
|
+
"contentHash": "4cadffedf5765aee7afb11ed290bbcf43545059d7dc85cea865a8982fd414f9b",
|
|
123
123
|
"since": "2025-01-01"
|
|
124
124
|
},
|
|
125
125
|
"hook:claim-intercept-response": {
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
"domain": "coherence",
|
|
129
129
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
130
130
|
"installedPath": ".instar/hooks/instar/claim-intercept-response.js",
|
|
131
|
-
"contentHash": "
|
|
131
|
+
"contentHash": "4cadffedf5765aee7afb11ed290bbcf43545059d7dc85cea865a8982fd414f9b",
|
|
132
132
|
"since": "2025-01-01"
|
|
133
133
|
},
|
|
134
134
|
"hook:stop-gate-router": {
|
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
"domain": "safety",
|
|
138
138
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
139
139
|
"installedPath": ".instar/hooks/instar/stop-gate-router.js",
|
|
140
|
-
"contentHash": "
|
|
140
|
+
"contentHash": "4cadffedf5765aee7afb11ed290bbcf43545059d7dc85cea865a8982fd414f9b",
|
|
141
141
|
"since": "2025-01-01"
|
|
142
142
|
},
|
|
143
143
|
"hook:auto-approve-permissions": {
|
|
@@ -146,7 +146,7 @@
|
|
|
146
146
|
"domain": "safety",
|
|
147
147
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
148
148
|
"installedPath": ".instar/hooks/instar/auto-approve-permissions.js",
|
|
149
|
-
"contentHash": "
|
|
149
|
+
"contentHash": "4cadffedf5765aee7afb11ed290bbcf43545059d7dc85cea865a8982fd414f9b",
|
|
150
150
|
"since": "2025-01-01"
|
|
151
151
|
},
|
|
152
152
|
"job:health-check": {
|
|
@@ -1554,7 +1554,7 @@
|
|
|
1554
1554
|
"type": "subsystem",
|
|
1555
1555
|
"domain": "updates",
|
|
1556
1556
|
"sourcePath": "src/core/PostUpdateMigrator.ts",
|
|
1557
|
-
"contentHash": "
|
|
1557
|
+
"contentHash": "4cadffedf5765aee7afb11ed290bbcf43545059d7dc85cea865a8982fd414f9b",
|
|
1558
1558
|
"since": "2025-01-01"
|
|
1559
1559
|
},
|
|
1560
1560
|
"subsystem:scheduler": {
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
The Standards-Conformance Gate (shipped 2026-05-24, #373: reads the constitution,
|
|
9
|
+
checks any spec against every standard, signal-only) had ZERO runs in 19 days —
|
|
10
|
+
its spec-review wiring was staged in prose and never tracked (operator finding,
|
|
11
|
+
2026-06-12 topic 13481). Now: spec-converge Phase 1 carries a MANDATORY
|
|
12
|
+
auto-invocation step (`POST /spec/conformance-check`; flags feed the reviewers; each
|
|
13
|
+
round's report records `ran (N flags)` or an honest `unavailable: <reason>`; an
|
|
14
|
+
unexplained skip fails report validation). The constitution registry prose is updated
|
|
15
|
+
to the true current state, and `migrateConformanceGateAutoInvoke` delivers the
|
|
16
|
+
updated skill content to deployed agents (marker/fingerprint pattern, customized
|
|
17
|
+
files untouched, idempotent). The wider documented-only→enforced program is tracked
|
|
18
|
+
as CMT-1426.
|
|
19
|
+
|
|
20
|
+
## What to Tell Your User
|
|
21
|
+
|
|
22
|
+
- "The inspector that checks every new plan against my constitution now runs
|
|
23
|
+
automatically on every spec review — it had been built but sat unused for three
|
|
24
|
+
weeks because the follow-up to wire it in was never tracked. That gap is closed,
|
|
25
|
+
and converting the rest of the constitution's written rules into enforced gates is
|
|
26
|
+
now a tracked program."
|
|
27
|
+
|
|
28
|
+
## Summary of New Capabilities
|
|
29
|
+
|
|
30
|
+
| Capability | How to Use |
|
|
31
|
+
|-----------|-----------|
|
|
32
|
+
| Constitution check on every spec review | Automatic — recorded per round in each convergence report |
|
|
33
|
+
|
|
34
|
+
## Evidence
|
|
35
|
+
|
|
36
|
+
- `tests/unit/PostUpdateMigrator-conformanceAutoInvoke.test.ts` — 4 tests: bundled
|
|
37
|
+
skill carries the step; stock copies upgraded + idempotent; customized copies
|
|
38
|
+
untouched; registry prose honesty locked (the stale "not yet auto-invoked" claim
|
|
39
|
+
can never silently return).
|
|
40
|
+
- `tsc --noEmit` clean; migration suites green.
|
|
41
|
+
- Side-effects: `upgrades/side-effects/conformance-gate-autoinvoke.md` (answers the
|
|
42
|
+
new §7 multi-machine posture question shipped this morning — the gate dogfooding
|
|
43
|
+
itself twice in one day). ELI16: `docs/eli16/conformance-gate-autoinvoke.md`.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Side-Effects Review — Standards-Conformance Gate auto-invocation
|
|
2
|
+
|
|
3
|
+
**Trigger:** operator finding (2026-06-12 topic 13481): the gate shipped 2026-05-24
|
|
4
|
+
explicitly staged for spec-review wiring; the staging lived only in registry prose →
|
|
5
|
+
zero runs in 19 days. ("What's the point of building something and not using it?")
|
|
6
|
+
**Change:** spec-converge Phase 1 gains a MANDATORY auto-invocation step — call
|
|
7
|
+
`POST /spec/conformance-check`, feed the per-standard flags to the reviewers, record
|
|
8
|
+
`ran (N flags)` / `unavailable: <reason>` per round in the convergence report; a
|
|
9
|
+
skipped-without-reason gate fails report validation. Registry prose updated to the
|
|
10
|
+
honest current state (auto-invoked as of 2026-06-12, CMT-1426 tracks the wider
|
|
11
|
+
enforcement-ratio program). PostUpdateMigrator delivers the updated skill content to
|
|
12
|
+
deployed agents (established marker/fingerprint pattern).
|
|
13
|
+
|
|
14
|
+
## 1. Over-block
|
|
15
|
+
None: the gate's report is signal-only and an UNAVAILABLE gate (server down, 503)
|
|
16
|
+
never blocks convergence — only an unexplained skip fails validation, which costs one
|
|
17
|
+
honest sentence.
|
|
18
|
+
|
|
19
|
+
## 2. Under-block
|
|
20
|
+
The mandate lives in skill instructions + report validation, not a programmatic hook
|
|
21
|
+
— a determined skip mislabeled "unavailable" would pass until the conformance
|
|
22
|
+
metrics funnel (GET /spec/conformance-metrics, already shipped) shows zero runs
|
|
23
|
+
against nonzero convergences; CMT-1426's cadence reviews exactly that number. Named
|
|
24
|
+
honestly: this is the signal-first phase per Signal vs. Authority.
|
|
25
|
+
|
|
26
|
+
## 3. Level-of-abstraction fit
|
|
27
|
+
The wiring belongs in the round that consumes it (Phase 1) — not a cron, not a
|
|
28
|
+
separate job: the gate's value is per-spec flags reaching the reviewers of that spec.
|
|
29
|
+
|
|
30
|
+
## 4. Signal vs authority compliance
|
|
31
|
+
Fully signal-only by construction; blocking authority remains a later, earned phase
|
|
32
|
+
(unchanged from the gate's own converged spec).
|
|
33
|
+
|
|
34
|
+
## 5. Interactions
|
|
35
|
+
Composes with the existing 8-reviewer round (a ninth input, not a new reviewer
|
|
36
|
+
spawn); the conformance route's extended timeout budget (middleware) already exists;
|
|
37
|
+
migration ordering with the posture migration converges either way (both copy the
|
|
38
|
+
same bundled file; markers are distinct).
|
|
39
|
+
|
|
40
|
+
## 6. External surfaces
|
|
41
|
+
None beyond the install base (skill content + registry prose + migration).
|
|
42
|
+
|
|
43
|
+
## 7. Multi-machine posture (Cross-Machine Coherence)
|
|
44
|
+
**machine-local BY DESIGN, with reason** — per-machine installed skill content kept
|
|
45
|
+
current by each machine's own update cycle (same posture as PR #1088's files). The
|
|
46
|
+
conformance CHECK itself runs against the local server of whichever machine runs the
|
|
47
|
+
spec review — correct, since the spec being reviewed lives in that machine's
|
|
48
|
+
worktree. No user-facing notices, no durable runtime state, no generated URLs.
|
|
49
|
+
|
|
50
|
+
## 8. Rollback cost
|
|
51
|
+
Revert the skill/registry edits and ship; the migration is marker-gated (a reverted
|
|
52
|
+
bundle stops patching; already-patched agents keep a mandatory step that calls a
|
|
53
|
+
still-existing, signal-only route — benign).
|
|
54
|
+
|
|
55
|
+
## Second-pass review
|
|
56
|
+
Not required — no block/allow runtime decisions, no session lifecycle, no
|
|
57
|
+
gate/sentinel/watchdog RUNTIME surface (the "gate" here is review-process content;
|
|
58
|
+
the route it calls is unchanged).
|