@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
@@ -1,97 +1,78 @@
1
1
  # Evaluation Templates
2
2
 
3
- `evaluation` reads every `dimensions/<dim>/_summary.md` (its **provenance frontmatter** +
4
- Findings) and reconciles them into **cross-dimension** documents under
5
- `research/<target>/evaluation/`. The value is the reconciliation — cross-checking views into one
6
- coherent picture, **weighted by how each claim was obtained**, with disagreements flagged.
3
+ `evaluation` reads every `dimensions/<dim>/_summary.md` (its **provenance frontmatter** + Findings) and reconciles them into **cross-dimension** documents under `research/<target>/evaluation/`. The value is the reconciliation — cross-checking views into one coherent picture, **weighted by how each claim was obtained**, with disagreements flagged.
4
+
5
+ > This file governs the **four reconciliation rollups** (technology-architecture, product-features, data-model-api-surface, competitive-positioning) + the README. The three **experiential** docs that also live under `evaluation/` — `information-architecture.md`, `ux-flows.md`, `feature-coverage.md` — are produced by **Mode 4 (Cartography)** and governed by `cartography.md`; Evaluation's rollups are their inputs (the entity spine → IA surface cards; the feature map → the coverage matrix), and Cartography's coverage scorecard feeds Mode 5's experiential-coverage axis.
7
6
 
8
7
  **Three rules for every evaluation doc:**
9
- 1. **Anchor + tag every claim** with its dimension *and provenance*: `(api: raw/endpoint-catalog.md
10
- · openapi-verbatim · high)`. The method + confidence come verbatim from the source dimension's
11
- `_summary.md` frontmatter.
12
- 2. **Weight, don't average.** A claim's confidence = the **max** of its sources' confidence,
13
- **promoted one band only if corroborated by ≥2 *independent* dimensions**, capped at source
14
- confidence when single-source. Conflicts are **flagged, never averaged**. **Tiebreaker — direct
15
- observation outranks inference.** When two sources conflict on the *same* fact, a directly-observed
16
- value beats an inferred one regardless of dimension or stated confidence (a session-observed backend
17
- engine beats a DNS-inferred one; a live HTTP probe beats a single NXDOMAIN result). The inferred
18
- side is rendered tentative and never used to override the observation or to issue cross-dimension directives.
19
- 3. **Cross-check, don't concatenate.** Agree → state as fact. Disagree / single-source / low-conf →
20
- render hedged ("observed but unverified…") and flag in the doc's reconciliation section.
21
-
22
- **Independence (for the promotion rule):** `codebase`, `api`, `session`, `wire-capture`,
23
- `distribution-artifacts` are mutually independent and independent of marketing. **`website` and
24
- `docs` are NOT independent** for *feature claims* (docs often restate marketing) — two of them
25
- agreeing is still one source. A bundle-declared route + a session-observed route ARE independent.
26
- **Same artifact ⇒ one source.** Two dimensions that string-mine the *same* static asset (one bundle /
27
- one spec / one binary) are **one source** — never a band-bump — even when they report different
28
- counts; the divergent counts are a **reported range, not a flagged conflict** (`deployed-client-bundle`
29
- 278 vs `website` 361 over one bundle is one finding with a range, not corroboration and not a conflict).
30
- **OSS distribution clients are an independent corroboration lane.** An API-surface claim resting on a
31
- single *third-party* wrapper (a community MCP server, an unofficial SDK) is tentative — but a
32
- **first-party open-source integration client** (`distribution-artifacts`: a Unity/Figma/CLI plugin or
33
- published SDK source) that calls the same routes is **independent of both marketing and the third-party
34
- wrapper**, and corroborates it → promotes. (A legacy/granular route family seen only in a third-party
35
- MCP becomes a real finding once the official OSS client calls it too.)
36
-
37
- **Open-core lineage as an absence oracle (independent corroboration of the open/closed seam).** When a
38
- target is an **open-core product with a closed cloud edition** (a clonable `codebase` lineage repo + a
39
- closed `session` runtime), a feature **verified ABSENT in the lineage repo** (grep/structure-map) **and
40
- observed PRESENT in the cloud session** is **two independent lanes agreeing on the *seam*** → promotes the
41
- open/closed-boundary claim to fact (the cloud-feature value itself stays a direct `session` observation).
42
- The lineage repo is as useful as an *absence map* (what is NOT in the open floor) as it is a presence map;
43
- "verified-absent-in-CE + observed-in-cloud" is independent of marketing and of the session alone. (Origin:
44
- Akeneo — Reference Entities / DAM / Rules / Workflows observed in Serenity + grep-absent in Community Edition.)
45
-
46
- **Closed-feedback confidence cap.** When the `community` dimension finds **no first-party feedback
47
- loop** (no public issues / roadmap / changelog / forum — feedback funnelled to a gated channel), its
48
- user-pain / most-requested-feature claims are **inference-from-changelog only → capped at
49
- `low`/tentative**, never promoted on changelog frequency alone. The surface that *would* corroborate
50
- user sentiment is `external-reputation` (a deferred dimension) — flag it as recommended-for-this-run
51
- when this cap fires (see discovery Part C deferred-dimension trigger).
52
-
53
- **Write-side-unobserved cap.** A `session` dimension carrying `write_side_observed: false` (a
54
- Pass-1-only run) has observed feature *existence/gating* but **not** feature *execution behavior*. Any
55
- marketed generate/submit/launch *behavior* claim therefore stays **tentative and is never promoted to
56
- fact** from marketing/docs alone — render the write-side gap **once** from the frontmatter flag, not
57
- re-hedged per rollup.
58
-
59
- **Presentation mapping:** high → stated as fact; low/single-source → hedged as tentative;
60
- conflicted → flagged. (This is the "lighter" form of the provenance-weighting — done inline in the
61
- prose, not via a separate `claims.yaml`.)
8
+
9
+ 1. **Anchor + tag every claim** with its dimension _and provenance_: `(api: raw/endpoint-catalog.md · openapi-verbatim · high)`. The method + confidence come verbatim from the source dimension's `_summary.md` frontmatter.
10
+ 2. **Weight, don't average.** A claim's confidence = the **max** of its sources' confidence, **promoted one band only if corroborated by ≥2 _independent_ dimensions**, capped at source confidence when single-source. Conflicts are **flagged, never averaged**. **Tiebreaker — direct observation outranks inference.** When two sources conflict on the _same_ fact, a directly-observed value beats an inferred one regardless of dimension or stated confidence (a session-observed backend engine beats a DNS-inferred one; a live HTTP probe beats a single NXDOMAIN result). The inferred side is rendered tentative and never used to override the observation or to issue cross-dimension directives.
11
+ 3. **Cross-check, don't concatenate.** Agree → state as fact. Disagree / single-source / low-conf → render hedged ("observed but unverified…") and flag in the doc's reconciliation section.
12
+
13
+ **Independence (for the promotion rule):** `codebase`, `api`, `session`, `wire-capture`, `distribution-artifacts` are mutually independent and independent of marketing. **`website` and `docs` are NOT independent** for _feature claims_ (docs often restate marketing) — two of them agreeing is still one source. A bundle-declared route + a session-observed route ARE independent. **Same artifact ⇒ one source.** Two dimensions that string-mine the _same_ static asset (one bundle / one spec / one binary) are **one source** — never a band-bump — even when they report different counts; the divergent counts are a **reported range, not a flagged conflict** (`deployed-client-bundle` 278 vs `website` 361 over one bundle is one finding with a range, not corroboration and not a conflict). **OSS distribution clients are an independent corroboration lane.** An API-surface claim resting on a single _third-party_ wrapper (a community MCP server, an unofficial SDK) is tentative — but a **first-party open-source integration client** (`distribution-artifacts`: a Unity/Figma/CLI plugin or published SDK source) that calls the same routes is **independent of both marketing and the third-party wrapper**, and corroborates it → promotes. (A legacy/granular route family seen only in a third-party MCP becomes a real finding once the official OSS client calls it too.)
14
+
15
+ **Open-core lineage as an absence oracle (independent corroboration of the open/closed seam).** When a target is an **open-core product with a closed cloud edition** (a clonable `codebase` lineage repo + a closed `session` runtime), a feature **verified ABSENT in the lineage repo** (grep/structure-map) **and observed PRESENT in the cloud session** is **two independent lanes agreeing on the _seam_** → promotes the open/closed-boundary claim to fact (the cloud-feature value itself stays a direct `session` observation). The lineage repo is as useful as an _absence map_ (what is NOT in the open floor) as it is a presence map; "verified-absent-in-CE + observed-in-cloud" is independent of marketing and of the session alone. (Origin: Akeneo — Reference Entities / DAM / Rules / Workflows observed in Serenity + grep-absent in Community Edition.)
16
+
17
+ **Closed-feedback confidence cap.** When the `community` dimension finds **no first-party feedback loop** (no public issues / roadmap / changelog / forum — feedback funnelled to a gated channel), its user-pain / most-requested-feature claims are **inference-from-changelog only → capped at `low`/tentative**, never promoted on changelog frequency alone. The surface that _would_ corroborate user sentiment is `external-reputation` (a deferred dimension) — flag it as recommended-for-this-run when this cap fires (see discovery Part C deferred-dimension trigger).
18
+
19
+ **Write-side-unobserved cap.** A `session` dimension carrying `write_side_observed: false` (a Pass-1-only run) has observed feature _existence/gating_ but **not** feature _execution behavior_. Any marketed generate/submit/launch _behavior_ claim therefore stays **tentative and is never promoted to fact** from marketing/docs alone — render the write-side gap **once** from the frontmatter flag, not re-hedged per rollup.
20
+
21
+ **Presentation mapping:** high → stated as fact; low/single-source → hedged as tentative; conflicted → flagged. (This is the "lighter" form of the provenance-weighting — done inline in the prose, not via a separate `claims.yaml`.)
62
22
 
63
23
  ---
64
24
 
65
25
  ## 1. `evaluation/technology-architecture.md`
26
+
66
27
  ```markdown
67
28
  # <Target> — Technology & Architecture
68
- ## TL;DR (3–5 sentences; the single most distinctive choice)
69
- ## Stack (languages/frameworks/build/runtime — table, each anchored+tagged)
70
- ## Architecture (client/server split, packages+deps, runtime/sync/data model, transport)
71
- ## How it's built (monorepo layout, public/private, codegen, CI, release cadence)
72
- ## Notable design choices (the 3–5 worth stealing + why)
73
- ## Cross-dimension reconciliation (agreements/disagreements + confidence per claim)
29
+
30
+ ## TL;DR (3–5 sentences; the single most distinctive choice)
31
+
32
+ ## Stack (languages/frameworks/build/runtime — table, each anchored+tagged)
33
+
34
+ ## Architecture (client/server split, packages+deps, runtime/sync/data model, transport)
35
+
36
+ ## How it's built (monorepo layout, public/private, codegen, CI, release cadence)
37
+
38
+ ## Notable design choices (the 3–5 worth stealing + why)
39
+
40
+ ## Cross-dimension reconciliation (agreements/disagreements + confidence per claim)
41
+
74
42
  ## Open questions
75
43
  ```
76
44
 
77
45
  ## 2. `evaluation/product-features.md`
46
+
78
47
  ```markdown
79
48
  # <Target> — Product Features & Capabilities
80
- ## What it does (one paragraph)
81
- ## Feature map (every capability · user · maturity GA/beta/docs-only — anchored+tagged)
82
- ## User-facing surfaces (dashboard/editor/components/CLI/widgets)
83
- ## User journeys (the 2–3 primary flows end-to-end)
84
- ## Gaps & rough edges (from community signal)
85
- ## Cross-dimension reconciliation (marketing claims vs. what code/docs actually support — flag over-claims)
49
+
50
+ ## What it does (one paragraph)
51
+
52
+ ## Feature map (every capability · user · maturity GA/beta/docs-only — anchored+tagged)
53
+
54
+ ## User-facing surfaces (dashboard/editor/components/CLI/widgets)
55
+
56
+ ## User journeys (the 2–3 primary flows end-to-end)
57
+
58
+ ## Gaps & rough edges (from community signal)
59
+
60
+ ## Cross-dimension reconciliation (marketing claims vs. what code/docs actually support — flag over-claims)
86
61
  ```
87
62
 
88
63
  ## 3. `evaluation/data-model-api-surface.md`
64
+
89
65
  ```markdown
90
66
  # <Target> — Data Model & API / SDK Surface
91
- ## Core entities (domain objects + relations; ER-style — when the runtime exposes an RBAC verb
67
+
68
+ ## Core entities (domain objects + relations; ER-style — when the runtime exposes an RBAC verb
69
+
92
70
  taxonomy, derive the entity set from it: `X_CREATE/VIEW/EDIT/DELETE` ⇒ entity X)
93
- ## Integration surface (SDK/packages public API · REST/HTTP catalog · realtime/wire protocol)
94
- ## Published-vs-app-own API diff (emit WHENEVER the target publishes a developer/partner/MCP API —
71
+
72
+ ## Integration surface (SDK/packages public API · REST/HTTP catalog · realtime/wire protocol)
73
+
74
+ ## Published-vs-app-own API diff (emit WHENEVER the target publishes a developer/partner/MCP API —
75
+
95
76
  common for mature SaaS, but not universal. The app the SPA runs on is frequently
96
77
  a different, broader, differently-authed API than the published one: list ops the
97
78
  app uses that the public API omits, AND public ops the app never calls — both are
@@ -100,55 +81,68 @@ prose, not via a separate `claims.yaml`.)
100
81
  REQUIRES paired inputs (ingestion §6): the pre-nav in-page tap [session app-own
101
82
  paths] + the unauth bundle/route-manifest [published paths]. Missing a lane → the
102
83
  diff is un-feedable; say which lane is absent rather than implying overlap.)
103
- ## Auth & tenancy model (token type, where it lives, scope expression)
104
- ## API-path diff (adaptive, N-way over the runtime sources present) (the seam rule: bundle-declared vs
84
+
85
+ ## Auth & tenancy model (token type, where it lives, scope expression)
86
+
87
+ ## API-path diff (adaptive, N-way over the runtime sources present) (the seam rule: bundle-declared vs
88
+
105
89
  session-observed vs wire-observed. Title it for the sources ACTUALLY run —
106
90
  enumerate only those lanes; an absent lane [session blocked / wire folded] is a
107
91
  recorded gap, NOT a structural hole to apologize for. Dormant/unshipped routes
108
92
  are findings.)
109
- ## Cross-dimension reconciliation (published surface [api/packages/docs] vs observed wire [session/
93
+
94
+ ## Cross-dimension reconciliation (published surface [api/packages/docs] vs observed wire [session/
95
+
110
96
  wire-capture]; document drift — published=fact, observed-drift=tentative)
97
+
111
98
  ## Open questions
112
99
  ```
113
100
 
114
101
  ## 4. `evaluation/competitive-positioning.md`
102
+
115
103
  ```markdown
116
104
  # <Target> — Competitive Positioning
117
- ## Positioning (their pitch + market — website/blog)
118
- ## Pricing & packaging (plans, what gates what, unit economics — website pricing + platform/limits)
119
- ## Differentiation (claimed moat vs the teardown's read of the real moat — often infra/data)
120
- ## Alternatives & comparison (named competitors + how it differs)
121
- ## Strategic read (direction from changelog/blog)
105
+
106
+ ## Positioning (their pitch + market — website/blog)
107
+
108
+ ## Pricing & packaging (plans, what gates what, unit economics — website pricing + platform/limits)
109
+
110
+ ## Differentiation (claimed moat vs the teardown's read of the real moat — often infra/data)
111
+
112
+ ## Alternatives & comparison (named competitors + how it differs)
113
+
114
+ ## Strategic read (direction from changelog/blog)
122
115
  ```
123
116
 
124
117
  ---
125
118
 
126
119
  ## 5. `research/<target>/README.md` — the run story
120
+
127
121
  ```markdown
128
122
  # <Target> — Recon Run
123
+
129
124
  > One paragraph: what it is + why we ran recon.
130
- ## Access grade (the resolved vector — source/runtime/auth/presence — + matched case[s])
131
- ## Dimensions covered (table: dimension | status | method | confidence | headline finding)
132
- ## Headline findings (5–10, each anchored+tagged)
133
- ## How to navigate (00-scope-verdict.md, 00-recon-plan.md, dimensions/, evaluation/, 04-self-correction-proposal.md)
134
- ## Lessons (candidate methodology learnings → feed self-correction)
125
+
126
+ ## Access grade (the resolved vector — source/runtime/auth/presence — + matched case[s])
127
+
128
+ ## Dimensions covered (table: dimension | status | method | confidence | headline finding)
129
+
130
+ ## Headline findings (5–10, each anchored+tagged)
131
+
132
+ ## How to navigate (00-scope-verdict.md, 00-recon-plan.md, dimensions/, evaluation/ [4 reconciliation rollups + Cartography's information-architecture / ux-flows / feature-coverage], 05-self-correction-proposal.md)
133
+
134
+ ## Lessons (candidate methodology learnings → feed self-correction)
135
+
135
136
  ## Reproduction
136
137
  ```
137
138
 
138
139
  ---
139
140
 
140
141
  ## Evaluation method
141
- 1. Read every `dimensions/*/_summary.md` frontmatter first (the provenance index) — note method +
142
- confidence + status + gaps per dimension.
142
+
143
+ 1. Read every `dimensions/*/_summary.md` frontmatter first (the provenance index) — note method + confidence + status + gaps per dimension.
143
144
  2. Read Findings; drop into specific `raw/` artifacts only when a claim needs a precise value.
144
- 3. Draft the four rollups + the README — each rollup may be drafted by its own sub-agent dispatched
145
- from the **main session** (overlapping reads, independent writes), then a single reconciliation
146
- pass keeps them consistent.
147
- 4. Tag every claim with provenance; weight per the rules above; flag every disagreement; record
148
- every gap. A confident doc built on one low-confidence dimension is worse than an honest
149
- "single-source, unverified."
150
-
151
- > **Classifying a raw observation** — to turn a storage-key prefix, an auth tell, an envelope shape,
152
- > or a realtime frame into a *named* stack finding, use the fingerprint tables in
153
- > `tradecraft.md` (storage→stack, auth-provider, API-envelope, realtime-trap). They name what
154
- > a finding *is*; this file governs how confidently to *state* it.
145
+ 3. Draft the four rollups + the README — each rollup may be drafted by its own sub-agent dispatched from the **main session** (overlapping reads, independent writes), then a single reconciliation pass keeps them consistent.
146
+ 4. Tag every claim with provenance; weight per the rules above; flag every disagreement; record every gap. A confident doc built on one low-confidence dimension is worse than an honest "single-source, unverified."
147
+
148
+ > **Classifying a raw observation** — to turn a storage-key prefix, an auth tell, an envelope shape, or a realtime frame into a _named_ stack finding, use the fingerprint tables in `tradecraft.md` (storage→stack, auth-provider, API-envelope, realtime-trap). They name what a finding _is_; this file governs how confidently to _state_ it.