@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,53 @@
|
|
|
1
|
+
# ADR 007: organize the toolkit by responsibility
|
|
2
|
+
|
|
3
|
+
Status: implemented as a behavior-preserving refactor after public release 0.1.0.
|
|
4
|
+
The user requested internal module organization after publication. Additional internal
|
|
5
|
+
dependency rules are proposed/advisory; the existing approved neutral-core gates remain hard.
|
|
6
|
+
|
|
7
|
+
The extraction baseline retained a flat toolkit source tree. With extraction, graph queries,
|
|
8
|
+
snapshot handling, providers, presentation and governance now present, that layout hid useful
|
|
9
|
+
boundaries. Keep the two-package distribution and give each responsibility an internal module.
|
|
10
|
+
Do not turn directory organization into a new backend migration or public API redesign.
|
|
11
|
+
|
|
12
|
+
| Module | Responsibility and interfaces |
|
|
13
|
+
| --- | --- |
|
|
14
|
+
| `configuration` | Load/validate portable configuration and resolve cache locations. |
|
|
15
|
+
| `repository` | Read Git evidence, materialize committed trees, select files and identify working content. |
|
|
16
|
+
| `infrastructure` | Process execution, consumer module resolution and shared neutral utilities. |
|
|
17
|
+
| `storage` | Read/write graph snapshots and extraction artifacts; no application orchestration. |
|
|
18
|
+
| `graph` | Evidence authority, RDF representation, queries and diagnostics over supplied evidence. |
|
|
19
|
+
| `extraction` | Prose/providers/citations, TypeScript SCIP, runtime evidence and ontology compilation. |
|
|
20
|
+
| `application` | Assemble adapters and services; orchestrate hydration, saved evidence, overlays and freshness checks. |
|
|
21
|
+
| `interfaces` | CLI/MCP transport, request parsing, setup and diagnostics commands. |
|
|
22
|
+
| `governance` | Translate the canonical policy into dependency analysis and evidence-backed reports. |
|
|
23
|
+
| `visualization` | Render the same queried evidence and viewer interactions. |
|
|
24
|
+
|
|
25
|
+
The toolkit's internal modules consume the neutral `@launch-echo/tently-core` contracts
|
|
26
|
+
directly. Internal callers import the specific module they need; there are no new blanket
|
|
27
|
+
module barrels or additional npm packages. The small root files preserve the supported
|
|
28
|
+
library, core and telemetry exports and executable locations. Imports into private `dist/`
|
|
29
|
+
implementation paths are not public package exports; the installed-consumer test uses the
|
|
30
|
+
new internal SCIP path explicitly. Public entry points and exported names remain unchanged.
|
|
31
|
+
|
|
32
|
+
Unit/module tests remain beside the implementation. Cross-module, installation/startup and
|
|
33
|
+
portability tests live in `tests/`; release-helper tests live beside the scripts. The product
|
|
34
|
+
independence test scans nested runtime files recursively. Moving tests must not reduce the
|
|
35
|
+
suite's coverage. A clean build removes obsolete compiled files before compiling either
|
|
36
|
+
package, preventing old flat modules from being shipped beside the new layout.
|
|
37
|
+
|
|
38
|
+
`architecture.policy.json` now maps individual modules and proposes executable restrictions:
|
|
39
|
+
evidence/infrastructure modules must not depend on application or presentation; graph queries
|
|
40
|
+
must not reach into extraction or persistence; storage and repository must not depend on higher
|
|
41
|
+
evidence modules; implementation must not import the public/CLI entry points. These rules
|
|
42
|
+
exclude test files as import origins so integration tests can exercise several modules.
|
|
43
|
+
Rules are advisory until the owner explicitly approves them. No new approval, baseline or
|
|
44
|
+
exception is inferred from a file move. Historical debt fingerprints and source inventory
|
|
45
|
+
hashes remain intact; inventory destination paths follow moved files.
|
|
46
|
+
|
|
47
|
+
This does not split large functions, remove complexity findings, change graph semantics,
|
|
48
|
+
change snapshot identities/formats, fix the outstanding native Windows issues or publish
|
|
49
|
+
another npm release. The published 0.1.0 archives remain immutable; this development change
|
|
50
|
+
needs a new version before future publication.
|
|
51
|
+
|
|
52
|
+
Package naming update: the original `@launch-echo/tently-core` boundary is now `@weftlet/core`;
|
|
53
|
+
see [ADR 008](ADR-008-weftlet-packages.md). This does not change the module decision above.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# ADR 008: Weftlet package identity and publishing
|
|
2
|
+
|
|
3
|
+
Status: accepted by the maintainer, 2026-10-21. Publication and trusted-publisher validation are pending.
|
|
4
|
+
|
|
5
|
+
Use `@weftlet/core` for neutral contracts and `@weftlet/toolkit` for the implementation, CLI and
|
|
6
|
+
MCP server. Both new package names start at 0.1.0; npm versions belong to each package name, so
|
|
7
|
+
this does not replace or reuse the published Tently archives. The primary executable is `weftlet`.
|
|
8
|
+
Keep `context-graph` and `context-graph-mcp` aliases, configuration paths, graph identities and
|
|
9
|
+
public library exports compatible. Provide `toolkit` as the npm executable-inference alias and
|
|
10
|
+
`weftlet-mcp` as the branded MCP command. The maintainer subsequently renamed the destination
|
|
11
|
+
repository to `jchewitt/weftlet` on 2026-10-21; npm trusted publishing must use the new repository name.
|
|
12
|
+
|
|
13
|
+
New package scope ownership was confirmed by the maintainer. Previous release evidence remains
|
|
14
|
+
recorded under its actual package names and commits. Preserve the extraction inventory, licenses
|
|
15
|
+
and LaunchEcho attribution; no source repository work is part of this change.
|
|
16
|
+
|
|
17
|
+
Release through an explicitly dispatched GitHub workflow. A preparation job with read-only
|
|
18
|
+
repository permissions installs, validates and packs the source; an environment-gated publication
|
|
19
|
+
job receives those exact artifacts and OIDC permission without installing project dependencies.
|
|
20
|
+
Archive integrity and source commit are verified before publication. Main-branch restriction,
|
|
21
|
+
serialized runs and configured environment reviewers constrain release initiation and approval.
|
|
22
|
+
The workflow defaults to preparation only. npm configuration must authorize the exact repository,
|
|
23
|
+
workflow and environment separately for each package.
|
|
24
|
+
|
|
25
|
+
Retain a normal npm login path for the initial publication and local recovery. OIDC mode is
|
|
26
|
+
explicit, requires a supported npm version and GitHub-hosted context, rejects ambient token
|
|
27
|
+
variables, isolates npm user/global configuration and skips `npm whoami`, which does not validate
|
|
28
|
+
OIDC publication rights. The registry verifies the identity; local preconditions are not proof of
|
|
29
|
+
trusted publishing. Publication is sequential and resumable, not atomic across the two packages.
|
|
30
|
+
|
|
31
|
+
Do not deprecate or unpublish old packages during preparation. Verify public replacement installs
|
|
32
|
+
first. Follow [release instructions](RELEASING.md) and [consumer migration](MIGRATING-TO-WEFTLET.md).
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Cloud development environment
|
|
2
|
+
|
|
3
|
+
Destination: `/workspace/tently`, `github.com/jchewitt/weftlet`.
|
|
4
|
+
The checkout mount retains its original name; the GitHub repository was renamed on 2026-10-21.
|
|
5
|
+
Tested: Linux, Node 24.19.0 and pnpm 10.18.2. `scripts/cloud-install.sh` installs the pinned
|
|
6
|
+
package manager into a writable workspace tool directory, sets writable caches, installs the
|
|
7
|
+
frozen lockfile and builds the neutral core/toolkit.
|
|
8
|
+
|
|
9
|
+
Start each shell session with:
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
export PATH=/workspace/context-graph-tools/node_modules/.bin:$PATH
|
|
13
|
+
export npm_config_store_dir=/workspace/.pnpm-store
|
|
14
|
+
export npm_config_cache=/workspace/.npm-cache
|
|
15
|
+
export XDG_CACHE_HOME=/workspace/.cache
|
|
16
|
+
cd /workspace/tently
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Use `pnpm context-graph:publication-check` for the deterministic build/test/governance/license/
|
|
20
|
+
inventory/installed-package gate. It does not publish. Use `node dist/cli.js doctor` to inspect
|
|
21
|
+
readiness. No background web server is required. MCP is a stdio process launched by its client;
|
|
22
|
+
use `node mcp-launcher.mjs` for development, with `CONTEXT_GRAPH_CONFIG` pointing at the consumer
|
|
23
|
+
configuration. Installed clients run `context-graph-mcp` directly.
|
|
24
|
+
|
|
25
|
+
Saved snapshot queries require no model or Docker. Refresh is explicit and operates on committed
|
|
26
|
+
inputs without changing the active checkout. Draft overlays are a separate explicit command.
|
|
27
|
+
The configured default ontology backend is RDF. Live Codex extraction is blocked here by an
|
|
28
|
+
immediate read-only filesystem error; authenticated login alone did not establish readiness.
|
|
29
|
+
Do not copy credentials or alter the managed CLI home to work around it.
|
|
30
|
+
|
|
31
|
+
The source was inspected read-only at the recorded SHA in temporary storage. It is not an
|
|
32
|
+
environment project checkout or an application dependency. No source installation, build, service
|
|
33
|
+
restart, branch change or remote write occurred.
|
|
34
|
+
|
|
35
|
+
The user authorized pushing reviewed destination commits to `jchewitt/tently` on 2026-10-20.
|
|
36
|
+
A fresh Git clone is the portable route for local testing. Cloud environment publication alone
|
|
37
|
+
does not publish repository commits or prove fresh-task restoration; those are separate checks.
|
|
38
|
+
Saving an environment draft does not apply/publish it. Review and activate it through environment
|
|
39
|
+
settings separately from any repository/package publication decision.
|
|
40
|
+
|
|
41
|
+
Optional npm publication uses the secure `WEFTLET_NPM_TOKEN` environment binding, scoped to
|
|
42
|
+
`registry.npmjs.org`. The older draft may still list `TENTLY_NPM_TOKEN`, which remains supported
|
|
43
|
+
as a compatibility alias. Neither secret is needed for development, validation, local npm login
|
|
44
|
+
or GitHub OIDC publication; no new cloud token requirement was added for the rename. See `RELEASING.md` for the publisher's temporary npm
|
|
45
|
+
configuration and archive verification. No credential value belongs in this repository.
|
|
46
|
+
|
|
47
|
+
See [environment validation](ENVIRONMENT-VALIDATION.md) for the hosted CI evidence, fresh-task
|
|
48
|
+
restoration procedure and browser-MCP checklist. These checks do not require live Codex.
|
|
49
|
+
|
|
50
|
+
Current package identity is Weftlet (`@weftlet/core`, `@weftlet/toolkit`). The checkout stays at
|
|
51
|
+
`/workspace/tently`; GitHub is now `jchewitt/weftlet`. GitHub OIDC publishing is configured separately through
|
|
52
|
+
`publish.yml` and the `npm-release` environment; no cloud npm token is required for that path.
|
|
53
|
+
See [releasing](RELEASING.md). Live auth validation remains tentative and non-blocking.
|
|
54
|
+
|
|
55
|
+
The architecture configuration retains `jchewitt/tently` as its stable graph repository ID.
|
|
56
|
+
This is an evidence identity, not a Git remote; renaming GitHub does not invalidate saved graphs.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Remaining environment validation
|
|
2
|
+
|
|
3
|
+
macOS is outside the maintainer's current validation scope. Treat the following checks
|
|
4
|
+
separately; a live model provider is not a prerequisite for deterministic development.
|
|
5
|
+
|
|
6
|
+
## Hosted CI: verified
|
|
7
|
+
|
|
8
|
+
GitHub-hosted Ubuntu run [39492039168](https://github.com/jchewitt/weftlet/actions/runs/39492039168)
|
|
9
|
+
completed successfully at `92ae118ccb22f59aaa150b1c8f3a009bdacc788a`. Its `deterministic` job
|
|
10
|
+
ran checkout and the repository's composite action. That action selects Node 24 / pnpm
|
|
11
|
+
10.18.2, installs the frozen lockfile and runs the complete publication gate, including the
|
|
12
|
+
packed-consumer smoke. It neither publishes packages nor invokes a live model. Codex/npm
|
|
13
|
+
publication credentials and the managed cloud filesystem are not needed by this job.
|
|
14
|
+
|
|
15
|
+
## Fresh cloud: requires a new task
|
|
16
|
+
|
|
17
|
+
Before publishing the current environment snapshot:
|
|
18
|
+
|
|
19
|
+
1. Commit/push destination work and confirm the reusable install/start instructions are current.
|
|
20
|
+
2. Run `bash scripts/cloud-install.sh` and `pnpm govern` using the shell exports in
|
|
21
|
+
`CLOUD-ENVIRONMENT.md`.
|
|
22
|
+
3. Run `node scripts/check-restoration.mjs --checkpoint`, then `--verify` as a local rehearsal.
|
|
23
|
+
This retains a public repository snapshot, its digest and a query configuration with an
|
|
24
|
+
intentionally unavailable model provider under ignored `.context-graph/`.
|
|
25
|
+
4. Save/publish the environment configuration through the cloud UI. A draft save alone does
|
|
26
|
+
not apply it or create a restored environment.
|
|
27
|
+
|
|
28
|
+
Open a genuinely new cloud task using that published environment and this destination repo.
|
|
29
|
+
An additional shell or a fresh clone in the same machine does not establish platform restoration.
|
|
30
|
+
Give the new task this instruction:
|
|
31
|
+
|
|
32
|
+
> Validate restoration using docs/ENVIRONMENT-VALIDATION.md. Record the actual environment,
|
|
33
|
+
> repository SHA and tool versions. Before rebuilding or running governance, run the saved
|
|
34
|
+
> evidence verification. Do not regenerate a missing checkpoint, install missing dependencies,
|
|
35
|
+
> call a model, publish packages or change tracked files to conceal a restoration failure.
|
|
36
|
+
> Then run the deterministic publication gate and record results and missing prerequisites.
|
|
37
|
+
|
|
38
|
+
In that new task:
|
|
39
|
+
|
|
40
|
+
- Check cwd/origin/SHA, Node 24+, pnpm 10.18.2, dependency availability and writable workspace
|
|
41
|
+
caches. Apply the saved shell exports, without assuming exported variables or processes survived.
|
|
42
|
+
- Run `node scripts/check-restoration.mjs --verify` **first**. It checks the saved content hash
|
|
43
|
+
and queries that exact snapshot despite the unavailable provider. Historical/configuration
|
|
44
|
+
mismatch evidence must remain ineligible for current-diff validation. Missing retained files
|
|
45
|
+
are a restoration result, not permission to regenerate proof.
|
|
46
|
+
- Run `pnpm context-graph:publication-check`. Record the tested SHA, results and optional skips.
|
|
47
|
+
This rebuilds and exercises real SCIP, RDF/SHACL, snapshots, CLI/MCP and installed consumption.
|
|
48
|
+
- Record whether the environment actually came from a new task. Passing the rehearsal here
|
|
49
|
+
establishes only current-instance behavior.
|
|
50
|
+
|
|
51
|
+
MCP is a client-launched stdio process; it must initialize afresh. No background web process
|
|
52
|
+
is required to survive restoration. Current tools do not let this agent create/publish a new
|
|
53
|
+
cloud instance; the user launches that final validation task through the cloud UI.
|
|
54
|
+
|
|
55
|
+
## Browser: run through browser MCP
|
|
56
|
+
|
|
57
|
+
Browser MCP is not attached in the current task. It can be attached to a browser-capable task
|
|
58
|
+
or run on HDesk. Use public evidence and generate a fresh HTML viewer with the corresponding
|
|
59
|
+
CLI JSON Context Pack. Keep the tested SHA, snapshot ID, JSON and HTML together. Serve it using
|
|
60
|
+
the browser tool's supported local/forwarded access; do not assume another machine's localhost
|
|
61
|
+
is reachable.
|
|
62
|
+
|
|
63
|
+
Check node selection by mouse and keyboard, detail/citation rendering, authority and cluster
|
|
64
|
+
filters, neighbor drill-down, directed path highlighting and the explicit no-path result.
|
|
65
|
+
Check commit/scope/coverage/staleness and truncation indicators against the JSON pack; an absent
|
|
66
|
+
path in a bounded page must not be presented as proof of no dependency. Check configured source
|
|
67
|
+
links, browser console errors and network failures. Capture screenshots/results and browser
|
|
68
|
+
version. Rendering HTML or testing its JavaScript functions alone does not establish interaction.
|
|
69
|
+
|
|
70
|
+
## Live Codex: separate remaining environment issue
|
|
71
|
+
|
|
72
|
+
The HDesk live Windows pass remains valid for its recorded commit/tool versions. The managed
|
|
73
|
+
cloud's earlier read-only-filesystem failure is still unresolved. First isolate CLI startup,
|
|
74
|
+
supported writable paths and managed runtime requirements using redacted diagnostics; do not
|
|
75
|
+
copy credentials or change the managed CLI home. Use a minimal public fixture and an explicit
|
|
76
|
+
model budget for a later live retry. A fresh-task live failure should be recorded separately
|
|
77
|
+
from successful deterministic restoration. HDesk can validate the adapter and browser behavior,
|
|
78
|
+
but cannot prove that a different hosted environment restored correctly.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Migrating from Tently to Weftlet
|
|
2
|
+
|
|
3
|
+
The project is now Weftlet. LaunchEcho remains the maintainer; the GitHub repository remains
|
|
4
|
+
[jchewitt/weftlet](https://github.com/jchewitt/weftlet). Check [release status](RELEASING.md) before
|
|
5
|
+
installing the new names: source preparation is not proof of public npm availability.
|
|
6
|
+
|
|
7
|
+
| Previous package / command | Replacement |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| `@launch-echo/tently` | `@weftlet/toolkit` |
|
|
10
|
+
| `@launch-echo/tently-core` | `@weftlet/core` |
|
|
11
|
+
| `tently` | `weftlet` |
|
|
12
|
+
| `context-graph` | Still supported; `weftlet` is the primary CLI |
|
|
13
|
+
| `context-graph-mcp` | Still supported; `weftlet-mcp` is the primary MCP binary |
|
|
14
|
+
|
|
15
|
+
After the new release is public, replace the old dependency using your package manager. For
|
|
16
|
+
an npm project that installed the toolkit as a development dependency:
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
npm uninstall @launch-echo/tently
|
|
20
|
+
npm install --save-dev @weftlet/toolkit
|
|
21
|
+
npx weftlet config validate
|
|
22
|
+
npx weftlet doctor
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
If core was a direct dependency, replace it with `@weftlet/core` using the same dependency type
|
|
26
|
+
as before. If it was transitive, the toolkit brings it in automatically. Update library imports:
|
|
27
|
+
|
|
28
|
+
```ts
|
|
29
|
+
import { ContextGraphHydrator } from '@weftlet/toolkit';
|
|
30
|
+
// Existing /core and /telemetry toolkit subpaths remain available under @weftlet/toolkit.
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Change `@launch-echo/tently-core` imports to `@weftlet/core`. Public export names are retained.
|
|
34
|
+
Update scripts and MCP client commands. A fresh npx invocation uses:
|
|
35
|
+
|
|
36
|
+
```sh
|
|
37
|
+
npx @weftlet/toolkit init
|
|
38
|
+
npx --yes --package @weftlet/toolkit weftlet-mcp
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Keep `CONTEXT_GRAPH_CONFIG` pointing to your existing configuration. Do not rerun `init` over
|
|
42
|
+
an existing project. `context-graph.config.json`, `.context-graph/`, schema versions, ontology
|
|
43
|
+
identities and saved evidence formats do not change for this rename. Existing semantic artifacts
|
|
44
|
+
are not invalidated just because the npm package names changed. CLI `toolkit` is also shipped
|
|
45
|
+
so npm can infer an executable from the scoped package basename; use `weftlet` in your own scripts.
|
|
46
|
+
|
|
47
|
+
Weftlet includes the post-Tently module organization and explicit Codex authentication selection.
|
|
48
|
+
ChatGPT login is the default, while API authentication is opt-in. Live authentication validation
|
|
49
|
+
is tentative and non-blocking, as accepted by the maintainer; see [providers](PROVIDERS.md).
|
|
50
|
+
Native Windows limitations remain documented in [validation](VALIDATION.md).
|
|
51
|
+
|
|
52
|
+
The old `@launch-echo` releases remain immutable and usable. Do not unpublish them. Deprecation
|
|
53
|
+
is a later registry action, only after both replacements and a fresh public installation are
|
|
54
|
+
verified. This migration does not modify or reintegrate the original TradePilot repository.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# Semantic provider contract
|
|
2
|
+
|
|
3
|
+
Codex CLI is the shipped model adapter. The module extension contract is tested with deterministic
|
|
4
|
+
providers; no additional CLI or API integration is advertised as working. An arbitrary executable
|
|
5
|
+
is not compatible merely because it accepts stdin.
|
|
6
|
+
|
|
7
|
+
`SemanticExtractor` has a stable `identity` and
|
|
8
|
+
`extract(source, context, {signal, timeoutMs}) -> {parsed, rawModelOutput}`.
|
|
9
|
+
The exported `SemanticOutput`, `semanticOutputSchema` and `assertSemanticOutput` define structured
|
|
10
|
+
assertions, node kinds, predicates, inclusive source citations, finite confidence and diagnostics.
|
|
11
|
+
Every provider passes the same runtime checks before artifacts are saved. Deterministic OML is
|
|
12
|
+
rendered from accepted assertions; model-proposed OML never becomes executable ontology.
|
|
13
|
+
Evidence authority is assigned by source approval policy, never by the provider.
|
|
14
|
+
|
|
15
|
+
Codex receives a single numbered public or explicitly selected local document in an isolated
|
|
16
|
+
temporary directory. Shell tooling, user config and rules are disabled; authentication remains
|
|
17
|
+
managed by the installed CLI, with the explicit authentication selection below. The child
|
|
18
|
+
inherits only the explicit environment allowlist and, in API mode, the selected API key.
|
|
19
|
+
Prompts, provider stderr and credentials are never printed by progress/error handling.
|
|
20
|
+
Artifact storage contains model output and must remain private with the source repository.
|
|
21
|
+
|
|
22
|
+
## Codex authentication
|
|
23
|
+
|
|
24
|
+
Status: implemented in unreleased source; live validation is **tentative and non-blocking for
|
|
25
|
+
release**, as accepted by the maintainer. Follow-up is planned after publication and adoption into
|
|
26
|
+
Banditrade using the maintainer's existing ChatGPT login; API-key testing may remain deferred.
|
|
27
|
+
The earlier `@launch-echo/tently@0.1.0` release does not contain this option. Both modes still use Codex CLI;
|
|
28
|
+
this is not a direct OpenAI API provider or a fix for the managed-cloud filesystem issue.
|
|
29
|
+
|
|
30
|
+
Merge one of these fragments into your existing `context-graph.config.json`:
|
|
31
|
+
|
|
32
|
+
```json
|
|
33
|
+
{ "semantic": { "provider": "codex-cli", "auth": { "mode": "chatgpt" } } }
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Omitting `auth` also selects `chatgpt`; `init` writes it explicitly. Sign in using `codex login`
|
|
37
|
+
and select ChatGPT. Weftlet checks `codex login status` before an uncached extraction and requires
|
|
38
|
+
it to report ChatGPT login. A missing, unrecognized or API-key login fails before model execution.
|
|
39
|
+
There is no automatic API fallback. Existing saved API logins are not changed or logged out by
|
|
40
|
+
Weftlet. The status probe has a maximum five-second timeout in addition to the extraction timeout.
|
|
41
|
+
This mode uses your plan's Codex allowance and limits.
|
|
42
|
+
|
|
43
|
+
```json
|
|
44
|
+
{
|
|
45
|
+
"semantic": {
|
|
46
|
+
"provider": "codex-cli",
|
|
47
|
+
"auth": { "mode": "api-key", "apiKeyEnv": "WEFTLET_CODEX_API_KEY" }
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
API mode uses separately billed API access. Supply the named variable through your local secret
|
|
53
|
+
manager or trusted automation environment. `apiKeyEnv` defaults to `CODEX_API_KEY` when omitted.
|
|
54
|
+
Weftlet passes only the selected key as `CODEX_API_KEY` to `codex exec`, which supports per-invocation
|
|
55
|
+
API authentication without an interactive login. Missing or blank keys fail without falling back
|
|
56
|
+
to saved authentication. A key's presence does not establish validity, model access or available
|
|
57
|
+
quota. Authentication failures do not trigger a switch to the other mode.
|
|
58
|
+
|
|
59
|
+
Never put a key value in JSON. Unknown `auth` fields are rejected, and this option is only valid
|
|
60
|
+
for `codex-cli`. Ambient `OPENAI_API_KEY`, `CODEX_API_KEY` and `OPENAI_BASE_URL` are not inherited
|
|
61
|
+
implicitly. To use `OPENAI_API_KEY`, explicitly name it in `apiKeyEnv` in API mode. Custom API
|
|
62
|
+
endpoints are not part of this change. Proxy and CA settings remain supported.
|
|
63
|
+
|
|
64
|
+
`doctor` reports the selected mode, ChatGPT login status, or API key presence. API mode reports
|
|
65
|
+
`key-present-unverified` and `codexAuthenticated: null`; it never makes a paid authentication probe.
|
|
66
|
+
Status output and credential values are not logged. Authentication does not change built-in
|
|
67
|
+
semantic artifact identity, so selecting another mode or rotating a key does not force extraction
|
|
68
|
+
of unchanged documents. Querying saved snapshots does not require authentication.
|
|
69
|
+
|
|
70
|
+
Ordinary deterministic CI needs neither mode. Keep live semantic CI opt-in and restricted to
|
|
71
|
+
trusted inputs, with narrowly scoped secret exposure and small document budgets. OpenAI's
|
|
72
|
+
[automation documentation](https://developers.openai.com/codex/noninteractive/) describes
|
|
73
|
+
`CODEX_API_KEY` and recommends its Codex GitHub Action for protected API authentication in Actions.
|
|
74
|
+
Compatibility with that action's proxy is not validated here. Trusted persistent runners can
|
|
75
|
+
continue using their ChatGPT login; this change does not provision or copy account sessions.
|
|
76
|
+
|
|
77
|
+
## Limits and reuse
|
|
78
|
+
|
|
79
|
+
Defaults are at most 8 documents per hydration, 64 KiB per source, a 120-second timeout per
|
|
80
|
+
request, no retries, and the configured concurrency (validated at 1–4). Source budgets are checked
|
|
81
|
+
before any model call. `maxDocuments`, `maxSourceBytes`, `timeoutMs`, and `retries` may be configured
|
|
82
|
+
within validated limits. Review scope and cost before raising them; these byte/document limits
|
|
83
|
+
are not dollar or token estimates. Ask the operator before substantial paid runs.
|
|
84
|
+
Only explicit transient exit status 75 is retryable, at most twice; authentication, invalid
|
|
85
|
+
output, cancellation and ambiguous failures are not retried. Ctrl-C cancels live CLI extraction.
|
|
86
|
+
Indexing cancellation is checked between phases, not inside the indexer process.
|
|
87
|
+
|
|
88
|
+
Cache identity includes provider/model/reasoning effort, prompt and contract versions, source
|
|
89
|
+
digest/stable ID, extractor/adapter/ontology versions, confidence threshold and unresolved policy.
|
|
90
|
+
Unchanged artifacts are reused; forced revisions are separate. Failures never replace a valid
|
|
91
|
+
snapshot. Progress shows phase and counts on stderr, with no document text or paths.
|
|
92
|
+
|
|
93
|
+
For a trusted local provider module, set `provider: "module"`, `providerModule` to a local path
|
|
94
|
+
(relative to the repository root) or installed package, and `providerIdentity` to its exact
|
|
95
|
+
declared version. Packages resolve from the consumer repository using ESM import conditions.
|
|
96
|
+
Export `createSemanticExtractor(config, {signal, timeoutMs})`; the optional second argument passes
|
|
97
|
+
cancellation through asynchronous initialization. One deadline covers module import, factory
|
|
98
|
+
initialization and extraction. Cancelled initialization cannot populate the extractor cache or
|
|
99
|
+
start extraction later. All semantic configuration contributes
|
|
100
|
+
to this adapter's cache identity. Loading happens only during extraction, so a missing module does
|
|
101
|
+
not disable queries. Implement cancellation and cleanup when the supplied signal aborts; the
|
|
102
|
+
wrapper limits waiting but cannot forcibly terminate arbitrary in-process code. Use subprocesses
|
|
103
|
+
with bounded execution when strong process termination is necessary.
|
|
104
|
+
|
|
105
|
+
`context-graph doctor --config context-graph.config.json` reads configuration, Git availability,
|
|
106
|
+
Codex presence/login status, optional Docker readiness and saved default evidence. A login status
|
|
107
|
+
is not proof that extraction can run. In this cloud environment, Codex 0.163.0 reported logged in
|
|
108
|
+
but its tiny public-example invocation exited immediately with a read-only filesystem error.
|
|
109
|
+
Live extraction is therefore unverified here; deterministic adapter, timeout, retry, citation,
|
|
110
|
+
budget and cache tests pass. No private source was submitted in that check.
|
|
111
|
+
|
|
112
|
+
HDesk subsequently reported a live end-to-end pass at commit
|
|
113
|
+
`6710e9391a6a01345dab5f5be4ae0656e1c9d1ae` on Windows, Node 24.2.0, Codex 0.153.4,
|
|
114
|
+
`gpt-6-astra`/`medium`, using the unchanged adapter and public example. Citation/schema
|
|
115
|
+
validation, real SCIP, RDF/SHACL, snapshot publication/querying and repeat artifact reuse passed.
|
|
116
|
+
See [validation](VALIDATION.md#hdesk-validation-of-6710e9391a6a01345dab5f5be4ae0656e1c9d1ae)
|
|
117
|
+
for counts and scope. Native Windows npm Codex executable discovery still needs improvement;
|
|
118
|
+
this public-example pass does not establish broader semantic quality.
|
|
119
|
+
|
|
120
|
+
Provider-dependent tests must remain opt-in, use tiny public fixtures, avoid credentials in
|
|
121
|
+
untrusted CI, and record model/version/date separately from deterministic test results.
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# Weftlet npm releases
|
|
2
|
+
|
|
3
|
+
Current source prepares the first `@weftlet/core@0.1.0` and `@weftlet/toolkit@0.1.0` release.
|
|
4
|
+
The maintainer created the `weftlet` npm organization. Neither new package is claimed published
|
|
5
|
+
by this document. The earlier `@launch-echo/tently-core@0.1.0` and `@launch-echo/tently@0.1.0`
|
|
6
|
+
releases remain available and undeprecated; their public installation evidence is in
|
|
7
|
+
[validation](VALIDATION.md). GitHub is now `jchewitt/weftlet`; npm and GitHub owner names need not match.
|
|
8
|
+
|
|
9
|
+
Live Codex authentication validation is tentative and non-blocking for release, as accepted by
|
|
10
|
+
the maintainer. Deterministic release checks still apply. Native Windows limitations remain
|
|
11
|
+
recorded; use Linux or WSL for the full release gate. See [consumer migration](MIGRATING-TO-WEFTLET.md).
|
|
12
|
+
|
|
13
|
+
## First publication and maintainer setup
|
|
14
|
+
|
|
15
|
+
Creating an npm organization does not publish its packages or configure package-level trusted
|
|
16
|
+
publishers. Use an npm account with permission to publish both names in `@weftlet`. The initial
|
|
17
|
+
publication can use the normal npm login/2FA flow below. Once the packages exist, configure each
|
|
18
|
+
package's Settings → Trusted Publisher with the following GitHub Actions identity:
|
|
19
|
+
|
|
20
|
+
| npm setting | Value |
|
|
21
|
+
| --- | --- |
|
|
22
|
+
| Organization or user | `jchewitt` |
|
|
23
|
+
| Repository | `weftlet` |
|
|
24
|
+
| Workflow filename | `publish.yml` (filename only) |
|
|
25
|
+
| Environment name | `npm-release` |
|
|
26
|
+
| Allowed action | Enable direct `npm publish` |
|
|
27
|
+
|
|
28
|
+
On GitHub, create repository Settings → Environments → `npm-release`. Restrict deployment branches
|
|
29
|
+
to `main` and configure a required reviewer. A sole maintainer must be allowed to approve their own
|
|
30
|
+
release. Do not rely on the YAML environment name alone: an automatically created environment has
|
|
31
|
+
no review protection until you configure it. No npm token secret is required for OIDC publication.
|
|
32
|
+
Keep npm account 2FA enabled. The package's repository metadata already identifies `jchewitt/weftlet`.
|
|
33
|
+
|
|
34
|
+
npm trusted-publisher setup is not validated merely by saving these settings. Test with a later,
|
|
35
|
+
intentional versioned publication. Current npm documentation says a new trust configuration must
|
|
36
|
+
be used within two days or it expires; configure it close to the intended release, and reconfirm
|
|
37
|
+
that behavior in [npm's documentation](https://docs.npmjs.com/trusted-publishers/).
|
|
38
|
+
|
|
39
|
+
## Prepare reviewed archives
|
|
40
|
+
|
|
41
|
+
Use Node 24 and pnpm 10.18.2 in a clean, committed checkout. The new namespace starts at 0.1.0;
|
|
42
|
+
subsequent content changes require a new version for the affected packages. Update the lockfile
|
|
43
|
+
when changing workspace dependency versions. Never overwrite or republish an existing version.
|
|
44
|
+
|
|
45
|
+
```sh
|
|
46
|
+
nvm install
|
|
47
|
+
nvm use
|
|
48
|
+
pnpm install --frozen-lockfile
|
|
49
|
+
pnpm release:prepare
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
This runs build, deterministic tests, architecture checks, extraction inventory, license checks
|
|
53
|
+
and a fresh packed-consumer smoke. The smoke uses a disposable registry for the two local packages,
|
|
54
|
+
exercises npx inference and automatic core installation, and checks SCIP, RDF/SHACL, visualization
|
|
55
|
+
and MCP. No live model or public npm upload is invoked.
|
|
56
|
+
|
|
57
|
+
Preparation packs with pnpm, resolves workspace dependency ranges and records commit, names,
|
|
58
|
+
versions and SHA-512 integrity in `.release/manifest.json`. Review it, the tarball file lists and
|
|
59
|
+
`docs/extraction-manifest.json`. Existing versions must match the prepared archive exactly;
|
|
60
|
+
unpublished versions receive an npm dry run. A dry run does not establish OIDC authorization.
|
|
61
|
+
|
|
62
|
+
Both JavaScript pnpm and standalone `@pnpm/exe` are supported. The publisher must find npm's
|
|
63
|
+
JavaScript entry point beside Node. The workflow pins npm 11.21.1; trusted publishing requires
|
|
64
|
+
at least npm 11.5.1. Use the workflow's pinned tools when reproducing CI release preparation.
|
|
65
|
+
|
|
66
|
+
## Initial or local publication with npm login
|
|
67
|
+
|
|
68
|
+
From the same clean checkout and reviewed archives, in an interactive terminal:
|
|
69
|
+
|
|
70
|
+
```sh
|
|
71
|
+
npm login --registry=https://registry.npmjs.org
|
|
72
|
+
npm whoami --registry=https://registry.npmjs.org
|
|
73
|
+
pnpm release:publish
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Complete npm's browser/2FA challenge when requested. Do not pipe or redirect the publication
|
|
77
|
+
command: npm needs terminal input and output for the interactive flow. The default `login` mode
|
|
78
|
+
retains npm's normal credentials and uses `whoami`; it does not silently select OIDC.
|
|
79
|
+
|
|
80
|
+
For an authorized token environment, `WEFTLET_NPM_TOKEN` is supported through a temporary,
|
|
81
|
+
restricted-permission npm configuration containing only the literal variable reference. Legacy
|
|
82
|
+
`TENTLY_NPM_TOKEN` remains accepted if the new variable is absent. Never paste tokens in chat,
|
|
83
|
+
commit them, or provide either token to the trusted-publishing workflow. No cloud secret is needed
|
|
84
|
+
when publication happens from the maintainer's authenticated WSL session.
|
|
85
|
+
|
|
86
|
+
## GitHub trusted publication
|
|
87
|
+
|
|
88
|
+
The workflow `.github/workflows/publish.yml` is manually dispatched, main-branch only, and serialized.
|
|
89
|
+
It does not run on pushes or pull requests. From GitHub Actions → **Weftlet release** → **Run workflow**:
|
|
90
|
+
|
|
91
|
+
1. Select `main`. Leave **publish** unchecked for preparation only. Review the uploaded
|
|
92
|
+
`weftlet-release` artifact and manifest in the run summary.
|
|
93
|
+
2. For an intentional release, select **publish**. The preparation job runs again on that exact
|
|
94
|
+
commit, without publishing credentials. Inspect that run's artifact before approving its
|
|
95
|
+
`npm-release` deployment; a different run's archive is not the approval target.
|
|
96
|
+
3. After configured environment approval, the publish job checks out the same source, downloads
|
|
97
|
+
those artifacts and runs `node scripts/release.mjs --publish --auth=oidc`. It does not install
|
|
98
|
+
project dependencies or rebuild the packages. Only this job has `id-token: write`.
|
|
99
|
+
|
|
100
|
+
Actions are pinned to commits. Neither job restores a dependency cache. OIDC mode requires a
|
|
101
|
+
GitHub-hosted runner, the expected repository/ref/manual trigger and OIDC request variables;
|
|
102
|
+
it rejects ambient npm token variables and isolates user/global npm configuration. npm performs
|
|
103
|
+
actual identity validation against each package's trust settings. `npm whoami` is deliberately
|
|
104
|
+
skipped in OIDC mode because it is not a trusted-publisher authorization check. Unsupported npm,
|
|
105
|
+
missing trust or rejected identity must fail; there is no token fallback configured by this workflow.
|
|
106
|
+
|
|
107
|
+
npm creates provenance for public packages published from this public repository through OIDC.
|
|
108
|
+
Local publication explicitly disables CI provenance. Prepared artifacts and synthetic OIDC tests
|
|
109
|
+
do not prove that a live trusted publish or provenance verification has succeeded.
|
|
110
|
+
|
|
111
|
+
## Ordering, delayed visibility and recovery
|
|
112
|
+
|
|
113
|
+
Before any upload, the publisher validates every archive hash and its source commit. It publishes
|
|
114
|
+
core first, waits for registry visibility and verifies integrity, then publishes the toolkit. An
|
|
115
|
+
existing identical release is skipped; different bytes at the same version stop publication.
|
|
116
|
+
Publication across packages is not atomic.
|
|
117
|
+
|
|
118
|
+
After npm accepts an upload it may remain invisible while processing. The publisher saves a
|
|
119
|
+
package/integrity-specific `.accepted.json` receipt under `.release/` and retries only public
|
|
120
|
+
metadata reads, up to 21 checks, 15 seconds apart. Only 404 is treated as pending. Never repeatedly
|
|
121
|
+
upload an accepted version. Keep `.release/` and retry `release:publish` later to resume verification.
|
|
122
|
+
A receipt cannot cover a process interruption before it is written; inspect registry state before
|
|
123
|
+
recovery. Authentication, network and integrity errors are not treated as missing packages.
|
|
124
|
+
|
|
125
|
+
The workflow uploads `weftlet-publication-state`, including receipts, even when publication fails.
|
|
126
|
+
For a processing timeout, recover those exact archives and receipts into `.release/` at the
|
|
127
|
+
manifest's source commit before an authorized local retry. Do not blindly rerun the whole workflow
|
|
128
|
+
while an accepted upload is still processing: a new run starts without the old receipt. Once a
|
|
129
|
+
release is visible, the normal integrity check safely skips its already published packages.
|
|
130
|
+
|
|
131
|
+
## Verify public installation before retiring old names
|
|
132
|
+
|
|
133
|
+
After successful publication, use a fresh disposable project:
|
|
134
|
+
|
|
135
|
+
```sh
|
|
136
|
+
npm init -y
|
|
137
|
+
npx --yes @weftlet/toolkit@0.1.0 init --yes
|
|
138
|
+
npx --yes @weftlet/toolkit@0.1.0 config validate
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Use the actual release version for later releases. Verify registry versions and hashes, core's
|
|
142
|
+
transitive resolution, CLI/MCP operation and provenance when applicable. Update release status
|
|
143
|
+
only after those public checks pass. Deprecating the old `@launch-echo` names is a separate registry
|
|
144
|
+
action after replacement verification; never unpublish the old releases.
|
package/docs/ROADMAP.md
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Delivery roadmap
|
|
2
|
+
|
|
3
|
+
Destination: `jchewitt/weftlet`. Read-only source:
|
|
4
|
+
`launchecho/tradepilot@fda97e0146099543aeaa6b338ef2b0e9fab0d1d6`.
|
|
5
|
+
|
|
6
|
+
| Milestone | Delivered and checked | Remaining limits |
|
|
7
|
+
| --- | --- | --- |
|
|
8
|
+
| 1. Standalone | Explicit committed inventory, core/toolkit boundary, public examples, build/tests, packed independent consumer and real TypeScript indexing | GitHub exported; both @launch-echo packages published at 0.1.0 and public installation verified |
|
|
9
|
+
| 2a. Saved evidence | Read/refresh separation, commit/config/scope metadata, dirty querying, isolated archives, atomic snapshots validated on Linux/WSL, failed-refresh preservation | Archive LF conversion and bounded atomic head-replacement fixes pass Linux regressions; native Windows confirmation pending; archives reject symlinks/submodules and sizes above 128 MiB |
|
|
10
|
+
| 2b. Draft overlays | Base/content identity, reindexed replacement, delete/rename handling, separate checkout/agent heads | Full implementation reindex; changed prose invalidated pending re-extraction |
|
|
11
|
+
| 3. Unified graph | RDF/SPARQL, SHACL, lossless projection, bounded continuation, six-stage async cross-source fixture, negative extraction/linkage cases | Local SELECT only; 100,000-fact projection bound; no universal language support |
|
|
12
|
+
| 4. Governance | Canonical approved rules, dependency-cruiser/ESLint/jscpd, scoped debt/expiry, transitive inference, optional OML ADR/parity | No active OWL reasoner; live formal compilation unverified; heuristics remain advisory |
|
|
13
|
+
| 5. Providers/DX | Codex adapter, HDesk live Windows public-example pass and cache reuse, CLI init/config and npx setup, tested module contract, validation/budgets/timeouts/cancellation/retries/cache identity, diagnostics/progress | Cloud live run remains filesystem-blocked; native Windows npm executable discovery needs improvement; other real providers planned |
|
|
14
|
+
| 6. Viewer | Same facts as agents, clustering, drill-down, bounded path highlighting, optional commit source links, authority/coverage/staleness | No real-browser automation; bounded pages, not a complete interactive explorer |
|
|
15
|
+
|
|
16
|
+
HDesk results for `6710e9391a6a01345dab5f5be4ae0656e1c9d1ae` are recorded in
|
|
17
|
+
[validation](VALIDATION.md#hdesk-validation-of-6710e9391a6a01345dab5f5be4ae0656e1c9d1ae):
|
|
18
|
+
WSL passed 114 deterministic tests and all three original MCP startup tests; the native Windows
|
|
19
|
+
subset still has two failures and three fixture exclusions.
|
|
20
|
+
|
|
21
|
+
The post-release module-organization increment is described in
|
|
22
|
+
[ADR 007](ADR-007-toolkit-modules.md): internal responsibilities have separate directories,
|
|
23
|
+
public entry points remain stable, and proposed internal dependency restrictions are advisory
|
|
24
|
+
pending explicit owner approval. It does not publish a replacement for npm 0.1.0.
|
|
25
|
+
|
|
26
|
+
The following unreleased increment adds explicit Codex authentication configuration: ChatGPT
|
|
27
|
+
login by default, API-key mode by opt-in, and presence-only API diagnostics. Validation is
|
|
28
|
+
tentative and explicitly non-blocking for release. The maintainer plans follow-up after publication
|
|
29
|
+
and adoption into Banditrade; API-key testing remains optional. No new live model results are claimed.
|
|
30
|
+
See [provider configuration](PROVIDERS.md#codex-authentication) and the validation record.
|
|
31
|
+
|
|
32
|
+
Native Windows archive conversion, concurrent head-replacement and MCP file-symlink fixes are
|
|
33
|
+
implemented with regression tests; a focused Windows CI job and HDesk rerun must confirm them.
|
|
34
|
+
Next work should be separate, reviewed increments: improve CRLF checkout integrity checks;
|
|
35
|
+
run bounded semantic-quality evaluations; retain the passing hosted Ubuntu CI gate; validate fresh-cloud
|
|
36
|
+
restoration; resolve the cloud-specific live provider block; add browser
|
|
37
|
+
interaction/accessibility tests; benchmark larger RDF graphs; evaluate a second real provider.
|
|
38
|
+
Figma and source-application reintegration are future adapter work.
|
|
39
|
+
|
|
40
|
+
macOS is outside the maintainer's current scope. Hosted Ubuntu CI passed at `92ae118`;
|
|
41
|
+
[environment validation](ENVIRONMENT-VALIDATION.md) separates the remaining fresh-task and
|
|
42
|
+
browser-MCP checks from the unresolved live Codex cloud issue.
|
|
43
|
+
|
|
44
|
+
Validation evidence and decisions are in `VALIDATION.md` and the ADR files. Source approval and
|
|
45
|
+
model assertion review are distinct. On 2026-10-20 the user authorized pushing the reviewed
|
|
46
|
+
destination to `jchewitt/tently` for local testing. The subsequent npm request authorizes release
|
|
47
|
+
preparation/publication under `@launch-echo`; the maintainer completed the 0.1.0 release from WSL. Visibility changes and
|
|
48
|
+
TradePilot reintegration remain outside the authorized scope. See [release instructions](RELEASING.md).
|
|
49
|
+
|
|
50
|
+
The maintainer authorized the Weftlet migration on 2026-10-21. Current source targets
|
|
51
|
+
`@weftlet/core` and `@weftlet/toolkit`, with a `weftlet` CLI and a manually dispatched trusted
|
|
52
|
+
publishing workflow. First publication, npm trust configuration and a live OIDC publish remain
|
|
53
|
+
separate external steps; the earlier Tently packages remain available and undeprecated.
|