@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.
Files changed (118) hide show
  1. package/README.md +6 -5
  2. package/data/harness-index.json +1 -5
  3. package/data/harnesses/code/CLAUDE.md +8 -19
  4. package/data/harnesses/code/agents/brainstorm.md +3 -3
  5. package/data/harnesses/code/agents/change-review.md +13 -10
  6. package/data/harnesses/code/agents/harness-manager.md +15 -15
  7. package/data/harnesses/code/agents/maintenance.md +10 -3
  8. package/data/harnesses/code/agents/performance-review.md +5 -0
  9. package/data/harnesses/code/harness.json +1 -1
  10. package/data/harnesses/code/rules/general.md +40 -36
  11. package/data/harnesses/code/skills/boundary/SKILL.md +15 -42
  12. package/data/harnesses/code/skills/boundary/references/boundary-taxonomy.md +366 -304
  13. package/data/harnesses/code/skills/brainstorm/README.md +9 -9
  14. package/data/harnesses/code/skills/brainstorm/SKILL.md +15 -15
  15. package/data/harnesses/code/skills/brainstorm/harvest.md +3 -3
  16. package/data/harnesses/code/skills/brainstorm/templates/backlog.md +2 -2
  17. package/data/harnesses/code/skills/brainstorm/templates/build.md +6 -6
  18. package/data/harnesses/code/skills/brainstorm/templates/decisions.md +3 -3
  19. package/data/harnesses/code/skills/brainstorm/templates/doctrine.md +2 -2
  20. package/data/harnesses/code/skills/brainstorm/templates/domain-model.md +2 -2
  21. package/data/harnesses/code/skills/brainstorm/templates/glossary.md +2 -1
  22. package/data/harnesses/code/skills/brainstorm/templates/non-goals.md +3 -7
  23. package/data/harnesses/code/skills/brainstorm/templates/questions.md +6 -5
  24. package/data/harnesses/code/skills/brainstorm/templates/state.md +1 -8
  25. package/data/harnesses/code/skills/brainstorm/templates/tech.md +6 -6
  26. package/data/harnesses/code/skills/brainstorm/templates/thesis.md +2 -2
  27. package/data/harnesses/code/skills/distiller/SKILL.md +48 -177
  28. package/data/harnesses/code/skills/distiller/references/docs-mode.md +116 -343
  29. package/data/harnesses/code/skills/distiller/references/method.md +37 -109
  30. package/data/harnesses/code/skills/documentation/SKILL.md +9 -6
  31. package/data/harnesses/code/skills/documentation/references/examples.md +30 -61
  32. package/data/harnesses/code/skills/documentation/references/style-guide.md +59 -62
  33. package/data/harnesses/code/skills/documentation/references/templates.md +26 -34
  34. package/data/harnesses/code/skills/workflow-mapper/SKILL.md +32 -11
  35. package/data/harnesses/code/skills/workflow-mapper/references/patterns.md +1 -1
  36. package/data/harnesses/discover/CLAUDE.md +60 -113
  37. package/data/harnesses/discover/agents/api.md +11 -28
  38. package/data/harnesses/discover/agents/codebase.md +12 -30
  39. package/data/harnesses/discover/agents/community.md +9 -21
  40. package/data/harnesses/discover/agents/deployed-client-bundle.md +16 -67
  41. package/data/harnesses/discover/agents/distribution-artifacts.md +21 -59
  42. package/data/harnesses/discover/agents/docs.md +11 -20
  43. package/data/harnesses/discover/agents/infra-backend-fingerprint.md +28 -68
  44. package/data/harnesses/discover/agents/packages.md +12 -28
  45. package/data/harnesses/discover/agents/session.md +18 -50
  46. package/data/harnesses/discover/agents/website.md +9 -19
  47. package/data/harnesses/discover/agents/wire-capture.md +22 -72
  48. package/data/harnesses/discover/harness.json +1 -1
  49. package/data/harnesses/discover/rules/cartography-coverage.md +94 -0
  50. package/data/harnesses/discover/rules/cartography-flows.md +99 -0
  51. package/data/harnesses/discover/rules/cartography-ia.md +88 -0
  52. package/data/harnesses/discover/rules/cartography.md +109 -0
  53. package/data/harnesses/discover/rules/discovery.md +73 -182
  54. package/data/harnesses/discover/rules/evaluation.md +92 -98
  55. package/data/harnesses/discover/rules/ingestion.md +123 -322
  56. package/data/harnesses/discover/rules/self-correction.md +94 -107
  57. package/data/harnesses/discover/rules/tradecraft.md +201 -172
  58. package/data/harnesses/hr/CLAUDE.md +21 -51
  59. package/data/harnesses/hr/harness.json +1 -1
  60. package/data/harnesses/hr/skills/interview-eval/SKILL.md +23 -11
  61. package/data/harnesses/hr/skills/interview-eval/TEMPLATE.md +49 -29
  62. package/data/harnesses/hr/skills/interview-eval/rubric.md +30 -30
  63. package/data/harnesses/kb-agi/CLAUDE.md +8 -8
  64. package/data/harnesses/kb-agi/agents/kb-agi-init.md +31 -22
  65. package/data/harnesses/kb-agi/agents/kb-catch-stale.md +1 -1
  66. package/data/harnesses/kb-agi/agents/kb-find-gaps.md +1 -1
  67. package/data/harnesses/kb-agi/agents/kb-fix-links.md +1 -1
  68. package/data/harnesses/kb-agi/agents/kb-refresh-summaries.md +2 -2
  69. package/data/harnesses/kb-agi/agents/kb-sync-metadata.md +2 -2
  70. package/data/harnesses/kb-agi/harness.json +1 -1
  71. package/package.json +1 -1
  72. package/data/harnesses/code-fable/.prettierignore +0 -12
  73. package/data/harnesses/code-fable/.prettierrc.json +0 -3
  74. package/data/harnesses/code-fable/.vscode/settings.json +0 -10
  75. package/data/harnesses/code-fable/CLAUDE.md +0 -135
  76. package/data/harnesses/code-fable/agents/brainstorm.md +0 -35
  77. package/data/harnesses/code-fable/agents/change-review.md +0 -248
  78. package/data/harnesses/code-fable/agents/harness-manager.md +0 -181
  79. package/data/harnesses/code-fable/agents/maintenance.md +0 -115
  80. package/data/harnesses/code-fable/agents/performance-review.md +0 -218
  81. package/data/harnesses/code-fable/agents/spec-mode.md +0 -56
  82. package/data/harnesses/code-fable/harness.json +0 -12
  83. package/data/harnesses/code-fable/hooks/hooks.json +0 -27
  84. package/data/harnesses/code-fable/hooks/lib/redact.mjs +0 -35
  85. package/data/harnesses/code-fable/hooks/prompt-recall.mjs +0 -155
  86. package/data/harnesses/code-fable/hooks/session-reflect.mjs +0 -285
  87. package/data/harnesses/code-fable/rules/general.md +0 -79
  88. package/data/harnesses/code-fable/rules/nomenclature.md +0 -30
  89. package/data/harnesses/code-fable/rules/typescript.md +0 -19
  90. package/data/harnesses/code-fable/skills/boundary/SKILL.md +0 -76
  91. package/data/harnesses/code-fable/skills/boundary/references/boundary-taxonomy.md +0 -734
  92. package/data/harnesses/code-fable/skills/brainstorm/README.md +0 -136
  93. package/data/harnesses/code-fable/skills/brainstorm/SKILL.md +0 -135
  94. package/data/harnesses/code-fable/skills/brainstorm/harvest.md +0 -26
  95. package/data/harnesses/code-fable/skills/brainstorm/templates/backlog.md +0 -39
  96. package/data/harnesses/code-fable/skills/brainstorm/templates/build.md +0 -37
  97. package/data/harnesses/code-fable/skills/brainstorm/templates/decisions.md +0 -29
  98. package/data/harnesses/code-fable/skills/brainstorm/templates/doctrine.md +0 -31
  99. package/data/harnesses/code-fable/skills/brainstorm/templates/domain-model.md +0 -25
  100. package/data/harnesses/code-fable/skills/brainstorm/templates/glossary.md +0 -19
  101. package/data/harnesses/code-fable/skills/brainstorm/templates/milestones.md +0 -43
  102. package/data/harnesses/code-fable/skills/brainstorm/templates/non-goals.md +0 -21
  103. package/data/harnesses/code-fable/skills/brainstorm/templates/plan-doc.md +0 -61
  104. package/data/harnesses/code-fable/skills/brainstorm/templates/questions.md +0 -35
  105. package/data/harnesses/code-fable/skills/brainstorm/templates/references.md +0 -28
  106. package/data/harnesses/code-fable/skills/brainstorm/templates/rejected.md +0 -29
  107. package/data/harnesses/code-fable/skills/brainstorm/templates/state.md +0 -8
  108. package/data/harnesses/code-fable/skills/brainstorm/templates/tech.md +0 -23
  109. package/data/harnesses/code-fable/skills/brainstorm/templates/thesis.md +0 -21
  110. package/data/harnesses/code-fable/skills/distiller/SKILL.md +0 -219
  111. package/data/harnesses/code-fable/skills/distiller/references/docs-mode.md +0 -526
  112. package/data/harnesses/code-fable/skills/distiller/references/method.md +0 -166
  113. package/data/harnesses/code-fable/skills/documentation/SKILL.md +0 -125
  114. package/data/harnesses/code-fable/skills/documentation/references/examples.md +0 -193
  115. package/data/harnesses/code-fable/skills/documentation/references/style-guide.md +0 -288
  116. package/data/harnesses/code-fable/skills/documentation/references/templates.md +0 -865
  117. package/data/harnesses/code-fable/skills/workflow-mapper/SKILL.md +0 -430
  118. package/data/harnesses/code-fable/skills/workflow-mapper/references/patterns.md +0 -214
@@ -0,0 +1,99 @@
1
+ # Cartography — UX Flows reference (Mode 4, artifact 2 of 3)
2
+
3
+ The method + template for `evaluation/ux-flows.md`. Spine in [`cartography.md`](cartography.md); siblings
4
+ [`cartography-ia.md`](cartography-ia.md), [`cartography-coverage.md`](cartography-coverage.md).
5
+
6
+ The UX-flows doc captures the primary end-to-end journeys, each as a **mermaid sequence diagram**. This
7
+ is the **black-box adaptation of a code-level workflow trace**: where a source tracer follows call
8
+ chains, Cartography follows the **observed wire** — trigger (user action) → surface → the actual API
9
+ calls captured in the `session` dimension → state transitions → terminal effect. **Diagram only what was
10
+ observed**; mark any inferred hop explicitly.
11
+
12
+ ---
13
+
14
+ ## Participants (the black-box vocabulary)
15
+
16
+ Map every actor in a captured flow to one of these participants (keep names identical across all
17
+ diagrams — the same backend is the same participant everywhere):
18
+
19
+ | Participant | What it is |
20
+ | --- | --- |
21
+ | `User` | the operator taking the action |
22
+ | `SPA` | the client app (browser) |
23
+ | `InternalAPI` | the app-own cookie/token API (the real transport — `/rest`, `/enrich`, `/graphql`, …) |
24
+ | `PublicAPI` | the published developer/partner API — **only if the flow actually used it** |
25
+ | `JobQueue` | an async batch / worker / job system (the work happens off-request) |
26
+ | `Realtime` | a WS / SSE / long-poll channel |
27
+ | `3rdParty` | a named external vendor (AI mesh, payments, CDP, email, telephony) |
28
+ | `Store` | browser storage / client cache (Apollo, Redux-persist, IndexedDB) |
29
+
30
+ ---
31
+
32
+ ## Identifying the flows (from captured wire, not source)
33
+
34
+ The entry points are the **captured journeys** in the `session` dimension — you already have the wire;
35
+ this turns it into a journey. Per category, look for:
36
+
37
+ - **Core action** — the primary write: the create / save / submit body + its server resolution
38
+ (`raw/write-flow.md`).
39
+ - **Auth & session** — login → token/cookie → the authed read; the refresh path (`raw/auth-*.md`).
40
+ - **Realtime** — the WS/SSE/long-poll lifecycle + the event catalog (or the **negative**: "dashboard is
41
+ REST-only" is a real flow finding, not a miss).
42
+ - **Data pipeline** — import/export, ingest, sync, bulk/mass-action (often an async `JobQueue` flow).
43
+ - **Configuration** — a model/setting change that ripples (e.g. add an attribute → completeness recompute).
44
+ - **AI** — a generate/translate/agent call (`raw/*-wire.md`); note brokered-server-side vs client-direct.
45
+
46
+ Trace each: trigger → which surface → the observed request(s) → branches (conflict/permission/feature
47
+ flag → `alt`/`opt`) → loops (polling/retry/batch → `loop`) → the terminal effect (a persisted entity, a
48
+ job id, a streamed result). Stop at the terminal write or external response.
49
+
50
+ ## Complexity (sets diagram detail)
51
+
52
+ - **Steps** (distinct operations): 1–2 simple · 3–5 moderate · 6+ complex.
53
+ - **Participants**: 2 simple · 3–4 moderate · 5+ complex.
54
+ - **Branching** (`alt`/`opt`): 0 linear · 1–2 moderate · 3+ complex.
55
+ - Async (polling / job / child workflow): +1 level.
56
+
57
+ ---
58
+
59
+ ## The output template — `evaluation/ux-flows.md`
60
+
61
+ ````markdown
62
+ # <Target> — UX Flows
63
+ ## TL;DR (how the product gets work done: sync-REST vs async-job, where realtime lives,
64
+ the approval/gate pattern, what's brokered server-side)
65
+ ## Flow index (table: flow · category · trigger · participants · complexity)
66
+ ## <Category> flows (Core action / Auth & session / Realtime / Data pipeline / Configuration / AI —
67
+ skip empty categories)
68
+ ### <Flow name>
69
+ **Trigger · Surface · Observed?** (observed-wire | partially-inferred)
70
+ ```mermaid
71
+ sequenceDiagram
72
+ participant User
73
+ participant SPA
74
+ participant InternalAPI
75
+ User->>SPA: <action>
76
+ SPA->>InternalAPI: <METHOD> <path>
77
+ InternalAPI-->>SPA: <status + shape>
78
+ SPA-->>User: <UI effect>
79
+ ```
80
+ **Notes:** (server-side resolution · the gate · the async hop · what was inferred vs observed)
81
+ ## Cross-dimension reconciliation (the flow as the app runs it vs as the public API/docs describe it —
82
+ drift is a finding; published = fact, observed-drift = tentative)
83
+ ## Open questions
84
+ ````
85
+
86
+ ## Diagram rules (from the workflow-mapper discipline)
87
+
88
+ 1. **Arrows:** solid `->>` = request/call · dashed `-->>` = return/response. No dangling calls (every
89
+ request has a response or a noted fire-and-forget).
90
+ 2. **≤7 participants, ≤15 steps** per diagram. Past that, group with `rect` blocks / `Note over`, or
91
+ split into linked sub-diagrams.
92
+ 3. **`alt`** = a real workflow branch (conflict vs success), **`loop`** = poll / retry / batch (label
93
+ the condition), **`opt`** = a gated step (permission, feature flag) — not generic error handling.
94
+ 4. **Labels ≤8 words** — the action, not the implementation detail.
95
+ 5. **Consistent participant names** across every diagram.
96
+ 6. **The write-side rule (hard):** a flow that touches a **write / generate / launch** path on a
97
+ `write_side_observed: false` run is diagrammed **as inferred** (dashed arrows, an explicit
98
+ `Note over … : inferred (Pass-1 only)`), **never as observed** — this mirrors the evaluation
99
+ write-side cap, and drawing it solid is a Mode-5 Cartography defect.
@@ -0,0 +1,88 @@
1
+ # Cartography — Information Architecture reference (Mode 4, artifact 1 of 3)
2
+
3
+ The method + template for `evaluation/information-architecture.md`. Spine + inputs + orchestration are
4
+ in [`cartography.md`](cartography.md); the other two artifacts in [`cartography-flows.md`](cartography-flows.md)
5
+ and [`cartography-coverage.md`](cartography-coverage.md).
6
+
7
+ The IA doc is the map of **how the product is organized for the operator**. Walk the live app
8
+ (read-only, in-app nav — never a full reload mid-walk, ingestion §9.4); for every reachable surface
9
+ record its **depth**, whether it is **promoted** or **buried**, its **operator capability**, its
10
+ **route**, the **wire endpoints** it fires, and the **entities** it touches.
11
+
12
+ ---
13
+
14
+ ## The depth taxonomy (the load-bearing measure)
15
+
16
+ A capability's _depth_ is the product's implicit priority signal — record it **numerically**:
17
+
18
+ | Depth | Meaning | Example |
19
+ | --- | --- | --- |
20
+ | **D0** | a top-level nav destination (sidebar / top-bar item) | `Products`, `Settings` |
21
+ | **D1** | a list / index under a D0 destination | the product grid; the attributes list |
22
+ | **D2** | a detail / editor surface, or a tab within it | a product edit form; an attribute's config |
23
+ | **D3+** | a sub-panel, modal, drawer, or nested tab | "Ask AI" panel; a variant-axis editor; a workflow-config sub-tab |
24
+
25
+ **Promoted** = the capability is a D0/D1 first-class destination. **Buried** = it is only reachable at
26
+ ≥D2 (often D3+), behind a detail surface or a menu. Depth is what makes the two reconciliations below
27
+ computable.
28
+
29
+ ---
30
+
31
+ ## The two reconciliations that matter
32
+
33
+ 1. **Positioning-vs-product (the buried flagship).** A feature the **marketing** promotes — a verb on
34
+ the homepage, a named hero capability — that lives at **≥D3** in the product is a real finding. Name
35
+ it; it feeds `feature-coverage.md`'s _buried flagships_ section. (A "Workflow engine" splashed on the
36
+ site but reached only via a product → menu → sub-tab is the canonical case.)
37
+ 2. **Unmarketed depth (the inverse).** A deep, powerful surface the marketing **never mentions** (a rich
38
+ admin/config/automation surface, a governance log, a bulk-action engine) is equally a finding — it
39
+ feeds `feature-coverage.md`'s _unmarketed depth_ section.
40
+
41
+ Both are computed by comparing the **walked nav depth** (this doc) against the **claimed feature
42
+ catalog** (`cartography-coverage.md`).
43
+
44
+ ---
45
+
46
+ ## Surface cards (the screen layer that realizes the entity spine)
47
+
48
+ One card per **primary** surface (each D0 destination + each materially distinct D1 list and D2 detail
49
+ surface). The card is the join between the IA and the data model:
50
+
51
+ ```markdown
52
+ ### <Surface name> [route · depth Dn · promoted | buried]
53
+ - **Capability:** what the operator can do here (read / create / edit / configure / run)
54
+ - **Entities:** the domain entities it surfaces (link → data-model-api-surface.md)
55
+ - **Endpoints:** the app-own wire calls it fires (link → _shared/api-path-catalog.md)
56
+ - **Screenshot:** captures/screens/<nn>-<surface>.png (or: gap — reason)
57
+ ```
58
+
59
+ > **Cross-dimension reconciliation (a route that's in the bundle but not in the nav).** Diff the walked
60
+ > nav against `deployed-client-bundle`'s `route-table.md`: a route present in the bundle but **never
61
+ > reachable in the live nav** is a **dormant / unshipped surface** — a finding, not noise. (On a
62
+ > server-rendered / RSC app, a bundle route count can overstate the client surface — fold that into the
63
+ > note rather than reporting a phantom "unused routes" gap; ingestion §9.4 RSC check.)
64
+
65
+ ---
66
+
67
+ ## The output template — `evaluation/information-architecture.md`
68
+
69
+ ```markdown
70
+ # <Target> — Information Architecture
71
+ ## TL;DR (org-shape in 3–5 sentences: how many top-level destinations, what's promoted vs
72
+ folded, the deepest important surface, the biggest positioning-vs-product gap)
73
+ ## Nav tree (the full hierarchy as an indented tree or table: top-level → section → list →
74
+ detail → sub-tab; tag each node with depth D0/D1/D2/… and [promoted]/[buried])
75
+ ## Surface cards (one per primary surface — the card shape above)
76
+ ## Promoted vs buried (the headline reconciliation: first-class destinations vs surfaces hidden N
77
+ levels deep — name the surprises in BOTH directions: buried flagships AND
78
+ unmarketed depth)
79
+ ## Admin / settings depth (the configuration surfaces + how deep they sit)
80
+ ## Global affordances (command palette, global search, create-anywhere, keyboard shortcuts — if present)
81
+ ## Cross-dimension reconciliation (nav-as-walked vs the bundle route-table / docs IA — dormant/unshipped
82
+ routes are findings)
83
+ ## Open questions
84
+ ```
85
+
86
+ > The IA doc **feeds** `feature-coverage.md`: every surface card's route + depth is what the coverage
87
+ > matrix's `Located? · Route · depth` columns cite, and the promoted-vs-buried headline is what its
88
+ > _buried flagships_ / _unmarketed depth_ sections draw from. Build the IA doc first, then coverage.
@@ -0,0 +1,109 @@
1
+ # Cartography Reference — Mode 4 spine (Information Architecture · UX Flows · Feature Coverage)
2
+
3
+ The reference root for **Cartography** (`discover` harness, **Mode 4**). After Evaluation (Mode 3)
4
+ reconciles the dimensions into the four rollups, Cartography makes the product **legible as a product**:
5
+ it **re-enters the live product** (read-only nav) and compiles three experiential artifacts the
6
+ dimension collectors structurally miss, then runs a **coverage gate** that reconciles every
7
+ _marketed / documented_ feature against **where it actually lives in the product** and **whether the run
8
+ walked it**.
9
+
10
+ The blind spot it closes: a feature **hyped on the website but buried three levels deep** in the product
11
+ — or marketed but **absent from this edition entirely**. Ingestion captures the _raw_ feature lists
12
+ (`website`, `docs`, `community`) and the _entity spine + wire_ (`session`); none of those locate a
13
+ feature in the nav, measure its depth, draw its journey, or save a screenshot.
14
+
15
+ > **Why a distinct mode, not a phase of Evaluation.** Evaluation is **desk reconciliation** of
16
+ > already-captured material. Cartography **re-enters the live product** to walk surfaces, measure nav
17
+ > depth, and capture screenshots — work that needs the **browser singleton** (ingestion §7 rule 9) and
18
+ > a marketed-feature checklist to drive it. It runs **after** Evaluation (so the entity spine +
19
+ > claimed-feature catalog exist) and **before** Self-correction (Mode 5), so the **coverage scorecard**
20
+ > it emits feeds the score and the within-run re-walk.
21
+
22
+ ---
23
+
24
+ ## The Cartography family (this spine + three artifact references)
25
+
26
+ This file is the **spine** — the inputs, the orchestration, the scorecard handoff, the ethics, the
27
+ degraded modes. Each of the three artifacts has its own focused reference; **read the matching one when
28
+ building that artifact**:
29
+
30
+ | Artifact (output) | Governing reference | One-line |
31
+ | --- | --- | --- |
32
+ | `evaluation/information-architecture.md` | [`cartography-ia.md`](cartography-ia.md) | nav tree + per-surface cards, tagged with **depth** + **promoted\|buried** |
33
+ | `evaluation/ux-flows.md` | [`cartography-flows.md`](cartography-flows.md) | primary journeys as mermaid sequence diagrams, traced from the **observed wire** |
34
+ | `evaluation/feature-coverage.md` + `dimensions/session/captures/screens/` | [`cartography-coverage.md`](cartography-coverage.md) | the **claimed-vs-located-vs-walked** matrix + the **coverage scorecard** + the screenshots |
35
+
36
+ > **Degraded modes are recorded, never faked.** When `auth` is `none` / there is **no authenticated app
37
+ > surface**, Cartography maps only the **public** surfaces (marketing IA + docs IA + the unauth app
38
+ > shell from `deployed-client-bundle`) and records the authed-surface gap in the scorecard. When the
39
+ > live runtime can't be screenshotted (no image tool, or the app never reaches page-idle because of a
40
+ > persistent connection — ingestion §9.5), the **textual surface-map is the accepted fallback** and the
41
+ > `screenshot_coverage` gap is recorded. Cartography never fabricates an IA it could not navigate.
42
+
43
+ ---
44
+
45
+ ## Inputs (read these first)
46
+
47
+ - `evaluation/product-features.md` + `dimensions/website/raw/features.md` + `dimensions/docs/raw/*` —
48
+ the **claimed feature catalog**: the checklist Cartography must locate. (Community/changelog feature
49
+ claims fold in too.) → drives `cartography-coverage.md`.
50
+ - `evaluation/data-model-api-surface.md` + `dimensions/session/raw/*` — the **entity spine** + the
51
+ observed endpoints, so each surface card names the entities + wire calls it touches → drives
52
+ `cartography-ia.md`; the captured wires (`raw/write-flow.md`, `raw/*-wire.md`, the auth fingerprint)
53
+ are the source for `cartography-flows.md`.
54
+ - `dimensions/session/captures/surface-map.md` + `dimensions/deployed-client-bundle/raw/route-table.md` —
55
+ the **route / nav inventory** to walk (the coverage checklist of surfaces, ingestion §9.4).
56
+ - `dimensions/session/_summary.md` `write_side_observed` / `pass2` flags — gate whether a write/generate
57
+ flow can be diagrammed from **observation** or must be marked **inferred** (ingestion §9.2;
58
+ `cartography-flows.md`).
59
+
60
+ ---
61
+
62
+ ## The coverage scorecard (the machine-readable handoff to Mode 5)
63
+
64
+ The single load-bearing output of Cartography for the self-correcting loop. It is produced as the
65
+ frontmatter of `feature-coverage.md` (schema + scoring in `cartography-coverage.md`) and read by
66
+ **Self-correction (Mode 5)** two ways:
67
+
68
+ 1. **Scores the experiential / IA coverage axis** (the heavily-weighted rubric axis) from
69
+ `feature_location_rate`, `flow_coverage`, `screenshot_coverage`, `ia_nav_complete`.
70
+ 2. **Drives the within-run re-walk** from the `located-but-not-walked` queue: Mode 5 re-enters the live
71
+ product (read-only nav), walks the not-yet-walked surfaces, captures the missed screenshots, and
72
+ locates any _deeper-than-looked_ marketed feature — then re-runs Mode 4 and re-scores.
73
+
74
+ A `claimed-but-not-located` feature is **never silently dropped** — it is always dispositioned
75
+ (_deeper-than-looked_ → the re-walk queue · _edition/plan-gated_ and _roadmap-not-shipped_ → a recorded
76
+ gap, not re-walked · _marketing over-claim_ → an `evaluation/product-features.md` over-claim flag).
77
+
78
+ ---
79
+
80
+ ## How Mode 4 is driven
81
+
82
+ By the **main session** — it owns the browser singleton (ingestion §7 rule 9), and Cartography
83
+ re-enters the live product. Steps:
84
+
85
+ 1. Read the inputs (the claimed-feature catalog, the entity spine, the route/nav inventory).
86
+ 2. **Walk the live product read-only**, section by section, via in-app nav (never a full reload
87
+ mid-walk, ingestion §9.4). Per surface: record depth + capability + route + the endpoints it fires +
88
+ capture a screenshot. _(method per `cartography-ia.md`)_
89
+ 3. Compile `information-architecture.md` (`cartography-ia.md`).
90
+ 4. Turn the captured `session` wires into the `ux-flows.md` sequence diagrams (`cartography-flows.md`).
91
+ 5. Build the `feature-coverage.md` matrix + emit the **coverage scorecard** (`cartography-coverage.md`).
92
+
93
+ The main session **MAY dispatch sub-agents** (`model: opus`) to _draft_ the three docs from
94
+ already-captured material (overlapping reads, independent writes) — but the **live walk + screenshots
95
+ are main-session only** (browser singleton). **Read-only / no-cost only:** locating a feature never
96
+ requires triggering it — any write/generate/launch trigger stays behind the Pass-2 confirmation gate
97
+ (ingestion §7 rule 4, §9.2), never fired to "see" a feature. **Absences are findings, never silent
98
+ drops** — a claimed-but-not-located feature, an unmapped nav destination, and an undiagrammed primary
99
+ flow are each recorded, and the scorecard makes the gaps machine-readable for Mode 5.
100
+
101
+ ---
102
+
103
+ ## How the modes use this family
104
+
105
+ Mode 4 reads this spine for the inputs + orchestration + scorecard contract, then the three artifact
106
+ references for each deliverable's method + template. Mode 5 reads the **scorecard** (here) + the
107
+ **Cartography defect category** (`self-correction.md` stage A) to score the experiential axis and drive
108
+ the within-run re-walk. Evaluation's rollups are Cartography's inputs (`evaluation.md`); Cartography's
109
+ screenshots complete the session playbook's surface-map (ingestion §9.5).