@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
|
@@ -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).
|