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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instar",
3
- "version": "1.3.1002",
3
+ "version": "1.3.1003",
4
4
  "description": "Coherence infrastructure for self-evolving AI agents — on the Claude Code or Codex subscription you already have.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -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. **The new round produces no material new issues.** "Material" means any finding that would require a spec change if unaddressed. Cosmetic findings, repeats of already-addressed concerns, and minor phrasing quibbles are non-material. (A cheap-to-change-after tag the Decision-Completeness reviewer contested and rejected IS a material finding.)
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 boolean `converged: true|false` with reasoning. Human-readable comparison log is retained.
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 material issues | Material findings | Spec sections changed |
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-27T11:55:16.447Z",
5
- "instarVersion": "1.3.1002",
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.