@hypercarrier/rarebit 0.2.0 → 0.3.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/CHANGELOG.md CHANGED
@@ -1,5 +1,40 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.0 — 2026-10-04
4
+
5
+ - Add `/rarebit view [context|all|peek|off]` and a View action in the palette.
6
+ Read active-branch Rarebits across compactions, or keep the editor live in
7
+ peek.
8
+ - Add scroll and smartcase search controls, toggle/cycle shortcuts with Super
9
+ aliases, and active-view status. First toggle opens all; off clears status.
10
+ - Add the experimental context view with capability checks and an all-view
11
+ fallback. It relies on unsupported Pi internals and can break after updates.
12
+ - Reset views on Session replacement, reload, and shutdown. Verify views on
13
+ Pi 0.84.2 and 1.0.0; component wheel input requires a supporting fullscreen
14
+ host.
15
+ - Stop retained Recap entries from reading a closed Session after shutdown or
16
+ `/resume`.
17
+
18
+ ## 0.2.1 — 2026-09-29
19
+
20
+ - Move Recap into the scrollable transcript using native custom-entry renderers,
21
+ preserving its muted styling. Retain the widget fallback for older Pi hosts.
22
+ - Request 1–2 sentences and at most 300 characters in the default Summary prompt.
23
+ - Add `Ctrl+Alt+G` and `/rarebit got-it` to persist branch-local recap read
24
+ checkpoints. Subsequent summaries emphasize changes beyond recap coverage.
25
+ - Reuse native Recaps for the same receipt and coverage, including after read
26
+ acknowledgement and resume. Validate read markers against branch evidence.
27
+ - Keep conversation evidence beside read metadata when Summary input is trimmed.
28
+ - Promote newer manual assessments after settlement. Preserve active requests
29
+ until an agent-settled assessment closes them.
30
+ - Display current request-prefix Recaps with their exact receipt coverage.
31
+ Revalidate live branch state after asynchronous reads.
32
+ - Report explicit Summary outcomes even when automatic notices are disabled.
33
+ - Shorten Recap headers to numeric date, 24-hour time, and GMT offset. Keep
34
+ the got-it action inline.
35
+ - Include a native fullscreen renderer probe documenting Pi 0.84.2's mouse-input
36
+ limitation; the read affordance currently supports keyboard activation.
37
+
3
38
  ## 0.2.0 — 2026-09-27
4
39
 
5
40
  - Add the `/rarebit` action palette and tabbed `/rarebit settings` editor.
package/README.md CHANGED
@@ -1,113 +1,243 @@
1
1
  # Rarebit
2
2
 
3
- `@hypercarrier/rarebit` recovers decision-bearing conversational evidence from
4
- one persisted Pi Session. It deterministically selects readable user messages
5
- and assistant continuation or stop prose on the active branch. It excludes tool
6
- payloads, tool results, and hidden reasoning.
3
+ [![Rarebit: catch up on a long Pi session](https://raw.githubusercontent.com/deephbz/rarebit/main/brand/assets/banner.svg)](https://deephbz.github.io/rarebit)
7
4
 
8
- Rarebit is public alpha software. Its CLI output, exports, sidecar protocol,
9
- and visual language can change. It is not a Task, Project, runtime, priority,
10
- attention, or delivery authority. Native Pi Session JSONL remains the evidence
11
- authority.
5
+ **[Rarebit website](https://deephbz.github.io/rarebit)**
12
6
 
13
- Rarebit is released from an immutable version tag by
14
- [`.github/workflows/publish.yml`](.github/workflows/publish.yml). The workflow
15
- runs the package gates, verifies one packed artifact, scans that artifact, and
16
- publishes it with npm provenance. Install the exact version required by your
17
- Pi host.
7
+ ## Watch the demo
18
8
 
19
- The old alpha.1, alpha.2, and alpha.3 tag graphs remain public and are not
20
- privacy-clean. Existing package versions, tags, and releases remain immutable.
21
- The source-only candidate derivation and vendored-scanner binding is
22
- [`release/privacy-lineage.v1.json`](release/privacy-lineage.v1.json). It is
23
- excluded from npm and does not claim publication completion.
9
+ [![Watch the one-minute Rarebit demo](https://raw.githubusercontent.com/deephbz/rarebit/main/brand/promo-video/preview.jpg)](https://github.com/deephbz/rarebit/releases/download/v0.2.0/rarebit-promo.mp4)
10
+
11
+ [Play the video inline in the release notes](https://github.com/deephbz/rarebit/releases/tag/v0.2.0#watch-the-demo)
12
+ · [Download the MP4](https://github.com/deephbz/rarebit/releases/download/v0.2.0/rarebit-promo.mp4)
13
+
14
+ Rarebit helps you catch up on a long Pi session without rereading its tool
15
+ traffic. It selects original messages from the active branch so you can read the
16
+ conversation, ask an agent to use it, or start a focused new Session. The
17
+ original Pi Session stays intact.
18
+
19
+ Rarebit is public alpha software. Its CLI output, exports, sidecar protocol, and
20
+ visual language can change.
24
21
 
25
- ## Install
22
+ ## Start here
26
23
 
27
- Use Node 22 or later and Pi 0.83 or later. Install it in Pi from npm:
24
+ Three outcomes cover the useful path:
25
+
26
+ - **Catch up** — read selected conversational prose from the active branch.
27
+ - **Recall** — let an agent read that same selection for one request.
28
+ - **Fork** — start a fresh native Pi Session from a bounded newest suffix.
29
+
30
+ Install Rarebit and make the first deterministic, zero-model extraction:
28
31
 
29
32
  ```sh
33
+ # In a shell, install the extension in Pi, then restart Pi to load it.
30
34
  pi install npm:@hypercarrier/rarebit@0.2.0
31
- pi list
35
+
36
+ # Install the CLI in the Node project where you will run it.
37
+ npm install @hypercarrier/rarebit@0.2.0
38
+ npm exec -- rarebit extract \
39
+ --session /absolute/path/to/session.jsonl --json > selected-prose.json
40
+ ```
41
+
42
+ Replace the example path with an exact Pi Session JSONL path or supported Session
43
+ identifier. Pi normally stores Session JSONL below `~/.pi/agent/sessions/`.
44
+ Open `selected-prose.json` to catch up on the conversation. Then
45
+ choose Recall or Fork when you need an agent request or a fresh Session.
46
+
47
+ Summary and Title are optional model-derived projections. Recap only displays
48
+ an existing Summary in the Pi TUI.
49
+
50
+ ## The product in one view
51
+
52
+ ```text
53
+ long Pi Session
54
+ └─ Distill: selected active-branch prose
55
+ ├─ Catch up: read the conversation through CLI extract or Pi view
56
+ ├─ Recall: let an agent use the selection for one request
57
+ ├─ Fork: start a new native Pi Session from a bounded suffix
58
+ └─ Summary / Title: optional model-derived projections
59
+ └─ Recap: show an existing Summary in the Pi TUI
60
+ ```
61
+
62
+ ### 1. Catch up and distill
63
+
64
+ Rarebit selects these occurrences from one exact active branch:
65
+
66
+ - readable user messages;
67
+ - assistant prose at a continuation boundary;
68
+ - assistant prose at a normal stop boundary.
69
+
70
+ It excludes tool-call inputs, tool results, hidden reasoning, and transport
71
+ records. Selection is deterministic. It is not model summarization. Each
72
+ selected occurrence keeps its source entry, branch position, role, outcome,
73
+ timestamp when available, and lineage.
74
+
75
+ #### Read in the Pi TUI
76
+
77
+ Use `/rarebit view` beside CLI `extract` to read the current Session without a
78
+ model call. The command opens a picker. Choose a view directly with
79
+ `/rarebit view [context|all|peek|off]`:
80
+
81
+ - **all** reads every Rarebit on the active branch across compactions. Each
82
+ compaction has a marker. This is the first-toggle default.
83
+ - **peek** reads that same branch while you type in the editor. It stays open
84
+ on submit. Replies appear when finished. It reserves a fixed seven-row dock;
85
+ a tall multiline editor can overlap the view.
86
+ - **context** is experimental. The context view filters Pi's own transcript.
87
+ It depends on how Pi draws the transcript, which Pi does not guarantee for
88
+ extensions, so a Pi update can disable it. Rarebit then reports that the
89
+ context view is unavailable on this Pi version; the all and peek views keep
90
+ working. Context shows only Rarebits after the last compaction; use all to
91
+ read across compactions. It keeps Pi's compaction summary and Rarebit Recaps
92
+ visible.
93
+ - **off** restores the normal transcript and removes the view status line.
94
+
95
+ In `all`, use j/k or ↑/↓ for lines, u/d or Ctrl+U/Ctrl+D for half pages,
96
+ b/Space for pages, and g/G for the ends. Search with `/` or `?`, then repeat
97
+ with n/N. Search ignores case unless the query has an uppercase letter. Esc
98
+ clears a search before it closes the view; q closes it. Mouse wheel scrolling
99
+ requires fullscreen Pi with component mouse-event support. Pi 0.84.2 does not
100
+ provide that support; Pi 1.0.0 does. In `peek`, keyboard input goes to the
101
+ editor.
102
+
103
+ Ctrl+Alt+R toggles the view. Ctrl+Alt+N cycles context → all → peek. The
104
+ Ctrl+Super+R/N aliases support terminals that report the Super modifier through
105
+ Kitty keyboard sequences. Later toggles reopen the last used view. Extension
106
+ shortcuts cannot be rebound in `keybindings.json`; `/rarebit view` is the
107
+ fallback. Close `all` before using Ctrl+Alt+G to acknowledge a Recap.
108
+
109
+ The status line names the active view. The palette's **View** action opens the
110
+ picker. Opening the Rarebit palette or settings closes the view. Session
111
+ replacement, reload, and shutdown reset it to off. Turn it off before changing
112
+ TUI mode. The views are verified on Pi 0.84.2 and 1.0.0. Other versions use
113
+ capability checks and can report an unavailable view.
114
+
115
+ ### 2. Recall for the agent
116
+
117
+ In Pi, run:
118
+
119
+ ```text
120
+ /rarebit recall What decisions and open questions should guide the next turn?
32
121
  ```
33
122
 
34
- For a local checkout, Pi loads a directory without copying it:
123
+ Recall writes a private conversation view and a detailed lineage view, then
124
+ sends one user-message envelope with your request and both file references. The
125
+ agent reads those referenced files through its configured model provider. The
126
+ files are private on local disk, but Rarebit makes no provider-privacy claim;
127
+ apply your provider's policy. An idle Pi starts one turn. A busy Pi queues one
128
+ steering message. Recall does not create a durable Recall record or a second
129
+ follow-up message.
130
+
131
+ For agent workflows outside the Pi TUI, use the CLI's `extract` operation. It
132
+ is the CLI catch-up interface; there is no CLI `recall` command:
35
133
 
36
134
  ```sh
37
- pi install /absolute/path/to/rarebit
38
- pi list
135
+ npm exec -- rarebit extract \
136
+ --session /absolute/path/to/session.jsonl --json > selected-prose.json
39
137
  ```
40
138
 
41
- The package imports Pi's bundled `@earendil-works/pi-ai` as a peer dependency.
42
- Do not install or bundle a second Pi core. Pi packages execute with your user
43
- permissions, so review source before installation.
139
+ Treat that output as sensitive. It contains selected raw prose.
140
+
141
+ ### 3. Fork as a distilled native fork
142
+
143
+ Fork creates a new native Pi Session from the newest contiguous suffix of the
144
+ selected active-branch prose. It does not summarize, deduplicate, or modify the
145
+ source. It does not start a model turn and does not transfer mutable Team, Task,
146
+ subscription, or extension state.
147
+
148
+ In Pi:
149
+
150
+ ```text
151
+ /rarebit fork
152
+ ```
44
153
 
45
- To use the CLI in a normal Node project, install it and invoke the local bin
46
- with npm:
154
+ From a shell, use the exact source Session path or ID:
47
155
 
48
156
  ```sh
49
- npm install @hypercarrier/rarebit@0.2.0
50
- npm exec -- rarebit --help
157
+ npm exec -- rarebit fork /absolute/path/to/session.jsonl
158
+ npm exec -- rarebit fork /absolute/path/to/session.jsonl \
159
+ --max-token-length 64000 --no-launch --json
51
160
  ```
52
161
 
53
- ## First query and extract
162
+ The default import budget is 64,000 estimated tokens. Fork keeps whole
163
+ occurrences in branch order. If the newest occurrence cannot fit, it refuses
164
+ with an actionable error. The new Session contains machine-readable source
165
+ lineage and a recovery route. It does not promise complete context transfer.
54
166
 
55
- Give the CLI an exact Session JSONL path or supported Pi Session identifier.
56
- `query` returns metadata only. `extract` returns selected raw Session prose.
167
+ Use `piq` to inspect source evidence that the bounded fork omitted:
57
168
 
58
169
  ```sh
59
- npm exec -- rarebit query --session /absolute/path/to/session.jsonl --json
60
- npm exec -- rarebit extract --session /absolute/path/to/session.jsonl --json
170
+ npm exec -- piq entries --session /absolute/path/to/session.jsonl
171
+ ```
172
+
173
+ PiQ is read-only JSONL output for `jq`. It does not classify Rarebits, mutate a
174
+ Session, invoke a model, or migrate legacy entries.
175
+
176
+ ### 4. Summary, Title, and Recap
177
+
178
+ Summary and Title are optional derivations over the selected evidence. Recap is
179
+ a presentation of an existing Summary, not a derivation.
180
+
181
+ - **Summary** is a lossy, model-derived Session assessment. It can describe
182
+ what appears finished or needs attention in the selected prose. It is not
183
+ proof of completed work.
184
+ - **Title** is a mutable label proposal derived from a suitable user message.
185
+ - **Recap** presents the current Summary in the Pi TUI. It reads an existing
186
+ receipt and does not generate a Summary.
187
+
188
+ Use the Pi commands for a derivation or presentation:
189
+
190
+ ```text
191
+ /rarebit summarize
192
+ /rarebit title
193
+ /rarebit recap
194
+ /rarebit got-it
61
195
  ```
62
196
 
63
- The Pi extension adds one `/rarebit` parent command. In the TUI, the bare
64
- command opens an action palette. `/rarebit settings` opens a tabbed editor
65
- with Actions, Summary, Recap, and Session sections. Choose global settings or
66
- a trusted Project override; each field shows its effective value and source.
67
- Edits require Save confirmation. Blank input or Remove override restores
68
- inheritance. Settings apply to future operations; disabling automatic Recap
69
- also clears its pending or visible widget.
70
-
71
- Direct `help`, `status`, `settings`, `config`, `auto-title`, `title`, `recap`,
72
- `summarize`, `recall`, and `fork` subcommands remain available. Use
73
- `/rarebit settings global` or `/rarebit settings project` to choose the editing
74
- scope directly. `recap` reads the current Summary receipt and renders the
75
- complete multiline Summary in the TUI. It never starts synthesis.
76
-
77
- `/rarebit fork` validates the newest contiguous Rarebit suffix, writes a new
78
- Session in Pi's Session store for the current working directory, and switches
79
- to it without starting a model turn. Use `/rarebit fork --max-token-length 64000` to set the
80
- imported prose budget. Imported messages keep their roles and source outcomes,
81
- use zero usage, and carry machine-only lineage. The generated opening message
82
- records source ID/path/leaf, target directory, coverage, and the read-only PiQ
83
- recovery command. Legacy source entries retain `(sessionId, sourceOrder)` when
84
- native entry IDs are absent; Rarebit does not migrate those sources.
85
-
86
- The CLI performs the same operation without changing the caller's Session:
197
+ The CLI exposes the same model operations for an exact Session:
87
198
 
88
199
  ```sh
89
- rarebit fork /absolute/source.jsonl
90
- rarebit fork /absolute/source.jsonl --max-token-length 64000 --no-launch
200
+ npm exec -- rarebit summarize \
201
+ --session /absolute/path/to/session.jsonl --json --force
202
+ npm exec -- rarebit title \
203
+ --session /absolute/path/to/session.jsonl --json
91
204
  ```
92
205
 
93
- The first form launches Pi in the invocation working directory. The second
94
- returns JSON for automation. Fork mode requires an installed Pi coding-agent
95
- peer; read-only query, extract, and PiQ commands do not. Use `piq entries
96
- --session <path>` to read omitted native evidence without writing or migrating
97
- the source.
206
+ Summary and Title need a configured model. Query, extract, and PiQ inspection
207
+ do not need a model. Fork creation needs an installed Pi peer and a resolvable
208
+ target model context, but it does not invoke that model or start a turn.
98
209
 
99
- ## Model setup and optional derivations
210
+ ## Continue from the first result
100
211
 
101
- Summary and Title use a dedicated configured model. They never inherit Pi's
102
- interactive `defaultModel`. Start with
103
- [the example config](docs/examples/rarebit.settings.json). Merge its `rarebit`
104
- object into global Pi settings (`~/.pi/agent/settings.json`, or
105
- `$PI_CODING_AGENT_DIR/settings.json` when set), or a trusted project's
106
- `.pi/settings.json`. Preserve other settings and select a model available
107
- through your authenticated provider. The example includes all Pi extension
108
- settings with their defaults; its model is an example choice.
212
+ 1. Install the pinned npm package in Pi and restart Pi. For a local checkout,
213
+ use `pi install /absolute/path/to/rarebit`.
214
+ 2. Read or automate against `selected-prose.json`. The deterministic path works
215
+ without a model.
216
+ 3. Run `/rarebit recall <request>` when the agent should read selected earlier
217
+ conversation for one request.
218
+ 4. Use `/rarebit fork` when a bounded, fresh Session is more useful than
219
+ continuing the original one.
220
+ 5. Add model configuration only when you need Summary or Title.
109
221
 
110
- The configuration shape is:
222
+ The package uses Pi's bundled `@earendil-works/pi-ai` peer. Do not install or
223
+ bundle a second Pi core. Pi packages run with your user permissions. Review
224
+ source before installation. Use `npm install @hypercarrier/rarebit@0.2.0` and
225
+ `npm exec -- rarebit --help` when you use the CLI from a normal Node project.
226
+
227
+ ## Scope and source
228
+
229
+ Native Pi Session JSONL remains the evidence authority. Rarebit does not own
230
+ Task, Project, runtime, priority, attention, or delivery state. A Summary is a
231
+ lossy Session assessment, not proof of completed Task or Project work. A Title
232
+ is a label proposal, and Recap only presents the current Summary.
233
+
234
+ ## Configure optional derivations
235
+
236
+ Copy the example from
237
+ [`docs/examples/rarebit.settings.json`](docs/examples/rarebit.settings.json)
238
+ into the `rarebit` object in global Pi settings
239
+ (`~/.pi/agent/settings.json`, or `$PI_CODING_AGENT_DIR/settings.json` when set)
240
+ or a trusted Project's `.pi/settings.json`. Preserve other settings.
111
241
 
112
242
  ```json
113
243
  {
@@ -117,7 +247,7 @@ The configuration shape is:
117
247
  "max_rarebit_ratio": 0.4,
118
248
  "auto_title": true,
119
249
  "max_input_tokens": 64000,
120
- "summary_prompt": "The summary is free-form prose. State when evidence is uncertain, confusing, contradictory, or importantly missing instead of inventing a coherent account.",
250
+ "summary_prompt": "State when evidence is uncertain, confusing, contradictory, or importantly missing.",
121
251
  "diagnostics": {
122
252
  "summary_triggered": false,
123
253
  "summary_updated": false
@@ -131,106 +261,137 @@ The configuration shape is:
131
261
  }
132
262
  ```
133
263
 
134
- After a successful automatic or explicit Summary materialization, the Pi TUI
135
- offers the current Summary above the editor after one minute. The offer stays
136
- visible while you type and clears when Pi sends input, starts a new turn,
137
- changes Session or branch, or shuts down. Set `rarebit.recap.enabled` to
138
- `false` to disable the offer, or change `rarebit.recap.delay_ms` to adjust the
139
- delay. Set `rarebit.recap.timezone` to `host` or an IANA time zone such as
140
- `Asia/Hong_Kong` to format the Recap header. The header identifies the host
141
- zone or selected IANA zone and its offset at the observation time. The widget
142
- reads an existing receipt and never adds a Session message. In the Pi extension,
143
- `max_input_tokens` limits the Summary prompt by the existing
144
- `ceil(prompt characters / 4)` estimate. It
145
- defaults to 64,000 estimated input tokens and is not a provider output limit.
146
- Summary trigger and update notifications stay off unless
147
- `rarebit.diagnostics.summary_triggered` or
148
- `rarebit.diagnostics.summary_updated` is enabled.
149
-
150
- `rarebit.summary_prompt` is one scalar guidance string. It uses the default
151
- guidance shown in the example when omitted. The editor accepts multiline text,
152
- preserves its line breaks, and trims only outer whitespace. A blank value
153
- removes the override. The fixed evidence and JSON status contract remains
154
- owned by Rarebit. Keep custom guidance to a few short bullets so it leaves room
155
- for evidence in the configured Summary input budget. The editor rejects unsafe
156
- control characters and guidance longer than 64,000 UTF-16 characters. This
157
- guidance bound is separate from the 8,000-character Summary output safety
158
- limit.
159
-
160
- Then request explicit model work when you want it:
161
-
162
- ```sh
163
- npm exec -- rarebit summarize --session /absolute/path/to/session.jsonl --json --force
164
- npm exec -- rarebit title --session /absolute/path/to/session.jsonl --json
165
- ```
166
-
167
- A Summary is a lossy assessment of an identified selection. It can report only
168
- Session-scoped appearance, not completed Project or Task work. A Title is a
169
- mutable label proposal, not Session identity. Automatic Summary work runs only
170
- at persisted direct-input or settled-agent boundaries and only when its policy
171
- permits it.
172
-
173
- ## Privacy, local data, and provider egress
264
+ Set `model` to a model available through your authenticated provider. Rarebit
265
+ uses this model for Summary and Title; it does not inherit Pi's interactive
266
+ `defaultModel`.
267
+
268
+ Use `/rarebit settings` to edit the dedicated namespace. The editor supports
269
+ global settings and a trusted Project override. Settings apply to future
270
+ operations. The default Summary prompt requests 1–2 sentences and at most 300
271
+ characters including spaces; this is model guidance, not an enforced truncation.
272
+ Existing custom prompts keep their own length guidance. The `summary_prompt` value changes Summary format and length, but
273
+ Rarebit still owns evidence handling and the structured status contract.
274
+
275
+ Automatic Summary work runs only at eligible persisted direct-input or settled-
276
+ agent boundaries. It also requires the configured minimum estimated Session
277
+ length and maximum selected-prose ratio. A Pi Session start does not trigger
278
+ synthesis. Explicit `/rarebit summarize` or `rarebit summarize --force` remains
279
+ available.
280
+
281
+ After successful materialization, Recap can offer the current Summary in the Pi
282
+ TUI after one minute by default. On Pi with `registerEntryRenderer` (tested on
283
+ 0.84.2), it appears in the scrollable transcript with the same muted border and
284
+ prose styling, and survives resume. Older Pi versions retain the pinned widget
285
+ fallback, which clears at input/turn/Session boundaries.
286
+
287
+ Press **Ctrl+Alt+G** or run `/rarebit got-it` to mark the latest displayed Recap
288
+ in the active branch as read. Its inline header affordance changes to `✓ got it`.
289
+ Native Session JSONL stores a read marker for the Recap receipt and covered
290
+ evidence cut. A request-prefix Recap ends at its receipt cut, before later
291
+ assistant prose. New messages remain unread. The next Summary includes the read
292
+ boundary and emphasizes later updates while still checking earlier unresolved
293
+ requests. Reading a Recap does not approve or complete work, and does not trigger
294
+ a model call. The marker is branch-local and survives resume. The read marker
295
+ is unavailable with the legacy widget fallback.
296
+
297
+ A manual `/rarebit summarize` reports when the Summary is current, already
298
+ current or in flight, generated but no longer current, or failed. These result
299
+ messages do not enable automatic Summary notices.
300
+
301
+ Mouse activation is not supported yet: Pi 0.84.2 consumes fullscreen mouse
302
+ input before extension listeners, so the affordance is a keyboard action.
303
+ Set `rarebit.recap.enabled` to `false`, change `delay_ms`, or set
304
+ `timezone` to `host` or an IANA zone such as `Asia/Hong_Kong`.
305
+
306
+ ## Privacy and local data
307
+
308
+ - Rarebit reads native Pi Session JSONL locally. Fork writes a new target
309
+ Session but never modifies the source Session.
310
+ - `query` returns metadata and selected occurrence identifiers. `extract`
311
+ returns selected raw prose on demand.
312
+ - Scrollable Recaps and read markers are stored as native custom Session entries.
313
+ They do not enter the main agent model context. Read-boundary metadata enters
314
+ subsequent Rarebit Summary requests.
315
+ - Summary and Title send selected prose to the provider and model you
316
+ configure. If the input exceeds `max_input_tokens`, Rarebit sends a newest
317
+ suffix with an explicit omission marker and coverage record.
318
+ - Rarebit does not send tool inputs, tool results, hidden reasoning, provider
319
+ credentials, or HTTP headers as Rarebit content.
320
+ - Derived receipts live below
321
+ `~/.pi/agent/rarebit/materializations-v4/`. Job leases live below
322
+ `~/.pi/agent/rarebit/jobs-v4/`. These directories use mode `0700`; their
323
+ files use mode `0600`.
324
+ - Receipts retain compact metadata, not selected prose, prompts, provider
325
+ response bodies, headers, or credentials. Receipts remain until you remove
326
+ them.
327
+ - Recall files are private OS-temporary JSON files. They contain selected
328
+ content and lineage and remain until you delete them after the turn no longer
329
+ needs them. The persisted Pi user message and both files are sensitive.
330
+
331
+ Pi controls Session JSONL retention. Do not put Session prose, credentials,
332
+ Recall files, or private paths in public issues.
174
333
 
175
- Rarebit reads Pi Session JSONL locally and does not modify it. `extract` prints
176
- selected raw prose, so handle its output as sensitive.
177
-
178
- Summary and Title send selected Rarebit prose to the provider and model that you
179
- configure. When input exceeds the fixed limit, Rarebit sends a newest suffix
180
- with an explicit omission marker. It does not send tool inputs, tool results,
181
- hidden reasoning, provider credentials, or HTTP headers as Rarebit content.
334
+ ## Update, uninstall, and rollback
182
335
 
183
- Derived receipts live below `~/.pi/agent/rarebit/materializations-v4/`; job
184
- leases live below `~/.pi/agent/rarebit/jobs-v4/`. These directories use mode
185
- 0700 and their files use mode 0600. Receipts retain compact metadata but no
186
- selected prose, prompt, provider response body, headers, or credentials. They
187
- remain until you remove them. Session JSONL retention is controlled by Pi.
336
+ Pin a version when you need reproducible installs:
188
337
 
189
- ## First Recall
338
+ ```sh
339
+ pi install npm:@hypercarrier/rarebit@0.2.0
340
+ pi remove npm:@hypercarrier/rarebit
341
+ ```
190
342
 
191
- Run `/rarebit recall <prompt>` in a Pi Session. Rarebit writes the exact active
192
- branch selection to two private files: a conversation view and detailed
193
- lineage evidence. It then sends one atomic, human-readable Markdown user
194
- message containing your exact request and absolute pointers to both files.
343
+ A versioned npm install moves an existing Rarebit npm source to that pin. Pi
344
+ skips versioned npm sources during package updates. Restart Pi after an install
345
+ to load new extension code.
195
346
 
196
- When Pi is idle, that message starts one turn. When Pi is busy, it queues one
197
- steering message. Recall does not send a second follow-up, add a custom Session
198
- entry, or create a durable Recall receipt.
347
+ To roll back, reinstall a known version:
199
348
 
200
- The temporary directory is mode 0700 and its JSON files are mode 0600. The
201
- files remain after the request so Pi can read them; delete the directory after
202
- the turn no longer needs it. Both files and the persisted Pi message are
203
- sensitive. Do not put their paths or content in a ticket.
349
+ ```sh
350
+ pi install npm:@hypercarrier/rarebit@<version>
351
+ ```
204
352
 
205
- ## Update, uninstall, and rollback
353
+ Removal stops package loading. It does not alter Pi Session JSONL or delete
354
+ Rarebit sidecars, job leases, or Recall temporary files. Review retained local
355
+ data before removing it.
206
356
 
207
- Pin a version for reproducible installs:
357
+ If you need source evidence after a fork or a bounded extraction, use the
358
+ read-only PiQ command:
208
359
 
209
360
  ```sh
210
- pi install npm:@hypercarrier/rarebit@0.2.0
211
- pi remove npm:@hypercarrier/rarebit
361
+ npm exec -- piq entries --session /absolute/path/to/session.jsonl
212
362
  ```
213
363
 
214
- The exact-version install also moves an existing Rarebit npm installation to
215
- that pin. Pi skips versioned npm sources during package updates. Restart Pi
216
- after installation to load the new extension code.
217
-
218
- To roll back, reinstall a known version with `pi install npm:@hypercarrier/rarebit@<version>`.
219
- Removal stops package loading. It does not alter Pi Session JSONL or delete
220
- Rarebit sidecars, job leases, or Recall temp files. Remove retained local data
221
- only after you review it.
364
+ For sidecar locks, leases, and recovery details, see [`RUNBOOK.md`](RUNBOOK.md).
222
365
 
223
366
  ## Compatibility and support
224
367
 
225
- Rarebit supports Node 22+ and Pi 0.83.0 or later. Its Pi AI peer has no
226
- upper bound. The release gate runs Recall against Pi 0.83.0 and Pi 0.84.2. It
368
+ Rarebit supports Node 22+ and Pi 0.83.0 or later. Its Pi AI peer has no upper
369
+ bound. The release gate runs Recall against Pi 0.83.0 and Pi 0.84.2. Rarebit
227
370
  works as a deterministic CLI without a model. Summary, Title, and the Pi
228
371
  extension require a compatible Pi installation and configured provider
229
372
  credentials.
230
373
 
231
- Report security issues privately as described in [SECURITY.md](SECURITY.md).
232
- Use https://github.com/deephbz/rarebit/issues for normal support. Include no
233
- Session prose, credentials, or Recall files in public reports.
374
+ Report security issues privately as described in [`SECURITY.md`](SECURITY.md).
375
+ Use [GitHub Issues](https://github.com/deephbz/rarebit/issues) for normal
376
+ support. Include no Session prose, credentials, or Recall files in public
377
+ reports.
378
+
379
+ ## Release and source history
380
+
381
+ Rarebit is released from an immutable version tag by
382
+ [`.github/workflows/publish.yml`](.github/workflows/publish.yml). The workflow
383
+ runs package gates, verifies one packed artifact, scans that artifact, and
384
+ publishes it with npm provenance.
385
+
386
+ The old `alpha.1`, `alpha.2`, and `alpha.3` tag graphs remain public and are not
387
+ privacy-clean. Existing package versions, tags, and releases remain immutable.
388
+ The source-only candidate derivation and vendored-scanner binding is
389
+ [`release/privacy-lineage.v1.json`](release/privacy-lineage.v1.json). It is
390
+ excluded from npm and does not claim publication completion.
391
+
392
+ More detail:
234
393
 
235
- See [RUNBOOK.md](RUNBOOK.md) for recovery and sidecar details, and
236
- [VISUAL-LANGUAGE.md](VISUAL-LANGUAGE.md) for evidence-mark meaning.
394
+ - [Visual language](VISUAL-LANGUAGE.md) defines evidence marks and Summary
395
+ presentation.
396
+ - [Runbook](RUNBOOK.md) covers operator recovery and sidecars.
397
+ - [Rarebit website](https://deephbz.github.io/rarebit) introduces the product.
package/RUNBOOK.md CHANGED
@@ -1,10 +1,12 @@
1
1
  # Rarebit runbook
2
2
 
3
- Rarebit release automation lives in
4
- [`.github/workflows/publish.yml`](.github/workflows/publish.yml). It validates
5
- an immutable version tag, runs the package gates, verifies one packed artifact,
6
- and publishes that artifact with npm provenance. See [CHANGELOG.md](CHANGELOG.md)
7
- for product changes.
3
+ To release, merge the version bump and its [CHANGELOG.md](CHANGELOG.md) entry
4
+ to `main`, run `git-privacy-scan --ref HEAD history`, then push tag
5
+ `v<version>`. The tag push runs
6
+ [`.github/workflows/publish.yml`](.github/workflows/publish.yml). It runs the
7
+ package gates, publishes one verified packed artifact with npm provenance, and
8
+ creates the GitHub Release. A prerelease version goes to npm `next`; any other
9
+ version goes to `latest`. Publication adds no commit.
8
10
 
9
11
  Set `rarebit.model` in global Pi settings or in a trusted Project's
10
12
  `.pi/settings.json`. It must be `provider/model` or an object with `provider`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hypercarrier/rarebit",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Sparse, provenance-bearing conversational evidence recovery for Pi sessions.",
5
5
  "license": "MIT",
6
6
  "author": "HyperCarrier contributors",
@@ -324,7 +324,8 @@
324
324
  "enum": [
325
325
  "hc-rarebit-summary-v4",
326
326
  "hc-rarebit-summary-v5",
327
- "hc-rarebit-summary-v6"
327
+ "hc-rarebit-summary-v6",
328
+ "hc-rarebit-summary-v7"
328
329
  ]
329
330
  },
330
331
  "synthesisMode": { "enum": ["forced", "automatic"] },