instar 1.3.1002 → 1.3.1003
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/package.json
CHANGED
|
@@ -168,10 +168,54 @@ The external passes are **NON-SKIPPABLE** whenever a non-Claude framework was **
|
|
|
168
168
|
|
|
169
169
|
Convergence criteria (BOTH must hold — additive, per Autonomy Principle 2):
|
|
170
170
|
|
|
171
|
-
1. **
|
|
171
|
+
1. **No DESIGN-class findings for TWO consecutive rounds.**
|
|
172
|
+
|
|
173
|
+
**Why this replaced "no material new issues" (2026-07-27).** "Material" was defined as *any finding
|
|
174
|
+
that would require a spec change if unaddressed* — and a contract-precision or naming finding DOES
|
|
175
|
+
require a spec edit, so it counted. **On a spec that appends its own review history, the reviewable
|
|
176
|
+
surface grows every round, and a diligent reviewer will always find precision to add on a larger
|
|
177
|
+
surface. So the loop could not terminate BY CONSTRUCTION for that document shape**, and the 10-round
|
|
178
|
+
cap fired for a reason unrelated to whether the design was sound.
|
|
179
|
+
That is not a hypothesis. `standards-registry-ships-with-code` recorded 4–5 findings under a column
|
|
180
|
+
headed "Material findings" in *every one* of its ten rounds, while its own report observed that
|
|
181
|
+
rounds 5–10 *"produced no design defects at all — they produced contract precision, naming, and
|
|
182
|
+
scope-bound findings."* A second spec on the same problem hit the cap identically. A verdict that
|
|
183
|
+
does not measure its subject is this project's signature failure; here it lived in the stop
|
|
184
|
+
criterion itself.
|
|
185
|
+
|
|
186
|
+
**Each reviewer CLASSIFIES every finding it raises — the class is declared, never inferred by the
|
|
187
|
+
comparator from wording:**
|
|
188
|
+
|
|
189
|
+
- **DESIGN-class** — changes what would be BUILT or how it would BEHAVE. Architecture; a safety,
|
|
190
|
+
security, scalability, or integration property; a decision point's classification or floor; a
|
|
191
|
+
multi-machine posture; a missing failure mode; **or a statement in the spec that is factually
|
|
192
|
+
WRONG about the system** (round 10 of that spec caught a false rollback claim — that is
|
|
193
|
+
design-class, not precision, and must keep resetting the counter).
|
|
194
|
+
- **PRECISION-class** — improves the DOCUMENT without changing what would be built: contract
|
|
195
|
+
wording, naming, scope-bound phrasing, an added caveat, a clarified example.
|
|
196
|
+
|
|
197
|
+
**Precision findings are still addressed** — they are genuinely valuable and several changed
|
|
198
|
+
production code — but they do not reset the counter. Only a DESIGN-class finding does.
|
|
199
|
+
|
|
200
|
+
**Two consecutive rounds, not one**, because a single quiet round is weak evidence on a spec whose
|
|
201
|
+
surface keeps growing; requiring two makes the terminating condition harder to reach by luck while
|
|
202
|
+
still reachable at all. Under this rule the spec above converges at round 7 on its merits.
|
|
203
|
+
|
|
204
|
+
(A cheap-to-change-after tag the Decision-Completeness reviewer contested and rejected is
|
|
205
|
+
DESIGN-class — it asserts reversibility the reviewer denies, which is a claim about behaviour.)
|
|
206
|
+
|
|
207
|
+
**Honest limit:** the classification is made by a reviewer, so this trades one judgment for a
|
|
208
|
+
better-specified one rather than removing judgment. A reviewer that mislabels a design defect as
|
|
209
|
+
precision can end the loop early — which is why the taxonomy names the wrong-about-the-system case
|
|
210
|
+
explicitly, and why the report must record each round's class counts so a suspiciously quiet
|
|
211
|
+
round is visible rather than merely accepted.
|
|
172
212
|
2. **Zero unresolved user-decisions remain in `## Open questions`.** A spec cannot converge while a live decision is still parked on the user — every open question must be resolved into a `## Frontloaded Decisions` entry (or a contested-and-surviving cheap-to-change-after tag) before convergence. This is enforced STRUCTURALLY: `write-convergence-tag.mjs` refuses to stamp the tag while `## Open questions` contains unresolved entries, so the criterion cannot be skipped by prose (Structure > Willpower).
|
|
173
213
|
|
|
174
|
-
A lightweight LLM (Haiku-class) compares the new round's findings to the prior round's findings and emits a
|
|
214
|
+
A lightweight LLM (Haiku-class) compares the new round's findings to the prior round's findings and emits a
|
|
215
|
+
boolean `converged: true|false` with reasoning. It consumes each finding's DECLARED class — it must not
|
|
216
|
+
re-classify from wording, because the reviewer that raised a finding is the one that knows whether it changes
|
|
217
|
+
what would be built. It also emits `designFindings` and `precisionFindings` counts per round so the
|
|
218
|
+
consecutive-quiet-round count is auditable rather than asserted. Human-readable comparison log is retained.
|
|
175
219
|
|
|
176
220
|
**Not converged** → back to Phase 2.
|
|
177
221
|
**Converged** → Phase 4.
|
|
@@ -49,8 +49,8 @@ The user reads this section to understand what convergence changed.
|
|
|
49
49
|
|
|
50
50
|
## Iteration Summary
|
|
51
51
|
|
|
52
|
-
| Iteration | Reviewers who flagged
|
|
53
|
-
|
|
52
|
+
| Iteration | Reviewers who flagged design issues | Design findings | Precision findings | Spec sections changed |
|
|
53
|
+
|-----------|-------------------------------------|-----------------|---------------------|-----------------------|
|
|
54
54
|
{{ITERATION_TABLE}}
|
|
55
55
|
|
|
56
56
|
## Full Findings Catalog
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-07-
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-07-27T12:32:20.149Z",
|
|
5
|
+
"instarVersion": "1.3.1003",
|
|
6
6
|
"entryCount": 202,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
`/spec-converge`'s first convergence criterion terminated on "no MATERIAL new issues", where material
|
|
9
|
+
was defined as *any finding that would require a spec change if unaddressed*. A contract-precision or
|
|
10
|
+
naming finding DOES require a spec edit, so it counted — and because a spec appends its own review
|
|
11
|
+
history each round, its reviewable surface grows every round and a diligent reviewer always finds
|
|
12
|
+
precision to add on a larger surface.
|
|
13
|
+
|
|
14
|
+
The loop was therefore unterminating BY CONSTRUCTION for that document shape, and the 10-round cap
|
|
15
|
+
fired for reasons unrelated to design soundness.
|
|
16
|
+
|
|
17
|
+
The criterion is now "no DESIGN-class findings for TWO consecutive rounds", with an explicit
|
|
18
|
+
taxonomy each reviewer DECLARES per finding: design-class changes what would be built or how it
|
|
19
|
+
behaves (including a statement that is factually wrong about the system); precision-class improves the
|
|
20
|
+
document without changing what would be built. Precision findings are still raised and still
|
|
21
|
+
addressed — they do not reset the counter. The comparator consumes the declared class rather than
|
|
22
|
+
re-deriving it, and emits per-round design/precision counts; the report template records both.
|
|
23
|
+
|
|
24
|
+
## What to Tell Your User
|
|
25
|
+
|
|
26
|
+
None — internal change (no user-facing surface).
|
|
27
|
+
|
|
28
|
+
## Summary of New Capabilities
|
|
29
|
+
|
|
30
|
+
None — internal change (no user-facing surface).
|
|
31
|
+
|
|
32
|
+
## Evidence
|
|
33
|
+
|
|
34
|
+
`standards-registry-ships-with-code` recorded 4–5 findings under a column headed "Material findings"
|
|
35
|
+
in every one of its ten rounds, while its own report observed that rounds 5–10 "produced no design
|
|
36
|
+
defects at all — they produced contract precision, naming, and scope-bound findings". A second spec on
|
|
37
|
+
the same problem hit the cap identically. Under the new rule that spec converges at round 7 on its
|
|
38
|
+
merits.
|
|
39
|
+
|
|
40
|
+
Criterion 2 (zero unresolved `## Open questions`) is untouched and still enforced structurally in
|
|
41
|
+
`write-convergence-tag.mjs`, so the structural half of convergence cannot be weakened by this change.
|
|
42
|
+
|
|
43
|
+
## Known limits
|
|
44
|
+
|
|
45
|
+
This relocates judgment rather than removing it: a reviewer that misfiles a design defect as precision
|
|
46
|
+
can end the loop early. Three bounds — the taxonomy names the factually-wrong case explicitly as
|
|
47
|
+
design-class, two consecutive quiet rounds are required rather than one, and the class is declared by
|
|
48
|
+
the raising reviewer and recorded per round so a suspiciously quiet round is visible. None of these is
|
|
49
|
+
a guarantee, and no code enforces the classification; this is an instruction change and binds only as
|
|
50
|
+
well as the reviewers follow it.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Side-effects review — spec-converge terminates on design-class findings
|
|
2
|
+
|
|
3
|
+
**Change:** `/spec-converge`'s first convergence criterion changes from "no MATERIAL new issues"
|
|
4
|
+
(material = anything requiring a spec change) to "no DESIGN-class findings for TWO consecutive
|
|
5
|
+
rounds", with an explicit design/precision taxonomy that reviewers DECLARE per finding. The report
|
|
6
|
+
template records both counts per round.
|
|
7
|
+
|
|
8
|
+
**Decision point touched?** Yes, and it is the whole review: this is the stop criterion of the gate
|
|
9
|
+
that decides whether a spec may claim convergence — the tag `/instar-dev` requires before touching
|
|
10
|
+
instar source.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 1. Over-block
|
|
15
|
+
|
|
16
|
+
Reduced, deliberately, and that is the point. The prior criterion over-blocked absolutely: on a spec
|
|
17
|
+
that appends its own review history the surface grows each round, a reviewer always finds precision
|
|
18
|
+
to add, and every such finding counted as material — so the loop could not terminate BY CONSTRUCTION.
|
|
19
|
+
Two specs hit the 10-round cap for reasons unrelated to design soundness.
|
|
20
|
+
|
|
21
|
+
## 2. Under-block
|
|
22
|
+
|
|
23
|
+
The real risk, stated plainly: **loosening what counts as terminating could let a spec converge with
|
|
24
|
+
an unaddressed design defect misfiled as precision.**
|
|
25
|
+
|
|
26
|
+
Three things bound it, none of which is "the reviewer will be careful":
|
|
27
|
+
- The taxonomy names the dangerous case EXPLICITLY — a statement that is factually WRONG about the
|
|
28
|
+
system is design-class, never precision. That case is not hypothetical: round 10 of
|
|
29
|
+
`standards-registry-ships-with-code` caught a false rollback claim, and under a careless taxonomy
|
|
30
|
+
that would have been filed as wording.
|
|
31
|
+
- TWO consecutive quiet rounds, not one. A single quiet round is weak evidence on a growing surface.
|
|
32
|
+
- The class is DECLARED by the reviewer that raised the finding and the comparator consumes the
|
|
33
|
+
declaration rather than re-deriving it from wording — so a misclassification is an explicit act
|
|
34
|
+
recorded in the report, not an inference nobody can see.
|
|
35
|
+
|
|
36
|
+
Residual and unfixed: a reviewer that systematically under-classifies still ends the loop early. This
|
|
37
|
+
trades one judgment for a better-specified one; it does not eliminate judgment. Per-round counts in
|
|
38
|
+
the report are the detection surface, not a guarantee.
|
|
39
|
+
|
|
40
|
+
## 3. Level-of-abstraction fit
|
|
41
|
+
|
|
42
|
+
Correct. The defect is in the stop criterion's DEFINITION, which lives in the skill's prose and is
|
|
43
|
+
applied by the comparator, so the fix belongs in the prose plus the report template that makes it
|
|
44
|
+
auditable. No code enforces the classification today and none is added — an important honesty: this
|
|
45
|
+
is an instruction change, so it binds only as well as the reviewers follow it.
|
|
46
|
+
|
|
47
|
+
## 4. Signal vs authority compliance
|
|
48
|
+
|
|
49
|
+
The comparator retains exactly the authority it had (emit `converged: true|false`). What changes is
|
|
50
|
+
the definition it applies and the requirement that it consume a DECLARED class rather than infer one
|
|
51
|
+
— moving a judgment from implicit to explicit. No new blocking power anywhere.
|
|
52
|
+
|
|
53
|
+
## 5. Interactions
|
|
54
|
+
|
|
55
|
+
`write-convergence-tag.mjs` is untouched: criterion 2 (zero unresolved `## Open questions`) is still
|
|
56
|
+
enforced structurally there, so the STRUCTURAL half of convergence is unchanged and this change
|
|
57
|
+
cannot weaken it. The report template's Iteration Summary gains a column (design/precision split);
|
|
58
|
+
existing reports remain readable, and future ones carry the counts the new criterion depends on.
|
|
59
|
+
|
|
60
|
+
## 6. External surfaces
|
|
61
|
+
|
|
62
|
+
None. `/spec-converge` is an instar-development skill, not user-facing, not an endpoint, no config
|
|
63
|
+
key. The observable effect is that specs which would previously have hit the cap can now converge on
|
|
64
|
+
their merits — and that convergence reports show two counts where they showed one.
|
|
65
|
+
|
|
66
|
+
## 7. Multi-machine posture
|
|
67
|
+
|
|
68
|
+
Not applicable. This is repo-level skill prose plus a report template, identical on every checkout,
|
|
69
|
+
with no runtime state, no persistence, and nothing to replicate, proxy, or reconcile.
|
|
70
|
+
|
|
71
|
+
## 8. Rollback cost
|
|
72
|
+
|
|
73
|
+
Trivial: restore the previous criterion paragraph and the template's original column. No state, no
|
|
74
|
+
migration, no code. A rollback re-creates the unterminating loop, so it should carry a reason.
|