@weftlet/toolkit 0.0.0-stage → 0.1.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 (157) hide show
  1. package/LICENSE +176 -0
  2. package/NOTICE +6 -0
  3. package/README.md +155 -2
  4. package/THIRD_PARTY_NOTICES.md +610 -0
  5. package/dist/application/agent-context.d.ts +23 -0
  6. package/dist/application/agent-context.js +94 -0
  7. package/dist/application/application.d.ts +23 -0
  8. package/dist/application/application.js +91 -0
  9. package/dist/application/hydrator.d.ts +49 -0
  10. package/dist/application/hydrator.js +275 -0
  11. package/dist/application/overlay.d.ts +6 -0
  12. package/dist/application/overlay.js +110 -0
  13. package/dist/application/saved-evidence.d.ts +38 -0
  14. package/dist/application/saved-evidence.js +59 -0
  15. package/dist/application/snapshot-checks.d.ts +16 -0
  16. package/dist/application/snapshot-checks.js +51 -0
  17. package/dist/cli.d.ts +3 -0
  18. package/dist/cli.js +4 -0
  19. package/dist/configuration/cache.d.ts +2 -0
  20. package/dist/configuration/cache.js +10 -0
  21. package/dist/configuration/config.d.ts +79 -0
  22. package/dist/configuration/config.js +165 -0
  23. package/dist/core.d.ts +1 -0
  24. package/dist/core.js +2 -0
  25. package/dist/extraction/codex-auth.d.ts +12 -0
  26. package/dist/extraction/codex-auth.js +74 -0
  27. package/dist/extraction/document.d.ts +5 -0
  28. package/dist/extraction/document.js +54 -0
  29. package/dist/extraction/ontology.d.ts +32 -0
  30. package/dist/extraction/ontology.js +164 -0
  31. package/dist/extraction/providers.d.ts +8 -0
  32. package/dist/extraction/providers.js +58 -0
  33. package/dist/extraction/runtime-evidence.d.ts +2 -0
  34. package/dist/extraction/runtime-evidence.js +84 -0
  35. package/dist/extraction/semantic-citations.d.ts +7 -0
  36. package/dist/extraction/semantic-citations.js +27 -0
  37. package/dist/extraction/semantic-process.d.ts +11 -0
  38. package/dist/extraction/semantic-process.js +68 -0
  39. package/dist/extraction/semantic.d.ts +73 -0
  40. package/dist/extraction/semantic.js +414 -0
  41. package/dist/extraction/static.d.ts +52 -0
  42. package/dist/extraction/static.js +322 -0
  43. package/dist/extraction/telemetry.d.ts +19 -0
  44. package/dist/extraction/telemetry.js +259 -0
  45. package/dist/governance/governance.d.ts +60 -0
  46. package/dist/governance/governance.js +209 -0
  47. package/dist/graph/authority.d.ts +2 -0
  48. package/dist/graph/authority.js +13 -0
  49. package/dist/graph/diagnostics.d.ts +5 -0
  50. package/dist/graph/diagnostics.js +61 -0
  51. package/dist/graph/query.d.ts +16 -0
  52. package/dist/graph/query.js +373 -0
  53. package/dist/graph/rdf.d.ts +26 -0
  54. package/dist/graph/rdf.js +144 -0
  55. package/dist/index.d.ts +11 -0
  56. package/dist/index.js +12 -0
  57. package/dist/infrastructure/module-resolution.d.ts +2 -0
  58. package/dist/infrastructure/module-resolution.js +10 -0
  59. package/dist/infrastructure/process.d.ts +5 -0
  60. package/dist/infrastructure/process.js +27 -0
  61. package/dist/infrastructure/util.d.ts +1 -0
  62. package/dist/infrastructure/util.js +2 -0
  63. package/dist/interfaces/cli.d.ts +4 -0
  64. package/dist/interfaces/cli.js +197 -0
  65. package/dist/interfaces/doctor.d.ts +25 -0
  66. package/dist/interfaces/doctor.js +49 -0
  67. package/dist/interfaces/init.d.ts +24 -0
  68. package/dist/interfaces/init.js +154 -0
  69. package/dist/interfaces/mcp-facade.d.ts +3 -0
  70. package/dist/interfaces/mcp-facade.js +4 -0
  71. package/dist/interfaces/mcp.d.ts +2 -0
  72. package/dist/interfaces/mcp.js +81 -0
  73. package/dist/interfaces/request.d.ts +2 -0
  74. package/dist/interfaces/request.js +59 -0
  75. package/dist/mcp.d.ts +3 -0
  76. package/dist/mcp.js +4 -0
  77. package/dist/repository/committed-tree.d.ts +2 -0
  78. package/dist/repository/committed-tree.js +35 -0
  79. package/dist/repository/git.d.ts +26 -0
  80. package/dist/repository/git.js +163 -0
  81. package/dist/repository/glob.d.ts +2 -0
  82. package/dist/repository/glob.js +46 -0
  83. package/dist/repository/working-content.d.ts +3 -0
  84. package/dist/repository/working-content.js +34 -0
  85. package/dist/storage/atomic-rename.d.ts +2 -0
  86. package/dist/storage/atomic-rename.js +22 -0
  87. package/dist/storage/storage.d.ts +15 -0
  88. package/dist/storage/storage.js +115 -0
  89. package/dist/telemetry.d.ts +1 -0
  90. package/dist/telemetry.js +2 -0
  91. package/dist/visualization/viewer-interaction.d.ts +12 -0
  92. package/dist/visualization/viewer-interaction.js +123 -0
  93. package/dist/visualization/visualization.d.ts +26 -0
  94. package/dist/visualization/visualization.js +491 -0
  95. package/docs/ADR-001-standalone-baseline.md +16 -0
  96. package/docs/ADR-002-saved-evidence.md +21 -0
  97. package/docs/ADR-003-draft-overlays.md +23 -0
  98. package/docs/ADR-004-rdf-query-path.md +37 -0
  99. package/docs/ADR-005-governance-and-optional-oml.md +37 -0
  100. package/docs/ADR-006-provider-boundaries.md +15 -0
  101. package/docs/ADR-007-toolkit-modules.md +53 -0
  102. package/docs/ADR-008-weftlet-packages.md +32 -0
  103. package/docs/CLOUD-ENVIRONMENT.md +56 -0
  104. package/docs/ENVIRONMENT-VALIDATION.md +78 -0
  105. package/docs/MIGRATING-TO-WEFTLET.md +54 -0
  106. package/docs/PROVIDERS.md +121 -0
  107. package/docs/RELEASING.md +144 -0
  108. package/docs/ROADMAP.md +53 -0
  109. package/docs/SOURCE-INVENTORY.md +48 -0
  110. package/docs/VALIDATION.md +490 -0
  111. package/docs/VIEWER.md +36 -0
  112. package/docs/architecture-baseline.json +57 -0
  113. package/docs/architecture-policy.md +41 -0
  114. package/docs/extraction-manifest.json +721 -0
  115. package/docs/licenses/REVIEW.md +16 -0
  116. package/docs/licenses/lru-cache-11.5.3-BlueOak.md +55 -0
  117. package/docs/licenses/negotiate-1.0.1-BSD.txt +22 -0
  118. package/docs/licenses/spark-md5-3.0.2-MIT.txt +7 -0
  119. package/examples/generic-typescript/context-graph.config.json +47 -0
  120. package/examples/generic-typescript/context-graph.oml.config.json +49 -0
  121. package/examples/generic-typescript/docs/search-capability.md +14 -0
  122. package/examples/generic-typescript/ontology/build.gradle +38 -0
  123. package/examples/generic-typescript/ontology/catalog.xml +5 -0
  124. package/examples/generic-typescript/ontology/settings.gradle +1 -0
  125. package/examples/generic-typescript/ontology/src/oml/context-graph.dev/core.oml +99 -0
  126. package/examples/generic-typescript/package.json +6 -0
  127. package/examples/generic-typescript/src/search.ts +11 -0
  128. package/examples/generic-typescript/test/search.test.ts +8 -0
  129. package/examples/generic-typescript/tsconfig.json +10 -0
  130. package/examples/pipeline/context-graph.config.json +49 -0
  131. package/examples/pipeline/docs/admission.md +6 -0
  132. package/examples/pipeline/docs/analysis.md +6 -0
  133. package/examples/pipeline/docs/discovery.md +6 -0
  134. package/examples/pipeline/docs/execution.md +6 -0
  135. package/examples/pipeline/docs/outcomes.md +6 -0
  136. package/examples/pipeline/docs/planning.md +6 -0
  137. package/examples/pipeline/package.json +6 -0
  138. package/examples/pipeline/src/admission.ts +9 -0
  139. package/examples/pipeline/src/analysis.ts +9 -0
  140. package/examples/pipeline/src/contracts/admission.ts +1 -0
  141. package/examples/pipeline/src/contracts/analysis.ts +1 -0
  142. package/examples/pipeline/src/contracts/discovery.ts +1 -0
  143. package/examples/pipeline/src/contracts/execution.ts +1 -0
  144. package/examples/pipeline/src/contracts/outcomes.ts +1 -0
  145. package/examples/pipeline/src/contracts/planning.ts +1 -0
  146. package/examples/pipeline/src/discovery.ts +9 -0
  147. package/examples/pipeline/src/execution.ts +9 -0
  148. package/examples/pipeline/src/outcomes.ts +9 -0
  149. package/examples/pipeline/src/planning.ts +9 -0
  150. package/examples/pipeline/src/queue.ts +12 -0
  151. package/examples/pipeline/test/pipeline.test.ts +17 -0
  152. package/examples/pipeline/tsconfig.json +12 -0
  153. package/package.json +116 -3
  154. package/runtime-check.d.mts +2 -0
  155. package/runtime-check.mjs +12 -0
  156. package/templates/context-graph-development/SKILL.md +37 -0
  157. package/third-party-tools.json +34 -0
@@ -0,0 +1,48 @@
1
+ # Source inspection and export boundary
2
+
3
+ Inspected commit: `fda97e0146099543aeaa6b338ef2b0e9fab0d1d6`.
4
+ The requested commit was fetched for read-only inspection into temporary storage outside this
5
+ destination. The source checkout, branches, configuration and services were not changed.
6
+ The destination was verified as `/workspace/tently`, origin `github.com/jchewitt/tently`.
7
+
8
+ `extraction-manifest.json` enumerates every imported committed file with its original SHA-256.
9
+ Only `tools/context-graph` tooling is imported. Private product documents are reference-only;
10
+ the adapter, product ontology, configuration profiles and trace harness are excluded.
11
+ Tests using synthetic product names are adapted to public examples. Source-integration tests
12
+ that read the application are replaced with standalone boundary checks, not claimed as executed.
13
+ Apache-2.0 licenses and LaunchEcho copyright/attribution are retained.
14
+
15
+ ## Findings verified in source
16
+
17
+ | Area | Evidence and consequence |
18
+ | --- | --- |
19
+ | Neutral boundary | `packages/core` holds records/interfaces; composition loads adapters dynamically. |
20
+ | Semantic extraction | `semantic.ts` invokes Codex, validates structured citations, then renders OML deterministically. |
21
+ | Ontology | `ontology.ts` invokes openCAESAR in Docker. The compiled RDF is digest-bound but not the query backend. |
22
+ | Graph assembly | `hydrator.ts` separately combines semantic, document, SCIP, adapter and runtime facts into JSON. |
23
+ | Queries | `query.ts` uses bounded traversal, with a three-hop search and fact limits; no SPARQL execution. |
24
+ | Rules | Adapter invariant evaluators are TypeScript; no active OWL reasoner is wired into hydration. |
25
+ | Indexing | `static.ts` bundles SCIP TypeScript; no universal language support is established. |
26
+ | Editing | `agent-context.ts` may hydrate during a read; `hydrator.ts` requires an exact clean checkout. |
27
+ | Viewer | HTML/DOT/SVG render Context Packs; this is a bounded viewer, not a complete explorer. |
28
+ | Packaging | Published files omit examples/agent templates; the root launcher builds the product adapter and changes cwd. |
29
+ | Root dependencies | Build/test/license/publication commands depend on monorepo scripts and pnpm workspace membership. |
30
+
31
+ Root package/workspace/TypeScript configuration and tooling ADR, owner and validation documents
32
+ were read as reference. Their historical validation claims are not destination validation.
33
+ Minimal destination equivalents replace root automation; no monorepo lockfile is imported.
34
+
35
+ ## Export status
36
+
37
+ On 2026-10-20 the user authorized pushing the reviewed destination to `jchewitt/tently` after
38
+ fixing the secondary review findings, so it can be cloned and tested locally. This authorization
39
+ initially covered the destination Git repository only. A subsequent request authorizes npm
40
+ publication using the maintainer-selected `@launch-echo` scope. That release used
41
+ `@launch-echo/tently` and `@launch-echo/tently-core`; original notices and source hashes remain
42
+ unchanged. Registry authentication is still pending. No repository visibility change is authorized.
43
+ `extraction-manifest.json` records both authorization scopes.
44
+
45
+ On 2026-10-21 the maintainer selected and created the `@weftlet` scope and authorized migration
46
+ to `@weftlet/core` and `@weftlet/toolkit`. This changes destination package names only; the original
47
+ source SHA, imported-path inventory, copyright and attribution remain intact. The maintainer subsequently renamed GitHub to
48
+ `jchewitt/weftlet` on the same date; the checkout remains `/workspace/tently`. See [migration](MIGRATING-TO-WEFTLET.md) and [release status](RELEASING.md).
@@ -0,0 +1,490 @@
1
+ # Validation evidence
2
+
3
+ Environment: Linux cloud, Node 24.19.0, pnpm 10.18.2. Source imported from
4
+ `fda97e0146099543aeaa6b338ef2b0e9fab0d1d6`. No source application was built or changed.
5
+
6
+ The milestone entries below record the original cloud checks. Subsequent
7
+ [HDesk validation](#hdesk-validation-of-6710e9391a6a01345dab5f5be4ae0656e1c9d1ae)
8
+ establishes live Codex success on Windows and the full deterministic checks on WSL,
9
+ while identifying remaining native Windows issues.
10
+
11
+ ## Milestone 1: standalone baseline
12
+
13
+ Passed `pnpm context-graph:publication-check`:
14
+
15
+ - Core and toolkit TypeScript builds.
16
+ - 98 deterministic tests (1 core + 97 toolkit/example).
17
+ - Generated third-party dependency/license inventories.
18
+ - Packed core/toolkit installed in a separate temporary Git consumer.
19
+ - Real TypeScript SCIP indexing and extraction, runtime asset inventory,
20
+ HTML/DOT/SVG rendering and installed MCP initialization/tool discovery.
21
+ - Missing snapshots produce an explicit MCP error.
22
+ - Development MCP tests cover missing/stale output rebuild and clean protocol error reporting.
23
+
24
+ One opt-in Docker/openCAESAR integration test was skipped. Real Codex extraction, Windows,
25
+ macOS and hosted CI were not run. Existing source validation records are not copied as evidence.
26
+ Synthetic semantic runner tests validate orchestration/citations/cache behavior, not model quality.
27
+
28
+ The initial pnpm 11 installation exposed a build-script policy mismatch; installing with the
29
+ pinned pnpm 10.18.2 resolved it. Four fixture adaptation failures (paths, sort order and query
30
+ labels) were corrected and the complete gate rerun successfully.
31
+
32
+ ## Milestone 2a: saved evidence lifecycle
33
+
34
+ Passed TypeScript build, 15 affected tests across hydration, scope selection, lifecycle, final
35
+ checks and real SCIP indexing, followed by the independent package smoke test.
36
+ New checks exercise same-process concurrent publication, immutable conflict rejection, atomic
37
+ head updates, failed refresh preservation, dirty/untracked file reporting and two concurrent
38
+ committed materializations without changing Git status or registered worktrees.
39
+
40
+ The full baseline suite also passed after the main lifecycle change. Draft overlays and later
41
+ milestones require separate validation. Symlink/submodule materialization and archives over
42
+ 128 MiB are explicitly unsupported; Windows/macOS were untested at this milestone.
43
+
44
+ ## Milestone 2b: draft overlays
45
+
46
+ Passed build and five overlay/viewer tests. The overlay test indexes real TypeScript in the
47
+ base and draft, renames a shared interface and updates its consumer, repeats capture to verify
48
+ stable identity, then deletes the consumer and proves the old relationships disappear.
49
+ Committed HEAD and the default snapshot remain unchanged. No live model or runtime is involved.
50
+
51
+ A first repeatability check caught synthetic-commit timestamps leaking into fact identities.
52
+ Overlay IDs now derive from normalized draft facts and captured bytes; the repeated real-index
53
+ test passes.
54
+
55
+ ## Milestone 3: RDF, SHACL and cross-source queries
56
+
57
+ Passed real pipeline execution, real SCIP indexing, deterministic prose-provider hydration,
58
+ RDF/traversal field equivalence, six declared asynchronous routes, downstream implementation/test
59
+ retrieval, pagination without duplicate facts, missing-query gaps, identity-kind conflict and
60
+ invalid-citation/confidence SHACL negatives, and remote SPARQL rejection.
61
+ Installed-consumer smoke passes with the new RDF runtime dependencies.
62
+
63
+ The larger suite exposed a suggested-file ordering regression; preserving explicit RDF ordinals
64
+ fixed it, and the affected static/RDF tests passed. Live model comprehension is a separate check.
65
+ License inventories include exact-version reviewed notices for three newly encountered expressions.
66
+
67
+ Milestone 3 final rerun: 102 deterministic tests passed (1 core + 101 toolkit/example); one optional OML integration test skipped.
68
+
69
+ ## Milestone 4: architecture and optional OML
70
+
71
+ Passed build and 34 focused tests. The governance integration uses dependency-cruiser, ESLint and
72
+ jscpd, checks positive and negative imports, a transitive SPARQL inference, cycles, conflicting
73
+ owners, missing imports, baseline scope, and valid/expired exceptions. The initial extraction
74
+ commit was separately analyzed in an isolated tree to record five existing advisory findings.
75
+ The current repository passed approved rules with eight advisory size/complexity findings.
76
+
77
+ Direct-RDF/OML assertion parity and real pipeline incremental reuse passed. Actual openCAESAR
78
+ compilation and OWL reasoning remain unverified; no active OWL reasoner is claimed.
79
+
80
+ ## Milestone 5: providers and diagnostics
81
+
82
+ Passed build and 41 focused deterministic tests, including actual subprocess timeout/cancellation,
83
+ safe error reporting, transient-only retry limits, malformed output rejection, module identity and
84
+ timeout enforcement, cache reuse, and model reasoning identity. The pipeline test additionally
85
+ checks that a source-budget failure makes zero provider calls.
86
+
87
+ `doctor` reports Git and Codex available, authenticated Codex login, and the RDF backend. A tiny
88
+ public live test using Codex 0.163.0 / gpt-6-astra exited with status 1 before extraction. A bounded,
89
+ redacted diagnostic identified a read-only filesystem error. Live semantic extraction is blocked
90
+ and unverified in this environment; no credentials or private source were copied to work around it.
91
+
92
+ ## Milestone 6 and final integrated gate
93
+
94
+ On 2026-10-20, `pnpm context-graph:publication-check` passed end to end:
95
+
96
+ - Frozen installation and TypeScript builds; 110 deterministic tests passed (1 core + 109 toolkit/example).
97
+ - One optional Docker/openCAESAR integration test skipped.
98
+ - Canonical architecture gate passed; 10 advisory size/complexity findings remain for review.
99
+ - Extraction inventory and production license checks passed.
100
+ - Fresh packed consumer exercised actual TypeScript SCIP extraction, RDF/SPARQL/SHACL projection,
101
+ HTML/DOT/SVG rendering, installed MCP initialization and missing-snapshot reporting.
102
+
103
+ The final pipeline test extracts missing implementation paths, explicit ambiguous ownership and
104
+ contradictory node kinds from additional public prose, reports/rejects them, and preserves the last
105
+ valid head. Source approval and unreviewed model assertions remain separately labeled in RDF,
106
+ agent output and the viewer. Snapshot publication also passed concurrent independent-process tests.
107
+ Viewer tests check exact fact/edge identity, safe source links, script syntax, six-edge directed paths,
108
+ cycle termination, bounds and coverage/staleness labels. Browser UI automation was not performed.
109
+
110
+ All 79 imported original file hashes were rechecked against the recorded source SHA, and destination
111
+ hashes matched the inventory. Export paths contain no Git metadata, credentials, environment files,
112
+ node_modules, generated graph storage or package archives. The inventory was reviewed separately from publication authorization; the user subsequently
113
+ authorized the GitHub export documented below.
114
+
115
+ `scripts/cloud-install.sh` was executed successfully in the managed environment. The installed
116
+ consumer is a fresh-install smoke test; restoration into a fresh cloud task is a separate check. Live Codex extraction remains blocked as recorded above.
117
+ Windows, macOS, hosted CI and optional formal compiler execution were untested in that cloud run.
118
+
119
+ ## Secondary review fixes and authorized GitHub export
120
+
121
+ On 2026-10-20, secondary review identified five issues. Regression coverage now verifies:
122
+
123
+ - Architecture entry roots retain local transitive dependencies, and unmapped intermediate
124
+ modules produce extraction gaps instead of a false pass.
125
+ - Nested repository roots use consistent committed reads, deltas, dirty paths and archives.
126
+ Actual nested hydration succeeds with real TypeScript indexing while prose remains dirty.
127
+ - Consumer-relative, absolute, file-URL and import-only ESM package adapters resolve correctly;
128
+ the installed-consumer smoke also loads a relative adapter.
129
+ - Draft queries compare captured content digests, distinguish included/excluded/subsequent changes,
130
+ detect reversion to committed bytes and new in-scope files, and mark legacy freshness unknown.
131
+ - Module import and asynchronous factory initialization share extraction's timeout/cancellation;
132
+ cancelled initialization neither caches its late result nor starts extraction.
133
+
134
+ Follow-up review found an additional equivalent-root normalization issue (`./src`, `./`). It was
135
+ fixed and independently rechecked; no blocking findings remained. Scope tests include directory
136
+ prefix boundaries, outside paths, Windows separators and contract globs. These separator tests
137
+ are deterministic checks on Linux, not a Windows environment validation.
138
+
139
+ The final `pnpm context-graph:publication-check` passed: builds, 114 deterministic tests
140
+ (1 core + 113 toolkit/example), approved architecture rules (10 advisory findings), extraction
141
+ inventory, licenses and a fresh tarball consumer exercising SCIP, RDF/SPARQL/SHACL, visualization
142
+ and MCP. One opt-in Docker/OML integration test remains skipped. All 79 original file hashes were
143
+ rechecked against the recorded source SHA, and the destination history scan found no private-key
144
+ or common credential-token signatures. This bounded scan supplements the reviewed file inventory. The user authorized pushing the reviewed destination commits to
145
+ `https://github.com/jchewitt/tently` for local testing. Package registry releases and visibility
146
+ changes are excluded. Source remains read-only; no source history is included in this repository.
147
+
148
+ ## HDesk validation of 6710e9391a6a01345dab5f5be4ae0656e1c9d1ae
149
+
150
+ Tested destination commit: `6710e9391a6a01345dab5f5be4ae0656e1c9d1ae`.
151
+ Evidence source: HDesk results supplied by the maintainer, recorded here without rerunning
152
+ the Windows or WSL checks in the cloud. HDesk reported no source changes or pushes.
153
+ These results apply to this commit and the environments specified below.
154
+
155
+ ### PASS: live Codex end-to-end on Windows
156
+
157
+ Environment: Windows, Node 24.2.0, Codex 0.153.4, `gpt-6-astra` with `medium` reasoning.
158
+ The unchanged adapter extracted the public example, validated citations and schema, ran real
159
+ SCIP indexing and RDF/SHACL, published and queried the snapshot, and reused its semantic artifact
160
+ on a second hydration.
161
+
162
+ | Observation | Result |
163
+ | --- | --- |
164
+ | Semantic facts | 4 |
165
+ | Total snapshot facts | 12 |
166
+ | Query facts | 11 |
167
+ | Second hydration: extracted / reused artifacts | 0 / 1 |
168
+ | Second hydration: snapshot identity / content digest | Both unchanged |
169
+
170
+ This establishes a live adapter pass for the public example. The earlier cloud filesystem failure
171
+ remains specific to that environment; broader semantic-quality evaluation is still separate.
172
+
173
+ ### PASS: WSL deterministic and installed-consumer checks
174
+
175
+ Environment: WSL Ubuntu-22.04, Node 24.6.0, pnpm 10.18.2. Passed frozen installation, build,
176
+ 114 deterministic tests, architecture checks with 10 advisory findings, inventory, licenses
177
+ and the fresh packed-consumer smoke test.
178
+
179
+ The aggregate command initially stopped at a harness pnpm-store mismatch. After correcting
180
+ that configuration, licenses and packaging passed independently. These are passing component
181
+ results, not a claim that the initial aggregate invocation completed successfully.
182
+
183
+ All three **original** `src/mcp-startup.test.ts` tests passed in WSL:
184
+
185
+ - `rebuilds missing workspace outputs and initializes clean JSON-RPC from another cwd`
186
+ - `rebuilds stale workspace outputs and initializes clean JSON-RPC from another cwd`
187
+ - `fails clearly on a compiler error without sending diagnostics on protocol stdout`
188
+
189
+ These tests were excluded only from the later native Windows subset because fixture creation
190
+ attempted a file symlink for `.modules.yaml` and received `EPERM`. They are validated in WSL,
191
+ not generally unvalidated. Separate native Windows launcher/MCP initialization, `impact.scan`
192
+ discovery and missing-snapshot reporting also passed.
193
+
194
+ ### Native Windows follow-up
195
+
196
+ The native Windows subset reported **108 passed, 2 failed, 1 optional skipped**, with the
197
+ three fixture tests above excluded. This is not a full native Windows suite pass.
198
+
199
+ - `git archive` inherits `core.autocrlf=true` and changes committed LF bytes. A focused probe
200
+ confirms `git -c core.autocrlf=false archive ...` preserves exact bytes. The implementation
201
+ fix and regression coverage remain follow-up work.
202
+ - Concurrent snapshot-head replacement fails with rename `EPERM` at `src/storage.ts:22`
203
+ in the tested commit. Sequential publication passes. A fix must preserve atomic replacement
204
+ and cross-process guarantees; sequential success does not validate concurrency.
205
+ - Improve CRLF checkout integrity checks and discovery of npm-installed Codex executables.
206
+ - Address the native Windows `.modules.yaml` symlink fixture limitation before claiming
207
+ those three tests pass natively.
208
+
209
+ Docker is optional for openCAESAR and is not required by the default RDF backend. Optional
210
+ formal compiler execution, browser interaction, macOS, hosted CI, fresh-cloud restoration
211
+ and broader semantic-quality evaluation remain separate validation work.
212
+
213
+ ## CLI setup and npm release preparation
214
+
215
+ The maintainer selected the `@launch-echo` npm scope. The toolkit is now
216
+ `@launch-echo/tently`, with `@launch-echo/tently-core` as a transitive dependency.
217
+ Original source inventory hashes and attribution are retained.
218
+
219
+ The Linux cloud publication gate passed with 117 deterministic tests (1 core + 116
220
+ toolkit/example), one optional Docker/OML test skipped, and 11 advisory architecture findings.
221
+ The additional advisory is `runInit` complexity (21 against the configured threshold of 20);
222
+ it remains flagged as new, with no automatic baseline or exception. Approved rules pass.
223
+ Inventory and license checks pass.
224
+
225
+ New tests cover project defaults, explicit source selection without source-approval promotion,
226
+ nested configuration paths, CRLF ignore-file preservation, overwrite refusal, non-interactive
227
+ flags, and `config show`/`config validate` without Git or a configured provider. A separate PTY
228
+ check exercised interactive cancellation and confirmation on Linux.
229
+
230
+ The packed-package smoke serves the two local archives from a disposable scoped registry.
231
+ An npm exec invocation requests only `@launch-echo/tently`, resolves core transitively, infers
232
+ the `tently` executable, initializes a fresh project, and validates/displays its configuration.
233
+ The separate installed consumer passes real SCIP, RDF/SPARQL/SHACL, visualization and MCP.
234
+ This verifies npx installation mechanics without claiming public npm publication.
235
+
236
+ `npm whoami` returned `ENEEDAUTH`; public registry reads found neither selected package.
237
+ Registry authentication and public-registry installation remain pending. No npm publication
238
+ has occurred. The HDesk Windows/WSL results above still refer to their original tested SHA;
239
+ the new setup/release commands have not been tested on native Windows.
240
+
241
+ ## Release portability follow-up
242
+
243
+ The maintainer's WSL release-preparation run initially used Node 22.14.0. The locked Undici
244
+ dependency could not load because `zlib.createZstdDecompress` was unavailable. The previous
245
+ toolkit Node 20.11+ declaration was incorrect. Toolkit metadata, `.nvmrc` and early startup
246
+ checks now require Node 24+; the independent core package retains its own Node requirement.
247
+
248
+ After updating to Node 24.14.1, the maintainer reported 116 toolkit/example tests passing,
249
+ one optional test skipped, a passing architecture report with 11 advisory findings, and a
250
+ passing inventory check. That aggregate invocation then stopped at license generation:
251
+ the standalone pnpm 10.18.2 executable was passed to Node as JavaScript, producing an `ELF`
252
+ syntax error. This is a script launcher defect, not a license finding. These user-reported
253
+ results do not establish a completed WSL release-preparation pass.
254
+
255
+ The shared launcher now executes standalone pnpm directly and JavaScript entry points
256
+ through Node. Regression tests cover both forms, paths with spaces and literal arguments.
257
+ A Linux reproduction uses the actual standalone `@pnpm/exe@10.18.2` distribution.
258
+ Separate probes using real Node 22.14.0 confirm that the built CLI, MCP, library entry point
259
+ and development launcher reject the unsupported runtime before loading Undici.
260
+
261
+ The full Linux publication gate passed on Node 24.19.0 with standalone pnpm 10.18.2:
262
+ 126 deterministic tests (1 core + 125 toolkit/example), one optional Docker/OML test skipped,
263
+ architecture approval with the same 11 advisory findings, inventory and license checks, and
264
+ the fresh packed-consumer smoke. That smoke covers npm exec setup/config, runtime assets,
265
+ real TypeScript indexing, SCIP, RDF/SPARQL/SHACL, visualization output and MCP.
266
+
267
+ Secure cloud publication support is tested for temporary npm configuration permissions,
268
+ literal environment-variable references, cleanup and preservation of ordinary npm login
269
+ when no cloud token is configured. No credential value is stored in that configuration.
270
+ The environment requirement has been saved; an applied credential and public npm publication
271
+ remain pending. These checks do not establish new native Windows or macOS results.
272
+
273
+ ### Interactive npm 2FA follow-up
274
+
275
+ The maintainer subsequently reported `EOTP` during a real WSL publish attempt after enabling
276
+ 2FA. Inspection of npm's authentication code confirms that it declines interactive challenges
277
+ when either stdin or stdout is not a terminal. Our publisher captured stdout, disabling that
278
+ flow. Real publication now inherits all terminal streams; dry-run JSON and registry reads
279
+ remain captured for validation. A subprocess regression test verifies those output behaviors,
280
+ and a Linux pseudo-terminal probe confirms both stdin and stdout reach the publication child
281
+ as terminals. Neither test contacts npm for publication or completes a real browser/OTP
282
+ challenge; that authenticated WSL retry remains operator validation.
283
+
284
+ ### npm processing delay and partial release
285
+
286
+ The maintainer's next WSL attempt successfully completed npm's publish authentication and
287
+ received acceptance for `@launch-echo/tently-core@0.1.0`. Immediate integrity verification
288
+ returned 404 while npm processed the package. A subsequent public registry read confirmed
289
+ core's SHA-512 integrity matches the prepared archive; toolkit still returned 404. This is
290
+ a partial release, not failure of the accepted core upload or evidence of toolkit publication.
291
+
292
+ The npm website initially displayed `0.0.0-stage`, a temporary holding version awaiting
293
+ staged review, with no license. Later public checks confirmed `latest: 0.1.0` and
294
+ `Apache-2.0` for core. Downloaded tarball bytes match the prepared SHA-512 digest, and a fresh
295
+ temporary consumer successfully installed core from public npm and imported its ESM exports.
296
+ The placeholder's license field does not describe our submitted package.
297
+
298
+ The publisher now saves acceptance before polling visibility and waits for matching integrity
299
+ before advancing to dependent packages. Seven deterministic tests cover delayed visibility,
300
+ matching existing archives, mismatches, bounded timeout and resume without another upload,
301
+ blocking dependents, registry errors, and publish failure. These tests use controlled registry
302
+ responses; they do not measure npm's processing-time guarantees.
303
+
304
+ The updated publication gate passed 134 deterministic tests (1 core + 133 toolkit/example),
305
+ with one optional Docker/OML test skipped and the same 11 advisory architecture findings.
306
+ Inventory, licenses and packed-consumer checks passed. The subsequent preparation step
307
+ exposed npm's refusal to dry-run an already published version. Preparation now compares
308
+ existing registry integrity instead, while retaining dry runs for unpublished versions.
309
+
310
+ ## Public npm release 0.1.0
311
+
312
+ Both packages published by the maintainer from WSL are now visible at `latest: 0.1.0`, with
313
+ Apache-2.0 metadata. Public tarball downloads match both SHA-512 hashes in the release manifest
314
+ prepared at `02fb65c987154d925fc523c91ccedbdca96fff9d`. The toolkit, like core, initially appeared
315
+ as a `0.0.0-stage` holding version while npm processed it; subsequent checks confirmed the
316
+ operational release. An independent temporary project ran `npm exec -- @launch-echo/tently@0.1.0`
317
+ with `init --yes`, `config validate` and `config show`, using public npm and resolving core
318
+ transitively. Generated configuration identified that project and did not approve intent sources
319
+ automatically. No model requests or cloud-side npm uploads were made.
320
+
321
+ ## Post-release module organization
322
+
323
+ The development tree now groups implementation by responsibility while preserving the five
324
+ root public entry points. Tests were relocated without dropping existing cases; cross-module
325
+ and startup checks live in `tests/`, and release-helper tests live beside their scripts.
326
+ The 79 extraction source paths and source hashes are unchanged; destination paths and required
327
+ modification notices follow the moved files. Historical validation paths above refer to their
328
+ recorded commits and have not been rewritten to imply newer environment results.
329
+
330
+ Linux, Node 24.19.0, standalone pnpm 10.18.2: the full publication gate passed **135 deterministic
331
+ tests** (1 core + 134 toolkit/example/script), one optional Docker/OML test skipped, build,
332
+ inventory, licenses and fresh packed-consumer installation. The installed consumer passed
333
+ npm exec setup/config, real TypeScript/SCIP indexing, RDF/SPARQL/SHACL, visualization output and
334
+ MCP. All three original cold/stale/error MCP startup cases passed at their new test location.
335
+
336
+ The canonical policy maps internal modules separately. A public-safe fixture uses the actual
337
+ policy and analysis tools to verify allowed imports and detect all five proposed forbidden
338
+ directions. Actual toolkit analysis reports no violations of those rules, no infrastructure
339
+ failures or extraction gaps, and the same 11 heuristic advisories. Internal restrictions remain
340
+ advisory pending explicit owner approval; existing approved core rules remain hard gates.
341
+ Historical debt and approval records were not advanced or waived because of the moves.
342
+
343
+ Before/after checks found identical runtime export names for the library (35), core (3) and
344
+ telemetry (2) entry points. A source comparison confirmed all 38 moved runtime files differ
345
+ only in import/export module paths and required attribution notices. Clean builds remove
346
+ obsolete compiled modules. Public package names, CLI commands, configuration, graph behavior
347
+ and snapshot formats are unchanged. This is an unreleased source refactor, not a replacement
348
+ for published 0.1.0. Native Windows and macOS were not rerun for this change. Hosted CI was
349
+ subsequently verified as recorded below.
350
+
351
+ ## Hosted CI and restoration preparation
352
+
353
+ GitHub-hosted Ubuntu [run 39492039168](https://github.com/jchewitt/weftlet/actions/runs/39492039168)
354
+ completed successfully at `92ae118ccb22f59aaa150b1c8f3a009bdacc788a`. The Actions API reports
355
+ the deterministic job and repository composite action succeeded. The workflow selects Node 24
356
+ and pnpm 10.18.2, installs the frozen lockfile and runs the full deterministic publication gate.
357
+ This verifies hosted CI independently of the managed cloud's live Codex filesystem failure.
358
+ Earlier notes that hosted CI was unverified describe the evidence available at that time.
359
+
360
+ The reusable cloud install/start instructions were saved as an updated environment draft with
361
+ the writable npm cache and current GitHub/npm/CI state. The updated install script completed
362
+ frozen installation and build in this instance. `scripts/check-restoration.mjs` records an ignored public
363
+ snapshot checkpoint and verifies its retained content and query behavior with an intentionally
364
+ unavailable semantic provider. Current-instance rehearsal is separate from restoring a genuinely
365
+ new cloud task. Follow [environment validation](ENVIRONMENT-VALIDATION.md) for the final user-driven
366
+ environment publication/new-task step and the browser-MCP checklist. macOS is out of current scope.
367
+
368
+ Current-instance checkpoint verification returned 10 query facts from the retained snapshot with
369
+ an intentionally unavailable module provider and `eligibleForCurrentDiffValidation: false`.
370
+ Changing the checkpoint digest caused verification to fail; restoring the original proof passed
371
+ again. Governance passed with the same 11 advisories, and inventory validation passed. This is
372
+ a rehearsal, not a claim that environment publication or a new-task restoration occurred.
373
+
374
+ ## Explicit Codex authentication modes — tentative
375
+
376
+ 2026-10-20: implemented in `083fbdd`. Unreleased source
377
+ defaults to ChatGPT login and offers explicit API-key authentication through a named environment
378
+ variable. Existing npm 0.1.0 is unchanged. `init` emits the default; `doctor` distinguishes a
379
+ ChatGPT login from an unverified API key. Saved-query access and built-in artifact identity do
380
+ not depend on the selected authentication mode.
381
+
382
+ Build/type compilation passed on the current Linux cloud (Node 24.19.0). Regression cases were
383
+ added for mode selection, credential filtering, missing-key/no-fallback behavior and configuration
384
+ validation; existing fake-runner tests now inject the login-status probe. These tests and the full
385
+ publication gate were **not run locally for this change**, per the maintainer's request to defer
386
+ testing. No model calls, paid API requests or npm publication occurred. Earlier live Codex and
387
+ deterministic passes do not validate this increment.
388
+
389
+ Independent validation remains tentative: run the deterministic suite, then verify ChatGPT login
390
+ with ambient API variables present, API mode with a valid and invalid/missing selected key,
391
+ doctor's presence-only reporting, and a bounded public-example hydration with artifact reuse.
392
+ Record CLI/model versions and actual results separately. Hosted API authentication, native Windows
393
+ behavior and any Codex GitHub Action proxy integration are not established by compilation.
394
+
395
+ Maintainer disposition (2026-10-20): live authentication validation is **tentative, deferred and
396
+ non-blocking for release**. The maintainer plans to exercise their existing ChatGPT-backed Codex
397
+ workflow after publication and adoption into Banditrade, and report any issues. API-key validation
398
+ may remain tentative; obtaining API credentials or making paid requests is not required for that
399
+ follow-up. This records acceptance of deferred validation, not a passing result. Ordinary
400
+ deterministic release checks remain applicable. No source-application reintegration was performed.
401
+
402
+ ## Weftlet migration and trusted-publishing preparation
403
+
404
+ 2026-10-21: the maintainer created `@weftlet` and authorized migration from Tently. Current source
405
+ uses `@weftlet/core@0.1.0`, `@weftlet/toolkit@0.1.0`, `weftlet` and `weftlet-mcp`. The compatible
406
+ context-graph aliases, config/storage paths, neutral-core boundary and all 79 original imported
407
+ source paths/SHA-256 hashes are preserved. GitHub remains `jchewitt/tently`.
408
+
409
+ Linux, Node 24.19.0, pnpm 10.18.2 and npm 11.9.0: frozen installation, build and the full
410
+ publication gate passed **147 deterministic tests** (1 core + 146 toolkit/example/script),
411
+ with one optional Docker/OML test skipped. Architecture checks passed with 12 advisory findings;
412
+ extraction inventory and licenses passed. A fresh packed consumer installed the new toolkit
413
+ and automatically resolved the new core name, exercised npm exec setup/config, real TypeScript
414
+ SCIP indexing, RDF/SPARQL/SHACL, visualization output and MCP. Cold/stale/compiler-error MCP
415
+ startup tests passed with workspace fixtures wired to `@weftlet/core`.
416
+
417
+ The previously deferred deterministic Codex-auth/config regression cases now pass. Live ChatGPT
418
+ and API-key authentication validation remains tentative and non-blocking; no model was invoked.
419
+ Public runtime export counts remain 35 toolkit, 3 core and 2 telemetry. After final help-text and
420
+ documentation edits, compilation and extraction inventory were checked again.
421
+
422
+ `publish.yml` was checked with actionlint 1.7.7 (shellcheck integration disabled). It defaults to
423
+ preparation only; publication is explicitly selected and uses a separately permissioned,
424
+ environment-gated GitHub-hosted job. Synthetic tests cover OIDC prerequisites, minimum npm version,
425
+ rejection of ambient tokens and cleanup of isolated npm configurations. Manual login and legacy
426
+ cloud-token references remain supported. The workflow pins npm 11.21.1; local checks used npm
427
+ 11.9.0, which also exceeds npm's 11.5.1 minimum for trusted publishing.
428
+
429
+ No new npm packages have been published or old packages deprecated by this change. Package-level
430
+ npm trust settings, GitHub environment reviewer rules, a live OIDC release/provenance check and
431
+ fresh public-registry installation remain external validation steps. The new release workflow
432
+ has not yet been run on GitHub; a successful local gate or actionlint run is not evidence of OIDC
433
+ permissions. Native Windows fixes, fresh-task restoration and actual browser interaction remain
434
+ separate work. See [release instructions](RELEASING.md) for the maintainer's exact setup steps.
435
+
436
+
437
+ ## GitHub repository rename — 2026-10-21
438
+
439
+ The maintainer renamed the destination to `jchewitt/weftlet`. The origin, both npm repository
440
+ URLs, current instructions and OIDC repository guard now use that identity. Historical export
441
+ records remain unchanged. The architecture config retains its stable graph repository ID;
442
+ this remote rename does not rewrite existing evidence. The cloud mount remains `/workspace/tently`.
443
+
444
+ Seven focused npm-auth tests passed, including acceptance of the new repository and rejection
445
+ of the previous identity. Fresh packed-consumer validation passed: npm exec setup/config,
446
+ transitive core installation, runtime assets, real TypeScript indexing, SCIP, RDF/SPARQL/SHACL,
447
+ HTML/DOT/SVG and MCP. Extraction inventory and diff checks passed. The full deterministic suite
448
+ was not repeated for these metadata/documentation and release-guard changes; its prior result
449
+ remains recorded above. No npm publication, live OIDC release or fresh-task restoration is
450
+ claimed. Both new 0.1.0 package versions returned public-registry 404 during this check.
451
+
452
+ Use `weftlet` as the npm trusted-publisher Repository field. Archives prepared before this rename
453
+ contain the previous repository URL; prepare from the updated commit before initial publication.
454
+
455
+
456
+ ## Native Windows release-preparation fixes — 2026-10-21
457
+
458
+ The maintainer reported five failures during native Windows release preparation: three MCP
459
+ startup fixtures failed creating a file symlink for pnpm metadata, concurrent snapshot-head
460
+ replacement failed with EPERM, and isolated archive content used CRLF instead of committed LF.
461
+ The supplied output was still running, so no final native-suite totals are inferred.
462
+
463
+ Changes:
464
+ - MCP fixtures copy dependency metadata files and retain directory junctions on Windows. All
465
+ three original startup tests remain enabled, including protocol-stdout isolation on compiler errors.
466
+ - Committed materialization runs `git -c core.autocrlf=false archive`. This command-local override
467
+ preserves the user's repository configuration. The regression enables `core.autocrlf=true`
468
+ even on Linux: it reproduced the reported CRLF failure before the fix and passes afterward.
469
+ - Snapshot-head replacement retries only Windows EPERM/EACCES/EBUSY errors, with 50 retries and
470
+ 4.55 seconds of total backoff. Each attempt remains an atomic rename; the destination is never
471
+ unlinked or truncated. Persistent failures propagate, preserve the prior head and clean up the
472
+ unpublished temporary file. Immutable snapshot publication still uses exclusive hard links.
473
+ - A real multiprocess test publishes three valid snapshots, replaces a shared head 60 times and
474
+ checks concurrent reads always return a complete known snapshot. Existing conflicting immutable
475
+ snapshot tests remain enabled. Fault injection covers transient and persistent Windows errors,
476
+ nonretryable errors, previous-head availability and temporary-file cleanup.
477
+
478
+ Linux, Node 24.19.0, pnpm 10.18.2: the full publication check passed **155 deterministic tests**
479
+ (1 core + 154 toolkit/example/script); one optional Docker/OML test was skipped. Build, architecture
480
+ (12 advisory findings), extraction inventory, licenses and fresh packed-consumer smoke passed.
481
+ The smoke includes setup/config, transitive core installation, real TypeScript SCIP indexing,
482
+ RDF/SPARQL/SHACL, HTML/DOT/SVG output and MCP. After improving child-process cleanup in the
483
+ contention test, its three-test lifecycle suite passed again.
484
+
485
+ A separate `windows-latest` CI job now builds and runs the storage, Git and original MCP startup
486
+ regressions. Actionlint 1.7.7 passed for both workflows (shellcheck integration disabled).
487
+ The Windows job does not replace the full Linux release gate. Native Windows execution of these
488
+ fixes remains pending; simulated Windows errors on Linux are not a native pass. CRLF checkout
489
+ inventory checking and npm Codex executable discovery remain separate follow-ups. No live model
490
+ call or npm publication was performed. Use WSL for the validated full release-preparation route.
package/docs/VIEWER.md ADDED
@@ -0,0 +1,36 @@
1
+ # Bounded evidence viewer
2
+
3
+ `context-graph visualize --changed-file src/discovery.ts --snapshot <id> --output graph.html`
4
+ renders the same Context Pack returned by `impact.scan`. HTML is self-contained; DOT and SVG
5
+ remain available. No CDN, service, model or alternative graph extraction is involved.
6
+
7
+ Nodes are grouped by evidence lane, then module/layer metadata or node kind. Filter by cluster,
8
+ authority or source text. Select a node (click or Enter) to inspect its relationships, confidence,
9
+ extractor, source approval, extraction review state and commit-bound citations. The neighbor
10
+ filter narrows the view. Select a target to highlight one shortest directed path within the
11
+ displayed page and enabled authority filters; edge direction follows the recorded predicate.
12
+
13
+ The status panel exposes commit/configuration/scope, excluded changes, draft/staleness, counts,
14
+ depth exhaustion and continuation. A missing path is not proof of no dependency. Retrieve another
15
+ page with `--continuation`, or rerun with a larger `--max-depth` when the depth bound was reached.
16
+ The viewer accepts at most 200 facts and 500 runtime references. References are shown separately;
17
+ only runtime facts present in the query become edges.
18
+
19
+ Source navigation displays exact paths, lines and commits. To link to a trusted code host, use:
20
+
21
+ ```sh
22
+ context-graph visualize --snapshot <id> --output graph.html \
23
+ --source-url-template 'https://github.com/OWNER/REPO/blob/{commit}/{path}#L{line}'
24
+ ```
25
+
26
+ Templates must use HTTPS without credentials and include `{commit}` and `{path}`. No source URL is
27
+ invented by default. The artifact itself contains evidence labels and citations, so review it
28
+ before sharing it outside the repository.
29
+
30
+ Tests cover graph/fact equivalence, escaping, script syntax, source URL validation, path bounds,
31
+ cycles and coverage indicators. No real-browser automation or visual accessibility audit has run
32
+ in this cloud environment. This is a bounded inspection tool, not a whole-repository canvas.
33
+
34
+ Future sources such as Figma should enter through `ContextGraphAdapter` / `FactExtractor`,
35
+ preserving stable IDs, source citations, approval boundaries and extraction identity. They must
36
+ produce the same graph records and pass SHACL/projection tests. No Figma adapter is implemented.
@@ -0,0 +1,57 @@
1
+ {
2
+ "sourceCommit": "479f3f5831229634c306c046a6b55c67d190f50f",
3
+ "kind": "advisory-inventory",
4
+ "approval": "Initial existing-debt inventory requested by extraction task; no hard-gate waivers",
5
+ "tools": {
6
+ "dependencyCruiser": "18.7.0",
7
+ "eslint": "10.13.0",
8
+ "jscpd": "5.4.1"
9
+ },
10
+ "findings": [
11
+ {
12
+ "category": "advisory",
13
+ "ruleId": "eslint:complexity",
14
+ "from": "src/cli.ts",
15
+ "to": "43",
16
+ "message": "Async function 'main' has a complexity of 23. Maximum allowed is 20. Size/complexity is a review signal, not proof of modularity.",
17
+ "fingerprint": "44fd67050497f68d00400c8d11246ed898daaa68fe6d13a5612cd208d7a42520",
18
+ "disposition": "new"
19
+ },
20
+ {
21
+ "category": "advisory",
22
+ "ruleId": "eslint:complexity",
23
+ "from": "src/config.ts",
24
+ "to": "87",
25
+ "message": "Function 'validateConfig' has a complexity of 36. Maximum allowed is 20. Size/complexity is a review signal, not proof of modularity.",
26
+ "fingerprint": "5936354742c2edc5b0318cd7bcb79fc9ce00d4d9a1179f904704dfb40ead9311",
27
+ "disposition": "new"
28
+ },
29
+ {
30
+ "category": "advisory",
31
+ "ruleId": "eslint:max-lines",
32
+ "from": "src/query.test.ts",
33
+ "to": "518",
34
+ "message": "File has too many lines (551). Maximum allowed is 500. Size/complexity is a review signal, not proof of modularity.",
35
+ "fingerprint": "cce159e6ca24eb0a5664fdae95979705904f8e1c69aae310dfb0a60beca6d13d",
36
+ "disposition": "new"
37
+ },
38
+ {
39
+ "category": "advisory",
40
+ "ruleId": "eslint:complexity",
41
+ "from": "src/telemetry.ts",
42
+ "to": "84",
43
+ "message": "Async method 'collect' has a complexity of 42. Maximum allowed is 20. Size/complexity is a review signal, not proof of modularity.",
44
+ "fingerprint": "f896c17c33d1a99ac4287c805f067a26f9fb8cf3cf9af10e8239b17abdb556ba",
45
+ "disposition": "new"
46
+ },
47
+ {
48
+ "category": "advisory",
49
+ "ruleId": "eslint:max-lines",
50
+ "from": "src/visualization.ts",
51
+ "to": "529",
52
+ "message": "File has too many lines (635). Maximum allowed is 500. Size/complexity is a review signal, not proof of modularity.",
53
+ "fingerprint": "8db629c5ab9aa7681f447b1acad521abccc3a2db5f79634c298b1741a9866cc4",
54
+ "disposition": "new"
55
+ }
56
+ ]
57
+ }