linersh 1.0.2 → 1.0.3

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 CHANGED
@@ -54,6 +54,11 @@ corpus with your configured local Claude or Codex runner, then run Create
54
54
  Operating Layer. Because `HOME`, the npm cache, and `LINER_DIR` all point inside
55
55
  `$tmp`, cleanup is just `rm -rf "$tmp"`.
56
56
 
57
+ For release testing on a machine that may already have Liner installed, first
58
+ run the hard-reset smoke commands in [PUBLISH-CHECKLIST.md](PUBLISH-CHECKLIST.md).
59
+ That removes global `linersh`, npx execution caches, Liner config/cache, and
60
+ Playwright Chromium before the external-user `npx linersh@<version>` test.
61
+
57
62
  ## Run Locally
58
63
 
59
64
  From the repo root:
@@ -98,6 +103,10 @@ Notes:
98
103
  - Release packaging is verified with `npm run acceptance:go -- release-smoke`,
99
104
  which packs a local platform package plus the main `linersh` package and
100
105
  installs both into a clean consumer project.
106
+ - Public release tarballs are generated by
107
+ `scripts/release-tarballs.sh --version <version>` from the repo root. The
108
+ script writes the local tarball folder, checksums, and the exact npm publish
109
+ command block Arturo should run.
101
110
 
102
111
  ## Useful Environment Variables
103
112
 
package/bin/liner.js CHANGED
@@ -355,7 +355,8 @@ function tryResolveCliCommand() {
355
355
  }
356
356
 
357
357
  function tryResolveHeadlessRunnerScript() {
358
- return join(packageRoot, "dist", "agents", "headless-runner.js");
358
+ const candidate = join(packageRoot, "dist", "agents", "headless-runner.js");
359
+ return existsSync(candidate) ? candidate : null;
359
360
  }
360
361
 
361
362
  function printVersion() {
@@ -72,13 +72,14 @@ In both modes, notes are required. A source without a note doesn't ship.
72
72
 
73
73
  ## Worked examples
74
74
 
75
- > TODO: Insert three to five worked examples from the Cowork CLI/TUI synthesis. Each should show all three things landed. Look for notes in the Cowork material that are concrete about role, location of value, and limitations — not vague praise.
76
- >
77
- > Suggested examples to pull:
78
- > - A "watch first" foundational note (likely on a Van Slyck talk or clig.dev)
79
- > - A note with specific time-coding on a video ("the section starting at 14:30")
80
- > - A trim note that explicitly says what to skip ("Skip the OpenStack-specific noise")
81
- > - A "contested counterpoint" note that names the source it disagrees with
82
- > - A note that names a temporal limitation ("dated on X, durable on Y")
83
-
84
- > TODO: Insert one or two examples of bad notes for contrast. Pull the original AI-drafted notes from OpenClaw if they're available — those are the canonical "this is a useful resource" generic notes that Cowork rewrote.
75
+ Good notes:
76
+
77
+ - "Watch first for the operating model: the middle section names the workflow constraint this corpus adopts. Dated on tool names, durable on the interaction principle."
78
+ - "Use as the counterpoint to the default stance. Strong on risks and failure modes; do not treat it as the corpus's main recommendation."
79
+ - "Skim the setup and use the worked example section. It shows the output bar, but the implementation details are platform-specific."
80
+
81
+ Bad notes:
82
+
83
+ - "Useful overview of the topic."
84
+ - "Highly recommended resource."
85
+ - "Good background reading."
@@ -90,8 +90,6 @@ If yes, keep the better one and cut the other. Volume is not a virtue. Five exce
90
90
 
91
91
  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.
92
92
 
93
- > TODO: Insert a worked example from the Cowork synthesis where two sources were collapsed because of redundancy. The Van Slyck talk appearing in transcripts 02 and 03 is a known case — same talk uploaded twice. Show how the redundancy was named and resolved.
94
-
95
93
  ---
96
94
 
97
95
  ## Test 2 — The coverage test
@@ -107,8 +105,6 @@ A mixtape that silently omits a major area is worse than one that says explicitl
107
105
 
108
106
  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.
109
107
 
110
- > TODO: Insert a worked example. If the Cowork synthesis had a section that needed reinforcement after first-pass evaluation, show the coverage check that surfaced it and how the gap was addressed.
111
-
112
108
  ---
113
109
 
114
110
  ## Test 3 — The disagreement test
@@ -123,8 +119,6 @@ If the topic is genuinely uncontested — the W3C HTML spec, for example, isn't
123
119
 
124
120
  **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.
125
121
 
126
- > TODO: Insert a worked example from CLI/TUI research. The corpus probably had a contested-question moment — possibly around whether CLIs should follow Unix conventions strictly vs. break them deliberately, or around accessibility being assumed-by-default vs. explicitly designed-for. Surface the actual disagreement and how it was handled.
127
-
128
122
  ---
129
123
 
130
124
  ## Test 4 — The framing-gap test
@@ -189,8 +183,6 @@ The earlier loose version of this test failed quietly in practice. A real sessio
189
183
 
190
184
  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.
191
185
 
192
- > TODO: Insert the canonical worked example from the Cowork synthesis. OpenClaw's initial 50-source list was anchored in "CLI/TUI implementation" framing and missed "the entire wizard/form-design tradition (Form Design Patterns, NN/g articles, Tidwell, Cooper)." Cowork ran the framing-gap test, named the missing tradition, added 43 net-new sources, and reframed the corpus. This is the textbook framing-gap-test rescue. Pull the specific moment the gap was identified and the specific sources added.
193
-
194
186
  ---
195
187
 
196
188
  ## Test 5 — Source-kind balance
@@ -431,8 +423,6 @@ user_can_add:
431
423
  skip_note: What remains weaker if the user skips for now.
432
424
  ```
433
425
 
434
- > TODO: Insert a sample `working/04-quality-checks.md` from the Cowork synthesis. The full structure with each test, the finding, and the resulting action is the most useful worked example in this file.
435
-
436
426
  ---
437
427
 
438
428
  ## A note on fresh attention
@@ -16,8 +16,6 @@ This tactic is the single highest-leverage move for discovering primary document
16
16
 
17
17
  **How to apply:** Open the most credible source you have. Scan the references, footnotes, or "further reading" section. Note every source that's cited *and* recurs in another credible source's references. Recurrence across multiple credible sources is the signal — it's how you find the references nobody links anymore.
18
18
 
19
- > TODO: Insert worked example from the Cowork CLI/TUI synthesis. Look for a moment in the research where citation-chasing surfaced a canonical source that didn't show up in any initial keyword search. Form Design Patterns by Adam Silver is a candidate — it's cited across multiple Phase 1 sources but didn't surface from "CLI wizard design" searches.
20
-
21
19
  ---
22
20
 
23
21
  ## 2. Reverse-engineer experts' reading lists
@@ -30,8 +28,6 @@ Are.na deserves a specific note: it's a network designed for visual and textual
30
28
 
31
29
  **How to apply:** Find three to five experts in the domain. Search each one's name plus "reading list" or "syllabus" or "references." Catalog what they recommend. Cross-reference with the candidates already on your long-list — overlaps are strong signal; uniques are leads.
32
30
 
33
- > TODO: Insert worked example from the Cowork CLI/TUI synthesis. Look for a tactical mention of an expert reading list that surfaced relevant work. If none exists, this section can use an example from a different domain — the methodology generalizes.
34
-
35
31
  ---
36
32
 
37
33
  ## 3. Mine course syllabi
@@ -49,8 +45,6 @@ University courses, bootcamp curricula, and serious online courses have already
49
45
 
50
46
  Course syllabi skew toward foundations. They're best for the early-section knowledge-map buckets. Recent practitioner work is rarely on them.
51
47
 
52
- > TODO: Insert worked example. If no syllabus surfaced in the CLI/TUI research, note this and use a hypothetical that's specific enough to be useful.
53
-
54
48
  ---
55
49
 
56
50
  ## 4. Find who experts cite
@@ -61,8 +55,6 @@ This tactic is structurally similar to citation-chasing (#1), but starts from pe
61
55
 
62
56
  **How to apply:** Identify three to five practitioners credible in the domain. Open their most recent significant work. Note the sources they cite. Open the sources cited by two or more practitioners. Those are your high-priority candidates.
63
57
 
64
- > TODO: Insert worked example from CLI/TUI research. Carolyn Van Slyck, Aanand Prasad (clig.dev), Will McGugan (Textualize), and Amanda Pinsker (GitHub CLI) are candidates whose citation patterns could be traced.
65
-
66
58
  ---
67
59
 
68
60
  ## 5. Conference proceedings
@@ -73,8 +65,6 @@ Going through three years of a specific conference is more efficient than topic-
73
65
 
74
66
  Conference talks vary widely in density. The same talk reposted across multiple conferences is one signal of substance. Talks from speakers who are also cited by other practitioners (tactic #4) are another.
75
67
 
76
- > TODO: Insert worked example. The CLI/TUI corpus has multiple Van Slyck talks across GopherCon and other venues — a real example of how conference-proceeding mining surfaced both her work and what to keep when the same talk appears at multiple conferences.
77
-
78
68
  ---
79
69
 
80
70
  ## 6. Ask the AI to find gaps, not sources
@@ -87,8 +77,6 @@ AI is bad at recall — at remembering and surfacing sources you don't know abou
87
77
 
88
78
  This tactic is structurally related to the framing-gap test in Phase 5, but earlier and lower-stakes. Doing it in Phase 2 is cheaper than discovering the gap in Phase 5 and having to backtrack.
89
79
 
90
- > TODO: Insert worked example from the Cowork synthesis. The Cowork run discovered that OpenClaw's initial 50-source list missed "the entire wizard/form-design tradition (Form Design Patterns, NN/g articles, Tidwell, Cooper)" — this is the canonical example of gap-finding working. Pull the specific moment where the gap was named and how it changed the candidate pool.
91
-
92
80
  ---
93
81
 
94
82
  ## 7. Search for the core action and the curator anchors
@@ -171,8 +171,6 @@ Drop unless the source encodes a genuinely transferable pattern. A Ratatui tutor
171
171
 
172
172
  A source flagged as "low-value" during candidate discovery (Phase 2) sometimes turns out to be the only one that addresses a specific gap once you've actually read every candidate. If a low-priority source uniquely covers a knowledge-map section that would otherwise be empty or thin, rescue it. Mark the decision and the rationale clearly.
173
173
 
174
- > TODO: Insert worked example from the Cowork CLI/TUI synthesis. The canonical example is the Caligula segment inside transcript #34 "some cool Linux programs you've never seen" — OpenClaw flagged it as lower-value, Cowork rescued it as "the closest direct precedent in your whole corpus." This is the textbook rescue move. Pull the specific decision and the rationale used.
175
-
176
174
  ### Author overrepresentation
177
175
 
178
176
  Three of five sources in a section are by the same author. This narrows perspective and reduces the AI's ability to synthesize across views. Keep the single strongest piece by that author; replace the others with sources by different practitioners. The exception: if the author has genuinely written the canonical work in multiple sub-areas, and no other practitioner has equivalent work, keeping multiple pieces is justified — but you should be able to defend it.
@@ -209,5 +207,3 @@ candidates:
209
207
  ```
210
208
 
211
209
  For dropped sources, the rationale should name *why* dropped — "duplicates Source 4," "shallow listicle," "AI-generated," "off-topic relative to JTBD." Generic "low quality" is not useful. Be specific.
212
-
213
- > TODO: Insert two or three worked evaluation entries pulled from the Cowork synthesis — one keep with rating 5, one trim with rating 3, one drop with a specific rationale. These are the highest-leverage examples in the file.
@@ -134,9 +134,13 @@ If the synthesis names source numbers ("Source 1 argues..."), it's probably synt
134
134
 
135
135
  ## Worked examples
136
136
 
137
- > TODO: Insert two worked synthesis excerpts from the Cowork CLI/TUI synthesis. The full Cowork document is the longest worked example available — pull the opening framing paragraphs as one example, and a contested-question or distinction paragraph as another.
137
+ Good synthesis shape:
138
138
 
139
- > TODO: Insert one example of synthesis-as-recap (bad) for contrast. Either invent one against the CLI/TUI material or pull an earlier draft if one exists. The bad example should make the difference between "describing sources" and "framing a domain" obvious at a glance.
139
+ > This corpus treats onboarding as a trust-building sequence, not as a checklist. The useful question is not "which screens does the user see?" but "what does each step prove before asking for the next commitment?" Sources disagree on how much explanation belongs up front, but they converge on one rule: every prompt should reduce uncertainty before it increases work.
140
+
141
+ Bad synthesis-as-recap shape:
142
+
143
+ > Source 1 explains onboarding screens. Source 2 covers empty states. Source 3 discusses progressive disclosure. Together, these sources show that onboarding is important.
140
144
 
141
145
  ---
142
146
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linersh",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Liner — npm shim, Go TUI launcher, and headless methodology runner.",
5
5
  "type": "module",
6
6
  "license": "MIT",