@gmickel/gno 1.29.2 → 1.29.4

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
@@ -1,6 +1,8 @@
1
1
  # GNO
2
2
 
3
- **Local search, retrieval, and synthesis for the files you actually work in.**
3
+ **Search finds. GNO proves.**
4
+
5
+ A local knowledge engine for your notes, code, PDFs, and Office docs — that hands agents evidence with exact line spans and content hashes, and stops when the evidence stops.
4
6
 
5
7
  [![npm](./assets/badges/npm.svg)](https://www.npmjs.com/package/@gmickel/gno)
6
8
  [![MIT License](./assets/badges/license.svg)](./LICENSE)
@@ -8,103 +10,90 @@
8
10
  [![Twitter](./assets/badges/twitter.svg)](https://twitter.com/gmickel)
9
11
  [![Discord](./assets/badges/discord.svg)](https://discord.gg/nHEmyJB5tg)
10
12
 
11
- > [!TIP]
12
- > **[gno.sh/publish](https://gno.sh/publish) is live.** Turn any GNO note or collection into a polished, reader-first URL — editorial typography, scoped search, and four visibility modes from public to encrypted-before-upload. **[See the reader →](#publish-to-gnosh)**
13
+ ![GNO](./assets/og-image.png)
13
14
 
14
- > **ClawdHub**: GNO skills bundled for Clawdbot — [clawdhub.com/gmickel/gno](https://clawdhub.com/gmickel/gno)
15
+ ```bash
16
+ bun install -g @gmickel/gno
17
+ gno setup ~/notes --name notes # returns only after retrieval actually works
18
+ gno mcp install --target cursor # or claude-code, claude-desktop, zed, ...
19
+ ```
15
20
 
16
- ![GNO](./assets/og-image.png)
21
+ ## Why not just another local RAG tool
17
22
 
18
- GNO is a local knowledge engine for notes, code, PDFs, Office docs, meeting transcripts, and reference material. It gives you fast keyword search, semantic retrieval, grounded answers with citations, wiki-style linking, and a real workspace UI, while keeping the whole stack local by default.
23
+ Most retrieval tools return a ranked list and leave the rest to optimism. Four things here are different, and each one is measurable rather than adjectival:
19
24
 
20
- CLI retrieval also uses the current repository/workspace as a transparent soft
21
- ranking signal. A trusted explicit `--project-root`, nearest valid
22
- `.gno/index.yml`, or local cwd can add at most `+0.03` to matching collection
23
- results, in that precedence order; `--no-project-affinity` disables it. Profile
24
- defaults stay project-local and never overwrite the user default. It never overrides collection,
25
- tag, date, exclude, or egress filters. SDK, REST, and MCP `projectHints` are
26
- opaque, untrusted, limited to 16, and intentionally have zero ranking effect:
27
- those surfaces never probe caller or server filesystem paths. Trusted local
28
- diagnose output uses closed `schemaVersion: "1.1"` redacted affinity metadata;
29
- absent, disabled, and remote/untrusted diagnose requests preserve exact legacy
30
- v1.0 bytes and omit `affinity`.
25
+ | | What it does | Why it matters |
26
+ | :----------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
27
+ | **[Context Capsules](https://gno.sh/docs/context-capsules)** | Compiles one bounded evidence bundle per goal: exact line spans, content hashes, one global token budget, collapsed duplicates, and a written list of what it could _not_ find | Your agent reads once instead of searching five times. **48.94% fewer retrieval calls, 44.12% less model-visible context, 100% task accuracy retained** across 48 paired benchmark tasks |
28
+ | **[Verified answers](https://gno.sh/docs/cli)** | `gno ask --verify` generates against one closed Capsule, classifies every substantive claim, and withholds the draft below 100% support | An abstention naming the failing claim beats a confident paragraph you have to fact-check by hand |
29
+ | **[Verified setup](https://gno.sh/docs/project-profiles)** | `gno setup` returns only after lexical search finds a real hit derived from _your_ corpus | No green checkmark over a folder that indexed but cannot be searched |
30
+ | **[Egress policy](https://gno.sh/docs/collection-egress)** | Per-collection fail-closed `local_only` / `lan` / `remote`, inherited by every derived Capsule, trace, and export | Mixed setups are normal. Pin the client work local while your notes use the LAN GPU box |
31
31
 
32
- Use it when:
32
+ Everything runs on your machine. Zero telemetry. The three network boundaries are explicit: downloading a model, configuring an HTTP inference endpoint, and uploading an artifact you exported for publishing.
33
33
 
34
- - your notes live in more than one folder
35
- - your important knowledge is split across Markdown, code, PDFs, and Office files
36
- - you want one retrieval layer that works from the CLI, browser, MCP, and a Bun/TypeScript SDK
37
- - you want better local context for agents without shipping your docs to a cloud API
34
+ **And when it fails, that ships too.** The CJK lexical benchmark missed its own promotion gates, so the analyzer was not shipped and [the failing numbers were published](#general-multilingual-embedding-benchmark) instead.
38
35
 
39
- ### What GNO Gives You
36
+ ## Use it when
40
37
 
41
- - **Fast local search**: BM25 for exact hits, vectors for concepts, hybrid for best quality
42
- - **Real retrieval surfaces**: CLI, Web UI, REST API, MCP, SDK
43
- - **Local-first answers**: grounded synthesis with citations when you want answers, raw retrieval when you do not
44
- - **Connected knowledge**: backlinks, related notes, graph view, cross-collection navigation
45
- - **Shareable, not synced**: export a note or collection to [gno.sh](https://gno.sh/publish) as a polished reader page — public, secret, invite-only, or locally encrypted before upload
46
- - **Operational fit**: daemon mode, model presets, remote GPU backends, safe config/state on disk
38
+ - your knowledge is split across Markdown, code, PDFs, Office files, and exported mail or transcripts
39
+ - you want one retrieval layer for the CLI, the browser, MCP, and a Bun/TypeScript SDK
40
+ - you want your coding agent to have a real memory without shipping your docs to a cloud API
41
+ - you need to prove, later, which bytes supported a conclusion
47
42
 
48
- ### One-Minute Tour
43
+ ## Two minutes, end to end
49
44
 
50
45
  ```bash
51
46
  # Install
52
47
  bun install -g @gmickel/gno
53
48
 
54
- # Prove the first folder immediately; semantic work continues independently
49
+ # Activate a folder. Returns only after BM25 proves an exact corpus-derived hit;
50
+ # semantic embedding continues independently in the background.
55
51
  gno setup ~/notes --name notes
56
52
 
57
- # In a repository with .gno/index.yml: preview, apply, and prove its collection
58
- gno profile diff
59
- gno setup . --apply-profile
60
-
61
- # Add more collections with the granular commands
53
+ # Add more sources
62
54
  gno collection add ~/work/docs --name work-docs --pattern "**/*.{md,pdf,docx}"
63
55
  gno collection add ~/work/gno/src --name gno-code --pattern "**/*.{ts,tsx,js,jsx}"
64
56
 
65
- # Add context so retrieval results come back with the right framing
66
- gno context add "notes:" "Personal notes, journal entries, and long-form ideas"
57
+ # Tell retrieval what each collection is for
67
58
  gno context add "work-docs:" "Architecture docs, runbooks, RFCs, meeting notes"
68
- gno context add "gno-code:" "Source code for the GNO application"
69
59
 
70
- # Sync the additional collections, then embed when you want semantic retrieval
71
- gno update --yes
72
- gno embed
60
+ gno update --yes # sync
61
+ gno embed # embed when you want semantic retrieval
62
+
63
+ # Pick the search that fits the question
64
+ gno search "DEC-0054" # exact identifier
65
+ gno vsearch "retry failed jobs with backoff" # natural language
66
+ gno query "JWT refresh token rotation" --explain # hybrid, with score traces
73
67
 
74
- # Search in the way that fits the question
75
- gno search "DEC-0054" # exact keyword / identifier
76
- gno vsearch "retry failed jobs with backoff" # natural-language semantic lookup
77
- gno query "JWT refresh token rotation" --explain # hybrid retrieval with score traces
68
+ # Compile checkable evidence for a goal, then re-check it later
69
+ gno context build "why we dropped the queue rewrite" \
70
+ --collection work-docs --budget 12000 --json --output capsule.json
71
+ gno context verify capsule.json
78
72
 
79
- # Retrieve documents or export context for an agent
80
- gno get "gno://work-docs/architecture/auth.md"
81
- gno multi-get "gno-code/**/*.ts" --max-bytes 30000 --md
82
- gno query "deployment process" --all --files --min-score 0.35
73
+ # Generate only what that evidence supports
74
+ gno ask "why did we drop the queue rewrite" --verify --show-sources
83
75
 
84
- # Run the workspace (pick one — don't run both against the same index concurrently)
85
- gno serve # browser/desktop session with the Web UI
86
- gno daemon --detach # headless continuous indexing (background; --status / --stop to manage)
76
+ # Run the workspace (pick one — not both against the same index)
77
+ gno serve # browser/desktop Web UI
78
+ gno daemon --detach # headless indexing + resident MCP gateway
87
79
  ```
88
80
 
81
+ > [!TIP]
82
+ > **[gno.sh/publish](https://gno.sh/publish) is live.** Turn any GNO note or collection into a reader-first URL — editorial typography, scoped search, and four visibility modes from public to encrypted-before-upload. **[See the reader →](#publish-to-gnosh)**
83
+
84
+ > **ClawdHub**: GNO skills bundled for Clawdbot — [clawdhub.com/gmickel/gno](https://clawdhub.com/gmickel/gno)
85
+
89
86
  ---
90
87
 
91
88
  ## Contents
92
89
 
93
- - [Quick Start](#quick-start)
94
- - [Installation](#installation)
95
- - [Daemon Mode](#daemon-mode)
96
- - [Search Modes](#search-modes)
97
- - [Agent Integration](#agent-integration)
98
- - [Web UI](#web-ui)
99
- - [Publish to gno.sh](#publish-to-gnosh)
100
- - [REST API](#rest-api)
101
- - [SDK](#sdk)
102
- - [How It Works](#how-it-works)
103
- - [Features](#features)
104
- - [Local Models](#local-models)
105
- - [Fine-Tuned Models](#fine-tuned-models)
106
- - [Architecture](#architecture)
107
- - [Development](#development)
90
+ **Start here** · [Quick Start](#quick-start) · [Installation](#installation) · [Agent Integration](#agent-integration) · [Search Modes](#search-modes)
91
+
92
+ **Surfaces** · [Web UI](#web-ui) · [REST API](#rest-api) · [SDK](#sdk) · [Daemon Mode](#daemon-mode) · [Publish to gno.sh](#publish-to-gnosh)
93
+
94
+ **Under the hood** · [How It Works](#how-it-works) · [Features](#features) · [Local Models](#local-models) · [Fine-Tuned Models](#fine-tuned-models) · [Architecture](#architecture) · [Development](#development)
95
+
96
+ **Deep dives on gno.sh** · [Context Capsules](https://gno.sh/docs/context-capsules) · [Knowledge Delta](https://gno.sh/docs/knowledge-delta) · [Retrieval learning](https://gno.sh/docs/retrieval-learning) · [Project profiles](https://gno.sh/docs/project-profiles) · [Egress policies](https://gno.sh/docs/collection-egress) · [Export adapters](https://gno.sh/docs/file-export-adapters)
108
97
 
109
98
  ---
110
99
 
@@ -112,7 +101,7 @@ gno daemon --detach # headless continuous indexing (background; --status / --st
112
101
 
113
102
  <!-- public-truth:current-version -->
114
103
 
115
- > Current release: **v1.29.2** — see [CHANGELOG.md](./CHANGELOG.md)
104
+ > Current release: **v1.29.4** — see [CHANGELOG.md](./CHANGELOG.md)
116
105
 
117
106
  <!-- /public-truth -->
118
107
 
@@ -247,7 +236,7 @@ gno models pull --gen
247
236
  gno query "ECONNREFUSED 127.0.0.1:5432" --thorough
248
237
  ```
249
238
 
250
- > Full guide: [Fine-Tuned Models](https://gno.sh/docs/FINE-TUNED-MODELS/) · [Feature page](https://gno.sh/features/fine-tuned-models/)
239
+ > Full guide: [Fine-Tuned Models](https://gno.sh/docs/fine-tuned-models) · [Feature page](https://gno.sh/features/fine-tuned-models)
251
240
 
252
241
  ---
253
242
 
@@ -365,7 +354,7 @@ gno skill install --target openclaw # OpenClaw
365
354
  gno skill install --target all # All targets
366
355
  ```
367
356
 
368
- > **Full setup guide**: [MCP Integration](https://gno.sh/docs/MCP/) · [CLI Reference](https://gno.sh/docs/CLI/)
357
+ > **Full setup guide**: [MCP Integration](https://gno.sh/docs/mcp) · [CLI Reference](https://gno.sh/docs/cli)
369
358
 
370
359
  ---
371
360
 
@@ -387,7 +376,7 @@ headless. `--detach` / `--status` / `--stop` give you symmetric lifecycle
387
376
  controls so you don't need `nohup`, `launchd`, or `systemd` units. The same
388
377
  flag set is available on `gno serve`.
389
378
 
390
- [Daemon guide →](https://gno.sh/docs/DAEMON/)
379
+ [Daemon guide →](https://gno.sh/features/daemon-mode)
391
380
 
392
381
  ---
393
382
 
@@ -479,7 +468,7 @@ Core SDK surface:
479
468
  - `update`, `embed`, `index`
480
469
  - `close`
481
470
 
482
- Full guide: [SDK docs](https://gno.sh/docs/SDK/)
471
+ Full guide: [SDK docs](https://gno.sh/docs/sdk)
483
472
 
484
473
  ---
485
474
 
@@ -607,7 +596,7 @@ gno get "gno://work-docs/api-reference.md" --full
607
596
  gno multi-get "work-docs/**/*.md" --md --max-bytes 30000
608
597
  ```
609
598
 
610
- [Skill setup guide →](https://gno.sh/docs/integrations/skills/)
599
+ [Skill setup guide →](https://gno.sh/docs/skills)
611
600
 
612
601
  ### MCP Server
613
602
 
@@ -655,7 +644,7 @@ requires an explicit restrictive bearer-token file plus exact Host and Origin
655
644
  allowlists; `gno serve` remains loopback-only. Authentication alone never
656
645
  enables mutation tools.
657
646
 
658
- [MCP setup guide →](https://gno.sh/docs/MCP/)
647
+ [MCP setup guide →](https://gno.sh/docs/mcp)
659
648
 
660
649
  ---
661
650
 
@@ -758,7 +747,7 @@ telemetry. Network access occurs when GNO downloads models, when you configure
758
747
  an HTTP model backend, or when you explicitly upload an exported artifact to
759
748
  gno.sh.
760
749
 
761
- > **Detailed docs**: [Web UI Guide](https://gno.sh/docs/WEB-UI/)
750
+ > **Detailed docs**: [Web UI Guide](https://gno.sh/docs/web-ui)
762
751
 
763
752
  ---
764
753
 
@@ -879,7 +868,7 @@ curl http://localhost:3000/api/health
879
868
 
880
869
  No authentication. No rate limits. Build custom tools, automate workflows, integrate with any language.
881
870
 
882
- > **Full reference**: [API Documentation](https://gno.sh/docs/API/)
871
+ > **Full reference**: [API Documentation](https://gno.sh/docs/api)
883
872
 
884
873
  ---
885
874
 
@@ -914,7 +903,7 @@ graph TD
914
903
  3. **Fusion**: RRF with 2× weight for original query, tiered bonus for top ranks
915
904
  4. **Reranking**: Qwen3-Reranker scores best chunk per document (4K), blended with fusion
916
905
 
917
- > **Deep dive**: [How Search Works](https://gno.sh/docs/HOW-SEARCH-WORKS/)
906
+ > **Deep dive**: [How Search Works](https://gno.sh/docs/how-search-works)
918
907
 
919
908
  ---
920
909
 
@@ -987,8 +976,8 @@ Hugging Face. The `gen:` role remains the standalone answer model.
987
976
 
988
977
  See:
989
978
 
990
- - [Fine-Tuned Models docs](https://gno.sh/docs/FINE-TUNED-MODELS/)
991
- - [Fine-Tuned Models feature page](https://gno.sh/features/fine-tuned-models/)
979
+ - [Fine-Tuned Models docs](https://gno.sh/docs/fine-tuned-models)
980
+ - [Fine-Tuned Models feature page](https://gno.sh/features/fine-tuned-models)
992
981
 
993
982
  ### HTTP Backends (Remote GPU)
994
983
 
@@ -1012,7 +1001,7 @@ The HTTP adapter expects the OpenAI-compatible endpoint shapes documented in
1012
1001
  chunk, or answer context sent to their configured model role; they are outside
1013
1002
  GNO's local trust boundary.
1014
1003
 
1015
- > **Configuration**: [Model Setup](https://gno.sh/docs/CONFIGURATION/)
1004
+ > **Configuration**: [Model Setup](https://gno.sh/docs/configuration)
1016
1005
 
1017
1006
  Remote/BYOM guides:
1018
1007
 
@@ -1035,7 +1024,7 @@ Remote/BYOM guides:
1035
1024
  └─────────────────────────────────────────────────┘
1036
1025
  ```
1037
1026
 
1038
- > **Details**: [Architecture](https://gno.sh/docs/ARCHITECTURE/)
1027
+ > **Details**: [Architecture](https://gno.sh/docs/architecture)
1039
1028
 
1040
1029
  ---
1041
1030
 
@@ -38,7 +38,8 @@ gno skill install --target claude # Claude Code (default)
38
38
  gno skill install --target codex # OpenAI Codex CLI
39
39
  gno skill install --target opencode # OpenCode
40
40
  gno skill install --target openclaw # OpenClaw
41
- gno skill install --target all # All four
41
+ gno skill install --target hermes # Hermes
42
+ gno skill install --target all # All supported agents
42
43
  ```
43
44
 
44
45
  Scope is configurable:
@@ -81,19 +82,25 @@ commands from the workspace. The skill docs (see [SKILL.md](SKILL.md))
81
82
  walk the model through:
82
83
 
83
84
  - initialising a new index and adding collections
85
+ - retrieval-proven `setup` and portable project profiles
84
86
  - keyword (`search`), vector (`vsearch`), hybrid (`query`) and
85
87
  AI-answer (`ask`) search modes
88
+ - deterministic Context Capsules and fail-closed verified answers
86
89
  - document retrieval (`get`, `multi-get`) including line ranges
87
90
  - link graph traversal (`links`, `backlinks`, `similar`, `graph`)
91
+ - private retrieval traces/replay and Knowledge Delta inspection
92
+ - project affinity, explainable content boosts, and collection egress policy
93
+ - JSONL, mail, calendar, transcript, and browser-export source adapters
94
+ - provenance-aware browser clipping and typed second-brain capture recipes
88
95
  - tagging, contexts, and per-collection embedding models
89
96
  - publishing notes as gno.sh reader snapshots (`publish export`)
90
- - MCP server setup for persistent agent access
97
+ - stdio and resident Streamable HTTP MCP access
91
98
 
92
99
  The reference docs in this folder are discoverable by the agent via
93
100
  progressive disclosure — the model only pulls them when it needs them:
94
101
 
95
102
  - [SKILL.md](SKILL.md) — core instructions + frontmatter
96
- - [cli-reference.md](cli-reference.md) — every CLI command, option and flag
103
+ - [cli-reference.md](cli-reference.md) — concise CLI command reference
97
104
  - [mcp-reference.md](mcp-reference.md) — MCP tool and resource contract
98
105
  - [examples.md](examples.md) — end-to-end usage patterns
99
106
  - [recipes/](recipes/) — task-shaped second-brain workflows for lookup,
@@ -24,6 +24,27 @@ punctuation. NFC/case-equivalent spellings share one identity. See
24
24
 
25
25
  ## Initialization
26
26
 
27
+ ### gno setup
28
+
29
+ Preferred activation path: add one folder, prove a real exact lexical result,
30
+ then continue semantic indexing in the background.
31
+
32
+ ```bash
33
+ gno setup <folder> --name <collection> [options]
34
+ ```
35
+
36
+ | Option | Description |
37
+ | ------------------------- | --------------------------------------------------------- |
38
+ | `--exclude <pattern>` | Repeatable literal exclusion |
39
+ | `--authorize-secret-risk` | Explicitly allow likely-secret files |
40
+ | `--connector <id>` | Install and smoke-test a connector; repeatable |
41
+ | `--apply-profile` | Apply a valid `.gno/index.yml` before setup |
42
+ | `--no-semantic` | Stop after lexical retrieval proof; start no model worker |
43
+ | `--json` | Structured activation receipt |
44
+
45
+ Setup is idempotent. Success means a corpus-derived BM25 query returned a
46
+ cited result; it does not imply that background semantic work already finished.
47
+
27
48
  ### gno init
28
49
 
29
50
  ```bash
@@ -116,6 +137,25 @@ Generate embeddings only.
116
137
  gno embed [--force] [--model <uri>] [--batch-size <n>] [--dry-run]
117
138
  ```
118
139
 
140
+ ## Project Profiles
141
+
142
+ Project-local `.gno/index.yml` files describe portable collection, context,
143
+ content-type, source-metadata, and retrieval-default intent. They never relocate
144
+ the database into the repository and are never applied implicitly.
145
+
146
+ ```bash
147
+ gno profile check [path]
148
+ gno profile show [path]
149
+ gno profile diff [path]
150
+ gno profile apply [path]
151
+ gno setup . --apply-profile
152
+ ```
153
+
154
+ `check` validates only. `show` emits normalized state. `diff` compares the
155
+ profile with local configuration. `apply` is additive/update-oriented and does
156
+ not infer deletions. Profile project roots are trusted local affinity inputs;
157
+ MCP/SDK/REST hints remain opaque and cannot become filesystem paths.
158
+
119
159
  ## Capture
120
160
 
121
161
  ### gno capture
@@ -220,10 +260,19 @@ gno ask <question> [options]
220
260
  | `--fast` | Skip expansion and reranking (fastest) |
221
261
  | `--thorough` | Enable query expansion (better recall) |
222
262
  | `--answer` | Generate grounded answer |
263
+ | `--verify` | Closed-Capsule answer or abstention |
223
264
  | `--no-answer` | Retrieval only |
224
265
  | `--max-answer-tokens <n>` | Cap answer length |
266
+ | `--context-budget-tokens` | Global verified-Capsule token budget |
267
+ | `--context-budget-bytes` | Global verified-Capsule byte budget |
225
268
  | `--show-sources` | Show all sources |
226
269
 
270
+ `--verify` is distinct from `--answer`: generation receives only a closed
271
+ Context Capsule, every substantive claim is checked against exact retained
272
+ spans, and GNO releases the answer only at 100% support coverage. Failed or
273
+ unavailable semantic verification forces an explicit abstention. This proves
274
+ support against retained evidence, not corpus completeness or source truth.
275
+
227
276
  ## Document Retrieval
228
277
 
229
278
  ### gno get
@@ -292,6 +341,113 @@ Validate context configuration.
292
341
  gno context check [--json]
293
342
  ```
294
343
 
344
+ ### gno context build
345
+
346
+ Compile one deterministic, extractive evidence bundle under global token and
347
+ byte budgets:
348
+
349
+ ```bash
350
+ gno context build "<goal>" --budget 12000 --json --output capsule.json
351
+ gno context build "compare proposals" --budget 16000 --collection work --md
352
+ gno context build "release evidence" --budget 12000 --fast --json
353
+ ```
354
+
355
+ The Capsule retains exact URI/heading/line spans, source/mirror/passage hashes,
356
+ normalized retrieval inputs, fingerprints, capability outcomes, omissions,
357
+ coverage, and explicit gaps. Selection collapses overlaps and rewards uncovered
358
+ facets. `--fast` avoids model loading; `--thorough` widens retrieval. GNO writes
359
+ only to stdout or an explicit `--output`; it never persists Capsules implicitly.
360
+
361
+ ### gno context verify
362
+
363
+ Recheck a saved canonical JSON Capsule without rebuilding or mutating it:
364
+
365
+ ```bash
366
+ gno context verify capsule.json --json
367
+ cat capsule.json | gno context verify - --md
368
+ ```
369
+
370
+ The receipt classifies evidence as unchanged, stale, or missing; ranking as
371
+ unchanged, reranked, or unavailable; and reports fingerprint drift separately.
372
+ Verification uses the Capsule's index and refuses an explicitly mismatched
373
+ global `--index`.
374
+
375
+ ### Saved Capsule watches
376
+
377
+ Register a caller-owned Capsule file for evidence-triggered reverification:
378
+
379
+ ```bash
380
+ gno context watch capsule.json --question "Who owns launch?" --notify --json
381
+ gno context watches --json
382
+ gno context reverify <registration-id> --json
383
+ gno context unwatch <registration-id> --json
384
+ ```
385
+
386
+ GNO stores only bounded registration metadata and evidence hashes—not Capsule
387
+ or passage bytes. `serve`/`daemon` reverify after relevant settled index
388
+ changes. Watch lifecycle operations are CLI-only. Reverification never rebuilds
389
+ or overwrites the saved Capsule.
390
+
391
+ ## Knowledge Delta
392
+
393
+ Inspect retained metadata-only change history and bounded dependency impact:
394
+
395
+ ```bash
396
+ gno changes --since 2026-07-20T00:00:00Z --json
397
+ gno diff gno://notes/plan.md --json
398
+ gno impact gno://notes/plan.md --max-depth 3 --json
399
+ ```
400
+
401
+ `changes` accepts an ISO time or opaque cursor and optional collection/limit.
402
+ `diff` reports structural headings, links, and typed-relationship changes for
403
+ one retained change. `impact` follows inbound evidence edges with explicit
404
+ depth/node/edge/frontier/visited bounds. Expired journal history is reported,
405
+ not reconstructed.
406
+
407
+ ## Private Retrieval Traces
408
+
409
+ Trace recording is local and off by default. Metadata mode excludes raw
410
+ query/goal/filter values; replay mode is separate explicit consent.
411
+
412
+ ```bash
413
+ gno trace list --json
414
+ gno trace show <trace-id> --json
415
+ gno trace label <trace-id> --label relevant --target <uri> \
416
+ --target-kind document
417
+ gno trace export <trace-id> --format qrels --output qrels.json
418
+ gno trace replay <export-id> --candidate hybrid --md
419
+ gno trace delete <trace-id>
420
+ gno trace purge
421
+ ```
422
+
423
+ Only append relevance labels the user explicitly supplied. Export, delete, and
424
+ purge are explicit mutations. Replay compares one candidate with an immutable
425
+ local baseline and always reports `applied: false`; it never changes live
426
+ ranking.
427
+
428
+ ## Collection Egress
429
+
430
+ Collections can be restricted to `local_only`, `lan`, or `remote`. Egress is
431
+ checked before non-loopback serving, remote model calls, network export, or
432
+ publishing and remains separate from authentication or write permission.
433
+
434
+ ```bash
435
+ gno collection policy get work
436
+ gno collection policy check --action remote_model \
437
+ --destination remote --content-class internal -c work --explain-egress
438
+ gno collection policy set work remote --confirm-relaxation <revision>
439
+ gno egress-audit list
440
+ gno egress-audit show <audit-id>
441
+ gno egress-audit status
442
+ gno egress-audit delete <audit-id>
443
+ gno egress-audit purge
444
+ ```
445
+
446
+ Denied egress is terminal for that route; do not retry through another network
447
+ surface. Relaxing policy requires the current revision; tightening to
448
+ `local_only` does not. Audit receipts are local and content-free.
449
+ Deletion/purge must remain explicit.
450
+
295
451
  ## Note Linking
296
452
 
297
453
  ### gno links
@@ -7,14 +7,11 @@ Real-world examples for common tasks.
7
7
  ### Index a folder of docs
8
8
 
9
9
  ```bash
10
- # Initialize
11
- gno init
12
-
13
- # Add your docs folder
14
- gno collection add ~/Documents/work --name work
10
+ # Preferred path: add folder, index, and prove exact retrieval
11
+ gno setup ~/Documents/work --name work
15
12
 
16
- # Build index
17
- gno index
13
+ # Skip the background semantic worker when BM25 is sufficient
14
+ gno setup ~/Documents/contracts --name contracts --no-semantic
18
15
  ```
19
16
 
20
17
  ### Index multiple folders
@@ -71,6 +68,9 @@ gno ask "what are the payment terms"
71
68
 
72
69
  # Get an AI-generated answer
73
70
  gno ask "what are the payment terms" --answer
71
+
72
+ # Fail closed unless every substantive claim has retained evidence
73
+ gno ask "what are the payment terms" --verify --show-sources
74
74
  ```
75
75
 
76
76
  ### Scoped answers
@@ -83,6 +83,67 @@ gno ask "termination clause" -c contracts --answer
83
83
  gno ask "summarize project goals" --answer --max-answer-tokens 200
84
84
  ```
85
85
 
86
+ ## Context Capsules
87
+
88
+ ### Build one bounded evidence handoff
89
+
90
+ ```bash
91
+ gno context build "What changed in the launch plan?" \
92
+ --budget 12000 --json --output launch-capsule.json
93
+ ```
94
+
95
+ The saved JSON contains exact evidence spans, hashes, coverage gaps, omissions,
96
+ and the frozen retrieval plan. GNO does not save it unless `--output` is
97
+ explicit.
98
+
99
+ ### Verify or watch saved evidence
100
+
101
+ ```bash
102
+ # Check the old evidence without rebuilding it
103
+ gno context verify launch-capsule.json --json
104
+
105
+ # Reverify automatically when relevant indexed evidence changes
106
+ gno context watch launch-capsule.json \
107
+ --question "What changed in the launch plan?" --notify --json
108
+ gno context watches --json
109
+ ```
110
+
111
+ `verify` and `reverify` never overwrite or silently rebuild the Capsule. Run
112
+ `context build` again when a fresh evidence selection is required.
113
+
114
+ ## Project-Aware Retrieval
115
+
116
+ ```bash
117
+ # Inspect portable repository intent before applying it
118
+ gno profile check
119
+ gno profile diff
120
+ gno setup . --apply-profile
121
+
122
+ # Override or disable trusted local project affinity for one request
123
+ gno query "release plan" --project-root ~/work/product
124
+ gno query "release plan" --no-project-affinity
125
+ ```
126
+
127
+ Configured `contentTypes[].searchBoost` is bounded and visible with
128
+ `--explain`; hard collection/tag/date/exclude/egress filters still win.
129
+
130
+ ## Changes and Retrieval Learning
131
+
132
+ ```bash
133
+ # What changed, and what depends on it?
134
+ gno changes --since 2026-07-20T00:00:00Z --json
135
+ gno diff gno://work/launch.md --json
136
+ gno impact gno://work/launch.md --max-depth 3 --json
137
+
138
+ # Explicit local judgment -> immutable qrels -> offline comparison
139
+ gno trace label <trace-id> --label relevant \
140
+ --target gno://work/launch.md --target-kind document
141
+ gno trace export <trace-id> --format qrels --output launch-qrels.json
142
+ gno trace replay <export-id> --candidate hybrid --md
143
+ ```
144
+
145
+ Replay is advisory and never changes live ranking.
146
+
86
147
  ## Reading Documents
87
148
 
88
149
  ### Get full document
@@ -119,6 +119,19 @@ Read-only MCP graph/query diagnostics include `gno_graph_query` and
119
119
  `gno_query_diagnose`. In `gno_query_diagnose`, pass `fast: true` for a BM25-only
120
120
  diagnosis that avoids embedding/rerank model initialization.
121
121
 
122
+ Before reusing caller-saved Capsule JSON, pass the complete canonical object to
123
+ `gno_context_verify`. It reports evidence, ranking, and fingerprint drift
124
+ without rebuilding or persisting the Capsule. The complete `gno_context` result
125
+ lives in `structuredContent`; its text projection is deliberately compact and
126
+ should not be expanded back into duplicate model context.
127
+
128
+ Use `gno_changes`, `gno_diff`, and `gno_impact` for retained metadata history
129
+ and bounded dependency questions. Use `gno_trace_list` and `gno_trace_show` for
130
+ private local diagnostics. Invoke `gno_trace_label` only when the user
131
+ explicitly provides a relevant, irrelevant, or missing-expected judgment.
132
+ Trace export/replay/delete/purge and saved-Capsule watch lifecycle remain
133
+ CLI-only.
134
+
122
135
  ## Capture
123
136
 
124
137
  `gno_capture` is available only when MCP starts with `--enable-write` or
@@ -0,0 +1 @@
1
+ b639ecf7ff5ebd7aeacf1bad0fe3fe2f471a60c96bdf047d873b6bf932995161 gno-browser-clipper-v1.29.4.zip
@@ -21,5 +21,5 @@
21
21
  "content_security_policy": {
22
22
  "extension_pages": "script-src 'self'; object-src 'none'; connect-src http://127.0.0.1:*"
23
23
  },
24
- "version": "1.29.2"
24
+ "version": "1.29.4"
25
25
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gmickel/gno",
3
- "version": "1.29.2",
3
+ "version": "1.29.4",
4
4
  "description": "Local semantic search for your documents. Index Markdown, PDF, and Office files with hybrid BM25 + vector search.",
5
5
  "keywords": [
6
6
  "embeddings",
@@ -1 +0,0 @@
1
- d693cf38e03cf3d016ac982d1ec1658e9d7b6fb8e57d83f0a051e43569a58247 gno-browser-clipper-v1.29.2.zip