@weftlet/toolkit 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +36 -1
  2. package/THIRD_PARTY_NOTICES.md +33 -0
  3. package/dist/application/hydrator.js +18 -5
  4. package/dist/application/overlay.js +46 -9
  5. package/dist/application/saved-evidence.d.ts +1 -0
  6. package/dist/configuration/config.d.ts +4 -0
  7. package/dist/configuration/config.js +12 -0
  8. package/dist/configuration/scip-project.d.ts +9 -0
  9. package/dist/configuration/scip-project.js +40 -0
  10. package/dist/extraction/codex-auth.js +9 -2
  11. package/dist/extraction/codex-command.d.ts +8 -0
  12. package/dist/extraction/codex-command.js +81 -0
  13. package/dist/extraction/document-references.d.ts +18 -0
  14. package/dist/extraction/document-references.js +94 -0
  15. package/dist/extraction/document.d.ts +9 -2
  16. package/dist/extraction/document.js +44 -46
  17. package/dist/extraction/module-request.d.ts +3 -0
  18. package/dist/extraction/module-request.js +25 -0
  19. package/dist/extraction/routing.d.ts +14 -0
  20. package/dist/extraction/routing.js +151 -0
  21. package/dist/extraction/scip-project.d.ts +3 -0
  22. package/dist/extraction/scip-project.js +33 -0
  23. package/dist/extraction/semantic-process.js +17 -5
  24. package/dist/extraction/semantic.js +13 -2
  25. package/dist/extraction/static.d.ts +7 -3
  26. package/dist/extraction/static.js +15 -9
  27. package/dist/graph/query.js +21 -34
  28. package/dist/graph/ranking.d.ts +10 -0
  29. package/dist/graph/ranking.js +85 -0
  30. package/dist/interfaces/doctor.js +12 -3
  31. package/docs/ADR-002-saved-evidence.md +7 -1
  32. package/docs/ADR-003-draft-overlays.md +6 -0
  33. package/docs/ADR-004-rdf-query-path.md +6 -0
  34. package/docs/ADR-006-provider-boundaries.md +5 -0
  35. package/docs/ADR-010-committed-source-indexing.md +77 -0
  36. package/docs/ADR-011-explicit-document-links.md +48 -0
  37. package/docs/ADR-012-impact-ranking.md +50 -0
  38. package/docs/ADR-013-relative-module-requests.md +58 -0
  39. package/docs/ADR-014-routing-declarations.md +108 -0
  40. package/docs/CONSUMER-TRIAL.md +165 -0
  41. package/docs/ENVIRONMENT-VALIDATION.md +9 -0
  42. package/docs/IMPACT-EVALUATION.md +363 -0
  43. package/docs/PROVIDERS.md +30 -2
  44. package/docs/RELEASING.md +3 -1
  45. package/docs/ROADMAP.md +44 -4
  46. package/docs/SOURCE-INVENTORY.md +10 -0
  47. package/docs/VALIDATION.md +366 -0
  48. package/docs/VIEWER.md +5 -0
  49. package/docs/extraction-manifest.json +87 -16
  50. package/package.json +5 -2
@@ -8,6 +8,325 @@ The milestone entries below record the original cloud checks. Subsequent
8
8
  establishes live Codex success on Windows and the full deterministic checks on WSL,
9
9
  while identifying remaining native Windows issues.
10
10
 
11
+ ## Development workspace recovery, 2026-10-23
12
+
13
+ The existing Codex development workspace became executable again at repository commit
14
+ `3617c71e29af869feccec1f5b1390c3082149b12`. Runtime status reported current observations and
15
+ connected execution; shell access, the repository identity and its initially clean worktree
16
+ were confirmed. The cause of the earlier executor failure was not established. A reported
17
+ OAuth 404 from another project was not reproduced or attributed to the executor failure.
18
+
19
+ Linux, Node 24.19.0, pnpm 10.18.2:
20
+
21
+ - The existing restoration checkpoint passed `node scripts/check-restoration.mjs --verify`:
22
+ its snapshot digest was retained, ten facts were queried with an intentionally unavailable
23
+ provider, and the historical evidence remained ineligible for current-diff validation.
24
+ No checkpoint or saved evidence was regenerated to obtain that result. A build had already
25
+ run; verification preceded the new governance run.
26
+ - The full deterministic publication gate passed again: **222 tests** (1 core + 221 toolkit),
27
+ one optional OML skip, build, 12 advisory architecture findings, inventory, licenses and
28
+ fresh packed-consumer installation/indexing/RDF/SHACL/viewer-generation/MCP checks.
29
+ - The new [consumer-trial recipe](CONSUMER-TRIAL.md) was exercised in a separate public
30
+ dispatch Git repository using fresh npm installation of locally packed core/toolkit archives.
31
+ The documented Bash blocks ran with only the sample task/path replaced. The deterministic
32
+ zero-assertion provider produced three artifacts; the repeat extracted zero and reused three
33
+ with unchanged snapshot identity/content. Diagnostics, SHACL and two distinct 60-fact pages
34
+ passed. A deliberate exit-7 child retained its error/status and stopped the shell before a
35
+ subsequent marker could run. Independent review confirmed the corrected fail-fast handling,
36
+ captured-commit pinning and command compatibility. This is a command-recipe check, not a
37
+ live semantic-quality measurement. An initial source-workspace rehearsal stopped at npm's
38
+ `workspace:^` metadata handling; the successful check used the documented installed consumer.
39
+
40
+ This was recovery within the existing conversation, not the new-task procedure in
41
+ [environment validation](ENVIRONMENT-VALIDATION.md). It establishes neither fresh-cloud
42
+ restoration nor live model/authentication recovery. No model request, source-application
43
+ change or npm publication was part of these checks.
44
+
45
+ ## Explicit routing declarations, 2026-10-23
46
+
47
+ [ADR 014](ADR-014-routing-declarations.md) adds opt-in committed source mappings for explicit
48
+ producer/consumer bindings. Implementation `5b8d49679f48837fe2ea465940b8c852e543cf5d` was
49
+ measured on input/protocol commit `e5510479c0545e38a41a902b65839529a3e66e73`, frozen before
50
+ measurement. The original 27 dispatch inputs, cases and evaluator/ranking hashes are unchanged.
51
+ The public-safe comparison is `evaluations/dispatch/routing-baseline.json`.
52
+
53
+ Linux cloud, Node 24.19.0, pnpm 10.18.2:
54
+
55
+ - The same-SHA no-routing control retains **15/16 expected files** on page one and within
56
+ three pages, with **0/7 labeled distractions**. Enabling the single authored declaration
57
+ retrieves **16/16 on page one and within three pages**, retaining **0/7 distractions**.
58
+ This measures use of a supplied mapping, not discovery or verification of a deployed route.
59
+ - Hydration produces **227 control facts / 229 enabled facts**. Only two inferred,
60
+ deterministic routing facts are added; every non-routing fact field matches except its
61
+ containing snapshot ID. Diagnostics, SCIP digest and semantic artifact keys are unchanged.
62
+ Both runs reuse all three control artifacts with zero extraction/model calls. Repeating
63
+ enabled hydration retains snapshot identity/content and again reuses all three artifacts.
64
+ - Full continuation returns **198 unique facts** (60/60/60/18), versus 183 reachable in the
65
+ control. All six archival implementation facts and seven archival test facts are reachable;
66
+ three implementation facts and one test fact appear on page one. A test-file relationship
67
+ does not assert test execution or delivery. No refund/audit distraction facts are returned.
68
+ - Direct SPARQL returns the exact producer/binding/consumer pair with inferred authority.
69
+ SHACL conforms and RDF projection matches every fact field. The existing unresolved
70
+ Markdown reference remains a diagnostic; no approved intent or runtime evidence is added.
71
+ - The final full publication gate passed **222 deterministic tests** (1 core + 221 toolkit),
72
+ one optional OML skip, build, 12 advisory architecture findings, inventory, licenses and
73
+ fresh packed-consumer installation. The installed smoke extracts a committed routing file
74
+ and includes its consumer in the complete SCIP/RDF/SHACL/query/viewer/MCP path.
75
+ - Tests cover strict schemas/duplicate JSON keys, bounds, scoped identity, same-topic binding
76
+ isolation, exact regular Git blobs including Unicode/spaced paths, missing/ambiguous
77
+ endpoints, dirty committed querying, rename/delete, tracked-but-ignored manifests, repeated
78
+ overlays, draft authority, outside-scope endpoint rejection and failed-refresh preservation.
79
+ Secondary review found and resolved diagnostic ordering and draft freshness issues before
80
+ the final full gate. The isolated overlay now preserves all archived tracked inputs even
81
+ when `.gitignore` matches them.
82
+ - Five historical snapshot files retain their recorded SHA-256 digests. Saved-only rescoring
83
+ of the latest dispatch and Weftlet graphs preserves their scores and reachability (15/16
84
+ and 24/24 first-page candidates respectively). All 79 original imported source paths/source
85
+ hashes remain intact. No source application was modified.
86
+
87
+ Hosted Ubuntu/Windows results are attached to the implementation PR. Browser interaction,
88
+ live provider authentication, broader semantic quality and actual deployment/runtime routing
89
+ validation remain separate. This increment includes a minor changeset but no npm publication.
90
+
91
+ ## Relative module request identities, 2026-10-22
92
+
93
+ [ADR 013](ADR-013-relative-module-requests.md) scopes generic relative imports to the
94
+ importing directory. Implementation `26c47d5b55f9390fe38b4928d1a8274eaf893583` was measured
95
+ against the frozen dispatch input and the existing Weftlet document-link input. Cases,
96
+ configuration, budgets, evaluator and ranking bytes are unchanged. The public-safe record
97
+ is `evaluations/dispatch/relative-imports-baseline.json`.
98
+
99
+ Linux cloud, Node 24.19.0, pnpm 10.18.2:
100
+
101
+ - Dispatch retains **15/16 expected candidates** on page one and within three pages.
102
+ Three-page labeled distractions fall from **7/7 to 0/7**; page one remains 0/7.
103
+ The reachable component shrinks from 214 to 183 facts. Full continuation returns all
104
+ 183 unique facts (60/60/60/3), with no refund/audit distraction or archival consumer.
105
+ The archival file still has six local facts but no extracted operational route.
106
+ - The Weftlet input retains **24/24 first-page and three-page candidates**, with 0/4
107
+ first-page and 1/4 three-page distractions. All scans still reach 3,648 facts and stop
108
+ at 180; telemetry remains a later-page distraction for atomic publication. These results
109
+ do not establish exhaustive precision or broader semantic quality.
110
+ - Real SCIP/document/RDF/SHACL hydration retains 227 dispatch and 3,648 Weftlet facts.
111
+ SCIP and document facts match their prior versions in every field except containing
112
+ snapshot ID. Dispatch reused three semantic control artifacts and Weftlet reused six,
113
+ extracting zero. A repeated dispatch refresh preserves identity/content and reuses all
114
+ three again. No model calls, approved sources or runtime observations were added.
115
+ - Snapshot assembly v4 and file extractor v2 coexist with old saved evidence. Draft
116
+ overlay publication identity also binds the extractor version, while capture-v2 digests
117
+ remain compatible. Tests cover old/new overlay coexistence, immutable committed heads,
118
+ repeated draft identity, rename/delete behavior and manifest versions.
119
+ - The full publication gate passed **208 deterministic tests** (1 core + 207 toolkit),
120
+ one optional OML skip, build, 12 advisory architecture findings, inventory, licenses and
121
+ fresh packed-consumer installation. The installed smoke exercises the new relative-request
122
+ module alongside actual SCIP, RDF/SHACL, continuation, visualization and MCP checks.
123
+ Actionlint passed without shellcheck.
124
+ - Independent review verified all 27 frozen dispatch input hashes, six evaluator hashes,
125
+ three legacy saved-snapshot byte hashes and their original scores/reachability. All 79
126
+ imported source paths/source hashes are preserved. Code review found no blockers; its
127
+ control-character coverage observation was corrected before the final full gate.
128
+
129
+ Hosted Ubuntu/Windows results are attached to the implementation PR. Corrected extraction
130
+ requires an explicit refresh; saved queries keep their original facts and do not rebuild.
131
+ Browser interaction, live authentication and broader semantic quality remain separate.
132
+ No npm publication is part of this increment.
133
+
134
+ ## Prospective dispatch evaluation, 2026-10-22
135
+
136
+ Inputs, labels and protocol were committed at `fa902165a1f212a6d3245c847e1ab9b64a69715b`
137
+ before any queries. Production ranking remains byte-identical to `proximity-diversity-v1`.
138
+ The [evaluation protocol](IMPACT-EVALUATION.md#prospective-dispatch-evaluation) and
139
+ `evaluations/dispatch/baseline.json` record the public-safe measurements and provenance.
140
+
141
+ Linux cloud, Node 24.19.0, pnpm 10.18.2:
142
+
143
+ - Real SCIP/document/RDF/SHACL hydration produced **227 facts**, with zero model assertions,
144
+ approved intent sources or runtime references. Repeat hydration extracted zero and reused
145
+ three control artifacts, retaining snapshot identity/content digest. Fixture TypeScript
146
+ checking and four exported behavior checks passed separately.
147
+ - All three cases use the existing 60-fact/three-page/depth-32 budget. Candidate recall is
148
+ **15/16 on page one and within three pages**. No labeled distraction appears on page one;
149
+ **7/7 case-specific distraction labels** appear within three pages. These are synthetic
150
+ candidate-file measurements, not a quality gate or exhaustive precision result.
151
+ - Supplemental full continuation returned 214 unique facts across four pages, with no
152
+ archival-file fact. Its local relationships exist but the expected operational route is
153
+ disconnected. SCIP distinguishes the two domain policy functions; cited generic import
154
+ witnesses show the cross-domain `./policy.js` connection. The intentionally unresolved
155
+ Markdown reference has a diagnostic and no guessed target.
156
+ - Original Weftlet snapshots, suite, reachable counts, recall and distraction scores remain
157
+ unchanged. Both saved snapshot files match their recorded SHA-256 digests. All 79 original
158
+ imported source paths and source hashes are preserved.
159
+ - Focused evaluator checks pass with a real independent Git repository and an unrelated cwd:
160
+ selected suite/config, separate evaluator/evidence commits, real indexing/document links,
161
+ saved-only scoring, immutable snapshot content, failed-report preservation, missing-snapshot
162
+ refusal and live-provider refresh refusal. Boundary tests also reject impostor modules and
163
+ repository/suite/configuration/draft mismatches. Fixture result scores are not CI thresholds.
164
+ - The full publication gate passed **203 deterministic tests** (1 core + 202 toolkit),
165
+ one optional OML skip, build, 12 advisory architecture findings, inventory, licenses and
166
+ fresh packed-consumer installation/indexing/RDF/SHACL/MCP checks. Actionlint passed without
167
+ shellcheck; strict TypeScript checking of the evaluator also passed.
168
+
169
+ Hosted Ubuntu/Windows outcomes are recorded with the implementation PR.
170
+ No ranking/source-extraction change, live model call, browser result, authentication result
171
+ or npm publication is part of this increment. Broader real-project and semantic-quality
172
+ validation remain separate.
173
+
174
+ ## Impact ranking, 2026-10-22
175
+
176
+ [ADR 012](ADR-012-impact-ranking.md) describes query ordering by weighted proximity and
177
+ source diversity. Implementation `2e4a3bbc55bd3a15cf619f56827963a699a5b56b` was measured
178
+ against two existing immutable snapshots, with no hydration or model calls. The public-safe
179
+ record is `evaluations/weftlet/ranking-baseline.json`; cases, labels, budgets, configuration,
180
+ snapshot bytes and reachable fact counts are unchanged.
181
+
182
+ Linux cloud, Node 24.19.0, pnpm 10.18.2:
183
+
184
+ - On the document-link snapshot, first-page candidate retrieval improved from **22/24 to
185
+ 24/24**, retaining 24/24 within three pages. Labeled distractions fell from 1/4 to 0/4
186
+ on page one and from 3/4 to 1/4 within three pages. The query test and setup doctor now
187
+ appear on page one. Telemetry is a new later-page distraction for atomic publication;
188
+ the aggregate improvement does not mean that every case has less noise.
189
+ - On the older source-project control, first-page retrieval improved from 15/24 to 19/24
190
+ and three-page retrieval from 18/24 to 19/24. The five missing document relationships
191
+ remain absent. Labeled distractions worsened from 0/4 to 1/4 within three pages, again
192
+ telemetry. These four cases from one repository do not establish generalization or
193
+ exhaustive precision. Every scan remains truncated after 180 facts with continuation.
194
+ - The full publication gate passed: **197 deterministic tests** (1 core + 196 toolkit),
195
+ one optional OML skip, build, 12 advisory architecture findings, inventory, licenses
196
+ and fresh packed-consumer installation. The installed smoke now exhausts ranked
197
+ continuation over actual extracted facts, checking for duplicate or missing results.
198
+ - Focused coverage includes large-source consumer diversity, deep asynchronous flows,
199
+ generic shared imports, citation-only anchors, stable ties across commit-derived IDs,
200
+ complete pagination, versioned continuation rejection and evaluator version drift.
201
+ The real TypeScript/RDF pipeline retains field-for-field projection equivalence.
202
+ - The first full run omitted the cloud's writable cache/store settings, causing four
203
+ installation-fixture failures. Correcting the command environment produced the passing
204
+ full rerun above; no source workaround was needed. Actionlint passed without shellcheck.
205
+ All 79 original import paths and source hashes remain unchanged.
206
+
207
+ Hosted Ubuntu/Windows outcomes are attached to the implementation PR. Ranking changes
208
+ ordering only, preserving evidence authority, confidence, scope and current-diff eligibility.
209
+ Saved snapshots need no refresh; old continuation tokens require restarting the scan.
210
+ Browser interaction, live-provider/authentication checks and broader semantic quality remain
211
+ deferred. No new source approval, runtime observation or npm publication is claimed.
212
+
213
+ ## Explicit document linkage, 2026-10-22
214
+
215
+ [ADR 011](ADR-011-explicit-document-links.md) describes committed Markdown references,
216
+ precise citations, authority boundaries, and the new snapshot assembly identity. Implementation
217
+ `90726be3751cf23de7f1cdd595d1e9ddb151b139` is measured separately from the evidence inputs.
218
+ The six documents' source mappings were committed at
219
+ `dcef64001d8d47cd1aeb4c1434992612158a104a`, before the linker implementation.
220
+
221
+ Linux cloud, Node 24.19.0, pnpm 10.18.2:
222
+
223
+ - Full publication gate: **192 deterministic tests** (1 core + 191 toolkit), one optional
224
+ OML skip, build, 12 advisory architecture findings, inventory, licenses and fresh packed
225
+ consumer. The installed smoke now parses committed Markdown and combines its references
226
+ with real SCIP facts before RDF/SHACL validation. Actionlint passed without shellcheck.
227
+ - Focused cases cover relative/root/reference-style/encoded Markdown destinations, CRLF
228
+ source citations, duplicate basenames without guessing, missing/deleted/renamed paths,
229
+ directories, URLs, code examples, and distinct source approval/assertion review. Real
230
+ pipeline hydration links a test using SCIP's Evidence identity, passes SHACL and retains
231
+ field-for-field RDF projection equivalence. Cached prose is rechecked against target
232
+ deletion, while the preceding immutable snapshot stays readable.
233
+ - The original saved v2 evidence was queried without hydration: its digest and 15/24
234
+ first-page, 18/24 three-page scores remain unchanged. Fresh assembly uses a different
235
+ identity, binds the linker version, and reuses the existing semantic artifacts.
236
+ - The fixed old-source control still returns 15/24 first-page and 18/24 three-page candidates.
237
+ With the new explicit source mappings, the measurement returns **22/24 first-page and
238
+ 24/24 three-page candidates**. All five expected intent-document paths are retrieved.
239
+ This new input also contains the intervening source-indexing implementation; it is not
240
+ an isolated model-quality or ranking experiment. The original case labels and budgets
241
+ are unchanged. `evaluations/weftlet/document-links-baseline.json` records the evidence
242
+ identities, provenance witnesses, scores, noise and limitations.
243
+ - Three of four labeled distractions appear within three pages, including one on the first
244
+ page. All scans remain truncated at 180 facts. Better candidate recall does not establish
245
+ precision, complete product understanding, or a safe change. Ranking is measured separately
246
+ in the subsequent increment above.
247
+ - An initial real-document run caught false missing-file diagnostics for slash-separated
248
+ prose and package names. The final linker diagnoses unresolved explicit Markdown links;
249
+ unresolved literal mentions are ignored. Regression cases include the observed examples.
250
+ All 79 original import paths and source hashes remain unchanged.
251
+
252
+ Hosted Ubuntu/Windows outcomes are attached to the implementation PR. No live model call,
253
+ new source approval, browser interaction, runtime behavior or authentication result is claimed.
254
+ The control provider returns no assertions. Browser and live-provider validation remain deferred.
255
+
256
+ ## Committed source-project indexing, 2026-10-22
257
+
258
+ [ADR 010](ADR-010-committed-source-indexing.md) records the opt-in profile and its limits.
259
+ Toolkit implementation `1c2c699` was evaluated against the same evidence commit
260
+ `eeaaa342d62c11eeef44bfdf81fa8dedcfeb205d`, unchanged case labels and query budgets.
261
+ `evaluations/weftlet/source-project-baseline.json` records the full implementation SHA,
262
+ snapshot/configuration/index digests, scores, remaining misses and source coverage.
263
+
264
+ Linux cloud, Node 24.19.0, pnpm 10.18.2:
265
+
266
+ - First-page candidate retrieval improved from 13/24 to 15/24; three-page retrieval
267
+ improved from 16/24 to 18/24. Typed SCIP relationships now cover 33 test files, including
268
+ the lifecycle test, and link the shared core contract. Five expected intent documents
269
+ remain unlinked and the MCP file remains outside the query budget.
270
+ - The new graph has 3,490 facts (2,970 SCIP and 520 repository-file facts). Repeated
271
+ hydration reused all six document-control artifacts with identical snapshot identity
272
+ and content digest `6f30f62900e37a6d2d266bcd3bba54941b1cab3997602eefef3320b0d0e66fc3`.
273
+ Rerunning the original profile preserved its prior snapshot, digest and scores.
274
+ - Real SCIP regression fixtures prove committed contract/test linkage through a workspace
275
+ re-export, ignored/dirty-source isolation, repeat digest stability, rename/delete
276
+ replacement, and capture of draft changes outside ordinary code/evidence roots.
277
+ Invalid scopes/aliases fail before SCIP. Missing alias-definition selection was caught
278
+ during development; both entry points and definition files must be explicitly selected.
279
+ - The full publication gate passed: 187 deterministic tests (1 core + 186 toolkit),
280
+ one optional OML skip, builds, 12 advisory architecture findings, inventory and licenses.
281
+ Fresh packed-consumer checks now also exercise a source alias and a test excluded by
282
+ its build config, along with the existing npx/RDF/SHACL/viewer-output/MCP checks.
283
+ - Workflow syntax passed actionlint. All 79 original source import paths/hashes remain
284
+ unchanged. The Windows workflow includes the new real-indexing and overlay regressions;
285
+ hosted outcomes are attached to the implementation PR.
286
+
287
+ No dependency installation in evidence archives, live model run, runtime observation,
288
+ owner approval, browser interaction or new authentication result is claimed. This mode
289
+ does not inherit build compiler settings or establish complete external dependency resolution.
290
+
291
+ ## Self-repository impact evaluation, 2026-10-21
292
+
293
+ The [evaluation protocol](IMPACT-EVALUATION.md) and public-safe
294
+ `evaluations/weftlet/baseline.json` record a deterministic control against committed
295
+ Weftlet `eeaaa342d62c11eeef44bfdf81fa8dedcfeb205d`. The active checkout contained
296
+ the new evaluator; its source/suite/configuration digests are recorded separately.
297
+ No current working source bytes were substituted for that evidence commit.
298
+
299
+ On Linux, Node 24.19.0 and pnpm 10.18.2:
300
+
301
+ - Real SCIP, RDF/SHACL and publication produced 1,369 facts. Four fixed scenarios
302
+ retrieved 13/24 expected candidate files on the first page and 16/24 in three pages.
303
+ These are measurements, not a quality pass. Intent documents, workspace contracts,
304
+ test coverage and query ranking have the gaps described in the protocol.
305
+ - Repeated hydration extracted zero and reused six document-control artifacts, retaining
306
+ snapshot identity and content digest
307
+ `5b4003c527b0f797d45814679326c59da995bc677d0706768a9d9b1b21aedb4f`.
308
+ - Saved-snapshot scoring succeeded with the semantic-artifact directory temporarily
309
+ unavailable and returned identical recall. No hydration phases ran; artifacts were
310
+ restored afterward. Missing-snapshot and live-provider-refresh probes both failed
311
+ clearly without starting an indexer or model.
312
+ - Five evaluator tests passed, covering first/later-page scores, extraction versus
313
+ bounded-retrieval misses, non-relationship exclusions, duplicate/drifting pages,
314
+ stale case paths and invalid budgets. Strict TypeScript checking of the evaluator passed.
315
+ - The full publication gate passed: 183 deterministic tests (1 core + 182 toolkit),
316
+ one optional OML integration skipped, builds, 12 advisory architecture findings,
317
+ inventory, licenses and fresh packed-consumer installation/indexing/RDF/MCP smoke.
318
+ All 79 original import paths and source hashes remain unchanged.
319
+
320
+ Hosted [checks for the initial evaluation commit
321
+ 8e82453d92357451e832f3bf16666a6bef89b6de](https://github.com/jchewitt/weftlet/actions/runs/39687986720)
322
+ also passed on Ubuntu (full publication gate) and Windows (34 selected reliability tests,
323
+ inventory and licenses). The full self-repository control run above was performed in Linux
324
+ cloud; these hosted checks do not imply a Windows evaluation run or browser validation.
325
+
326
+ No live semantic assertions, runtime traces, owner approvals, browser interactions or
327
+ new authentication results are claimed. The control sends no model requests. Broader
328
+ semantic quality still needs a separately bounded live run and human citation review.
329
+
11
330
  ## Milestone 1: standalone baseline
12
331
 
13
332
  Passed `pnpm context-graph:publication-check`:
@@ -556,3 +875,50 @@ archives and conflicting tags, and resume interrupted creation without duplicate
556
875
  tests select earlier attempts and reject expired or ambiguous artifacts. No paid model call or
557
876
  new npm version was published by these tests. Hosted version-PR operation is checked separately;
558
877
  a future merged release remains the integration test of automatic publish and record creation.
878
+
879
+ ## Automatic 0.1.2 release and Windows reliability — 2026-10-21
880
+
881
+ [Release run 39672652013](https://github.com/jchewitt/weftlet/actions/runs/39672652013) completed
882
+ preparation, npm trusted publication and release records at
883
+ `3d8d1f38a9e70b38178921cdabf5e8714c417c1c`. Both registry `latest` tags now identify 0.1.2.
884
+ Both package-specific Git tags resolve to that exact commit, and GitHub Releases were created.
885
+ Versions were committed on main before publication. This validates the first merged Changesets
886
+ release through the automatic push trigger; no post-publication version commit was required.
887
+
888
+ The next Windows reliability increment adds common discovery for native Codex executables and
889
+ standard global/project-local npm launchers. Tests use actual npm-created launchers with a
890
+ synthetic public CLI to exercise diagnostics, login status and source-isolated extraction. They
891
+ also cover PATH precedence, spaces/metacharacters, rejected/broken shims, secret filtering,
892
+ discovery timeout/cancellation, and termination of a launcher with an active child. They make no
893
+ live Codex request and do not validate real account authentication or model quality.
894
+
895
+ Inventory tests use actual Git checkouts with core.autocrlf=true and explicit eol=crlf attributes.
896
+ They check unchanged source hashes, checkout bytes, Git configuration and index; genuine edits
897
+ still fail. Binary and -text imports retain exact bytes. Custom filters are rejected without
898
+ execution. License checks accept CRLF formatting while still comparing complete notice text.
899
+ All 79 original source paths/hashes remain unchanged.
900
+
901
+ The full local publication gate passed on Linux, Node 24.19.0 / pnpm 10.18.2: **177 deterministic
902
+ tests** (1 core + 176 toolkit/example/script), one optional OML test skipped, build, architecture
903
+ (12 advisory findings), inventory, licenses and fresh packed-consumer smoke. Actionlint passed
904
+ with shellcheck integration disabled. The Windows CI job now runs the added launcher, process,
905
+ inventory and license checks; its native result is recorded separately after execution. Browser
906
+ interaction and live authentication testing remain explicitly deferred by the maintainer.
907
+
908
+
909
+ The first hosted Windows run at `6f2f83f` passed all **33** selected tests and the repository
910
+ inventory check, including real npm launchers and process-tree cancellation. Its newly enabled
911
+ license check caught CRLF conversion of a pinned reviewed notice. That check now shares the
912
+ Git-aware content reader; the reviewed notice and its approved SHA-256 remain unchanged.
913
+ Discovery time is included in existing probe/extraction timeout budgets. Updated hosted checks
914
+ are required before merging this increment.
915
+
916
+
917
+ PASS: [hosted run 39676848049](https://github.com/jchewitt/weftlet/actions/runs/39676848049)
918
+ at `ef2f8e31cbcae402ca08979e90aff4f00fb91c77`. Ubuntu passed the full publication gate with **178 deterministic tests**
919
+ (1 core + 177 toolkit/example/script), one optional OML test skipped, 12 advisory architecture
920
+ findings, build, inventory, licenses and packed-consumer smoke. Native Windows passed **34**
921
+ selected tests, including global/local npm launcher installation, discovery, login/extraction
922
+ plumbing, process-tree cancellation, CRLF inventories, storage/Git and all original MCP startup
923
+ cases. The repository inventory and complete license checks also passed natively. This is focused
924
+ Windows coverage, not a full native Windows publication gate or a live Codex account/model test.
package/docs/VIEWER.md CHANGED
@@ -4,6 +4,11 @@
4
4
  renders the same Context Pack returned by `impact.scan`. HTML is self-contained; DOT and SVG
5
5
  remain available. No CDN, service, model or alternative graph extraction is involved.
6
6
 
7
+ [Visualization rendering](../src/visualization/visualization.ts) consumes the
8
+ [impact-query result](../src/graph/query.ts). [Viewer interaction](../src/visualization/viewer-interaction.ts)
9
+ handles page-local filtering and path selection. [Rendering tests](../src/visualization/visualization.test.ts)
10
+ check generated output; interactive browser validation remains a separate check.
11
+
7
12
  Nodes are grouped by evidence lane, then module/layer metadata or node kind. Filter by cluster,
8
13
  authority or source text. Select a node (click or Enter) to inspect its relationships, confidence,
9
14
  extractor, source approval, extraction review state and commit-bound citations. The neighbor
@@ -24,7 +24,7 @@
24
24
  "destinationPath": "THIRD_PARTY_NOTICES.md",
25
25
  "sourceSha256": "c98c42f3c3c74f4c4f38f45b785ea15de439ad6471d82040d13100b36616b01e",
26
26
  "modified": true,
27
- "destinationSha256": "1c8bb26c7385fef7d391db9c89797b6f45bf6c5b102d7e832295783eb6c28d1a"
27
+ "destinationSha256": "cd1b40a873371c1fb20599ae8dc5d1131ea4ba650c1f4151415e2cb038339d8d"
28
28
  },
29
29
  {
30
30
  "sourcePath": "tools/context-graph/action/action.yml",
@@ -108,7 +108,7 @@
108
108
  "destinationPath": "package.json",
109
109
  "sourceSha256": "a575dbb2fed8c554b95e8e9b3e03a0c21cab1be7249860bbebc18e046b2ff78d",
110
110
  "modified": true,
111
- "destinationSha256": "017fe298662e434efa27d4f21a0adb0d857fa373a6199ed2d623a6c630c5b451"
111
+ "destinationSha256": "c7a5cbf191d699a51a22fb961ba84e9f73521c0cc332c697f67a9267812de9ee"
112
112
  },
113
113
  {
114
114
  "sourcePath": "tools/context-graph/packages/core/LICENSE",
@@ -143,14 +143,14 @@
143
143
  "destinationPath": "packages/core/package.json",
144
144
  "sourceSha256": "2a29066eb8452f22fafcb06bb035a84dda93c5705dba32aba600a1b7e5aaf19c",
145
145
  "modified": true,
146
- "destinationSha256": "9dbd393a312bb6a992b53d2624279b62991e64609beb506744186614f9b194cf"
146
+ "destinationSha256": "b7ab260df2ff6005788e6891449205b9b9c9f96aca13b680578a4f776aa21b52"
147
147
  },
148
148
  {
149
149
  "sourcePath": "tools/context-graph/packages/core/src/core.ts",
150
150
  "destinationPath": "packages/core/src/core.ts",
151
151
  "sourceSha256": "cb3f4eb7bfe9f458494607406664445a276aad37235930a043d400ea9211ed16",
152
152
  "modified": true,
153
- "destinationSha256": "64a30913c01ff2f3e112a6bcafbc142cb91fc5482f01b2aa90fae9382252dbfa"
153
+ "destinationSha256": "0287d0640f2ff078da19be1439d02fcab22998262562d4af7b5f26ddca0839f4"
154
154
  },
155
155
  {
156
156
  "sourcePath": "tools/context-graph/packages/core/src/index.ts",
@@ -192,21 +192,21 @@
192
192
  "destinationPath": "scripts/check-publication.mjs",
193
193
  "sourceSha256": "88692c21d34cef2d2e5b20c92ab3ec26cbe6336889dbb7b534c681ded7f466b2",
194
194
  "modified": true,
195
- "destinationSha256": "6aa819a74fea8b161396b3a8c52e8e86ea2db856bc10ffbfdebaf22fa0af2cfe"
195
+ "destinationSha256": "546465bb9907051ebbae9f1c421b8b7be23414ce51c44891092d0fb793f67e8b"
196
196
  },
197
197
  {
198
198
  "sourcePath": "tools/context-graph/scripts/generate-third-party-notices.mjs",
199
199
  "destinationPath": "scripts/generate-third-party-notices.mjs",
200
200
  "sourceSha256": "42cd4996ecab49b008634958e47b0a9eadf9ea775678b8daaeeafea59eaabadf",
201
201
  "modified": true,
202
- "destinationSha256": "5caf7a08a42e6c482a5c46d87e71413a6776a5af34685dbe98a16ba7035f5c0c"
202
+ "destinationSha256": "6e9ddb9a0985e2c39d8386168871efeb2589f6bc1bf8c24684cf6c546eced1b2"
203
203
  },
204
204
  {
205
205
  "sourcePath": "tools/context-graph/src/agent-context.test.ts",
206
206
  "destinationPath": "src/application/agent-context.test.ts",
207
207
  "sourceSha256": "cb87b9b7e18ae5d8ba39d4ebf1d45556479d6efb3ffa75276bc6164ee2bf30f1",
208
208
  "modified": true,
209
- "destinationSha256": "f1ed006615ae0d07fb924c60fccad90a3f8cd4e5f12898d4a07db0a5fa65e7d5"
209
+ "destinationSha256": "c72ba1d20d1ad85ee295a7041e85a99cf973b6114eff21524d808997929e3184"
210
210
  },
211
211
  {
212
212
  "sourcePath": "tools/context-graph/src/agent-context.ts",
@@ -248,14 +248,14 @@
248
248
  "destinationPath": "src/configuration/config.test.ts",
249
249
  "sourceSha256": "70bcda6d6b48ff6fa03223c9420fe3e0e3e32c688e0a14f11034515e0707dee4",
250
250
  "modified": true,
251
- "destinationSha256": "ae67cb42f86dbd72d09eac20a0755080bf9394e849dc4fdfdfe0a43b0296c6b2"
251
+ "destinationSha256": "ff4d15018ec35d21a95c589cf2c74bce2e340f9042b2d3ecaabca5889609e3aa"
252
252
  },
253
253
  {
254
254
  "sourcePath": "tools/context-graph/src/config.ts",
255
255
  "destinationPath": "src/configuration/config.ts",
256
256
  "sourceSha256": "e9ee8cf2134d274aa6f6a21545959fbec97e958181d9032c073293f28e04d6ca",
257
257
  "modified": true,
258
- "destinationSha256": "ce6550967829b74147909121735c4dccf70982c3f9ee9ddc860b4f63535d5de0"
258
+ "destinationSha256": "5e34e4dfa38219570bd6f13239609b432830e76162f44a768a929895f66dc02a"
259
259
  },
260
260
  {
261
261
  "sourcePath": "tools/context-graph/src/core.ts",
@@ -283,7 +283,7 @@
283
283
  "destinationPath": "src/extraction/document.ts",
284
284
  "sourceSha256": "62a2da37d8cc0637b192b7e70ae7a0dce72244d335da9df0e0ad9b0eb7c4e1f1",
285
285
  "modified": true,
286
- "destinationSha256": "819372a1ba01ed2204e2ed620d4afefb03ab8b7431e77e02f2b61bc605807124"
286
+ "destinationSha256": "de198e73b3b2c828c99bb35c806461dba06526df9ae94592926d26346fbefe79"
287
287
  },
288
288
  {
289
289
  "sourcePath": "tools/context-graph/src/git.test.ts",
@@ -311,14 +311,14 @@
311
311
  "destinationPath": "src/application/hydrator.test.ts",
312
312
  "sourceSha256": "95f20a526fe69ce3a506ef01da1c20827e09d631a34126e781a07979cc43de07",
313
313
  "modified": true,
314
- "destinationSha256": "83ca72d394d9eac8eef5dbc9438c7914442dbad3bbaa07c33f1e756e6d11fd39"
314
+ "destinationSha256": "bbd264bf4224632f3e0fea81718910fab4dd5f8e79680faccf61059219bf9dde"
315
315
  },
316
316
  {
317
317
  "sourcePath": "tools/context-graph/src/hydrator.ts",
318
318
  "destinationPath": "src/application/hydrator.ts",
319
319
  "sourceSha256": "bb41c5b53b26da10274d8b967b99c78ff12b485df16bfc66445252e35c94fb9d",
320
320
  "modified": true,
321
- "destinationSha256": "c95592ccb8626e8d3629f35d24e51d9d99be698c8ae270c794df47e4b3a46d14"
321
+ "destinationSha256": "8c751fe04922d1117728672b78a1de2d6f42f403e9d506f387c95661e641a5c0"
322
322
  },
323
323
  {
324
324
  "sourcePath": "tools/context-graph/src/index.ts",
@@ -388,14 +388,14 @@
388
388
  "destinationPath": "src/graph/query.test.ts",
389
389
  "sourceSha256": "ba07c52566da979fcbb451b0c0c99b466521993cb49415ff8b35df2b01d4ecaf",
390
390
  "modified": true,
391
- "destinationSha256": "e0030981026a6643d8032174f37a0a41b17724ee6a86dae55e6b12c51f5de77f"
391
+ "destinationSha256": "68d7405765dec5975370f79caaf8708db42dd3dd464a7ec9c3919c796ee81b79"
392
392
  },
393
393
  {
394
394
  "sourcePath": "tools/context-graph/src/query.ts",
395
395
  "destinationPath": "src/graph/query.ts",
396
396
  "sourceSha256": "4d67f87ca660cefe9686fb5b775f86a997a25d539819ea81d321c8bd1e0aaa39",
397
397
  "modified": true,
398
- "destinationSha256": "93e813d2e70d09522418e07f9ffeb36d71795c026099a8b57559b0c10b150a76"
398
+ "destinationSha256": "ead61dfde748cd1a02c8b1a14dc729173a6b85ec3b8213af2bd5169c60b70253"
399
399
  },
400
400
  {
401
401
  "sourcePath": "tools/context-graph/src/request.test.ts",
@@ -451,7 +451,7 @@
451
451
  "destinationPath": "src/extraction/semantic.ts",
452
452
  "sourceSha256": "1a41fb3fc5a9508c76be59d1c50b74d70ec96411fcbb7f63b0e098c1813d8473",
453
453
  "modified": true,
454
- "destinationSha256": "64b4e55294ab37bc84a1c2ad0a8a563003d8ad2329e224ef0c6822965b14d257"
454
+ "destinationSha256": "9872f2b8ac3bd14f33194d76082fecf0fd34325a6e74b2397f538898aa8fe21e"
455
455
  },
456
456
  {
457
457
  "sourcePath": "tools/context-graph/src/snapshot-checks.test.ts",
@@ -479,7 +479,7 @@
479
479
  "destinationPath": "src/extraction/static.ts",
480
480
  "sourceSha256": "f8dcff3e10361314c06911dc7cec1e2cb0f8d9af68a6c61a30b2a741c5c3a385",
481
481
  "modified": true,
482
- "destinationSha256": "39ada50a57e2130d27c22eb18531c3feb7160004b198eb5904950227e57012df"
482
+ "destinationSha256": "94190f11651b21372b2c3a834e30cde5d333893bfad0b66755e5f698608d2fdb"
483
483
  },
484
484
  {
485
485
  "sourcePath": "tools/context-graph/src/storage.ts",
@@ -602,8 +602,15 @@
602
602
  "docs/ADR-007-toolkit-modules.md",
603
603
  "docs/ADR-008-weftlet-packages.md",
604
604
  "docs/ADR-009-release-automation.md",
605
+ "docs/ADR-010-committed-source-indexing.md",
606
+ "docs/ADR-011-explicit-document-links.md",
607
+ "docs/ADR-012-impact-ranking.md",
608
+ "docs/ADR-013-relative-module-requests.md",
609
+ "docs/ADR-014-routing-declarations.md",
605
610
  "docs/CLOUD-ENVIRONMENT.md",
611
+ "docs/CONSUMER-TRIAL.md",
606
612
  "docs/ENVIRONMENT-VALIDATION.md",
613
+ "docs/IMPACT-EVALUATION.md",
607
614
  "docs/MIGRATING-TO-WEFTLET.md",
608
615
  "docs/PROVIDERS.md",
609
616
  "docs/RELEASING.md",
@@ -618,6 +625,47 @@
618
625
  "docs/licenses/lru-cache-11.5.3-BlueOak.md",
619
626
  "docs/licenses/negotiate-1.0.1-BSD.txt",
620
627
  "docs/licenses/spark-md5-3.0.2-MIT.txt",
628
+ "evaluations/dispatch/README.md",
629
+ "evaluations/dispatch/baseline.json",
630
+ "evaluations/dispatch/cases.json",
631
+ "evaluations/dispatch/context-graph.config.json",
632
+ "evaluations/dispatch/project/README.md",
633
+ "evaluations/dispatch/project/docs/delivery-flow.md",
634
+ "evaluations/dispatch/project/docs/dispatch-contract.md",
635
+ "evaluations/dispatch/project/docs/dispatch-policy.md",
636
+ "evaluations/dispatch/project/package.json",
637
+ "evaluations/dispatch/project/routing/dispatch.json",
638
+ "evaluations/dispatch/project/src/api/dispatch.ts",
639
+ "evaluations/dispatch/project/src/archive/consumer.ts",
640
+ "evaluations/dispatch/project/src/audit/consumer.ts",
641
+ "evaluations/dispatch/project/src/contracts/dispatch-plan.ts",
642
+ "evaluations/dispatch/project/src/contracts/dispatch-receipt.ts",
643
+ "evaluations/dispatch/project/src/contracts/dispatch-request.ts",
644
+ "evaluations/dispatch/project/src/dispatch/executor.ts",
645
+ "evaluations/dispatch/project/src/dispatch/outcomes.ts",
646
+ "evaluations/dispatch/project/src/dispatch/planner.ts",
647
+ "evaluations/dispatch/project/src/dispatch/policy.ts",
648
+ "evaluations/dispatch/project/src/dispatch/retry.ts",
649
+ "evaluations/dispatch/project/src/refund/planner.ts",
650
+ "evaluations/dispatch/project/src/refund/policy.ts",
651
+ "evaluations/dispatch/project/src/transport/queue.ts",
652
+ "evaluations/dispatch/project/test/archive.test.ts",
653
+ "evaluations/dispatch/project/test/dispatch.test.ts",
654
+ "evaluations/dispatch/project/test/policy.test.ts",
655
+ "evaluations/dispatch/project/test/refund.test.ts",
656
+ "evaluations/dispatch/project/tsconfig.json",
657
+ "evaluations/dispatch/relative-imports-baseline.json",
658
+ "evaluations/dispatch/routing-baseline.json",
659
+ "evaluations/dispatch/routing-protocol.md",
660
+ "evaluations/dispatch/routing.config.json",
661
+ "evaluations/weftlet/baseline.json",
662
+ "evaluations/weftlet/cases.json",
663
+ "evaluations/weftlet/context-graph.config.json",
664
+ "evaluations/weftlet/document-links-baseline.json",
665
+ "evaluations/weftlet/document-only.mjs",
666
+ "evaluations/weftlet/ranking-baseline.json",
667
+ "evaluations/weftlet/source-project-baseline.json",
668
+ "evaluations/weftlet/source-project.config.json",
621
669
  "examples/generic-typescript/context-graph.oml.config.json",
622
670
  "examples/pipeline/context-graph.config.json",
623
671
  "examples/pipeline/docs/admission.md",
@@ -653,6 +701,14 @@
653
701
  "scripts/check-restoration.mjs",
654
702
  "scripts/clean-build.mjs",
655
703
  "scripts/cloud-install.sh",
704
+ "scripts/evaluation/protocol.test.ts",
705
+ "scripts/evaluation/protocol.ts",
706
+ "scripts/evaluation/run.test.ts",
707
+ "scripts/evaluation/run.ts",
708
+ "scripts/evaluation/score.test.ts",
709
+ "scripts/evaluation/score.ts",
710
+ "scripts/git-content.mjs",
711
+ "scripts/inventory.test.ts",
656
712
  "scripts/npm-auth.mjs",
657
713
  "scripts/npm-auth.test.ts",
658
714
  "scripts/npm-command.mjs",
@@ -676,14 +732,28 @@
676
732
  "src/application/overlay.ts",
677
733
  "src/application/saved-evidence.ts",
678
734
  "src/cli.ts",
735
+ "src/configuration/scip-project.ts",
679
736
  "src/extraction/codex-auth.test.ts",
680
737
  "src/extraction/codex-auth.ts",
738
+ "src/extraction/codex-command.test.ts",
739
+ "src/extraction/codex-command.ts",
740
+ "src/extraction/document-references.ts",
741
+ "src/extraction/document.test.ts",
742
+ "src/extraction/module-request.test.ts",
743
+ "src/extraction/module-request.ts",
681
744
  "src/extraction/providers.test.ts",
682
745
  "src/extraction/providers.ts",
746
+ "src/extraction/routing.test.ts",
747
+ "src/extraction/routing.ts",
748
+ "src/extraction/scip-project.test.ts",
749
+ "src/extraction/scip-project.ts",
750
+ "src/extraction/semantic-process.test.ts",
683
751
  "src/extraction/semantic-process.ts",
684
752
  "src/governance/governance.test.ts",
685
753
  "src/governance/governance.ts",
686
754
  "src/graph/authority.ts",
755
+ "src/graph/ranking.test.ts",
756
+ "src/graph/ranking.ts",
687
757
  "src/graph/rdf.ts",
688
758
  "src/infrastructure/module-resolution.ts",
689
759
  "src/interfaces/doctor.ts",
@@ -701,6 +771,7 @@
701
771
  "tests/module-boundaries.test.ts",
702
772
  "tests/rdf-ontology.test.ts",
703
773
  "tests/rdf.test.ts",
774
+ "tests/routing.test.ts",
704
775
  "tests/runtime.test.ts",
705
776
  "tests/snapshot-lifecycle.test.ts"
706
777
  ],