linersh 0.5.6 → 1.0.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.
Files changed (98) hide show
  1. package/README.md +65 -165
  2. package/bin/liner.js +82 -44
  3. package/cli-update-docs/ABOUT.md +16 -16
  4. package/cli-update-docs/AI-HANDOFF.md +62 -190
  5. package/cli-update-docs/CURATION.md +48 -19
  6. package/cli-update-docs/JTBD-MASTER-PROMPT-ABOUT.md +9 -12
  7. package/cli-update-docs/JTBD-MASTER-PROMPT.md +1 -1
  8. package/cli-update-docs/LINER-MASTER.md +77 -63
  9. package/cli-update-docs/LINER-MD-PRD.md +531 -0
  10. package/cli-update-docs/MIXTAPE-FORMAT.md +76 -44
  11. package/cli-update-docs/PLATFORM.md +47 -46
  12. package/cli-update-docs/README.md +6 -6
  13. package/cli-update-docs/SKILL.md +72 -37
  14. package/cli-update-docs/TUI-BACKLOG.md +205 -26
  15. package/cli-update-docs/quality-check-tests.md +256 -8
  16. package/cli-update-docs/source-finding-tactics.md +140 -3
  17. package/cli-update-docs/source-quality-hierarchy.md +83 -0
  18. package/cli-update-docs/synthesis-guidance.md +19 -5
  19. package/dist/agents/artifact-validation.js +440 -0
  20. package/dist/agents/artifact-validation.js.map +1 -0
  21. package/dist/agents/candidate-longlist.js +100 -0
  22. package/dist/agents/candidate-longlist.js.map +1 -0
  23. package/dist/agents/detect.js +3 -2
  24. package/dist/agents/detect.js.map +1 -1
  25. package/dist/agents/evaluation-assembly.js +270 -0
  26. package/dist/agents/evaluation-assembly.js.map +1 -0
  27. package/dist/agents/headless-runner.js +227 -0
  28. package/dist/agents/headless-runner.js.map +1 -0
  29. package/dist/agents/jtbd-clarify.js +42 -41
  30. package/dist/agents/jtbd-clarify.js.map +1 -1
  31. package/dist/agents/models.js +6 -7
  32. package/dist/agents/models.js.map +1 -1
  33. package/dist/agents/prompts.js +220 -20
  34. package/dist/agents/prompts.js.map +1 -1
  35. package/dist/agents/runner.js +462 -21
  36. package/dist/agents/runner.js.map +1 -1
  37. package/dist/phases.js +13 -13
  38. package/dist/phases.js.map +1 -1
  39. package/dist/source-inbox.js +297 -0
  40. package/dist/source-inbox.js.map +1 -0
  41. package/dist/version.js +3 -9
  42. package/dist/version.js.map +1 -1
  43. package/dist/yaml-io.js +42 -11
  44. package/dist/yaml-io.js.map +1 -1
  45. package/package.json +26 -23
  46. package/cli-update-docs/JOB-STORY-MIGRATION.md +0 -99
  47. package/dist/App.js +0 -220
  48. package/dist/App.js.map +0 -1
  49. package/dist/colors.js +0 -132
  50. package/dist/colors.js.map +0 -1
  51. package/dist/components/Header.js +0 -15
  52. package/dist/components/Header.js.map +0 -1
  53. package/dist/components/KeyHints.js +0 -17
  54. package/dist/components/KeyHints.js.map +0 -1
  55. package/dist/components/LabeledBox.js +0 -53
  56. package/dist/components/LabeledBox.js.map +0 -1
  57. package/dist/components/NextSteps.js +0 -18
  58. package/dist/components/NextSteps.js.map +0 -1
  59. package/dist/index.js +0 -17
  60. package/dist/index.js.map +0 -1
  61. package/dist/screens/AgentSetup.js +0 -224
  62. package/dist/screens/AgentSetup.js.map +0 -1
  63. package/dist/screens/BootSplash.js +0 -163
  64. package/dist/screens/BootSplash.js.map +0 -1
  65. package/dist/screens/CompileView.js +0 -567
  66. package/dist/screens/CompileView.js.map +0 -1
  67. package/dist/screens/FramingConfirmReview.js +0 -197
  68. package/dist/screens/FramingConfirmReview.js.map +0 -1
  69. package/dist/screens/Gate1Review.js +0 -147
  70. package/dist/screens/Gate1Review.js.map +0 -1
  71. package/dist/screens/Gate2Review.js +0 -162
  72. package/dist/screens/Gate2Review.js.map +0 -1
  73. package/dist/screens/ImportPrompt.js +0 -173
  74. package/dist/screens/ImportPrompt.js.map +0 -1
  75. package/dist/screens/JsSetup.js +0 -77
  76. package/dist/screens/JsSetup.js.map +0 -1
  77. package/dist/screens/LocalFilePicker.js +0 -139
  78. package/dist/screens/LocalFilePicker.js.map +0 -1
  79. package/dist/screens/NewMixtapeWizard.js +0 -662
  80. package/dist/screens/NewMixtapeWizard.js.map +0 -1
  81. package/dist/screens/PhaseRunner.js +0 -1203
  82. package/dist/screens/PhaseRunner.js.map +0 -1
  83. package/dist/screens/ProcessManifest.js +0 -160
  84. package/dist/screens/ProcessManifest.js.map +0 -1
  85. package/dist/screens/ProjectHub.js +0 -557
  86. package/dist/screens/ProjectHub.js.map +0 -1
  87. package/dist/screens/SourceModal.js +0 -269
  88. package/dist/screens/SourceModal.js.map +0 -1
  89. package/dist/screens/TapeBrowser.js +0 -312
  90. package/dist/screens/TapeBrowser.js.map +0 -1
  91. package/dist/screens/TapeDraftReview.js +0 -444
  92. package/dist/screens/TapeDraftReview.js.map +0 -1
  93. package/dist/screens/TapeEditor.js +0 -310
  94. package/dist/screens/TapeEditor.js.map +0 -1
  95. package/dist/screens/cassette-art.js +0 -72
  96. package/dist/screens/cassette-art.js.map +0 -1
  97. package/dist/store.js +0 -10
  98. package/dist/store.js.map +0 -1
@@ -0,0 +1,531 @@
1
+ # LINER.md Product Requirements
2
+
3
+ Status: draft
4
+ Date: 2026-06-14
5
+ Branch: `go-refactor`
6
+
7
+ ## Summary
8
+
9
+ Liner's first product promise is a focused mixtape: the right context for a
10
+ specific job. The next promise is a Liner project: a project folder that owns
11
+ that compiled corpus plus the instructions, skills, audits, impact tests, and
12
+ composition records that make the artifact useful over time.
13
+
14
+ `mixtape/MIXTAPE.md` remains the source bundle. It contains the curated corpus,
15
+ source notes, synthesis, and citations. Root-level `LINER.md` tells an external
16
+ AI how to think with that corpus, when to use which source, what skills are
17
+ available, what boundaries to respect, and how to keep the project honest as new
18
+ material is added.
19
+
20
+ This is not an "advisor" product in name or framing. A design-engineering
21
+ mixtape should not merely pretend to be a design engineer. It should behave like
22
+ a carefully grounded design-engineering artifact with a conscience: it has
23
+ stance, memory, source discipline, skills, and maintenance routines, all traced
24
+ back to the mixtape that created it.
25
+
26
+ ## Product Thesis
27
+
28
+ A normal research bundle answers:
29
+
30
+ - What did we find?
31
+ - Which sources matter?
32
+ - What did the curator conclude?
33
+
34
+ A Liner project additionally answers:
35
+
36
+ - How should an AI use this corpus?
37
+ - What should it do first, second, and never?
38
+ - Which source should win when there is tension?
39
+ - What skills can it perform repeatedly?
40
+ - What does it know it does not know?
41
+ - How can it improve when the user adds a book, recording, article, or note?
42
+
43
+ The result should feel less like a static report and more like a reusable
44
+ working instrument.
45
+
46
+ ## Goals
47
+
48
+ - Turn a compiled mixtape into an operational artifact that external agents can
49
+ load and use.
50
+ - Preserve source grounding. `LINER.md` must point back to
51
+ `mixtape/MIXTAPE.md`, `mixtape/tape.yaml`, source notes, and skill files.
52
+ - Let users keep improving a mixtape by adding books, recordings, local notes,
53
+ web sources, and skills.
54
+ - Support contradictions, cleanup, audits, Impact Tests, and composition as
55
+ first-class management workflows in the Go TUI.
56
+ - Keep the default creation path simple: compile the mixtape first, then build
57
+ or manage `LINER.md` as a completed-mixtape action.
58
+
59
+ ## Non Goals
60
+
61
+ - Do not rename the product around "advisor."
62
+ - Do not silently rewrite sources, skills, or `LINER.md` without review.
63
+ - Do not make `LINER.md` required before the Go TUI becomes the default.
64
+ - Do not treat generated persona text as truth. Everything must stay grounded
65
+ in the mixtape's sources and curator notes.
66
+ - Do not build a complex database layer before Markdown/YAML artifacts prove the
67
+ workflow.
68
+
69
+ ## Naming Model
70
+
71
+ Use these names consistently:
72
+
73
+ - `LINER.md`: root project instructions for using the corpus.
74
+ - `liner.yaml`: root Liner project metadata and layout marker.
75
+ - `mixtape/`: the compiled corpus artifact folder.
76
+ - `mixtape/MIXTAPE.md`: the compiled corpus and source-grounded reading packet.
77
+ - `mixtape/tape.yaml`: the structured source list and corpus metadata.
78
+ - `mixtape/synthesis.md`: the curator's distilled understanding of the corpus.
79
+ - `mixtape/sources/`: fetched source extracts.
80
+ - `mixtape/working/`: methodology working files through assembly/compile.
81
+ - `skills/`: reusable behaviors or methods grounded in the corpus.
82
+ - `working/audits/`: contradiction, alignment, and quality reports.
83
+ - `working/evals/`: storage path for Impact Test tasks, runs, comparisons, and
84
+ notes.
85
+ - `children/`: nested or referenced child mixtapes.
86
+ - `lineage.yaml`: merge/nesting history and parent-child relationships.
87
+
88
+ Avoid these as product labels:
89
+
90
+ - Advisor
91
+ - Agent persona
92
+ - Knowledge bot
93
+ - Chatbot
94
+
95
+ Acceptable user-facing language:
96
+
97
+ - LINER.md
98
+ - Project instructions
99
+ - Mixtape behavior
100
+ - Skills
101
+ - Source discipline
102
+ - Artifact with a conscience
103
+ - Liner project
104
+
105
+ ## Core Mental Model
106
+
107
+ The Liner project is the durable folder.
108
+
109
+ `mixtape/` is the compiled corpus artifact.
110
+
111
+ `mixtape/MIXTAPE.md` is what the corpus knows.
112
+
113
+ `LINER.md` is how the project tells another AI to use that corpus.
114
+
115
+ `skills/*.md` are repeatable moves the project can perform.
116
+
117
+ Audits and Impact Tests are how the project proves it is still coherent.
118
+
119
+ Children and composition are how smaller mixtapes become a larger working
120
+ system without flattening every domain into one blob.
121
+
122
+ ## File Structure
123
+
124
+ Target project shape:
125
+
126
+ ```text
127
+ design-engineering/
128
+ |-- liner.yaml
129
+ |-- LINER.md
130
+ |-- skills/
131
+ | |-- critique-interface-states.md
132
+ | |-- design-terminal-flow.md
133
+ | `-- evaluate-component-polish.md
134
+ |-- working/
135
+ | |-- audits/
136
+ | | |-- 2026-06-14-contradictions.md
137
+ | | `-- 2026-06-14-skill-corpus-alignment.md
138
+ | `-- evals/
139
+ | |-- tasksets/
140
+ | |-- runs/
141
+ | `-- summaries/
142
+ |-- mixtape/
143
+ | |-- tape.yaml
144
+ | |-- MIXTAPE.md
145
+ | |-- synthesis.md
146
+ | |-- sources/
147
+ | | |-- 01-source.md
148
+ | | `-- ...
149
+ | |-- local-sources/
150
+ | `-- working/
151
+ | |-- 01-jtbd-and-knowledge-map.md
152
+ | |-- 02-candidate-longlist.md
153
+ | |-- 03-evaluation.yaml
154
+ | |-- 04-quality-checks.md
155
+ | `-- 07-tape-draft.yaml
156
+ |-- children/
157
+ | |-- ux-specialist.yaml
158
+ | `-- ui-specialist.yaml
159
+ `-- lineage.yaml
160
+ ```
161
+
162
+ Legacy folders with root-level `tape.yaml`, `synthesis.md`, `MIXTAPE.md`,
163
+ `sources/`, `local-sources/`, and methodology `working/` remain readable. New
164
+ projects should use the v2 shape above.
165
+
166
+ ## LINER.md Structure
167
+
168
+ Initial generated `LINER.md` should be Markdown-first:
169
+
170
+ ```md
171
+ # Design Engineering
172
+
173
+ ## Scope
174
+
175
+ What this mixtape is for, what it is not for, and the job it serves.
176
+
177
+ ## Operating Stance
178
+
179
+ The few strong positions this corpus takes.
180
+
181
+ ## Source Use Rules
182
+
183
+ How to load, prioritize, and cite sources from MIXTAPE.md and sources/.
184
+
185
+ ## Skills
186
+
187
+ The reusable moves available in skills/.
188
+
189
+ ## Conflict Rules
190
+
191
+ How to handle contradictions between source types, time periods, or child
192
+ mixtapes.
193
+
194
+ ## Abstention Rules
195
+
196
+ When to say the corpus is insufficient.
197
+
198
+ ## Maintenance Rules
199
+
200
+ How new sources, recordings, books, and notes should be incorporated.
201
+
202
+ ## Impact Test Rules
203
+
204
+ How to test whether this Liner project is actually improving outputs.
205
+ ```
206
+
207
+ ## Skill Structure
208
+
209
+ Skills should begin as plain Markdown files. Avoid front matter until the product
210
+ needs machine routing beyond filename plus headings.
211
+
212
+ Example:
213
+
214
+ ```md
215
+ # Critique Interface States
216
+
217
+ ## Use When
218
+
219
+ The user is reviewing an app screen, flow, or component and wants design
220
+ engineering critique.
221
+
222
+ ## Inputs
223
+
224
+ - screenshot or UI description
225
+ - target user and workflow
226
+ - known constraints
227
+
228
+ ## Method
229
+
230
+ 1. Identify the user's actual job in the screen.
231
+ 2. Check hierarchy, density, feedback, state coverage, and failure modes.
232
+ 3. Compare against source rules from MIXTAPE.md.
233
+ 4. Produce prioritized findings, not generic polish advice.
234
+
235
+ ## Source Grounding
236
+
237
+ - MIXTAPE.md section: Interaction states and feedback
238
+ - Source: `sources/07-charmbracelet-bubbles.md`
239
+ - Source: `sources/12-apple-hig-feedback.md`
240
+
241
+ ## Boundaries
242
+
243
+ Do not invent platform rules that are not in the corpus. If the issue needs
244
+ accessibility law, ask for a relevant source or mark it as outside scope.
245
+ ```
246
+
247
+ ## Primary Use Cases
248
+
249
+ ### 1. Build A Design Engineering Liner Project
250
+
251
+ The user creates a design-engineering Liner project from public sources, local notes,
252
+ and curated examples. After compile, Liner generates:
253
+
254
+ - `mixtape/MIXTAPE.md`
255
+ - `LINER.md`
256
+ - starter skills such as terminal-flow critique, component polish review, and
257
+ source-backed UI recommendation
258
+
259
+ When an external agent loads it, the agent gets not only sources but operating
260
+ rules for using them.
261
+
262
+ ### 2. Add A Library Book
263
+
264
+ The user borrows a book, scans notes or adds chapter summaries, and imports them
265
+ as local sources.
266
+
267
+ Expected behavior:
268
+
269
+ 1. TUI ingests the new material.
270
+ 2. Liner classifies where the source fits.
271
+ 3. Liner proposes changes to source notes, synthesis, `LINER.md`, and skills.
272
+ 4. User reviews diffs.
273
+ 5. Audit file records what changed and why.
274
+
275
+ ### 3. Add A Recording Or Idea Dump
276
+
277
+ The user records thoughts after a project review.
278
+
279
+ Expected behavior:
280
+
281
+ 1. Recording transcript is added as a local source.
282
+ 2. Liner extracts claims, examples, and open questions.
283
+ 3. Liner marks which claims are curator notes versus sourced facts.
284
+ 4. `LINER.md` maintenance rules decide whether the recording should become a
285
+ skill update, a source note, or a new impact-test task.
286
+
287
+ ### 4. Clean Up Contradictions
288
+
289
+ The user asks the TUI to find inconsistencies between skills and corpus.
290
+
291
+ Expected behavior:
292
+
293
+ 1. Agent writes `working/audits/<date>-contradictions.md`.
294
+ 2. TUI shows findings in a table:
295
+ - conflict
296
+ - affected skill/source
297
+ - recommendation
298
+ - confidence
299
+ 3. User opens details.
300
+ 4. User applies reviewed changes only.
301
+ 5. Audit records why one source or rule won over another.
302
+
303
+ ### 5. Merge Or Nest Mixtapes
304
+
305
+ The user has:
306
+
307
+ - `design-engineering`
308
+ - `ux-specialist`
309
+ - `ui-specialist`
310
+
311
+ They create `product-design` as a parent.
312
+
313
+ Default behavior should prefer nesting first:
314
+
315
+ - `product-design` references children.
316
+ - Child scope remains intact.
317
+ - Parent `LINER.md` routes tasks to children.
318
+ - Merge is available only when the source sets are small and non-overlapping
319
+ enough to stay coherent.
320
+
321
+ Example composition table:
322
+
323
+ ```text
324
+ Child Route Status
325
+ ux-specialist research, flows, IA ready
326
+ ui-specialist hierarchy, layout, patterns ready
327
+ design-engineering states, systems, polish warning
328
+ ```
329
+
330
+ ## Go TUI Surfaces
331
+
332
+ The Go TUI should manage Liner projects after compile.
333
+
334
+ Target Project actions:
335
+
336
+ ```text
337
+ Key Action When
338
+ enter Preview MIXTAPE.md compiled artifact ready
339
+ l Manage LINER.md project instructions
340
+ k Skills reusable methods
341
+ a Audits contradictions and alignment
342
+ e Impact Tests compare output quality
343
+ m Compose merge or nest child mixtapes
344
+ c Recompile explicit rebuild
345
+ ```
346
+
347
+ Use tables for management:
348
+
349
+ - source inventory
350
+ - skills list
351
+ - audit findings
352
+ - impact-test variants
353
+ - child mixtapes
354
+
355
+ Use viewports for:
356
+
357
+ - `LINER.md`
358
+ - skill bodies
359
+ - audit reports
360
+ - impact-test outputs
361
+
362
+ Avoid card-heavy dashboard layouts. This should feel like a workshop with a
363
+ clear next action.
364
+
365
+ ## Generation Workflow
366
+
367
+ `LINER.md` generation should be a completed-mixtape action, not a required
368
+ creation phase.
369
+
370
+ Flow:
371
+
372
+ ```text
373
+ Project
374
+ -> Manage LINER.md
375
+ -> Generate LINER.md
376
+ -> Review proposed LINER.md
377
+ -> Accept / edit / discard
378
+ ```
379
+
380
+ Inputs:
381
+
382
+ - `mixtape/MIXTAPE.md`
383
+ - `mixtape/synthesis.md`
384
+ - `mixtape/tape.yaml`
385
+ - source notes and kinds
386
+ - `mixtape/working/04-quality-checks.md`
387
+
388
+ Outputs:
389
+
390
+ - `LINER.md`
391
+ - optional starter `skills/*.md`
392
+ - `working/audits/<date>-liner-md-generation.md`
393
+
394
+ Review rules:
395
+
396
+ - Generated files are proposed first.
397
+ - User can open files in editor.
398
+ - Accept writes files.
399
+ - Discard removes draft files.
400
+ - Audit explains the decisions and limitations.
401
+
402
+ ## Audit Requirements
403
+
404
+ Initial audits:
405
+
406
+ 1. Contradiction audit.
407
+ 2. Skill-corpus alignment audit.
408
+ 3. Source-note quality audit.
409
+
410
+ Contradiction audit should find:
411
+
412
+ - two skills giving incompatible instructions
413
+ - a skill that contradicts source hierarchy
414
+ - source notes that overstate what a source supports
415
+ - parent and child mixtapes with conflicting scope
416
+
417
+ Skill-corpus alignment should check:
418
+
419
+ - every skill points to at least one source or section
420
+ - skill boundaries are explicit
421
+ - skill method does not exceed the corpus
422
+ - old skills are marked stale when sources change materially
423
+
424
+ Source-note quality should check:
425
+
426
+ - notes say what to read for
427
+ - notes name the bar the source sets
428
+ - notes flag limitations or scope boundaries
429
+ - notes distinguish curator stance from source claim
430
+
431
+ ## Impact Test Requirements
432
+
433
+ Start local and simple.
434
+
435
+ Variants:
436
+
437
+ - no project files
438
+ - `MIXTAPE.md` only
439
+ - `MIXTAPE.md + LINER.md`
440
+ - `MIXTAPE.md + LINER.md + skills/*.md`
441
+
442
+ Artifacts:
443
+
444
+ ```text
445
+ working/evals/tasksets/
446
+ working/evals/runs/<timestamp>/
447
+ working/evals/summaries/
448
+ ```
449
+
450
+ Initial scoring:
451
+
452
+ - human rubric first
453
+ - optional LLM judge later
454
+ - record qualitative notes, not just scores
455
+
456
+ Example impact-test task:
457
+
458
+ ```md
459
+ # Impact Test Task: Terminal Flow Critique
460
+
461
+ Input: a screenshot or text description of a setup wizard.
462
+
463
+ Expected output:
464
+
465
+ - identifies the user's job
466
+ - finds contradictory helper text
467
+ - proposes a simpler linear flow
468
+ - cites or names the relevant source rule
469
+ - avoids generic design advice
470
+ ```
471
+
472
+ ## Acceptance Criteria
473
+
474
+ Phase 1:
475
+
476
+ - Existing compiled project can show `LINER.md` status in Project.
477
+ - User can generate a draft `LINER.md`.
478
+ - Draft is reviewed before write.
479
+ - Accepted `LINER.md` is visible in a viewport.
480
+ - Generation writes an audit note.
481
+
482
+ Phase 2:
483
+
484
+ - User can see skills in a table.
485
+ - User can open, create, disable, and audit skills.
486
+ - Skill-corpus alignment audit detects ungrounded skills.
487
+
488
+ Phase 3:
489
+
490
+ - User can run contradiction and source-note quality audits.
491
+ - Findings appear in a table with inspectable report bodies.
492
+ - Applying changes is review-only, never silent.
493
+
494
+ Phase 4:
495
+
496
+ - User can define a tiny local impact-test taskset.
497
+ - User can run or prepare at least two variants from the run packet.
498
+ - Results are saved and summarized.
499
+
500
+ Phase 5:
501
+
502
+ - User can nest child mixtapes under a parent.
503
+ - Parent `LINER.md` routes tasks to children.
504
+ - `lineage.yaml` records composition history.
505
+
506
+ ## Open Questions
507
+
508
+ 1. Should `LINER.md` generation use the existing methodology skill bundle or a
509
+ new smaller project skill?
510
+ 2. Should starter skills live in `skills/*.md` only, or should `LINER.md`
511
+ include short embedded skill summaries?
512
+ 3. What is the minimum useful Impact Tests UI: task table only, or side-by-side
513
+ output comparison on day one?
514
+ 4. When a parent mixtape nests children, should sources be copied, referenced,
515
+ or both?
516
+ 5. Should external agents load `LINER.md` first, then `MIXTAPE.md`, or should
517
+ `LINER.md` explicitly instruct when to load deeper source files?
518
+
519
+ ## Recommended First Build
520
+
521
+ Build the smallest useful loop:
522
+
523
+ 1. Detect `LINER.md` on Project.
524
+ 2. Add a `LINER.md` preview route.
525
+ 3. Add a generate action that writes a draft file under `working/`.
526
+ 4. Add review accept/discard.
527
+ 5. Write one audit file explaining generation decisions.
528
+
529
+ Do not start with merge/nesting. Composition becomes valuable after individual
530
+ Liner projects have a stable `LINER.md` and at least one audit or
531
+ Impact Test loop.