@weftlet/toolkit 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -0
- package/dist/application/agent-context.d.ts +3 -1
- package/dist/application/agent-context.js +15 -6
- package/dist/application/hydration-plan.d.ts +57 -0
- package/dist/application/hydration-plan.js +79 -0
- package/dist/application/hydrator.js +9 -15
- package/dist/extraction/providers.js +2 -2
- package/dist/extraction/semantic-cache.d.ts +12 -0
- package/dist/extraction/semantic-cache.js +59 -0
- package/dist/extraction/semantic-identity.d.ts +7 -0
- package/dist/extraction/semantic-identity.js +29 -0
- package/dist/extraction/semantic-sources.d.ts +27 -0
- package/dist/extraction/semantic-sources.js +35 -0
- package/dist/extraction/semantic.js +11 -21
- package/dist/graph/rdf.d.ts +1 -1
- package/dist/graph/rdf.js +13 -28
- package/dist/graph/shacl-shapes.d.ts +5 -0
- package/dist/graph/shacl-shapes.js +27 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/interfaces/cli.js +47 -3
- package/dist/repository/git.d.ts +1 -1
- package/dist/repository/git.js +5 -1
- package/docs/ADR-016-hydration-preview.md +91 -0
- package/docs/ADR-017-shacl-validation-union.md +102 -0
- package/docs/RELEASE-1.0-PLAN.md +96 -29
- package/docs/RELEASING.md +17 -6
- package/docs/ROADMAP.md +27 -5
- package/docs/VALIDATION.md +133 -3
- package/docs/WEFTLET-2.0-PLAN.md +9 -8
- package/docs/extraction-manifest.json +21 -10
- package/package.json +3 -2
package/docs/RELEASING.md
CHANGED
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
# Weftlet npm releases
|
|
2
2
|
|
|
3
|
-
`@weftlet/core@0.2.
|
|
3
|
+
`@weftlet/core@0.2.1` and `@weftlet/toolkit@0.2.1` are published through GitHub OIDC.
|
|
4
|
+
[Run 40382864083](https://github.com/jchewitt/weftlet/actions/runs/40382864083) completed
|
|
5
|
+
preparation, publication and release records on its first attempt at commit
|
|
6
|
+
`5d1db91bf19ed493a20849b2d0f92d3aeac35dfe`. Registry archives match the reviewed archives;
|
|
7
|
+
provenance and package tags identify that commit. A fresh public-registry installation passes
|
|
8
|
+
the identity regression, real SCIP/RDF/SHACL, querying and repeat artifact reuse without live
|
|
9
|
+
model calls. [Fix PR #15](https://github.com/jchewitt/weftlet/pull/15) and
|
|
10
|
+
[release PR #16](https://github.com/jchewitt/weftlet/pull/16) record the change. Genuine consumer
|
|
11
|
+
acceptance remains pending in the [1.0 plan](RELEASE-1.0-PLAN.md); detailed upstream evidence
|
|
12
|
+
is in [validation](VALIDATION.md).
|
|
13
|
+
|
|
14
|
+
The earlier 0.2.0 release also used GitHub OIDC.
|
|
4
15
|
[Run 40344526047](https://github.com/jchewitt/weftlet/actions/runs/40344526047) completed at
|
|
5
16
|
commit `ffe7f1d81f0421b35220bd7ba5b1555246c7a0e1`, including registry integrity checks,
|
|
6
17
|
package tags and GitHub Releases. The first attempt published core, then toolkit publication
|
|
@@ -34,8 +45,8 @@ preparation route; native Windows has focused CI coverage. See [validation](VALI
|
|
|
34
45
|
**before** npm publication. Do not manually bump manifests or edit the generated plan.
|
|
35
46
|
4. The plan change triggers **Weftlet release**. It validates and prepares both archives, publishes
|
|
36
47
|
core followed by toolkit using npm trusted publishing, then verifies registry integrity.
|
|
37
|
-
5. After both versions are verified, a separate job creates tags such as `@weftlet/core@0.2.
|
|
38
|
-
and `@weftlet/toolkit@0.2.
|
|
48
|
+
5. After both versions are verified, a separate job creates tags such as `@weftlet/core@0.2.1`
|
|
49
|
+
and `@weftlet/toolkit@0.2.1`, plus corresponding GitHub Releases, at that exact source commit.
|
|
39
50
|
Existing tags are never moved. The publication job does not commit back to main.
|
|
40
51
|
|
|
41
52
|
The bot uses GitHub's built-in token, not a personal access token. GitHub may require Settings →
|
|
@@ -148,7 +159,7 @@ Package-specific tags identify the exact published source, for example:
|
|
|
148
159
|
|
|
149
160
|
```sh
|
|
150
161
|
git fetch --tags
|
|
151
|
-
git switch --detach '@weftlet/toolkit@0.2.
|
|
162
|
+
git switch --detach '@weftlet/toolkit@0.2.1'
|
|
152
163
|
```
|
|
153
164
|
|
|
154
165
|
Tags support inspection and reproduction, not mutation of npm history. To roll a consumer back,
|
|
@@ -158,8 +169,8 @@ Verify a new public release in a fresh disposable project, substituting its vers
|
|
|
158
169
|
|
|
159
170
|
```sh
|
|
160
171
|
npm init -y
|
|
161
|
-
npx --yes @weftlet/toolkit@0.2.
|
|
162
|
-
npx --yes @weftlet/toolkit@0.2.
|
|
172
|
+
npx --yes @weftlet/toolkit@0.2.1 init --yes
|
|
173
|
+
npx --yes @weftlet/toolkit@0.2.1 config validate
|
|
163
174
|
```
|
|
164
175
|
|
|
165
176
|
Check registry hashes, transitive core resolution and provenance. Deprecating the previous
|
package/docs/ROADMAP.md
CHANGED
|
@@ -1,15 +1,37 @@
|
|
|
1
1
|
# Delivery roadmap
|
|
2
2
|
|
|
3
|
+
Source checkpoint: 2026-10-26, before the planned 0.3.0 release. Publication evidence is
|
|
4
|
+
recorded separately in [validation](VALIDATION.md); this roadmap is not a live registry status.
|
|
5
|
+
|
|
3
6
|
Project: `jchewitt/weftlet`. Extraction provenance is recorded in the
|
|
4
7
|
[source inventory](SOURCE-INVENTORY.md).
|
|
5
8
|
|
|
6
9
|
Forward direction is captured in the [Weftlet 2.0 product plan](WEFTLET-2.0-PLAN.md):
|
|
7
10
|
consumer hardening, cited code-derived drafts, scoped approvals and reconciliation, an optional
|
|
8
11
|
review website, source publication, managed AI and guided setup. “2.0” is a planning label;
|
|
9
|
-
the published packages
|
|
10
|
-
[consumer hardening and 1.0 task list](RELEASE-1.0-PLAN.md):
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
the published packages are 0.2.1. The received consumer findings are tracked in the
|
|
13
|
+
[consumer hardening and 1.0 task list](RELEASE-1.0-PLAN.md): the document-identity patch is
|
|
14
|
+
published and passes upstream checks; genuine consumer acceptance remains pending. T02's
|
|
15
|
+
no-model preview is implemented in development source but is not in published 0.2.1. Cache reuse,
|
|
16
|
+
diagnostics and document coverage remain open before official 1.0 acceptance.
|
|
17
|
+
The 2.0 plan distinguishes proposed work from delivered capability.
|
|
18
|
+
|
|
19
|
+
T05 now blocks adoption: the maintainer reports SHACL pushing generation past a 30-minute
|
|
20
|
+
timeout before graph publication. T02 merged in [PR #18](https://github.com/jchewitt/weftlet/pull/18)
|
|
21
|
+
after local and hosted Ubuntu/Windows checks. The focused T05 cold-validation optimization is
|
|
22
|
+
implemented in development source, awaiting validation/release; the other 1.0 features must not
|
|
23
|
+
delay it. Neither increment is in the published 0.2.1 packages.
|
|
24
|
+
|
|
25
|
+
[Hydration planning](ADR-016-hydration-preview.md) shares committed selection and semantic cache
|
|
26
|
+
identity with execution, reports human/JSON scope and work estimates, and preserves source versus
|
|
27
|
+
assertion authority. It performs no model work or graph writes. The current JavaScript validator
|
|
28
|
+
still checks the complete in-memory N3 graph on each hydration; saved queries do not repeat
|
|
29
|
+
validation. [The T05 union optimization](ADR-017-shacl-validation-union.md) indexes all SPO triples
|
|
30
|
+
in one temporary validation graph, preserving the same shapes and canonical named evidence.
|
|
31
|
+
Bounded public experiments measured substantial cold-path improvement, alongside about 1.3 GiB
|
|
32
|
+
RSS at 10,000 unique-node facts. They do not reproduce the private consumer's overall timeout.
|
|
33
|
+
Early checks, in-phase progress, result reuse and incremental validation remain open; no Rust
|
|
34
|
+
engine, graph database or validation-result cache is introduced by this focused release.
|
|
13
35
|
|
|
14
36
|
| Milestone | Delivered and checked | Remaining limits |
|
|
15
37
|
| --- | --- | --- |
|
|
@@ -97,7 +119,7 @@ preparation/publication under `@launch-echo`; the maintainer completed the 0.1.0
|
|
|
97
119
|
source-application reintegration remain outside the authorized scope. See [release instructions](RELEASING.md).
|
|
98
120
|
|
|
99
121
|
The maintainer authorized the Weftlet migration on 2026-10-21. Both `@weftlet/core` and
|
|
100
|
-
`@weftlet/toolkit` are published at 0.2.
|
|
122
|
+
`@weftlet/toolkit` are published at 0.2.1 through GitHub OIDC; the publication and verification
|
|
101
123
|
record is in [validation](VALIDATION.md). Changesets prepares reviewed version PRs for the fixed package group;
|
|
102
124
|
merging a release plan triggers publication and package-specific tags/GitHub Releases.
|
|
103
125
|
See [ADR 009](ADR-009-release-automation.md) and [release instructions](RELEASING.md).
|
package/docs/VALIDATION.md
CHANGED
|
@@ -8,7 +8,101 @@ The milestone entries below record the original cloud checks. Subsequent
|
|
|
8
8
|
establishes live Codex success on Windows and the full deterministic checks on WSL,
|
|
9
9
|
while identifying remaining native Windows issues.
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## T05 cold SHACL validation improvement, 2026-10-26
|
|
12
|
+
|
|
13
|
+
Implemented in development source following the T02 preview merge. Published npm packages
|
|
14
|
+
remain 0.2.1 until a separately recorded release succeeds. [ADR 017](ADR-017-shacl-validation-union.md)
|
|
15
|
+
records the measured graph-wildcard lookup cost and the temporary all-triples union used by the
|
|
16
|
+
unchanged JavaScript SHACL validator. The canonical named dataset and every assertion remain intact.
|
|
17
|
+
|
|
18
|
+
Public synthetic production measurements use Linux/Node 24.19.0, N3 2.7.2 and
|
|
19
|
+
rdf-validate-shacl 0.6.5. Each case ran once in a fresh child process with a 45-second hard deadline:
|
|
20
|
+
|
|
21
|
+
| Facts / topology | Nodes / original quads | Canonical construction | Production validation, including union | Whole-process maximum RSS |
|
|
22
|
+
| --- | --- | ---: | ---: | ---: |
|
|
23
|
+
| 2,000 unique | 4,000 / 56,003 | 0.194 s | 0.779 s | 490 MiB |
|
|
24
|
+
| 10,000 unique | 20,000 / 280,003 | 1.091 s | 2.920 s | 1,638 MiB |
|
|
25
|
+
|
|
26
|
+
Both production cases conform and retain the exact before/after serialized dataset digest.
|
|
27
|
+
The original-path public experiment measured 31.502 seconds of SHACL for the 2,000-fact unique
|
|
28
|
+
case; its 5,000-fact shared case produced no verdict before the 45-second process deadline.
|
|
29
|
+
The ADR records those separate prototype measurements and their boundaries. These are single-run
|
|
30
|
+
measurements, not latency guarantees or a reproduction of the consumer's complete 30-minute run.
|
|
31
|
+
Memory includes libraries, fixture generation and before/after serialization; the production
|
|
32
|
+
harness peaked near 1.6 GiB at 10,000 unique facts. Its legacy comparison also reparses a second
|
|
33
|
+
named store, so its RSS must not be treated as an old-versus-new production memory comparison.
|
|
34
|
+
|
|
35
|
+
Reproduce from a built source checkout with
|
|
36
|
+
`pnpm benchmark:shacl --counts 2000,10000 --topologies unique --modes optimized`.
|
|
37
|
+
The bounded harness records runtime, build hashes, sizes, phase timings, conformance and
|
|
38
|
+
serialization preservation. It exercises the public production validator; no private-store mutation,
|
|
39
|
+
provider call or private consumer data is used. A small paired legacy/optimized smoke agreed;
|
|
40
|
+
a 1 ms deadline probe killed the children and correctly reported no verdict.
|
|
41
|
+
|
|
42
|
+
Local `pnpm context-graph:publication-check` passes: 264 deterministic tests (1 core,
|
|
43
|
+
263 toolkit), one optional OML skip, 12 existing advisory architecture findings, source inventory,
|
|
44
|
+
licenses and fresh packed-consumer CLI/npx/MCP, preview, real SCIP, RDF/SPARQL/SHACL and viewer
|
|
45
|
+
checks. All 79 original source path/hash pairs remain unchanged. No architecture baseline or
|
|
46
|
+
exception was added. The new internal shape module is required in the packed runtime inventory.
|
|
47
|
+
|
|
48
|
+
The 25 new regressions compare complete normalized diagnostics with direct validation of the
|
|
49
|
+
original named dataset. Cases cover empty/duplicate input, kinds, authorities, confidence and
|
|
50
|
+
citation bounds/types/order, empty provenance fields and colliding fact IDs. Separate assertions
|
|
51
|
+
preserve exact serialization, named-graph attributes/citations/review state and `facts()` through
|
|
52
|
+
repeated validation. A 2,200-fact case detects the invalid final assertion without timing gates.
|
|
53
|
+
The existing full hydration integration still verifies that failed SHACL preserves the last head.
|
|
54
|
+
The shape Turtle is byte-for-byte unchanged from the T02 merge; no shape or assertion was dropped.
|
|
55
|
+
|
|
56
|
+
Hosted checks and release status remain pending at this source checkpoint.
|
|
57
|
+
Early identity preflight, in-phase progress, validation-result reuse and incremental validation
|
|
58
|
+
remain separate work. Each hydration still performs full SHACL before publishing; saved queries
|
|
59
|
+
do not repeat validation. Private consumer full hydration/repeat acceptance remains pending.
|
|
60
|
+
|
|
61
|
+
## T02 no-model hydration preview, 2026-10-26
|
|
62
|
+
|
|
63
|
+
Implemented in development source; published npm packages remain 0.2.1. See
|
|
64
|
+
[ADR-016](ADR-016-hydration-preview.md) for source, cache and readiness semantics.
|
|
65
|
+
|
|
66
|
+
[PR 18](https://github.com/jchewitt/weftlet/pull/18) merged at
|
|
67
|
+
`63c70f85b26a6cc60f8bc0615a86f6042a61ecd0`. Its final head
|
|
68
|
+
`6711362f9ff234d65ac3101dcf3ec0b0033519ec` passed hosted Ubuntu and Windows checks in
|
|
69
|
+
[run 40400487168](https://github.com/jchewitt/weftlet/actions/runs/40400487168) and
|
|
70
|
+
[run 40400478490](https://github.com/jchewitt/weftlet/actions/runs/40400478490).
|
|
71
|
+
An earlier Ubuntu run exposed a temporary-fixture cleanup race; disabling automatic Git
|
|
72
|
+
maintenance in that fixture and bounded cleanup retries resolved it before merge.
|
|
73
|
+
|
|
74
|
+
- Local `pnpm context-graph:publication-check` passed: 239 deterministic tests (1 core,
|
|
75
|
+
238 toolkit), one optional OML skip, 12 advisory architecture findings, inventory, licenses
|
|
76
|
+
and fresh packed-consumer checks. No additional architecture baseline or exception was added.
|
|
77
|
+
- Ten independent-repository planner cases cover exact committed bytes despite dirty/untracked
|
|
78
|
+
files, unchanged Git index and filesystem hashes, approved sources versus unreviewed assertions,
|
|
79
|
+
explicit evidence-root classification, empty selection, cold/warm/forced cache, malformed or
|
|
80
|
+
unreadable artifacts, output-digest corruption, budgets, duplicate IDs, missing selectors and
|
|
81
|
+
historical agent selection with explicit omissions. The warm test independently checks the
|
|
82
|
+
literal released 0.2.1 key formula, then verifies actual SemanticHydrator reuse.
|
|
83
|
+
- Two real-process CLI cases cover human/JSON output, blocked and warning-only exit codes,
|
|
84
|
+
historical refs and force preview. Side-effecting provider/adapter modules are never imported;
|
|
85
|
+
unavailable Codex/SCIP/OML configuration does not prevent planning. Source bodies/raw provider
|
|
86
|
+
output are excluded from the plan. No snapshot or artifact directory is created by preview.
|
|
87
|
+
- Existing hydration rename/delete tests still pass, including removal of the last document.
|
|
88
|
+
Explicit empty semantic scope now performs zero semantic extraction even with committed docs
|
|
89
|
+
present. New graph-v6 snapshots remain distinct from old assemblies; valid semantic cache keys
|
|
90
|
+
and output digests retain the 0.2.1 contract.
|
|
91
|
+
- A fresh packed consumer exercises installed `hydrate --plan --json` with absent provider and
|
|
92
|
+
repository adapter modules, selects its committed document, reports one expected extraction,
|
|
93
|
+
and creates no graph storage. The public planner export and every runtime helper are present.
|
|
94
|
+
The remaining installed smoke covers real SCIP, RDF/SPARQL/SHACL, visualization and MCP.
|
|
95
|
+
- Independent review found and resolved an initial selector-gating regression: unmatched selectors
|
|
96
|
+
are warnings, preserving deletion behavior. Incomplete preview scope needs review and exits 1;
|
|
97
|
+
it does not establish a new execution policy. No blocking review finding remains.
|
|
98
|
+
|
|
99
|
+
No paid/live model call, npm publication or private source-application change was made for T02.
|
|
100
|
+
Recursive document coverage and operational-config cache reuse remain separate. This increment
|
|
101
|
+
does not optimize SHACL. The maintainer's report that validation pushes generation past a
|
|
102
|
+
30-minute timeout makes [T05](RELEASE-1.0-PLAN.md#t05--detect-inexpensive-conflicts-early-and-explain-validation-work)
|
|
103
|
+
the next focused release priority; no consumer timing diagnosis is claimed here.
|
|
104
|
+
|
|
105
|
+
## Weftlet 0.2.1 document identity patch, 2026-10-26
|
|
12
106
|
|
|
13
107
|
The public reproduction confirms the reported 0.2.0 defect: two unchanged semantic
|
|
14
108
|
assertions give one repository document ID different kinds and fail single-kind SHACL.
|
|
@@ -16,6 +110,23 @@ assertions give one repository document ID different kinds and fail single-kind
|
|
|
16
110
|
cache contract and immutable snapshot migration. The consumer follow-ups are tracked in
|
|
17
111
|
the [1.0 plan](RELEASE-1.0-PLAN.md).
|
|
18
112
|
|
|
113
|
+
[Fix PR 15](https://github.com/jchewitt/weftlet/pull/15) was validated at
|
|
114
|
+
`42ba9b79dc0562a412cd5a048e42b77234530d94` by both hosted Ubuntu/Windows runs
|
|
115
|
+
[40381728487](https://github.com/jchewitt/weftlet/actions/runs/40381728487) and
|
|
116
|
+
[40381772577](https://github.com/jchewitt/weftlet/actions/runs/40381772577).
|
|
117
|
+
[Release PR 16](https://github.com/jchewitt/weftlet/pull/16) advanced both package versions
|
|
118
|
+
to 0.2.1. Its exact head `da07772110d4c762e3178a7345b426263e14a22f` passed local
|
|
119
|
+
`pnpm release:prepare` and the explicitly dispatched
|
|
120
|
+
[Ubuntu/Windows checks](https://github.com/jchewitt/weftlet/actions/runs/40382270147).
|
|
121
|
+
The bot PR's separate automatic run required GitHub approval; the dispatched run tested
|
|
122
|
+
that same commit and completed successfully.
|
|
123
|
+
|
|
124
|
+
[Trusted-publishing run 40382864083](https://github.com/jchewitt/weftlet/actions/runs/40382864083)
|
|
125
|
+
completed on attempt 1 at merged commit `5d1db91bf19ed493a20849b2d0f92d3aeac35dfe`.
|
|
126
|
+
Both public npm `latest` tags resolve to 0.2.1. Package tags `@weftlet/core@0.2.1`
|
|
127
|
+
and `@weftlet/toolkit@0.2.1`, plus their GitHub Releases, identify that exact commit.
|
|
128
|
+
Main's package versions match the publication.
|
|
129
|
+
|
|
19
130
|
- Local `pnpm context-graph:publication-check` passed: 227 deterministic tests (1 core,
|
|
20
131
|
226 toolkit), one optional OML skip, 12 advisory architecture findings, inventory,
|
|
21
132
|
licenses and a fresh packed-consumer CLI/npx/MCP, real SCIP and RDF/SHACL smoke.
|
|
@@ -31,12 +142,31 @@ the [1.0 plan](RELEASE-1.0-PLAN.md).
|
|
|
31
142
|
mentioned in plain prose retains a cited implementation-gap diagnostic.
|
|
32
143
|
- Independent review found and resolved that missing-path diagnostic regression. No blocking
|
|
33
144
|
findings remained. All 79 original imported source paths and source hashes are preserved.
|
|
145
|
+
- Independent release review inspected the actual core/toolkit archives (11/184 file entries),
|
|
146
|
+
generated versions, changelogs and plan. Runtime assets, public examples and licenses/notices
|
|
147
|
+
are present; no Git history, credentials, caches or private consumer report data were included.
|
|
148
|
+
The packed toolkit dependency is `@weftlet/core: ^0.2.1`.
|
|
149
|
+
- Public npm archives match the hosted prepared archives and locally reviewed archives byte
|
|
150
|
+
for byte. Public SLSA provenance subjects match the SHA-512 archive hashes and identify this
|
|
151
|
+
source commit, repository, `publish.yml` and workflow attempt. This checks provenance content
|
|
152
|
+
and source identity, not a separate cryptographic signature audit.
|
|
153
|
+
- A fresh Linux/Node 24.19.0 public-registry consumer installed only toolkit 0.2.1 directly
|
|
154
|
+
(`npm install --ignore-scripts`); core resolved transitively to 0.2.1. Both package-lock
|
|
155
|
+
registry URLs and integrity hashes matched the reviewed archives. The installed CLI
|
|
156
|
+
initialized and validated an independent public fixture with two source documents. A
|
|
157
|
+
deterministic provider reproduced the legacy conflicting classifications: hydration retained
|
|
158
|
+
2 semantic facts within 17 total facts, including 4 real SCIP facts, and SHACL conformed.
|
|
159
|
+
Cold hydration extracted 2/reused 0; the repeat extracted 0/reused 2 with unchanged snapshot
|
|
160
|
+
identity, content digest and bytes. Impact returned 17 facts and SPARQL returned the four
|
|
161
|
+
canonical document references. Saved queries still worked after the provider was disabled.
|
|
162
|
+
No live model call was made.
|
|
34
163
|
|
|
35
164
|
These are deterministic upstream checks, not live semantic-quality or private consumer
|
|
36
165
|
acceptance results. The consumer's full hydration was stopped after its isolated reproduction;
|
|
37
166
|
no complete consumer SHACL verdict or published snapshot is claimed. Full-graph validation
|
|
38
|
-
latency remains a separate investigation.
|
|
39
|
-
|
|
167
|
+
latency remains a separate investigation. The first refresh requires new semantic extraction;
|
|
168
|
+
historical cache/snapshot files should be retained. T01's upstream patch is published, while
|
|
169
|
+
genuine consumer acceptance and the remaining T02–T07 work are still pending.
|
|
40
170
|
|
|
41
171
|
## Weftlet 0.2.0 publication, 2026-10-26
|
|
42
172
|
|
package/docs/WEFTLET-2.0-PLAN.md
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# Weftlet 2.0 product plan
|
|
2
2
|
|
|
3
3
|
Status: proposed direction captured at the maintainer's request on 2026-10-26.
|
|
4
|
-
|
|
4
|
+
Planning baseline: published `@weftlet/core` and `@weftlet/toolkit` **0.2.0**. The consumer
|
|
5
|
+
identity fix has since shipped in **0.2.1**, with release evidence in
|
|
5
6
|
[VALIDATION.md](VALIDATION.md). **“2.0” names this product plan; it does not announce npm
|
|
6
7
|
version 2.0.0, a delivery date, or a single large release.** Changes should ship through small,
|
|
7
8
|
reviewed milestones using the existing Changesets workflow.
|
|
@@ -48,15 +49,15 @@ Existing gap reports do not establish completeness of a project's business requi
|
|
|
48
49
|
|
|
49
50
|
The maintainer supplied a consumer integration report on 2026-10-26. The
|
|
50
51
|
[consumer hardening and 1.0 task list](RELEASE-1.0-PLAN.md) records its seven items and acceptance
|
|
51
|
-
criteria.
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
criteria. The repository-document identity/kind patch shipped in 0.2.1 and passes upstream
|
|
53
|
+
regressions; genuine consumer acceptance remains pending. Work through the other improvements
|
|
54
|
+
toward an official 1.0 independently of the companion platform described here.
|
|
54
55
|
|
|
55
56
|
| Intake item | Status | Next action |
|
|
56
57
|
| --- | --- | --- |
|
|
57
58
|
| Consumer integration report | Received; task list recorded | Preserve private evidence with the consumer and use public-safe upstream reproductions |
|
|
58
|
-
| Reproduction and severity |
|
|
59
|
-
| Fix/release mapping |
|
|
59
|
+
| Reproduction and severity | Reported identity/kind blocker has a passing upstream regression | Obtain the genuine consumer re-run; keep validation latency a separate investigation |
|
|
60
|
+
| Fix/release mapping | T01 upstream patch published in 0.2.1; T02–T07 remain open | Complete bounded follow-ups and genuine consumer acceptance before official 1.0 |
|
|
60
61
|
|
|
61
62
|
For each finding, retain toolkit/version, repository SHA, relevant configuration and scope,
|
|
62
63
|
exact command or MCP request, expected/actual behavior, logs/exit status, snapshot identity,
|
|
@@ -127,7 +128,7 @@ explicit migration ADR.
|
|
|
127
128
|
|
|
128
129
|
| Milestone | Depends on | Deliverable and completion evidence |
|
|
129
130
|
| --- | --- | --- |
|
|
130
|
-
| **M0 — Consumer hardening** |
|
|
131
|
+
| **M0 — Consumer hardening** | Identity patch 0.2.1 shipped; [1.0 task list](RELEASE-1.0-PLAN.md) | Complete bounded setup/reuse/diagnostics/coverage improvements and genuine consumer acceptance. Release independently of the companion platform. |
|
|
131
132
|
| **M1 — Claims, lineage and approvals** | M0 triage | Versioned records, durable derivation, revision-scoped approvals, actor trust and explicit legacy handling. Prove generated documents cannot acquire approval through paths or repeated extraction. Verify persistence/RDF/projection/query equivalence and old-snapshot readability. |
|
|
132
133
|
| **M2 — Code-derived drafts** | M1 | Opt-in generation for selected TypeScript modules using existing local Codex first; structured candidate claims and Markdown rendered from those claims. Demonstrate no-doc and partial-doc fixtures with citations, unknown rationale, bounded cost, cache reuse and rename/delete invalidation. |
|
|
133
134
|
| **M3 — Decisions and reconciliation** | M1–M2 | Capture explicit accepted requirements/decisions, compare changes from code and documents, distinguish scope differences from conflicts, and propose focused amendments. Demonstrate a resolved documentation disagreement with a remaining implementation gap. |
|
|
@@ -273,7 +274,7 @@ Resolve these decisions in small ADRs as their milestones approach:
|
|
|
273
274
|
|
|
274
275
|
## Next handoff
|
|
275
276
|
|
|
276
|
-
1.
|
|
277
|
+
1. Obtain a genuine consumer re-run of the published 0.2.1 identity/kind patch under M0.
|
|
277
278
|
2. Complete the remaining [1.0 tasks](RELEASE-1.0-PLAN.md) and review acceptance without waiting for the website or managed AI.
|
|
278
279
|
3. Design M1's minimal records and compatibility rules, then implement M2 on bounded public fixtures.
|
|
279
280
|
4. Review real extraction/review results before committing to hosted scope, paid operation or more adapters.
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
"destinationPath": "package.json",
|
|
109
109
|
"sourceSha256": "a575dbb2fed8c554b95e8e9b3e03a0c21cab1be7249860bbebc18e046b2ff78d",
|
|
110
110
|
"modified": true,
|
|
111
|
-
"destinationSha256": "
|
|
111
|
+
"destinationSha256": "95326a545b7d77607bfd841ff009ef58231b8f9c5ae3f2605e1dac95c9995c4d"
|
|
112
112
|
},
|
|
113
113
|
{
|
|
114
114
|
"sourcePath": "tools/context-graph/packages/core/LICENSE",
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
"destinationPath": "packages/core/package.json",
|
|
144
144
|
"sourceSha256": "2a29066eb8452f22fafcb06bb035a84dda93c5705dba32aba600a1b7e5aaf19c",
|
|
145
145
|
"modified": true,
|
|
146
|
-
"destinationSha256": "
|
|
146
|
+
"destinationSha256": "4fe851d728bc96fc25bb31295b4705560691f384d887e7ed714e943fae4e69b3"
|
|
147
147
|
},
|
|
148
148
|
{
|
|
149
149
|
"sourcePath": "tools/context-graph/packages/core/src/core.ts",
|
|
@@ -192,7 +192,7 @@
|
|
|
192
192
|
"destinationPath": "scripts/check-publication.mjs",
|
|
193
193
|
"sourceSha256": "88692c21d34cef2d2e5b20c92ab3ec26cbe6336889dbb7b534c681ded7f466b2",
|
|
194
194
|
"modified": true,
|
|
195
|
-
"destinationSha256": "
|
|
195
|
+
"destinationSha256": "5d68e9efc168600f8daaef5e1f34911990257972acc100e91875dcb194ef7cc2"
|
|
196
196
|
},
|
|
197
197
|
{
|
|
198
198
|
"sourcePath": "tools/context-graph/scripts/generate-third-party-notices.mjs",
|
|
@@ -213,7 +213,7 @@
|
|
|
213
213
|
"destinationPath": "src/application/agent-context.ts",
|
|
214
214
|
"sourceSha256": "0a45ce6d878f3c2c19a1707b799e8c1d6e9e99ab5cb068aa73088b32f420aa23",
|
|
215
215
|
"modified": true,
|
|
216
|
-
"destinationSha256": "
|
|
216
|
+
"destinationSha256": "9c5778d66ed674c87a25ce132379e14805c00cd98ff76bc31f4e06151bec7430"
|
|
217
217
|
},
|
|
218
218
|
{
|
|
219
219
|
"sourcePath": "tools/context-graph/src/application.test.ts",
|
|
@@ -241,7 +241,7 @@
|
|
|
241
241
|
"destinationPath": "src/interfaces/cli.ts",
|
|
242
242
|
"sourceSha256": "c68f5f35a5325cc03811b0d4ffb6d58c31a9b4e6115fcb2c5e4fda9560a34714",
|
|
243
243
|
"modified": true,
|
|
244
|
-
"destinationSha256": "
|
|
244
|
+
"destinationSha256": "fef7af32de49f73c4ade5f48a84c3a5db1e52171949cfdcd84720bf5e194b901"
|
|
245
245
|
},
|
|
246
246
|
{
|
|
247
247
|
"sourcePath": "tools/context-graph/src/config.test.ts",
|
|
@@ -297,7 +297,7 @@
|
|
|
297
297
|
"destinationPath": "src/repository/git.ts",
|
|
298
298
|
"sourceSha256": "484d3986633bb32ccc3b665f2144007a213c303df51b375c1d653729921d6d2c",
|
|
299
299
|
"modified": true,
|
|
300
|
-
"destinationSha256": "
|
|
300
|
+
"destinationSha256": "2557d47d1c54a6bbefc61d16eac4a4d16f995adadb480130ea39f558ce3522f1"
|
|
301
301
|
},
|
|
302
302
|
{
|
|
303
303
|
"sourcePath": "tools/context-graph/src/glob.ts",
|
|
@@ -311,21 +311,21 @@
|
|
|
311
311
|
"destinationPath": "src/application/hydrator.test.ts",
|
|
312
312
|
"sourceSha256": "95f20a526fe69ce3a506ef01da1c20827e09d631a34126e781a07979cc43de07",
|
|
313
313
|
"modified": true,
|
|
314
|
-
"destinationSha256": "
|
|
314
|
+
"destinationSha256": "d3c3e4e18adb571d7b9ef5232f10173344c1f6ae126ba76e50c2e32584782709"
|
|
315
315
|
},
|
|
316
316
|
{
|
|
317
317
|
"sourcePath": "tools/context-graph/src/hydrator.ts",
|
|
318
318
|
"destinationPath": "src/application/hydrator.ts",
|
|
319
319
|
"sourceSha256": "bb41c5b53b26da10274d8b967b99c78ff12b485df16bfc66445252e35c94fb9d",
|
|
320
320
|
"modified": true,
|
|
321
|
-
"destinationSha256": "
|
|
321
|
+
"destinationSha256": "1bb8c8481706590f1d994baf6d48818dc76dec014d9e583ee3ae5b5c9aaa265f"
|
|
322
322
|
},
|
|
323
323
|
{
|
|
324
324
|
"sourcePath": "tools/context-graph/src/index.ts",
|
|
325
325
|
"destinationPath": "src/index.ts",
|
|
326
326
|
"sourceSha256": "a3545649f67fc0bf0496298e3f1dca1e91aa7cb68ec112c34b99a5785fa83f3c",
|
|
327
327
|
"modified": true,
|
|
328
|
-
"destinationSha256": "
|
|
328
|
+
"destinationSha256": "9f986584ecba26d9b78b52aff19b07f4c572686d35f4363e06fa70b17756e704"
|
|
329
329
|
},
|
|
330
330
|
{
|
|
331
331
|
"sourcePath": "tools/context-graph/src/mcp-facade.ts",
|
|
@@ -451,7 +451,7 @@
|
|
|
451
451
|
"destinationPath": "src/extraction/semantic.ts",
|
|
452
452
|
"sourceSha256": "1a41fb3fc5a9508c76be59d1c50b74d70ec96411fcbb7f63b0e098c1813d8473",
|
|
453
453
|
"modified": true,
|
|
454
|
-
"destinationSha256": "
|
|
454
|
+
"destinationSha256": "214d0378b75af7d4960b06981b165da19a37c2ebccb34f8ffa485ca86776f94f"
|
|
455
455
|
},
|
|
456
456
|
{
|
|
457
457
|
"sourcePath": "tools/context-graph/src/snapshot-checks.test.ts",
|
|
@@ -608,6 +608,8 @@
|
|
|
608
608
|
"docs/ADR-013-relative-module-requests.md",
|
|
609
609
|
"docs/ADR-014-routing-declarations.md",
|
|
610
610
|
"docs/ADR-015-repository-document-identity.md",
|
|
611
|
+
"docs/ADR-016-hydration-preview.md",
|
|
612
|
+
"docs/ADR-017-shacl-validation-union.md",
|
|
611
613
|
"docs/CLOUD-ENVIRONMENT.md",
|
|
612
614
|
"docs/CONSUMER-TRIAL.md",
|
|
613
615
|
"docs/ENVIRONMENT-VALIDATION.md",
|
|
@@ -700,6 +702,7 @@
|
|
|
700
702
|
"reviewed-licenses.json",
|
|
701
703
|
"runtime-check.d.mts",
|
|
702
704
|
"runtime-check.mjs",
|
|
705
|
+
"scripts/benchmark-shacl.mjs",
|
|
703
706
|
"scripts/check-release-plan.mjs",
|
|
704
707
|
"scripts/check-restoration.mjs",
|
|
705
708
|
"scripts/clean-build.mjs",
|
|
@@ -731,6 +734,7 @@
|
|
|
731
734
|
"scripts/update-inventory.mjs",
|
|
732
735
|
"scripts/version-packages.mjs",
|
|
733
736
|
"scripts/version-packages.test.ts",
|
|
737
|
+
"src/application/hydration-plan.ts",
|
|
734
738
|
"src/application/overlay.test.ts",
|
|
735
739
|
"src/application/overlay.ts",
|
|
736
740
|
"src/application/saved-evidence.ts",
|
|
@@ -752,16 +756,21 @@
|
|
|
752
756
|
"src/extraction/routing.ts",
|
|
753
757
|
"src/extraction/scip-project.test.ts",
|
|
754
758
|
"src/extraction/scip-project.ts",
|
|
759
|
+
"src/extraction/semantic-cache.ts",
|
|
760
|
+
"src/extraction/semantic-identity.ts",
|
|
755
761
|
"src/extraction/semantic-process.test.ts",
|
|
756
762
|
"src/extraction/semantic-process.ts",
|
|
763
|
+
"src/extraction/semantic-sources.ts",
|
|
757
764
|
"src/governance/governance.test.ts",
|
|
758
765
|
"src/governance/governance.ts",
|
|
759
766
|
"src/graph/authority.ts",
|
|
760
767
|
"src/graph/ranking.test.ts",
|
|
761
768
|
"src/graph/ranking.ts",
|
|
762
769
|
"src/graph/rdf.ts",
|
|
770
|
+
"src/graph/shacl-shapes.ts",
|
|
763
771
|
"src/infrastructure/module-resolution.ts",
|
|
764
772
|
"src/interfaces/doctor.ts",
|
|
773
|
+
"src/interfaces/hydration-plan.test.ts",
|
|
765
774
|
"src/interfaces/init.test.ts",
|
|
766
775
|
"src/interfaces/init.ts",
|
|
767
776
|
"src/mcp.ts",
|
|
@@ -773,12 +782,14 @@
|
|
|
773
782
|
"src/telemetry.ts",
|
|
774
783
|
"src/visualization/viewer-interaction.ts",
|
|
775
784
|
"tests/architecture.test.ts",
|
|
785
|
+
"tests/hydration-plan.test.ts",
|
|
776
786
|
"tests/module-boundaries.test.ts",
|
|
777
787
|
"tests/rdf-ontology.test.ts",
|
|
778
788
|
"tests/rdf.test.ts",
|
|
779
789
|
"tests/routing.test.ts",
|
|
780
790
|
"tests/runtime.test.ts",
|
|
781
791
|
"tests/semantic-identity.test.ts",
|
|
792
|
+
"tests/shacl-validation.test.ts",
|
|
782
793
|
"tests/snapshot-lifecycle.test.ts"
|
|
783
794
|
],
|
|
784
795
|
"publicationAuthorization": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@weftlet/toolkit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Evidence-backed context graphs for AI development agents: product intent, contracts, code, tests and runtime behavior",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"n3": "2.7.2",
|
|
64
64
|
"rdf-validate-shacl": "0.6.5",
|
|
65
65
|
"sparqljs": "3.7.4",
|
|
66
|
-
"@weftlet/core": "^0.
|
|
66
|
+
"@weftlet/core": "^0.3.0"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|
|
69
69
|
"@changesets/cli": "3.0.3",
|
|
@@ -118,6 +118,7 @@
|
|
|
118
118
|
"release:publish": "node scripts/release.mjs --publish",
|
|
119
119
|
"govern": "tsx src/cli.ts govern --policy architecture.policy.json --output .context-graph/architecture-report.json",
|
|
120
120
|
"evaluate:impact": "tsx scripts/evaluation/run.ts",
|
|
121
|
+
"benchmark:shacl": "node scripts/benchmark-shacl.mjs",
|
|
121
122
|
"weftlet": "tsx src/cli.ts",
|
|
122
123
|
"changeset": "changeset",
|
|
123
124
|
"release:version": "node scripts/version-packages.mjs"
|