@nurix/etna 0.18.0 → 0.18.2
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/README.md +6 -5
- package/data/harness-index.json +1 -5
- package/data/harnesses/code/CLAUDE.md +8 -19
- package/data/harnesses/code/agents/brainstorm.md +3 -3
- package/data/harnesses/code/agents/change-review.md +13 -10
- package/data/harnesses/code/agents/harness-manager.md +15 -15
- package/data/harnesses/code/agents/maintenance.md +10 -3
- package/data/harnesses/code/agents/performance-review.md +5 -0
- package/data/harnesses/code/harness.json +1 -1
- package/data/harnesses/code/rules/general.md +40 -36
- package/data/harnesses/code/skills/boundary/SKILL.md +15 -42
- package/data/harnesses/code/skills/boundary/references/boundary-taxonomy.md +366 -304
- package/data/harnesses/code/skills/brainstorm/README.md +9 -9
- package/data/harnesses/code/skills/brainstorm/SKILL.md +15 -15
- package/data/harnesses/code/skills/brainstorm/harvest.md +3 -3
- package/data/harnesses/code/skills/brainstorm/templates/backlog.md +2 -2
- package/data/harnesses/code/skills/brainstorm/templates/build.md +6 -6
- package/data/harnesses/code/skills/brainstorm/templates/decisions.md +3 -3
- package/data/harnesses/code/skills/brainstorm/templates/doctrine.md +2 -2
- package/data/harnesses/code/skills/brainstorm/templates/domain-model.md +2 -2
- package/data/harnesses/code/skills/brainstorm/templates/glossary.md +2 -1
- package/data/harnesses/code/skills/brainstorm/templates/non-goals.md +3 -7
- package/data/harnesses/code/skills/brainstorm/templates/questions.md +6 -5
- package/data/harnesses/code/skills/brainstorm/templates/state.md +1 -8
- package/data/harnesses/code/skills/brainstorm/templates/tech.md +6 -6
- package/data/harnesses/code/skills/brainstorm/templates/thesis.md +2 -2
- package/data/harnesses/code/skills/distiller/SKILL.md +48 -177
- package/data/harnesses/code/skills/distiller/references/docs-mode.md +116 -343
- package/data/harnesses/code/skills/distiller/references/method.md +37 -109
- package/data/harnesses/code/skills/documentation/SKILL.md +9 -6
- package/data/harnesses/code/skills/documentation/references/examples.md +30 -61
- package/data/harnesses/code/skills/documentation/references/style-guide.md +59 -62
- package/data/harnesses/code/skills/documentation/references/templates.md +26 -34
- package/data/harnesses/code/skills/workflow-mapper/SKILL.md +32 -11
- package/data/harnesses/code/skills/workflow-mapper/references/patterns.md +1 -1
- package/data/harnesses/discover/CLAUDE.md +60 -113
- package/data/harnesses/discover/agents/api.md +11 -28
- package/data/harnesses/discover/agents/codebase.md +12 -30
- package/data/harnesses/discover/agents/community.md +9 -21
- package/data/harnesses/discover/agents/deployed-client-bundle.md +16 -67
- package/data/harnesses/discover/agents/distribution-artifacts.md +21 -59
- package/data/harnesses/discover/agents/docs.md +11 -20
- package/data/harnesses/discover/agents/infra-backend-fingerprint.md +28 -68
- package/data/harnesses/discover/agents/packages.md +12 -28
- package/data/harnesses/discover/agents/session.md +18 -50
- package/data/harnesses/discover/agents/website.md +9 -19
- package/data/harnesses/discover/agents/wire-capture.md +22 -72
- package/data/harnesses/discover/harness.json +1 -1
- package/data/harnesses/discover/rules/cartography-coverage.md +94 -0
- package/data/harnesses/discover/rules/cartography-flows.md +99 -0
- package/data/harnesses/discover/rules/cartography-ia.md +88 -0
- package/data/harnesses/discover/rules/cartography.md +109 -0
- package/data/harnesses/discover/rules/discovery.md +73 -182
- package/data/harnesses/discover/rules/evaluation.md +92 -98
- package/data/harnesses/discover/rules/ingestion.md +123 -322
- package/data/harnesses/discover/rules/self-correction.md +94 -107
- package/data/harnesses/discover/rules/tradecraft.md +201 -172
- package/data/harnesses/hr/CLAUDE.md +21 -51
- package/data/harnesses/hr/harness.json +1 -1
- package/data/harnesses/hr/skills/interview-eval/SKILL.md +23 -11
- package/data/harnesses/hr/skills/interview-eval/TEMPLATE.md +49 -29
- package/data/harnesses/hr/skills/interview-eval/rubric.md +30 -30
- package/data/harnesses/kb-agi/CLAUDE.md +8 -8
- package/data/harnesses/kb-agi/agents/kb-agi-init.md +31 -22
- package/data/harnesses/kb-agi/agents/kb-catch-stale.md +1 -1
- package/data/harnesses/kb-agi/agents/kb-find-gaps.md +1 -1
- package/data/harnesses/kb-agi/agents/kb-fix-links.md +1 -1
- package/data/harnesses/kb-agi/agents/kb-refresh-summaries.md +2 -2
- package/data/harnesses/kb-agi/agents/kb-sync-metadata.md +2 -2
- package/data/harnesses/kb-agi/harness.json +1 -1
- package/package.json +1 -1
- package/data/harnesses/code-fable/.prettierignore +0 -12
- package/data/harnesses/code-fable/.prettierrc.json +0 -3
- package/data/harnesses/code-fable/.vscode/settings.json +0 -10
- package/data/harnesses/code-fable/CLAUDE.md +0 -135
- package/data/harnesses/code-fable/agents/brainstorm.md +0 -35
- package/data/harnesses/code-fable/agents/change-review.md +0 -248
- package/data/harnesses/code-fable/agents/harness-manager.md +0 -181
- package/data/harnesses/code-fable/agents/maintenance.md +0 -115
- package/data/harnesses/code-fable/agents/performance-review.md +0 -218
- package/data/harnesses/code-fable/agents/spec-mode.md +0 -56
- package/data/harnesses/code-fable/harness.json +0 -12
- package/data/harnesses/code-fable/hooks/hooks.json +0 -27
- package/data/harnesses/code-fable/hooks/lib/redact.mjs +0 -35
- package/data/harnesses/code-fable/hooks/prompt-recall.mjs +0 -155
- package/data/harnesses/code-fable/hooks/session-reflect.mjs +0 -285
- package/data/harnesses/code-fable/rules/general.md +0 -79
- package/data/harnesses/code-fable/rules/nomenclature.md +0 -30
- package/data/harnesses/code-fable/rules/typescript.md +0 -19
- package/data/harnesses/code-fable/skills/boundary/SKILL.md +0 -76
- package/data/harnesses/code-fable/skills/boundary/references/boundary-taxonomy.md +0 -734
- package/data/harnesses/code-fable/skills/brainstorm/README.md +0 -136
- package/data/harnesses/code-fable/skills/brainstorm/SKILL.md +0 -135
- package/data/harnesses/code-fable/skills/brainstorm/harvest.md +0 -26
- package/data/harnesses/code-fable/skills/brainstorm/templates/backlog.md +0 -39
- package/data/harnesses/code-fable/skills/brainstorm/templates/build.md +0 -37
- package/data/harnesses/code-fable/skills/brainstorm/templates/decisions.md +0 -29
- package/data/harnesses/code-fable/skills/brainstorm/templates/doctrine.md +0 -31
- package/data/harnesses/code-fable/skills/brainstorm/templates/domain-model.md +0 -25
- package/data/harnesses/code-fable/skills/brainstorm/templates/glossary.md +0 -19
- package/data/harnesses/code-fable/skills/brainstorm/templates/milestones.md +0 -43
- package/data/harnesses/code-fable/skills/brainstorm/templates/non-goals.md +0 -21
- package/data/harnesses/code-fable/skills/brainstorm/templates/plan-doc.md +0 -61
- package/data/harnesses/code-fable/skills/brainstorm/templates/questions.md +0 -35
- package/data/harnesses/code-fable/skills/brainstorm/templates/references.md +0 -28
- package/data/harnesses/code-fable/skills/brainstorm/templates/rejected.md +0 -29
- package/data/harnesses/code-fable/skills/brainstorm/templates/state.md +0 -8
- package/data/harnesses/code-fable/skills/brainstorm/templates/tech.md +0 -23
- package/data/harnesses/code-fable/skills/brainstorm/templates/thesis.md +0 -21
- package/data/harnesses/code-fable/skills/distiller/SKILL.md +0 -219
- package/data/harnesses/code-fable/skills/distiller/references/docs-mode.md +0 -526
- package/data/harnesses/code-fable/skills/distiller/references/method.md +0 -166
- package/data/harnesses/code-fable/skills/documentation/SKILL.md +0 -125
- package/data/harnesses/code-fable/skills/documentation/references/examples.md +0 -193
- package/data/harnesses/code-fable/skills/documentation/references/style-guide.md +0 -288
- package/data/harnesses/code-fable/skills/documentation/references/templates.md +0 -865
- package/data/harnesses/code-fable/skills/workflow-mapper/SKILL.md +0 -430
- package/data/harnesses/code-fable/skills/workflow-mapper/references/patterns.md +0 -214
|
@@ -1,116 +1,107 @@
|
|
|
1
1
|
# Self-Correction — Defect Inspection · Run Measurement · Iterate-or-Propose
|
|
2
2
|
|
|
3
|
-
The reference for **Mode
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
- **
|
|
7
|
-
|
|
8
|
-
- **B. Measure** the run against a fixed **rubric** → a score + vibe band. This runs **every
|
|
9
|
-
iteration, including the final one** — the self-correcting step ALWAYS evaluates the current run.
|
|
10
|
-
- **C. Iterate-or-propose.** Each defect is classified by ONE test — *does fixing it require editing a
|
|
11
|
-
harness file (a rule or an agent)?* — into **within-run** (auto-iterate on THIS target, no
|
|
12
|
-
approval) vs **harness-changing** (the approval-gated proposal). The within-run loop improves the
|
|
13
|
-
current run; the harness-changing list improves the NEXT, different target.
|
|
3
|
+
The reference for **Mode 5** (`discover` harness). After a run finishes (Discovery → Ingestion → Evaluation → Cartography), the self-correcting step does THREE things, in order:
|
|
4
|
+
|
|
5
|
+
- **A. Inspect** the finished run against a built-in **defect checklist** → a concrete list of _behavioral defects_ in the prior steps (a list, never a vibe).
|
|
6
|
+
- **B. Measure** the run against a fixed **rubric** → a score + vibe band. This runs **every iteration, including the final one** — the self-correcting step ALWAYS evaluates the current run.
|
|
7
|
+
- **C. Iterate-or-propose.** Each defect is classified by ONE test — _does fixing it require editing a harness file (a rule or an agent)?_ — into **within-run** (auto-iterate on THIS target, no approval) vs **harness-changing** (the approval-gated proposal). The within-run loop improves the current run; the harness-changing list improves the NEXT, different target.
|
|
14
8
|
|
|
15
9
|
> **The two gates that bind this step (both unchanged):**
|
|
16
|
-
>
|
|
17
|
-
>
|
|
18
|
-
>
|
|
19
|
-
> 2. **Cost/state/credential actions are confirmation-gated.** The within-run iterate loop is
|
|
20
|
-
> **read-only / no-cost only.** Any fix needing a Pass-2 / credit-spend / state-change / credential
|
|
21
|
-
> action routes through the explicit-confirmation gate (ingestion §7 rule 4, §9.2) — never the
|
|
22
|
-
> auto-loop. The loop can never silently spend money or mutate an app to chase a score.
|
|
10
|
+
>
|
|
11
|
+
> 1. **Harness changes are approval-gated.** The main session presents `05-self-correction-proposal.md` and STOPS; nothing is applied until the user accepts per-item. Structural edits are flagged and never auto-applied.
|
|
12
|
+
> 2. **Cost/state/credential actions are confirmation-gated.** The within-run iterate loop is **read-only / no-cost only.** Any fix needing a Pass-2 / credit-spend / state-change / credential action routes through the explicit-confirmation gate (ingestion §7 rule 4, §9.2) — never the auto-loop. The loop can never silently spend money or mutate an app to chase a score.
|
|
23
13
|
|
|
24
14
|
---
|
|
25
15
|
|
|
26
16
|
## A. The defect checklist (what to inspect — by the mode that produced it)
|
|
27
17
|
|
|
28
|
-
Inspect the run and emit **every** defect that fired, each as:
|
|
29
|
-
`{mode, defect, severity (high|med|low), evidence anchor (research/<target>/…), within-run | harness-changing}`.
|
|
30
|
-
This list is the load-bearing output of stage A — never skip a category silently; "none in this
|
|
31
|
-
category" is itself recorded.
|
|
18
|
+
Inspect the run and emit **every** defect that fired, each as: `{mode, defect, severity (high|med|low), evidence anchor (research/<target>/…), within-run | harness-changing}`. This list is the load-bearing output of stage A — never skip a category silently; "none in this category" is itself recorded.
|
|
32
19
|
|
|
33
20
|
### Discovery defects
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
- **
|
|
38
|
-
|
|
39
|
-
- **
|
|
40
|
-
- **A sibling-declared count/host-list treated as a ceiling**, not a floor. *(low)*
|
|
41
|
-
- **Scope verdict wrong** — a suite/primitive/ambiguous/ethics call that should have fired (or wrongly did). *(high)*
|
|
21
|
+
|
|
22
|
+
- **Access axis mis-graded** — esp. `auth:have-login` asserted on a _claimed/expected_ login that was never live-probed (should be `auth:claimed` until confirmed); any `source`/`runtime`/`presence` value later contradicted by what Ingestion actually found. _(high — it mis-routes the whole run)_
|
|
23
|
+
- **Method graded from a label, not a retrieved artifact** — `openapi-verbatim` on a page merely _titled_ OpenAPI with no served, parseable spec. _(med)_
|
|
24
|
+
- **A predicted-available dimension came back blocked/absent** — Discovery over-promised. _(med)_
|
|
25
|
+
- **A sibling-declared count/host-list treated as a ceiling**, not a floor. _(low)_
|
|
26
|
+
- **Scope verdict wrong** — a suite/primitive/ambiguous/ethics call that should have fired (or wrongly did). _(high)_
|
|
42
27
|
|
|
43
28
|
### Ingestion defects
|
|
44
|
-
|
|
45
|
-
- **
|
|
46
|
-
- **
|
|
47
|
-
- **
|
|
48
|
-
- **
|
|
49
|
-
- **
|
|
50
|
-
|
|
51
|
-
- **Same artifact double-mined** and the two counts read as corroboration rather than a range.
|
|
52
|
-
- **Silent absence** — a dimension dropped with no `status: absent/folded` record.
|
|
53
|
-
- **Went silent / looked hung** — a long fan-out with no summary-first partial (ingestion §8).
|
|
54
|
-
- **An absence asserted that contradicts a sibling**, without a second-method re-check (ingestion §7 rule 10).
|
|
29
|
+
|
|
30
|
+
- **Redaction miss** — a secret-shaped value reached `raw/`. _(HIGH — also hard-zeros the safety axis)_
|
|
31
|
+
- **Method ≠ planned** — the capture used a weaker method than Discovery predicted, with no recorded reason. _(med)_
|
|
32
|
+
- **Missing contract artifact** — a `raw/` file the dimension's contract requires was not produced. _(med)_
|
|
33
|
+
- **Low completeness with no recorded gap/reason.** _(med)_
|
|
34
|
+
- **Blocked-where-predicted-available and not recovered** — no retry / second method / fold. _(med)_
|
|
35
|
+
- **Seam forked** — `api-path-catalog`/`feature-flags` written under a dimension's `raw/` instead of appended to `dimensions/_shared/` (ingestion §6). _(med)_
|
|
36
|
+
- **Same artifact double-mined** and the two counts read as corroboration rather than a range. _(med)_
|
|
37
|
+
- **Silent absence** — a dimension dropped with no `status: absent/folded` record. _(med)_
|
|
38
|
+
- **Went silent / looked hung** — a long fan-out with no summary-first partial (ingestion §8). _(low)_
|
|
39
|
+
- **An absence asserted that contradicts a sibling**, without a second-method re-check (ingestion §7 rule 10). _(med)_
|
|
55
40
|
|
|
56
41
|
### Evaluation defects
|
|
57
|
-
|
|
58
|
-
- **
|
|
59
|
-
- **
|
|
60
|
-
- **
|
|
61
|
-
- **
|
|
62
|
-
- **
|
|
63
|
-
- **
|
|
42
|
+
|
|
43
|
+
- **A conflict left flagged-but-unresolved** where the direct-observation tiebreaker applies. _(med)_
|
|
44
|
+
- **Over-promotion** — a confidence band raised without ≥2 _independent_ dimensions (or on two views of one artifact). _(med)_
|
|
45
|
+
- **Inference overrode a direct observation.** _(high)_
|
|
46
|
+
- **A single-source / low-confidence claim stated as fact.** _(med)_
|
|
47
|
+
- **Marketed write/execution behavior promoted to fact** on a `write_side_observed:false` session. _(med)_
|
|
48
|
+
- **A gap not surfaced**, or a count-divergence rendered as a conflict instead of a range. _(low)_
|
|
49
|
+
- **The published-vs-app-own API diff omitted** where a published API exists. _(med)_
|
|
50
|
+
|
|
51
|
+
### Cartography defects (Mode 4 — the experiential / coverage layer)
|
|
52
|
+
|
|
53
|
+
- **Marketed feature not located and not dispositioned** — a website/docs/changelog feature with no in-product route AND no `edition-gated | roadmap-not-shipped | over-claim | deeper-than-looked` disposition in `feature-coverage.md`. _(med — an unfilled coverage hole masquerading as "covered")_
|
|
54
|
+
- **Located-but-not-walked not queued** — a feature found in the nav but never navigated, absent from the within-run re-walk queue (so Mode 5 never closes it). _(med)_
|
|
55
|
+
- **Nav destination unmapped** — a top-level nav destination with no surface card in `information-architecture.md` (`ia_nav_complete:false` with no recorded reason). _(med)_
|
|
56
|
+
- **Primary flow not diagrammed** — an identified core journey (a captured write/auth/realtime/AI wire) with no `ux-flows.md` sequence diagram. _(med)_
|
|
57
|
+
- **Buried flagship not surfaced** — a marketing-promoted feature sitting at ≥D3 that the IA doc didn't flag as a positioning-vs-product gap. _(low)_
|
|
58
|
+
- **Depth not recorded** — surface cards missing the numeric `Dn` depth measure (so promoted-vs-buried can't be reconciled). _(low)_
|
|
59
|
+
- **Screenshot gap unrecorded** — primary surfaces without a screenshot AND no `screenshot_coverage` gap recorded (a silent visual-coverage miss vs an honest one). _(low)_
|
|
60
|
+
- **Write flow drawn as observed on a `write_side_observed:false` run** — a generate/submit journey diagrammed solid (observed) when it was only inferred. _(med — same family as the evaluation write-side cap)_
|
|
64
61
|
|
|
65
62
|
### Cross-cutting defects
|
|
66
|
-
- **Provenance frontmatter incomplete or dishonest** — `status`/`confidence` not matching reality. *(high)*
|
|
67
|
-
- **An absent dimension not recorded as a finding.** *(low)*
|
|
68
63
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
64
|
+
- **Provenance frontmatter incomplete or dishonest** — `status`/`confidence` not matching reality. _(high)_
|
|
65
|
+
- **An absent dimension not recorded as a finding.** _(low)_
|
|
66
|
+
|
|
67
|
+
> The checklist is the floor, not the ceiling — a run may exhibit a behavioral defect not listed here. Record a novel defect with the same shape; if it would recur on a different target, route it harness-changing (and it becomes a checklist addition in its own right).
|
|
72
68
|
|
|
73
69
|
---
|
|
74
70
|
|
|
75
71
|
## B. The measurement rubric (the score — always computed)
|
|
76
72
|
|
|
77
|
-
|
|
78
|
-
noise. The score is a **heuristic to catch regression and give the loop direction** — not a precise grade.
|
|
73
|
+
**Six axes → /100** (re-weighted from the prior five to give the experiential layer first-class weight), so iterations are comparable and "deteriorating" is a real drop, not noise. The score is a **heuristic to catch regression and give the loop direction** — not a precise grade.
|
|
79
74
|
|
|
80
|
-
| # | Axis (
|
|
81
|
-
|
|
82
|
-
| 1 | **
|
|
83
|
-
| 2 | **
|
|
84
|
-
| 3 | **
|
|
85
|
-
| 4 | **
|
|
86
|
-
| 5 | **
|
|
75
|
+
| # | Axis (max) | How to score |
|
|
76
|
+
| --- | --- | --- |
|
|
77
|
+
| 1 | **Dimensional coverage** (15) | `15 × (dimensions captured 'complete' ÷ dimensions reachable per the access vector)`; **−3** per dimension blocked where Discovery predicted available. |
|
|
78
|
+
| 2 | **Experiential / IA coverage** (20) | the Cartography scorecard, fed in: `8 × feature_location_rate/100` + `6 × flow_coverage/100` + `4 × screenshot_coverage/100` + `2 ×` (`ia_nav_complete` ? 1 : surface-cards ÷ top-level-destinations); **−2** per _claimed-but-not-located_ feature left **un-dispositioned**. Floored at 0. _(the heavily-weighted axis: a run that collects feature pages but never locates / walks / diagrams / screenshots them scores low here.)_ |
|
|
79
|
+
| 3 | **Provenance integrity** (15) | `7.5 × (captures with complete honest frontmatter ÷ all captures)` + `7.5 × (evaluation claims anchored+provenance-tagged ÷ all claims)`. |
|
|
80
|
+
| 4 | **Reconciliation correctness** (20) | start 20; **−3** per weighting violation (over-promotion, tiebreaker skipped, single-source-as-fact, count-divergence-as-conflict, published-vs-app diff missing where a public API exists, a UX-flow drawn observed on a `write_side_observed:false` run). |
|
|
81
|
+
| 5 | **Calibration & safety** (15) | gaps/absences recorded honestly + confidence bands honest, scaled to 15. **A redaction miss hard-zeros this axis** and flags the run `unsafe` regardless of the others. |
|
|
82
|
+
| 6 | **Defect load** (15) | `15 − Σ(severity weight)` over stage-A defects (high=3, med=2, low=1), floored at 0. |
|
|
87
83
|
|
|
88
|
-
**Rollup:** sum the
|
|
89
|
-
Plus a one-line gestalt (e.g. "solid coverage, but evaluation over-promoted two single-source claims").
|
|
84
|
+
**Rollup:** sum the six → `score/100` (max 15+20+15+20+15+15). **Vibe band:** ≥85 strong · 70–84 solid · 50–69 thin · <50 weak. Plus a one-line gestalt (e.g. "solid wire capture, but cartography located only 9 of 17 marketed features and screenshotted none").
|
|
90
85
|
|
|
91
|
-
**The iteration ledger** (written into `
|
|
86
|
+
**The iteration ledger** (written into `05-self-correction-proposal.md`):
|
|
92
87
|
|
|
93
|
-
| iter | score | Δ |
|
|
94
|
-
|
|
95
|
-
| 0 | … | — | … | … | … | … | … | (baseline) | … |
|
|
96
|
-
| 1 | … | +n | … | … | … | … | … | re-
|
|
88
|
+
| iter | score | Δ | dim | **ia** | prov | recon | calib | defects | within-run fixes applied | remaining |
|
|
89
|
+
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|
90
|
+
| 0 | … | — | … | … | … | … | … | … | (baseline) | … |
|
|
91
|
+
| 1 | … | +n | … | … | … | … | … | … | re-walked 4 surfaces; captured screenshots; located Rules engine | … |
|
|
97
92
|
|
|
98
93
|
---
|
|
99
94
|
|
|
100
95
|
## C. Iterate-or-propose (the loop)
|
|
101
96
|
|
|
102
|
-
**Classify every stage-A defect by one test:**
|
|
103
|
-
agent file?*
|
|
97
|
+
**Classify every stage-A defect by one test:** _does fixing it require editing a rule or an agent file?_
|
|
104
98
|
|
|
105
|
-
- **No → within-run.** Fixable by re-running a Mode 1–
|
|
106
|
-
|
|
107
|
-
second probe, append a forked catalog into `_shared/`, recover a blocked dimension after a trivial
|
|
108
|
-
fix). **The main session auto-iterates these — no approval** (within the read-only/no-cost boundary).
|
|
109
|
-
- **Yes → harness-changing.** A generic methodology fix the NEXT different target would also hit →
|
|
110
|
-
accumulate into `04-self-correction-proposal.md`, **approval-gated** (present + STOP).
|
|
99
|
+
- **No → within-run.** Fixable by re-running a Mode 1–4 step on THIS target, better (re-collect a dimension deeper, re-run a reconciliation pass, do a missed entitlements mine, run the §7-rule-10 second probe, append a forked catalog into `_shared/`, recover a blocked dimension after a trivial fix). **For Cartography defects this is the live re-walk:** re-enter the product (read-only nav) and walk the `feature-coverage.md` _located-but-not-walked_ queue, capture the missed screenshots, and locate any _deeper-than-looked_ marketed feature — then re-run Mode 4 and re-score. (A _claimed-but-not-located_ feature that is **edition-gated** / **roadmap-only** is _dispositioned_, not re-walked — re-walking can't find what isn't shipped.) **The main session auto-iterates these — no approval** (within the read-only/no-cost boundary; the live re-walk is pure navigation + screenshots, so it stays inside it — a feature is never _triggered_ to be located).
|
|
100
|
+
- **Yes → harness-changing.** A generic methodology fix the NEXT different target would also hit → accumulate into `05-self-correction-proposal.md`, **approval-gated** (present + STOP).
|
|
111
101
|
- A single defect may be **both**: fix it within-run now AND propose the rule so it never recurs.
|
|
112
102
|
|
|
113
103
|
### The loop (driven by the main session, not a sub-agent)
|
|
104
|
+
|
|
114
105
|
```
|
|
115
106
|
score[0] = measure(run); best = run; iter = 0
|
|
116
107
|
loop:
|
|
@@ -118,60 +109,56 @@ loop:
|
|
|
118
109
|
within = defects.where(within-run AND read-only/no-cost)
|
|
119
110
|
harness = defects.where(harness-changing)
|
|
120
111
|
if within is empty: break # CONVERGED
|
|
121
|
-
apply within-run fixes → run' # re-run
|
|
112
|
+
apply within-run fixes → run' # re-run cheapest affected Mode 1–4 steps (incl. live re-walk)
|
|
122
113
|
iter += 1; score[iter] = measure(run') # stage B — ALWAYS measure
|
|
123
114
|
if score[iter] < score[iter-1] - TOL: # REGRESSION (clear drop, not noise)
|
|
124
115
|
run = best; break # revert to the best prior run, stop
|
|
125
116
|
best = run = run'
|
|
126
117
|
if iter >= CAP: break # CAP ≥ 5
|
|
127
|
-
present(harness) as
|
|
118
|
+
present(harness) as 05-self-correction-proposal.md + the iteration ledger # approval gate
|
|
128
119
|
```
|
|
129
120
|
|
|
130
121
|
**Stop conditions** (any one ends the loop):
|
|
122
|
+
|
|
131
123
|
1. **Converged** — no within-run defects remain.
|
|
132
|
-
2. **Regression** — `score[iter] < score[iter-1] − TOL` → **revert to the best prior run and stop**
|
|
133
|
-
|
|
134
|
-
within-noise wobble doesn't false-stop — stop only on a *clear* drop; always keep the highest-scoring
|
|
135
|
-
run as `best`.
|
|
136
|
-
3. **Cap** — `iter` hits the cap. **The cap is ≥ 5**: the loop must be *willing* to run at least five
|
|
137
|
-
iterations on a still-improving run before giving up; raise it while the score keeps climbing.
|
|
124
|
+
2. **Regression** — `score[iter] < score[iter-1] − TOL` → **revert to the best prior run and stop** (never let the loop make the run worse chasing a defect). `TOL` is a small tolerance (≈2 points) so a within-noise wobble doesn't false-stop — stop only on a _clear_ drop; always keep the highest-scoring run as `best`.
|
|
125
|
+
3. **Cap** — `iter` hits the cap. **The cap is ≥ 5**: the loop must be _willing_ to run at least five iterations on a still-improving run before giving up; raise it while the score keeps climbing.
|
|
138
126
|
|
|
139
127
|
---
|
|
140
128
|
|
|
141
|
-
## Output — `
|
|
129
|
+
## Output — `05-self-correction-proposal.md`
|
|
142
130
|
|
|
143
131
|
```markdown
|
|
144
132
|
---
|
|
145
133
|
target: <slug>
|
|
146
134
|
proposed_at: <YYYY-MM-DD>
|
|
147
|
-
status: PROPOSED
|
|
135
|
+
status: PROPOSED # → APPLIED only after per-item approval (harness-change rows)
|
|
148
136
|
awaiting_approval: true
|
|
149
|
-
run_score: <final /100>
|
|
137
|
+
run_score: <final /100> # the score of the run AS SHIPPED (post-iteration)
|
|
150
138
|
vibe: strong | solid | thin | weak
|
|
151
139
|
iterations: <n>
|
|
152
140
|
stopped_on: converged | regression | cap
|
|
153
141
|
---
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
##
|
|
158
|
-
|
|
159
|
-
##
|
|
160
|
-
|
|
142
|
+
|
|
143
|
+
# <Target> — Self-Correction (Mode 5)
|
|
144
|
+
|
|
145
|
+
## Run measurement (the final score + per-axis breakdown + the one-line vibe gestalt)
|
|
146
|
+
|
|
147
|
+
## Iteration ledger (the per-iteration table — score trajectory + fixes applied each round)
|
|
148
|
+
|
|
149
|
+
## Behavioral defects found (stage-A list: mode · defect · severity · evidence anchor · within-run|harness)
|
|
150
|
+
|
|
151
|
+
## Within-run fixes applied (what the auto-loop re-ran on this target, and the score delta each bought)
|
|
152
|
+
|
|
153
|
+
## Harness-change proposals (APPROVAL-GATED table: # · sev · additive|structural · finding+anchor · fix · target file)
|
|
154
|
+
|
|
155
|
+
## Approval gate (present + STOP; main session applies accepted items, flips each to APPLIED, logs)
|
|
161
156
|
```
|
|
162
157
|
|
|
163
|
-
A **thin harness-change table with a high `run_score` and `stopped_on: converged`** is the success
|
|
164
|
-
signal — the run self-corrected to a good state and left little for the harness to learn. A **batch**
|
|
165
|
-
of runs additionally rolls up into a cross-target synthesis that promotes only patterns ≥2 *independent*
|
|
166
|
-
targets hit (guard against a homogeneous batch: 6/6 of one category is one vote, not six).
|
|
158
|
+
A **thin harness-change table with a high `run_score` and `stopped_on: converged`** is the success signal — the run self-corrected to a good state and left little for the harness to learn. A **batch** of runs additionally rolls up into a cross-target synthesis that promotes only patterns ≥2 _independent_ targets hit (guard against a homogeneous batch: 6/6 of one category is one vote, not six).
|
|
167
159
|
|
|
168
160
|
---
|
|
169
161
|
|
|
170
|
-
## How Mode
|
|
171
|
-
|
|
172
|
-
Stage C — split within-run vs harness-changing; **auto-iterate** the within-run set (read-only/no-cost,
|
|
173
|
-
≥5 iterations capable, stop on regression/convergence/cap), re-measuring each round; **accumulate** the
|
|
174
|
-
harness-changing set into the approval-gated proposal. Present the proposal + ledger and STOP. The main
|
|
175
|
-
session applies accepted harness rows, flips them to APPLIED, logs the change, and (per ingestion /
|
|
176
|
-
the orchestrator) mirrors to the harness home. Promote only what the next, different target would hit;
|
|
177
|
-
prefer additive edits; structural edits are flagged, never auto-applied.
|
|
162
|
+
## How Mode 5 uses this reference
|
|
163
|
+
|
|
164
|
+
Stage A — inspect against the checklist (now including the **Cartography** category), emit the defect list. Stage B — score the run (always), the **experiential / IA coverage** axis fed by the Cartography scorecard. Stage C — split within-run vs harness-changing; **auto-iterate** the within-run set (read-only/no-cost, ≥5 iterations capable, stop on regression/convergence/cap), re-measuring each round — Cartography defects iterate as the **live read-only re-walk** of the located-but-not-walked queue; **accumulate** the harness-changing set into the approval-gated proposal. Present the proposal + ledger and STOP. The main session applies accepted harness rows, flips them to APPLIED, logs the change, and (per ingestion / the orchestrator) mirrors to the harness home. Promote only what the next, different target would hit; prefer additive edits; structural edits are flagged, never auto-applied.
|