linersh 1.1.2 → 1.2.0
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 +12 -58
- package/bin/liner.js +62 -14
- package/package.json +10 -17
- package/cli-update-docs/README.md +0 -129
- package/cli-update-docs/SKILL.md +0 -294
- package/cli-update-docs/curator-notes.md +0 -85
- package/cli-update-docs/quality-check-tests.md +0 -435
- package/cli-update-docs/source-finding-tactics.md +0 -224
- package/cli-update-docs/source-quality-hierarchy.md +0 -209
- package/cli-update-docs/synthesis-guidance.md +0 -151
- package/dist/agents/artifact-validation.js +0 -567
- package/dist/agents/artifact-validation.js.map +0 -1
- package/dist/agents/candidate-longlist.js +0 -116
- package/dist/agents/candidate-longlist.js.map +0 -1
- package/dist/agents/detect.js +0 -169
- package/dist/agents/detect.js.map +0 -1
- package/dist/agents/evaluation-assembly.js +0 -270
- package/dist/agents/evaluation-assembly.js.map +0 -1
- package/dist/agents/events.js +0 -8
- package/dist/agents/events.js.map +0 -1
- package/dist/agents/headless-runner.js +0 -432
- package/dist/agents/headless-runner.js.map +0 -1
- package/dist/agents/jtbd-clarify.js +0 -169
- package/dist/agents/jtbd-clarify.js.map +0 -1
- package/dist/agents/models.js +0 -98
- package/dist/agents/models.js.map +0 -1
- package/dist/agents/parsers.js +0 -316
- package/dist/agents/parsers.js.map +0 -1
- package/dist/agents/prompts.js +0 -522
- package/dist/agents/prompts.js.map +0 -1
- package/dist/agents/run-log.js +0 -71
- package/dist/agents/run-log.js.map +0 -1
- package/dist/agents/runner.js +0 -906
- package/dist/agents/runner.js.map +0 -1
- package/dist/agents/types.js +0 -2
- package/dist/agents/types.js.map +0 -1
- package/dist/bin-resolver.js +0 -92
- package/dist/bin-resolver.js.map +0 -1
- package/dist/config.js +0 -282
- package/dist/config.js.map +0 -1
- package/dist/editor.js +0 -40
- package/dist/editor.js.map +0 -1
- package/dist/gates.js +0 -121
- package/dist/gates.js.map +0 -1
- package/dist/ipc.js +0 -145
- package/dist/ipc.js.map +0 -1
- package/dist/open-folder.js +0 -28
- package/dist/open-folder.js.map +0 -1
- package/dist/phases.js +0 -346
- package/dist/phases.js.map +0 -1
- package/dist/progress.js +0 -184
- package/dist/progress.js.map +0 -1
- package/dist/source-inbox.js +0 -297
- package/dist/source-inbox.js.map +0 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
- package/dist/version.js +0 -18
- package/dist/version.js.map +0 -1
- package/dist/yaml-io.js +0 -376
- package/dist/yaml-io.js.map +0 -1
- package/maintenance-skill/SKILL.md +0 -18
- package/maintenance-skill/agents/openai.yaml +0 -4
|
@@ -1,435 +0,0 @@
|
|
|
1
|
-
# Quality-check tests
|
|
2
|
-
|
|
3
|
-
Loaded by the `curating-mixtapes` skill at the start of Phase 5 (Quality checks).
|
|
4
|
-
|
|
5
|
-
This file describes the core-action test and the eight standard tests every
|
|
6
|
-
mixtape should pass before moving to synthesis. Apply them deliberately, in
|
|
7
|
-
this order. Write findings to `working/04-quality-checks.md`.
|
|
8
|
-
|
|
9
|
-
Phase 5 is the methodology's correction for single-pass curation. The first four phases work forward — frame, find, fetch, evaluate. Phase 5 works backward — looking at the whole keep-pile and asking what's wrong with it. The two passes do different work. If you skip this phase, the mixtape's blind spots ship with the mixtape.
|
|
10
|
-
|
|
11
|
-
The framing-gap and source-role tests are the highest-leverage checks and the ones most curators skip.
|
|
12
|
-
|
|
13
|
-
## Automated-run budget
|
|
14
|
-
|
|
15
|
-
When Phase 5 is running inside the TUI or another automated Liner flow, it must stay bounded. Treat it as an audit over `working/03-evaluation.yaml`, not as a second open-ended discovery phase.
|
|
16
|
-
|
|
17
|
-
- Classify existing kept/trim sources before searching. If a source is missing `kind`, infer it from title, URL/source type, section, rating, and curator note, then update `working/03-evaluation.yaml`.
|
|
18
|
-
- Missing `kind` metadata is not itself a corpus gap. It becomes a source-kind gap only after every existing kept/trim source has a kind and the distribution still has a zero column.
|
|
19
|
-
- Use at most one search pass for any one missing perspective.
|
|
20
|
-
- Use at most one source-kind backfill search total.
|
|
21
|
-
- Do not exceed four external search/fetch attempts across the whole Quality phase. If the budget is spent, stop searching, document the gap or defense, and write `working/04-quality-checks.md`.
|
|
22
|
-
- When a bounded Quality backfill succeeds, add its verified URL to `working/02-candidate-longlist.md` before adding it to `working/03-evaluation.yaml`. Parse both artifacts and confirm their candidate counts still match; the longlist is the complete candidate ledger, including post-gate backfills.
|
|
23
|
-
- On resume after a paused/cancelled Quality run, do not continue a search loop. Use the evidence already gathered, repair weak curator notes from existing evidence, and close the artifact.
|
|
24
|
-
- If a material source-role gap remains after the bounded audit, write `working/05-operating-fit-audit.md` with `status: improvement_recommended` instead of declaring the corpus ready with a limitation. Liner will offer a focused improvement pass or let the user skip for now.
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Setting up the phase
|
|
29
|
-
|
|
30
|
-
Before running the tests, gather the inputs in one place:
|
|
31
|
-
|
|
32
|
-
- The JTBD (from `working/01-jtbd-and-knowledge-map.md`)
|
|
33
|
-
- The knowledge map (same file)
|
|
34
|
-
- The required source roles (same file)
|
|
35
|
-
- The kept and trim sources from `working/03-evaluation.yaml` — titles, sections, ratings, rationales, and the drafted curator notes
|
|
36
|
-
|
|
37
|
-
Read these together. The tests are about how the corpus *as a whole* serves the JTBD. You can't run them well by looking at sources one at a time.
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## Test 0 — The core-action fit test
|
|
42
|
-
|
|
43
|
-
Name the exact action in the JTBD. Then ask whether the kept sources directly
|
|
44
|
-
teach or demonstrate that action, or merely orbit it.
|
|
45
|
-
|
|
46
|
-
This test exists because coverage can pass while the job still fails. A corpus
|
|
47
|
-
for "turn moodboards into HTML interface concepts" can technically cover
|
|
48
|
-
"visual hierarchy," "design systems," "CSS layout," and "process," yet still
|
|
49
|
-
miss the action of reading visual references, extracting transferable qualities,
|
|
50
|
-
and creating a new interface direction.
|
|
51
|
-
|
|
52
|
-
### How to run it
|
|
53
|
-
|
|
54
|
-
1. Quote or paraphrase the JTBD's core action in `working/04-quality-checks.md`.
|
|
55
|
-
2. Count kept sources by `jtbd_fit`: `direct / bridge / background`.
|
|
56
|
-
3. If older entries lack `jtbd_fit`, infer it from title, rationale, note, and
|
|
57
|
-
section, then update `working/03-evaluation.yaml`.
|
|
58
|
-
4. List which kept sources are direct. A healthy action-oriented mixtape needs
|
|
59
|
-
at least two direct sources, and each central knowledge-map section needs
|
|
60
|
-
either one direct source or a written reason why bridge coverage is enough.
|
|
61
|
-
5. For curator-named anchors, say whether you retrieved rationale/process
|
|
62
|
-
evidence or only a homepage/gallery/metadata pointer.
|
|
63
|
-
|
|
64
|
-
If direct coverage is weak, take one action:
|
|
65
|
-
|
|
66
|
-
- Backfill direct sources within the Phase 5 search budget, or
|
|
67
|
-
- Document the gap and recommend re-running Candidate discovery with
|
|
68
|
-
action-specific search terms.
|
|
69
|
-
|
|
70
|
-
### Required output
|
|
71
|
-
|
|
72
|
-
```
|
|
73
|
-
## Test 0 — Core-action fit
|
|
74
|
-
|
|
75
|
-
Core action: [verb phrase from JTBD]
|
|
76
|
-
Distribution: X direct / Y bridge / Z background
|
|
77
|
-
Direct sources: [Source titles]
|
|
78
|
-
Finding: [pass / weak coverage / gap]
|
|
79
|
-
Action: [kept, backfilled, or documented rerun recommendation]
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## Test 1 — The redundancy test
|
|
85
|
-
|
|
86
|
-
Read each kept source's role in the mixtape. Are any two sources making essentially the same point?
|
|
87
|
-
|
|
88
|
-
If yes, keep the better one and cut the other. Volume is not a virtue. Five excellent sources beat fifteen good ones.
|
|
89
|
-
|
|
90
|
-
**The test in action:** for each kept source, write down in one sentence what unique contribution it makes to the corpus. If two sources produce the same sentence (or near-same), one of them is redundant. Drop the weaker.
|
|
91
|
-
|
|
92
|
-
Redundancy is different from coverage. Two sources covering the same topic from different angles or with different evidence is coverage, not redundancy. The test is whether the AI would generate meaningfully different output with both vs. with only one. If not, redundant.
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
## Test 2 — The coverage test
|
|
97
|
-
|
|
98
|
-
Walk through the knowledge map. For each section, ask: does this section have at least one strong source?
|
|
99
|
-
|
|
100
|
-
If a section has zero sources, two responses are valid:
|
|
101
|
-
|
|
102
|
-
- **Fill it.** Return to Phase 2 for that section. Find candidates. Fetch them. Evaluate them. Then come back to Phase 5.
|
|
103
|
-
- **Explicitly note the gap.** Some sections of a domain genuinely don't have credible sources available, or fall outside what this mixtape is trying to do. Document this in `working/04-quality-checks.md`: "This mixtape doesn't cover X — see [other mixtape] for that, or note that the field doesn't have a canonical reference here."
|
|
104
|
-
|
|
105
|
-
A mixtape that silently omits a major area is worse than one that says explicitly "this mixtape doesn't cover X." The latter sets expectations correctly; the former misleads the consuming AI by implying the corpus is complete.
|
|
106
|
-
|
|
107
|
-
If a section has sources but they're all rated 2 or 3, that's a weak-coverage signal — the section is technically populated but the sources aren't load-bearing. Either find stronger sources or note the weakness.
|
|
108
|
-
|
|
109
|
-
---
|
|
110
|
-
|
|
111
|
-
## Test 3 — The disagreement test
|
|
112
|
-
|
|
113
|
-
Find the strongest claim made by sources in the mixtape. Is there someone credible who disagrees?
|
|
114
|
-
|
|
115
|
-
If yes, either include the disagreement or explicitly note that the mixtape takes a position.
|
|
116
|
-
|
|
117
|
-
A corpus where every source agrees teaches the AI no nuance. The AI then can't see the contested-ness of contested questions, which means it can't represent them honestly downstream. The fix is to include at least one strong dissenting source on the most-contested point in the corpus.
|
|
118
|
-
|
|
119
|
-
If the topic is genuinely uncontested — the W3C HTML spec, for example, isn't really contested in the way a design philosophy might be — that's fine, and the working notes should say so. The test isn't "manufacture disagreement"; it's "if disagreement exists, surface it; if it doesn't, document why."
|
|
120
|
-
|
|
121
|
-
**The test in action:** identify the strongest claim in the corpus. Search for "[claim] critique" or "[claim] is wrong" or "alternative to [claim]." If you find a credible critique you haven't included, you've found your dissenting source. Add it.
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
## Test 4 — The framing-gap test
|
|
126
|
-
|
|
127
|
-
Step back from individual sources. Is there a major perspective on this topic missing entirely — not just an individual source, but a whole way of thinking about the JTBD?
|
|
128
|
-
|
|
129
|
-
If yes, the framing was too narrow. Expand the knowledge map and return to Phase 2.
|
|
130
|
-
|
|
131
|
-
**This test is the highest-leverage of the six and the one most curators skip.** Single-pass curation tends to produce mixtapes that are well-covered within one narrow framing. The framing-gap test catches what the first four phases couldn't see.
|
|
132
|
-
|
|
133
|
-
### How to run it (required steps, in order)
|
|
134
|
-
|
|
135
|
-
This test cannot be answered yes/no. Earlier versions of this methodology allowed a casual judgment ("does the framing feel wide enough?") and the answer was almost always "yes" — because the test, run that way, has no force. Run it as follows instead:
|
|
136
|
-
|
|
137
|
-
1. **Name 2–3 candidate perspectives that could exist *outside* the corpus.** Write them down in `working/04-quality-checks.md` before looking at the keep-list. Common candidates: designer voice, accessibility-first viewpoint, security/abuse perspective, non-English-speaking practitioner, contrarian who disagrees with the dominant framing, an adjacent discipline that owns part of the problem space (e.g. for a CLI mixtape: visual-design tradition, technical-writing tradition, OS-vendor convention tradition).
|
|
138
|
-
|
|
139
|
-
The named perspectives should be specific enough to act on. "User perspective" is too vague. "iOS Human Interface Guidelines designer perspective on form-field labels" is actionable.
|
|
140
|
-
|
|
141
|
-
2. **For each named perspective, classify coverage in two dimensions, not one.** The earlier single-axis judgment ("covered / uncovered / partial") let a corpus mark a perspective `covered` just because some kept source addressed its concerns — even when no source actually argued *for* the perspective as a stance. That collapse is the failure mode this split exists to prevent.
|
|
142
|
-
|
|
143
|
-
- **Stance** — is there a verified, fetchable source whose author explicitly *argues for* this perspective as a design center of gravity? Mark `stance-represented` or `stance-absent`.
|
|
144
|
-
- **Concerns** — do any kept sources address the perspective's operational concerns mechanically, even while arguing from a different stance? Mark `concerns-addressed` or `concerns-absent`.
|
|
145
|
-
|
|
146
|
-
A perspective is fully `covered` only when its stance is represented. `concerns-addressed` alone is a **soft gap** — the corpus internalizes the concern without giving the consuming AI a worked rival argument to cite. Soft gaps are real gaps; they show up later as synthesis bias.
|
|
147
|
-
|
|
148
|
-
3. **Unverified sources DO NOT count as coverage.** A source whose Phase 4 curator note acknowledges unfetched content, broken URLs, paywalled access, or transcripts that couldn't be obtained cannot satisfy a perspective slot. "We have one designer voice, but her transcript wasn't fetchable" is the same as "we have no designer voice." Tokenism passes the test cheaply and silently — don't allow it.
|
|
149
|
-
|
|
150
|
-
4. **For each perspective that is not `stance-represented`, take exactly one of three actions:**
|
|
151
|
-
|
|
152
|
-
a. **Search for a stance source.** Return to Phase 2 with vocabulary derived from the perspective itself: *who would argue for this position, what would they write, where would they publish?* This is different from a topic search — you're looking for an opinionated author, not a neutral reference. Examples: "Brandur Leach on terminal density," "Rob Pike on Unix philosophy," "Don Norman on visceral design," not "CLI scriptability best practices." Spend one search pass. If you find a verified source that fits, add it to the keep-list.
|
|
153
|
-
|
|
154
|
-
b. **Argue that the concerns are sufficient.** If concerns are addressed and you believe the perspective doesn't need a separate stance source — because the operational disagreement is genuinely thin — *write the argument explicitly*: "Concerns covered by [Sources N, M] inside the [dominant] stance. The dissenting stance is real but its operational implications are absorbed; no separate source needed."
|
|
155
|
-
|
|
156
|
-
This is not a free pass. The methodology requires you to *state* the trade-off. If you can't articulate why concerns are sufficient without a stance source, you don't actually have the argument and should fall back to (a) or (c).
|
|
157
|
-
|
|
158
|
-
c. **Flag the bias explicitly.** If no source is found and the concerns aren't sufficient, write in `working/04-quality-checks.md`:
|
|
159
|
-
|
|
160
|
-
> *Perspective: [name] — stance unrepresented after one search pass. Corpus argues from [dominant stance] but no source argues for [rival stance]. Recommendation: ship as-is and document the bias in the synthesis, OR weaken the JTBD claim that requires the rival stance.*
|
|
161
|
-
|
|
162
|
-
Do NOT silently leave a perspective `stance-absent` with no defense. The synthesis is what the consuming AI reads first; an undocumented bias becomes the AI's silent default.
|
|
163
|
-
|
|
164
|
-
### The output format
|
|
165
|
-
|
|
166
|
-
`working/04-quality-checks.md` must include a top-level section like this:
|
|
167
|
-
|
|
168
|
-
```
|
|
169
|
-
## Perspectives audit
|
|
170
|
-
|
|
171
|
-
- Designer voice — stance-represented (Source 14: Gillet, "Designing for CLI", verified) ✓
|
|
172
|
-
- Accessibility-first viewpoint — stance-absent, concerns-absent. Search added GitHub accessibility post → now stance-represented (Source 3) ✓
|
|
173
|
-
- Power-user / Unix-purist stance — stance-absent, concerns-addressed by Heroku/Vercel/Van Slyck.
|
|
174
|
-
- Backfill attempt: searched "Brandur Leach terminals density," found brandur.org/interfaces. Verified, added (Source N). ✓
|
|
175
|
-
OR
|
|
176
|
-
- Argued sufficient: concerns covered by Heroku's grep-first rule + Vercel's stdout contract + Van Slyck's "friendly to humans AND scripts" pillar. The Unix-purist stake is that terseness should be the *center of gravity*, not a preserved capability — we're not adopting that. The corpus's framing covers the operational concerns without representing the stance; synthesis will name this trade-off explicitly.
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
This format is checked by the TUI: a quality-checks file without a "Perspectives audit" section signals that the test wasn't run honestly.
|
|
180
|
-
|
|
181
|
-
### Why this strictness
|
|
182
|
-
|
|
183
|
-
The earlier loose version of this test failed quietly in practice. A real session keeping one designer source whose content was never fetched produced a corpus the curator described as "engineering-heavy, one designer voice unverified" — and the quality-check still passed because "1 source ≥ 1 = covered." Naming perspectives in advance and refusing to count unverified sources is what makes the test do work instead of legitimize tokenism.
|
|
184
|
-
|
|
185
|
-
If the framing gap is real, accept the cost of going back. Phase 2 is cheap relative to shipping a mixtape with a hole in it.
|
|
186
|
-
|
|
187
|
-
---
|
|
188
|
-
|
|
189
|
-
## Test 5 — Source-kind balance
|
|
190
|
-
|
|
191
|
-
Look at the distribution of `kind` values across the keep-list. Every source in `tape.yaml` should carry one of: `reference / principle / prescription / example`.
|
|
192
|
-
|
|
193
|
-
The four kinds represent four argumentative roles. A corpus missing one of them has a structural gap, even when every knowledge-map section is technically populated:
|
|
194
|
-
|
|
195
|
-
- **0 `reference` sources** → the consuming AI has no substrate to cite when defending a convention. The mixtape becomes opinion against opinion when challenged. The fix is at least one authoritative source — a spec, an official manual, a widely-adopted standard, an RFC — that the AI can point at as "this is canon, not just our preference."
|
|
196
|
-
- **0 `principle` sources** → the synthesis has no philosophical anchor. The mixtape can describe rules but can't justify the worldview behind them. The fix is a stance-setting essay or manifesto.
|
|
197
|
-
- **0 `prescription` sources** → the AI has no concrete rules to enforce. The synthesis becomes vibes without operational consequences. The fix is a style guide, rule-set, or explicit guideline doc.
|
|
198
|
-
- **0 `example` sources** → the AI has no taste calibration. It can recite rules but can't recognize good when it sees it. The fix is a worked instance, case study, or annotated specimen.
|
|
199
|
-
|
|
200
|
-
Imbalance is not a failure. A 7-principle / 2-prescription / 1-reference / 0-example corpus may be exactly right for a philosophy-heavy JTBD. But a zero in any column should be a **decision, not an accident.** If you accept a zero, write the defense in `working/04-quality-checks.md`:
|
|
201
|
-
|
|
202
|
-
> *Kinds audit: 7 principle / 9 prescription / 5 example / 0 reference. Accepted: this JTBD is about voice and microcopy, not architectural conventions. No reference source is needed because the synthesis doesn't make authority claims that would require backing.*
|
|
203
|
-
|
|
204
|
-
If the zero isn't defensible, first make sure every existing kept/trim source has been assigned a kind. Only then run one source-kind backfill search before shipping. The same rule as Test 4(a) applies: search for the role the kind plays (an authoritative spec, an opinionated essay, a tight rule-set, a worked example), not for the topic generically.
|
|
205
|
-
|
|
206
|
-
### Required output
|
|
207
|
-
|
|
208
|
-
`working/04-quality-checks.md` must include a Test 5 section like this:
|
|
209
|
-
|
|
210
|
-
```
|
|
211
|
-
## Test 5 — Source-kind balance
|
|
212
|
-
|
|
213
|
-
Distribution: X reference / Y principle / Z prescription / W example
|
|
214
|
-
|
|
215
|
-
[If any kind is zero: either a backfill action OR a defense paragraph in the form above.]
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
## Test 6 — Note-quality smell test
|
|
221
|
-
|
|
222
|
-
Read every kept/trim source note in `working/03-evaluation.yaml`. The note is the consuming AI's instruction for how to weight and use that source. A source with a vague note is a bookmark, not curation.
|
|
223
|
-
|
|
224
|
-
A useful curator note must do three jobs:
|
|
225
|
-
|
|
226
|
-
- **Use cue:** tell the AI how to read or apply the source.
|
|
227
|
-
- **Value/bar:** name the concrete value, standard, or quality bar the source contributes.
|
|
228
|
-
- **Boundary:** name one limitation, scope boundary, or reason not to over-weight it.
|
|
229
|
-
|
|
230
|
-
Thin notes often look like "useful background," "good overview," or "skim for examples." They may be true, but they do not tell the AI what to do with the source. Repair them before synthesis by updating `working/03-evaluation.yaml`; do not search or fetch just to improve note prose. Use the already gathered title, rationale, source type, section, rating, and partial content.
|
|
231
|
-
|
|
232
|
-
### Required output
|
|
233
|
-
|
|
234
|
-
`working/04-quality-checks.md` must include a Test 6 section like this:
|
|
235
|
-
|
|
236
|
-
```
|
|
237
|
-
## Test 6 — Note-quality
|
|
238
|
-
|
|
239
|
-
Checked: N kept/trim notes
|
|
240
|
-
Repaired: M notes
|
|
241
|
-
|
|
242
|
-
- Source/title/URL — repaired missing boundary; note now names [scope].
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
If no notes were repaired, write one sentence explaining why the notes already carry a use cue, value/bar, and limitation.
|
|
246
|
-
|
|
247
|
-
---
|
|
248
|
-
|
|
249
|
-
## Test 7 — Source-role fit
|
|
250
|
-
|
|
251
|
-
This test asks whether the corpus has the evidence roles the future AI actually
|
|
252
|
-
needs. It catches the failure mode where a source list technically covers every
|
|
253
|
-
section and every source `kind`, but still cannot do the job well.
|
|
254
|
-
|
|
255
|
-
Source roles are capability-specific evidence jobs named in the Capability
|
|
256
|
-
Brief. They are not source `kind`s and not section labels. A source can be an
|
|
257
|
-
`example` kind without satisfying the required "worked high-craft case study"
|
|
258
|
-
role if the fetched content is only a homepage, gallery index, or shallow
|
|
259
|
-
portfolio blurb. A source can be a `reference` kind without satisfying the
|
|
260
|
-
required "medical authority" role if it is a secondary explainer instead of a
|
|
261
|
-
primary clinical or institutional source.
|
|
262
|
-
|
|
263
|
-
### How to run it
|
|
264
|
-
|
|
265
|
-
1. Read `working/01-jtbd-and-knowledge-map.md` and copy the Required source
|
|
266
|
-
roles from the Capability Brief into `working/04-quality-checks.md`.
|
|
267
|
-
2. If the project was framed before Required source roles existed, infer 4–7
|
|
268
|
-
roles from the core action and write them into the quality report before
|
|
269
|
-
scoring coverage.
|
|
270
|
-
3. For each role, count kept/trim sources whose fetched evidence actually
|
|
271
|
-
satisfies that role. Count by content, not by title, URL, section, or generic
|
|
272
|
-
kind.
|
|
273
|
-
4. Compare coverage to the minimum named in the Capability Brief. If no minimum
|
|
274
|
-
was named, use these defaults:
|
|
275
|
-
- 2 strong sources for ordinary required roles.
|
|
276
|
-
- 3 substantive worked examples/case studies when the capability depends on
|
|
277
|
-
taste, visual output, craft judgment, or recognizing quality.
|
|
278
|
-
- primary/official sources for legal, medical, financial, or safety-sensitive
|
|
279
|
-
authority roles.
|
|
280
|
-
5. A material role with weak coverage must either be improved within the Phase 5
|
|
281
|
-
budget or written to `working/05-operating-fit-audit.md` with
|
|
282
|
-
`status: improvement_recommended`.
|
|
283
|
-
|
|
284
|
-
"Light but not absent" is not a pass for a required source role. It is a weak
|
|
285
|
-
coverage finding.
|
|
286
|
-
|
|
287
|
-
### Required output
|
|
288
|
-
|
|
289
|
-
`working/04-quality-checks.md` must include:
|
|
290
|
-
|
|
291
|
-
```
|
|
292
|
-
## Test 7 — Source-role fit
|
|
293
|
-
|
|
294
|
-
Required roles:
|
|
295
|
-
- Core-action method — minimum: 2; current: 3; status: pass; evidence: [Source titles]
|
|
296
|
-
- Worked craft examples — minimum: 3; current: 1; status: weak; evidence: [Source title]
|
|
297
|
-
|
|
298
|
-
Action: [kept / backfilled / wrote working/05-operating-fit-audit.md]
|
|
299
|
-
```
|
|
300
|
-
|
|
301
|
-
If a required role is missing or weak, take one of three actions:
|
|
302
|
-
|
|
303
|
-
- **Backfill now.** Search for the role directly, add a verified candidate, evaluate it, and update the keep-list.
|
|
304
|
-
- **Document the limitation.** If credible sources are unavailable, write a concrete limitation and what custom source the curator should add.
|
|
305
|
-
- **Narrow the capability claim.** If the role is not actually needed, update the Capability Brief and Required source roles so Phase 1 tells the truth.
|
|
306
|
-
|
|
307
|
-
Do not leave a missing required role as "covered by the overall corpus." That is exactly how generic-looking mixtapes pass while still failing the user's job.
|
|
308
|
-
|
|
309
|
-
---
|
|
310
|
-
|
|
311
|
-
## Test 8 — Capability-pattern fit
|
|
312
|
-
|
|
313
|
-
Some capabilities have a specialized evidence contract beyond generic source
|
|
314
|
-
roles. Phase 1 should name these as `Capability pattern: ...` in the Capability
|
|
315
|
-
Brief. Test 8 asks whether the final keep-list still satisfies that pattern, or
|
|
316
|
-
whether the corpus drifted into a generic topic pack.
|
|
317
|
-
|
|
318
|
-
If no capability pattern was named, write:
|
|
319
|
-
|
|
320
|
-
```
|
|
321
|
-
## Test 8 — Capability-pattern fit
|
|
322
|
-
|
|
323
|
-
Pattern: none
|
|
324
|
-
Finding: pass. No specialized capability pattern was named in the Capability Brief.
|
|
325
|
-
Action: none.
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
Do not invent a pattern in Phase 5 just to make the test look busy. If Phase 1
|
|
329
|
-
clearly missed a pattern and the omission affects corpus quality, document that
|
|
330
|
-
as a framing gap and write an operating-fit audit.
|
|
331
|
-
|
|
332
|
-
### Reference-translation pattern
|
|
333
|
-
|
|
334
|
-
Use this section when the Capability Brief says `Capability pattern:
|
|
335
|
-
reference-translation`, or when Phase 1 should have named it because the job
|
|
336
|
-
involves images, moodboards, visual references, inspiration, examples, style,
|
|
337
|
-
art direction, or translating one medium/domain into another output.
|
|
338
|
-
|
|
339
|
-
This pattern fails when a corpus becomes mostly about the target output medium.
|
|
340
|
-
For example, an art-direction-to-web mixtape can pass ordinary "web design"
|
|
341
|
-
coverage while still failing the real job: reading paintings, architecture,
|
|
342
|
-
photos, posters, sports identity, or other references and translating their
|
|
343
|
-
underlying qualities into product-design language.
|
|
344
|
-
|
|
345
|
-
Run four checks:
|
|
346
|
-
|
|
347
|
-
1. **Input/reference-domain coverage.** Count substantive kept/trim sources from
|
|
348
|
-
at least two input/reference domains outside the target output medium. Count
|
|
349
|
-
by content evidence, not by passing mention. For web/UI targets, CSS,
|
|
350
|
-
accessibility, token, component, and design-system docs do not count here.
|
|
351
|
-
2. **Translation-method coverage.** Count direct kept/trim sources that teach or
|
|
352
|
-
demonstrate the move from source qualities to target decisions. Generic
|
|
353
|
-
inspiration galleries, moodboard primers without translation, and target
|
|
354
|
-
mechanics do not count.
|
|
355
|
-
3. **Caller-handoff coverage.** Confirm the corpus supports a concrete runtime
|
|
356
|
-
output shape: observations, interpretation, carry-forward rules, product or
|
|
357
|
-
implementation vocabulary, constraints, avoid-list, validation checks, and
|
|
358
|
-
clarification questions.
|
|
359
|
-
4. **Constraint balance.** Confirm target-medium constraints are present when
|
|
360
|
-
needed but do not outnumber and replace the direct reference-reading and
|
|
361
|
-
translation evidence in the core action.
|
|
362
|
-
|
|
363
|
-
Default minimums for reference-translation:
|
|
364
|
-
|
|
365
|
-
- At least 2 distinct input/reference domains outside the target output medium.
|
|
366
|
-
- At least 3 substantive direct sources from those input/reference domains or
|
|
367
|
-
from cross-domain translation examples.
|
|
368
|
-
- At least 2 direct translation-method sources.
|
|
369
|
-
- At least 1 handoff/template/vocabulary source that shows how to make the
|
|
370
|
-
translation executable for the caller.
|
|
371
|
-
|
|
372
|
-
If any minimum is weak or missing, write `working/05-operating-fit-audit.md` with
|
|
373
|
-
`status: improvement_recommended`. Do not pass the corpus because general design,
|
|
374
|
-
implementation, accessibility, or platform sources are strong.
|
|
375
|
-
|
|
376
|
-
### Required output
|
|
377
|
-
|
|
378
|
-
`working/04-quality-checks.md` must include:
|
|
379
|
-
|
|
380
|
-
```
|
|
381
|
-
## Test 8 — Capability-pattern fit
|
|
382
|
-
|
|
383
|
-
Pattern: reference-translation
|
|
384
|
-
Input/reference domains: [domain A: sources], [domain B: sources]
|
|
385
|
-
Translation-method sources: [source titles]
|
|
386
|
-
Caller-handoff sources: [source titles]
|
|
387
|
-
Constraint balance: [pass / weak / gap]
|
|
388
|
-
Finding: [pass / weak coverage / gap]
|
|
389
|
-
Action: [kept / backfilled / wrote working/05-operating-fit-audit.md]
|
|
390
|
-
```
|
|
391
|
-
|
|
392
|
-
---
|
|
393
|
-
|
|
394
|
-
## What to do when a test fails
|
|
395
|
-
|
|
396
|
-
Don't paper over failures. The point of running the tests is to find problems while they're still cheap to fix.
|
|
397
|
-
|
|
398
|
-
- **Redundancy fails:** drop the weaker source, update `working/03-evaluation.yaml` to reflect the change, document the decision in `working/04-quality-checks.md`.
|
|
399
|
-
- **Coverage fails:** return to Phase 2 for the missing section. Fetch new candidates. Evaluate them. Come back to Phase 5 and re-run all eight tests on the new keep-list.
|
|
400
|
-
- **Disagreement fails:** find one strong dissenting source. Fetch it. Evaluate it. Add it to the keep-list with a note that names its role as counterpoint.
|
|
401
|
-
- **Framing-gap fails:** this is the expensive one. Expand the knowledge map. Return to Phase 2. Find candidates for the new sections. Fetch, evaluate. Come back to Phase 5 with a substantially revised keep-list and re-run all eight tests.
|
|
402
|
-
- **Note-quality fails:** rewrite weak notes in `working/03-evaluation.yaml` so each one carries a use cue, value/bar, and boundary. Do this from existing evidence; do not open a new search loop.
|
|
403
|
-
- **Source-role fit fails / Operating-fit fails:** write `working/05-operating-fit-audit.md` with the missing source role, why it matters, concrete search lanes for an improvement pass, and a short list of user-provided Sources that could fill the gap if public research remains thin.
|
|
404
|
-
|
|
405
|
-
Each backtrack is a sign the methodology is working, not failing. The first four phases produced a corpus that worked from one angle; Phase 5 found the angle that wasn't covered. Better to find it here than in the empirical test (Phase 8) or — worse — silently, when the mixtape is in use.
|
|
406
|
-
|
|
407
|
-
---
|
|
408
|
-
|
|
409
|
-
## Output: `working/04-quality-checks.md`
|
|
410
|
-
|
|
411
|
-
Document each test, the finding, and the action taken. Even tests that passed without changes should be noted — "core-action fit: 4 direct sources; no backfill" or "redundancy test: no redundant sources found." The working notes are part of the methodology; they show what work was actually done.
|
|
412
|
-
|
|
413
|
-
If an improvement pass is recommended, also write `working/05-operating-fit-audit.md`:
|
|
414
|
-
|
|
415
|
-
```yaml
|
|
416
|
-
status: improvement_recommended
|
|
417
|
-
gap: The missing source role or weak evidence role.
|
|
418
|
-
why_it_matters: Why this gap would hurt a future AI agent using the corpus.
|
|
419
|
-
recommended_pass:
|
|
420
|
-
- Search lane or source type Liner should look for.
|
|
421
|
-
- Search lane or source type Liner should look for.
|
|
422
|
-
user_can_add:
|
|
423
|
-
- Concrete custom source the user could add if web research stays thin.
|
|
424
|
-
skip_note: What remains weaker if the user skips for now.
|
|
425
|
-
```
|
|
426
|
-
|
|
427
|
-
---
|
|
428
|
-
|
|
429
|
-
## A note on fresh attention
|
|
430
|
-
|
|
431
|
-
Phase 5 benefits from running with fresh attention. The first four phases build up a mental model of the corpus that biases how you see it — you remember why you kept each source, which makes redundancy easier to miss; you remember the candidate searches you ran, which makes the framing-gap easier to miss.
|
|
432
|
-
|
|
433
|
-
If the conversation has been long, consider starting a separate chat with just the JTBD, the knowledge map, the required source roles, and the kept-source list (titles + notes only, no source content). Run the quality tests there. The fresh chat doesn't carry the gathering pass's biases.
|
|
434
|
-
|
|
435
|
-
This is optional, not required by the methodology. Mention the option to the curator. Quick mode users may prefer to continue in the same conversation for speed; methodology mode users often benefit from the reset.
|