@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.
- package/LICENSE +176 -0
- package/NOTICE +6 -0
- package/README.md +155 -2
- package/THIRD_PARTY_NOTICES.md +610 -0
- package/dist/application/agent-context.d.ts +23 -0
- package/dist/application/agent-context.js +94 -0
- package/dist/application/application.d.ts +23 -0
- package/dist/application/application.js +91 -0
- package/dist/application/hydrator.d.ts +49 -0
- package/dist/application/hydrator.js +275 -0
- package/dist/application/overlay.d.ts +6 -0
- package/dist/application/overlay.js +110 -0
- package/dist/application/saved-evidence.d.ts +38 -0
- package/dist/application/saved-evidence.js +59 -0
- package/dist/application/snapshot-checks.d.ts +16 -0
- package/dist/application/snapshot-checks.js +51 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.js +4 -0
- package/dist/configuration/cache.d.ts +2 -0
- package/dist/configuration/cache.js +10 -0
- package/dist/configuration/config.d.ts +79 -0
- package/dist/configuration/config.js +165 -0
- package/dist/core.d.ts +1 -0
- package/dist/core.js +2 -0
- package/dist/extraction/codex-auth.d.ts +12 -0
- package/dist/extraction/codex-auth.js +74 -0
- package/dist/extraction/document.d.ts +5 -0
- package/dist/extraction/document.js +54 -0
- package/dist/extraction/ontology.d.ts +32 -0
- package/dist/extraction/ontology.js +164 -0
- package/dist/extraction/providers.d.ts +8 -0
- package/dist/extraction/providers.js +58 -0
- package/dist/extraction/runtime-evidence.d.ts +2 -0
- package/dist/extraction/runtime-evidence.js +84 -0
- package/dist/extraction/semantic-citations.d.ts +7 -0
- package/dist/extraction/semantic-citations.js +27 -0
- package/dist/extraction/semantic-process.d.ts +11 -0
- package/dist/extraction/semantic-process.js +68 -0
- package/dist/extraction/semantic.d.ts +73 -0
- package/dist/extraction/semantic.js +414 -0
- package/dist/extraction/static.d.ts +52 -0
- package/dist/extraction/static.js +322 -0
- package/dist/extraction/telemetry.d.ts +19 -0
- package/dist/extraction/telemetry.js +259 -0
- package/dist/governance/governance.d.ts +60 -0
- package/dist/governance/governance.js +209 -0
- package/dist/graph/authority.d.ts +2 -0
- package/dist/graph/authority.js +13 -0
- package/dist/graph/diagnostics.d.ts +5 -0
- package/dist/graph/diagnostics.js +61 -0
- package/dist/graph/query.d.ts +16 -0
- package/dist/graph/query.js +373 -0
- package/dist/graph/rdf.d.ts +26 -0
- package/dist/graph/rdf.js +144 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +12 -0
- package/dist/infrastructure/module-resolution.d.ts +2 -0
- package/dist/infrastructure/module-resolution.js +10 -0
- package/dist/infrastructure/process.d.ts +5 -0
- package/dist/infrastructure/process.js +27 -0
- package/dist/infrastructure/util.d.ts +1 -0
- package/dist/infrastructure/util.js +2 -0
- package/dist/interfaces/cli.d.ts +4 -0
- package/dist/interfaces/cli.js +197 -0
- package/dist/interfaces/doctor.d.ts +25 -0
- package/dist/interfaces/doctor.js +49 -0
- package/dist/interfaces/init.d.ts +24 -0
- package/dist/interfaces/init.js +154 -0
- package/dist/interfaces/mcp-facade.d.ts +3 -0
- package/dist/interfaces/mcp-facade.js +4 -0
- package/dist/interfaces/mcp.d.ts +2 -0
- package/dist/interfaces/mcp.js +81 -0
- package/dist/interfaces/request.d.ts +2 -0
- package/dist/interfaces/request.js +59 -0
- package/dist/mcp.d.ts +3 -0
- package/dist/mcp.js +4 -0
- package/dist/repository/committed-tree.d.ts +2 -0
- package/dist/repository/committed-tree.js +35 -0
- package/dist/repository/git.d.ts +26 -0
- package/dist/repository/git.js +163 -0
- package/dist/repository/glob.d.ts +2 -0
- package/dist/repository/glob.js +46 -0
- package/dist/repository/working-content.d.ts +3 -0
- package/dist/repository/working-content.js +34 -0
- package/dist/storage/atomic-rename.d.ts +2 -0
- package/dist/storage/atomic-rename.js +22 -0
- package/dist/storage/storage.d.ts +15 -0
- package/dist/storage/storage.js +115 -0
- package/dist/telemetry.d.ts +1 -0
- package/dist/telemetry.js +2 -0
- package/dist/visualization/viewer-interaction.d.ts +12 -0
- package/dist/visualization/viewer-interaction.js +123 -0
- package/dist/visualization/visualization.d.ts +26 -0
- package/dist/visualization/visualization.js +491 -0
- package/docs/ADR-001-standalone-baseline.md +16 -0
- package/docs/ADR-002-saved-evidence.md +21 -0
- package/docs/ADR-003-draft-overlays.md +23 -0
- package/docs/ADR-004-rdf-query-path.md +37 -0
- package/docs/ADR-005-governance-and-optional-oml.md +37 -0
- package/docs/ADR-006-provider-boundaries.md +15 -0
- package/docs/ADR-007-toolkit-modules.md +53 -0
- package/docs/ADR-008-weftlet-packages.md +32 -0
- package/docs/CLOUD-ENVIRONMENT.md +56 -0
- package/docs/ENVIRONMENT-VALIDATION.md +78 -0
- package/docs/MIGRATING-TO-WEFTLET.md +54 -0
- package/docs/PROVIDERS.md +121 -0
- package/docs/RELEASING.md +144 -0
- package/docs/ROADMAP.md +53 -0
- package/docs/SOURCE-INVENTORY.md +48 -0
- package/docs/VALIDATION.md +490 -0
- package/docs/VIEWER.md +36 -0
- package/docs/architecture-baseline.json +57 -0
- package/docs/architecture-policy.md +41 -0
- package/docs/extraction-manifest.json +721 -0
- package/docs/licenses/REVIEW.md +16 -0
- package/docs/licenses/lru-cache-11.5.3-BlueOak.md +55 -0
- package/docs/licenses/negotiate-1.0.1-BSD.txt +22 -0
- package/docs/licenses/spark-md5-3.0.2-MIT.txt +7 -0
- package/examples/generic-typescript/context-graph.config.json +47 -0
- package/examples/generic-typescript/context-graph.oml.config.json +49 -0
- package/examples/generic-typescript/docs/search-capability.md +14 -0
- package/examples/generic-typescript/ontology/build.gradle +38 -0
- package/examples/generic-typescript/ontology/catalog.xml +5 -0
- package/examples/generic-typescript/ontology/settings.gradle +1 -0
- package/examples/generic-typescript/ontology/src/oml/context-graph.dev/core.oml +99 -0
- package/examples/generic-typescript/package.json +6 -0
- package/examples/generic-typescript/src/search.ts +11 -0
- package/examples/generic-typescript/test/search.test.ts +8 -0
- package/examples/generic-typescript/tsconfig.json +10 -0
- package/examples/pipeline/context-graph.config.json +49 -0
- package/examples/pipeline/docs/admission.md +6 -0
- package/examples/pipeline/docs/analysis.md +6 -0
- package/examples/pipeline/docs/discovery.md +6 -0
- package/examples/pipeline/docs/execution.md +6 -0
- package/examples/pipeline/docs/outcomes.md +6 -0
- package/examples/pipeline/docs/planning.md +6 -0
- package/examples/pipeline/package.json +6 -0
- package/examples/pipeline/src/admission.ts +9 -0
- package/examples/pipeline/src/analysis.ts +9 -0
- package/examples/pipeline/src/contracts/admission.ts +1 -0
- package/examples/pipeline/src/contracts/analysis.ts +1 -0
- package/examples/pipeline/src/contracts/discovery.ts +1 -0
- package/examples/pipeline/src/contracts/execution.ts +1 -0
- package/examples/pipeline/src/contracts/outcomes.ts +1 -0
- package/examples/pipeline/src/contracts/planning.ts +1 -0
- package/examples/pipeline/src/discovery.ts +9 -0
- package/examples/pipeline/src/execution.ts +9 -0
- package/examples/pipeline/src/outcomes.ts +9 -0
- package/examples/pipeline/src/planning.ts +9 -0
- package/examples/pipeline/src/queue.ts +12 -0
- package/examples/pipeline/test/pipeline.test.ts +17 -0
- package/examples/pipeline/tsconfig.json +12 -0
- package/package.json +116 -3
- package/runtime-check.d.mts +2 -0
- package/runtime-check.mjs +12 -0
- package/templates/context-graph-development/SKILL.md +37 -0
- 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
|
+
}
|