@ontrails/warden 1.0.0-beta.4 → 1.0.0-beta.42
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/CHANGELOG.md +837 -13
- package/README.md +133 -26
- package/bin/warden.ts +51 -0
- package/package.json +27 -6
- package/src/adapter-check.ts +136 -0
- package/src/cli.ts +1570 -105
- package/src/command.ts +986 -0
- package/src/config.ts +193 -0
- package/src/draft.ts +22 -0
- package/src/drift.ts +233 -23
- package/src/fix.ts +126 -0
- package/src/formatters.ts +78 -13
- package/src/guide.ts +245 -0
- package/src/index.ts +247 -15
- package/src/project-context.ts +446 -0
- package/src/project-rules.ts +290 -0
- package/src/resolve.ts +531 -0
- package/src/rules/activation-orphan.ts +97 -0
- package/src/rules/captured-kernel.ts +375 -0
- package/src/rules/circular-refs.ts +150 -0
- package/src/rules/cli-command-route-coherence.ts +177 -0
- package/src/rules/composes-declarations.ts +839 -0
- package/src/rules/context-no-surface-types.ts +79 -15
- package/src/rules/dead-internal-trail.ts +161 -0
- package/src/rules/dead-public-trail.ts +258 -0
- package/src/rules/draft-file-marking.ts +155 -0
- package/src/rules/draft-visible-debt.ts +82 -0
- package/src/rules/duplicate-exported-symbol.ts +211 -0
- package/src/rules/duplicate-public-contract.ts +137 -0
- package/src/rules/entity-exists.ts +254 -0
- package/src/rules/entity-ids.ts +15 -0
- package/src/rules/error-mapping-completeness.ts +290 -0
- package/src/rules/example-valid.ts +395 -0
- package/src/rules/fires-declarations.ts +740 -0
- package/src/rules/governed-symbol-residue.ts +438 -0
- package/src/rules/implementation-returns-result.ts +1409 -166
- package/src/rules/incomplete-accessor-for-standard-op.ts +272 -0
- package/src/rules/incomplete-crud.ts +583 -0
- package/src/rules/index.ts +277 -10
- package/src/rules/intent-propagation.ts +125 -0
- package/src/rules/layer-field-name-drift.ts +102 -0
- package/src/rules/library-projection-coherence.ts +100 -0
- package/src/rules/metadata.ts +871 -0
- package/src/rules/missing-reconcile.ts +97 -0
- package/src/rules/missing-visibility.ts +111 -0
- package/src/rules/no-destructured-compose.ts +196 -0
- package/src/rules/no-dev-permit-in-source.ts +99 -0
- package/src/rules/no-direct-implementation-call.ts +12 -7
- package/src/rules/no-legacy-cli-alias-export.ts +247 -0
- package/src/rules/no-legacy-layer-imports.ts +211 -0
- package/src/rules/no-native-error-result.ts +118 -0
- package/src/rules/no-redundant-result-error-wrap.ts +384 -0
- package/src/rules/no-retired-cross-vocabulary.ts +204 -0
- package/src/rules/no-sync-result-assumption.ts +1141 -98
- package/src/rules/no-throw-in-detour-recover.ts +225 -0
- package/src/rules/no-throw-in-implementation.ts +15 -8
- package/src/rules/no-top-level-surface.ts +371 -0
- package/src/rules/on-references-exist.ts +194 -0
- package/src/rules/orphaned-signal.ts +149 -0
- package/src/rules/owner-projection-parity.ts +143 -0
- package/src/rules/permit-governance.ts +25 -0
- package/src/rules/public-export-example-coverage.ts +573 -0
- package/src/rules/public-internal-deep-imports.ts +456 -0
- package/src/rules/public-output-schema.ts +29 -0
- package/src/rules/public-union-output-discriminants.ts +150 -0
- package/src/rules/read-intent-fires.ts +188 -0
- package/src/rules/reference-exists.ts +97 -0
- package/src/rules/registry-names.ts +167 -0
- package/src/rules/resolved-import-boundary.ts +146 -0
- package/src/rules/resource-declarations.ts +697 -0
- package/src/rules/resource-exists.ts +181 -0
- package/src/rules/resource-id-grammar.ts +65 -0
- package/src/rules/resource-mock-coverage.ts +115 -0
- package/src/rules/retired-vocabulary.ts +633 -0
- package/src/rules/scan.ts +38 -25
- package/src/rules/scheduled-destroy-intent.ts +44 -0
- package/src/rules/signal-graph-coaching.ts +220 -0
- package/src/rules/source/composition.ts +165 -0
- package/src/rules/source/drafts.ts +164 -0
- package/src/rules/source/entities.ts +618 -0
- package/src/rules/source/pragmas.ts +45 -0
- package/src/rules/source/resources.ts +64 -0
- package/src/rules/source/signals.ts +397 -0
- package/src/rules/source/stores.ts +310 -0
- package/src/rules/specs.ts +9 -5
- package/src/rules/static-resource-accessor-preference.ts +653 -0
- package/src/rules/surface-overlay-coherence.ts +262 -0
- package/src/rules/surface-trailhead-coherence.ts +366 -0
- package/src/rules/trail-fork-coaching.ts +625 -0
- package/src/rules/trail-versioning-source.ts +1076 -0
- package/src/rules/trail-versioning-topo.ts +172 -0
- package/src/rules/trailhead-override-divergence.ts +356 -0
- package/src/rules/types.ts +354 -8
- package/src/rules/unmaterialized-activation-source.ts +85 -0
- package/src/rules/unreachable-detour-shadowing.ts +339 -0
- package/src/rules/valid-describe-refs.ts +162 -32
- package/src/rules/valid-detour-contract.ts +78 -0
- package/src/rules/warden-export-symmetry.ts +540 -0
- package/src/rules/warden-rules-use-ast.ts +1109 -0
- package/src/rules/webhook-route-collision.ts +306 -0
- package/src/trails/activation-orphan.trail.ts +84 -0
- package/src/trails/captured-kernel.trail.ts +108 -0
- package/src/trails/circular-refs.trail.ts +29 -0
- package/src/trails/cli-command-route-coherence.trail.ts +47 -0
- package/src/trails/composes-declarations.trail.ts +22 -0
- package/src/trails/context-no-surface-types.trail.ts +21 -0
- package/src/trails/dead-internal-trail.trail.ts +26 -0
- package/src/trails/dead-public-trail.trail.ts +31 -0
- package/src/trails/deprecation-without-guidance.trail.ts +21 -0
- package/src/trails/draft-file-marking.trail.ts +16 -0
- package/src/trails/draft-visible-debt.trail.ts +16 -0
- package/src/trails/duplicate-exported-symbol.trail.ts +48 -0
- package/src/trails/duplicate-public-contract.trail.ts +47 -0
- package/src/trails/entity-exists.trail.ts +21 -0
- package/src/trails/error-mapping-completeness.trail.ts +30 -0
- package/src/trails/example-valid.trail.ts +25 -0
- package/src/trails/fires-declarations.trail.ts +23 -0
- package/src/trails/fork-without-preserved-implementation.trail.ts +31 -0
- package/src/trails/governed-symbol-residue.trail.ts +24 -0
- package/src/trails/implementation-returns-result.trail.ts +20 -0
- package/src/trails/incomplete-accessor-for-standard-op.trail.ts +76 -0
- package/src/trails/incomplete-crud.trail.ts +39 -0
- package/src/trails/index.ts +89 -0
- package/src/trails/intent-propagation.trail.ts +30 -0
- package/src/trails/layer-field-name-drift.trail.ts +39 -0
- package/src/trails/library-projection-coherence.trail.ts +43 -0
- package/src/trails/marker-schema-unsupported.trail.ts +23 -0
- package/src/trails/missing-reconcile.trail.ts +33 -0
- package/src/trails/missing-visibility.trail.ts +22 -0
- package/src/trails/no-destructured-compose.trail.ts +44 -0
- package/src/trails/no-dev-permit-in-source.trail.ts +16 -0
- package/src/trails/no-direct-implementation-call.trail.ts +16 -0
- package/src/trails/no-legacy-cli-alias-export.trail.ts +41 -0
- package/src/trails/no-legacy-layer-imports.trail.ts +41 -0
- package/src/trails/no-native-error-result.trail.ts +18 -0
- package/src/trails/no-redundant-result-error-wrap.trail.ts +55 -0
- package/src/trails/no-retired-cross-vocabulary.trail.ts +42 -0
- package/src/trails/no-sync-result-assumption.trail.ts +19 -0
- package/src/trails/no-throw-in-detour-recover.trail.ts +24 -0
- package/src/trails/no-throw-in-implementation.trail.ts +20 -0
- package/src/trails/no-top-level-surface.trail.ts +43 -0
- package/src/trails/on-references-exist.trail.ts +21 -0
- package/src/trails/orphaned-signal.trail.ts +36 -0
- package/src/trails/owner-projection-parity.trail.ts +26 -0
- package/src/trails/pending-force.trail.ts +21 -0
- package/src/trails/permit-governance.trail.ts +51 -0
- package/src/trails/prefer-schema-inference.trail.ts +21 -0
- package/src/trails/public-export-example-coverage.trail.ts +16 -0
- package/src/trails/public-internal-deep-imports.trail.ts +94 -0
- package/src/trails/public-output-schema.trail.ts +55 -0
- package/src/trails/public-union-output-discriminants.trail.ts +33 -0
- package/src/trails/read-intent-fires.trail.ts +20 -0
- package/src/trails/reference-exists.trail.ts +25 -0
- package/src/trails/resolved-import-boundary.trail.ts +109 -0
- package/src/trails/resource-declarations.trail.ts +25 -0
- package/src/trails/resource-exists.trail.ts +27 -0
- package/src/trails/resource-id-grammar.trail.ts +39 -0
- package/src/trails/resource-mock-coverage.trail.ts +40 -0
- package/src/trails/run.ts +160 -0
- package/src/trails/scheduled-destroy-intent.trail.ts +56 -0
- package/src/trails/schema.ts +237 -0
- package/src/trails/signal-graph-coaching.trail.ts +77 -0
- package/src/trails/static-resource-accessor-preference.trail.ts +25 -0
- package/src/trails/surface-overlay-coherence.trail.ts +24 -0
- package/src/trails/surface-trailhead-coherence.trail.ts +25 -0
- package/src/trails/topo.ts +6 -0
- package/src/trails/trail-fork-coaching.trail.ts +42 -0
- package/src/trails/trailhead-override-divergence.trail.ts +47 -0
- package/src/trails/unmaterialized-activation-source.trail.ts +72 -0
- package/src/trails/unreachable-detour-shadowing.trail.ts +45 -0
- package/src/trails/valid-describe-refs.trail.ts +18 -0
- package/src/trails/valid-detour-contract.trail.ts +71 -0
- package/src/trails/version-gap.trail.ts +35 -0
- package/src/trails/version-pinned-compose.trail.ts +23 -0
- package/src/trails/version-without-examples.trail.ts +38 -0
- package/src/trails/warden-export-symmetry.trail.ts +16 -0
- package/src/trails/warden-rules-use-ast.trail.ts +64 -0
- package/src/trails/webhook-route-collision.trail.ts +50 -0
- package/src/trails/wrap-rule.ts +224 -0
- package/src/workspaces.ts +199 -0
- package/.turbo/turbo-build.log +0 -1
- package/.turbo/turbo-lint.log +0 -3
- package/.turbo/turbo-typecheck.log +0 -1
- package/dist/cli.d.ts +0 -46
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -218
- package/dist/cli.js.map +0 -1
- package/dist/drift.d.ts +0 -26
- package/dist/drift.d.ts.map +0 -1
- package/dist/drift.js +0 -27
- package/dist/drift.js.map +0 -1
- package/dist/formatters.d.ts +0 -29
- package/dist/formatters.d.ts.map +0 -1
- package/dist/formatters.js +0 -87
- package/dist/formatters.js.map +0 -1
- package/dist/index.d.ts +0 -26
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -26
- package/dist/index.js.map +0 -1
- package/dist/rules/ast.d.ts +0 -41
- package/dist/rules/ast.d.ts.map +0 -1
- package/dist/rules/ast.js +0 -161
- package/dist/rules/ast.js.map +0 -1
- package/dist/rules/context-no-surface-types.d.ts +0 -12
- package/dist/rules/context-no-surface-types.d.ts.map +0 -1
- package/dist/rules/context-no-surface-types.js +0 -96
- package/dist/rules/context-no-surface-types.js.map +0 -1
- package/dist/rules/implementation-returns-result.d.ts +0 -13
- package/dist/rules/implementation-returns-result.d.ts.map +0 -1
- package/dist/rules/implementation-returns-result.js +0 -277
- package/dist/rules/implementation-returns-result.js.map +0 -1
- package/dist/rules/index.d.ts +0 -15
- package/dist/rules/index.d.ts.map +0 -1
- package/dist/rules/index.js +0 -34
- package/dist/rules/index.js.map +0 -1
- package/dist/rules/no-direct-impl-in-route.d.ts +0 -12
- package/dist/rules/no-direct-impl-in-route.d.ts.map +0 -1
- package/dist/rules/no-direct-impl-in-route.js +0 -47
- package/dist/rules/no-direct-impl-in-route.js.map +0 -1
- package/dist/rules/no-direct-implementation-call.d.ts +0 -12
- package/dist/rules/no-direct-implementation-call.d.ts.map +0 -1
- package/dist/rules/no-direct-implementation-call.js +0 -39
- package/dist/rules/no-direct-implementation-call.js.map +0 -1
- package/dist/rules/no-sync-result-assumption.d.ts +0 -6
- package/dist/rules/no-sync-result-assumption.d.ts.map +0 -1
- package/dist/rules/no-sync-result-assumption.js +0 -98
- package/dist/rules/no-sync-result-assumption.js.map +0 -1
- package/dist/rules/no-throw-in-detour-target.d.ts +0 -12
- package/dist/rules/no-throw-in-detour-target.d.ts.map +0 -1
- package/dist/rules/no-throw-in-detour-target.js +0 -87
- package/dist/rules/no-throw-in-detour-target.js.map +0 -1
- package/dist/rules/no-throw-in-implementation.d.ts +0 -9
- package/dist/rules/no-throw-in-implementation.d.ts.map +0 -1
- package/dist/rules/no-throw-in-implementation.js +0 -34
- package/dist/rules/no-throw-in-implementation.js.map +0 -1
- package/dist/rules/prefer-schema-inference.d.ts +0 -7
- package/dist/rules/prefer-schema-inference.d.ts.map +0 -1
- package/dist/rules/prefer-schema-inference.js +0 -86
- package/dist/rules/prefer-schema-inference.js.map +0 -1
- package/dist/rules/scan.d.ts +0 -8
- package/dist/rules/scan.d.ts.map +0 -1
- package/dist/rules/scan.js +0 -32
- package/dist/rules/scan.js.map +0 -1
- package/dist/rules/specs.d.ts +0 -29
- package/dist/rules/specs.d.ts.map +0 -1
- package/dist/rules/specs.js +0 -192
- package/dist/rules/specs.js.map +0 -1
- package/dist/rules/structure.d.ts +0 -13
- package/dist/rules/structure.d.ts.map +0 -1
- package/dist/rules/structure.js +0 -142
- package/dist/rules/structure.js.map +0 -1
- package/dist/rules/types.d.ts +0 -52
- package/dist/rules/types.d.ts.map +0 -1
- package/dist/rules/types.js +0 -2
- package/dist/rules/types.js.map +0 -1
- package/dist/rules/valid-describe-refs.d.ts +0 -7
- package/dist/rules/valid-describe-refs.d.ts.map +0 -1
- package/dist/rules/valid-describe-refs.js +0 -51
- package/dist/rules/valid-describe-refs.js.map +0 -1
- package/dist/rules/valid-detour-refs.d.ts +0 -6
- package/dist/rules/valid-detour-refs.d.ts.map +0 -1
- package/dist/rules/valid-detour-refs.js +0 -116
- package/dist/rules/valid-detour-refs.js.map +0 -1
- package/src/__tests__/cli.test.ts +0 -198
- package/src/__tests__/drift.test.ts +0 -74
- package/src/__tests__/formatters.test.ts +0 -157
- package/src/__tests__/implementation-returns-result.test.ts +0 -129
- package/src/__tests__/no-direct-implementation-call.test.ts +0 -83
- package/src/__tests__/no-sync-result-assumption.test.ts +0 -85
- package/src/__tests__/no-throw-in-detour-target.test.ts +0 -78
- package/src/__tests__/prefer-schema-inference.test.ts +0 -84
- package/src/__tests__/rules.test.ts +0 -227
- package/src/__tests__/valid-describe-refs.test.ts +0 -60
- package/src/rules/ast.ts +0 -213
- package/src/rules/no-direct-impl-in-route.ts +0 -81
- package/src/rules/no-throw-in-detour-target.ts +0 -150
- package/src/rules/valid-detour-refs.ts +0 -187
- package/tsconfig.json +0 -9
- package/tsconfig.tsbuildinfo +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,829 @@
|
|
|
1
1
|
# @ontrails/warden
|
|
2
2
|
|
|
3
|
+
## 1.0.0-beta.42
|
|
4
|
+
|
|
5
|
+
## 1.0.0-beta.41
|
|
6
|
+
|
|
7
|
+
## 1.0.0-beta.40
|
|
8
|
+
|
|
9
|
+
### Minor Changes
|
|
10
|
+
|
|
11
|
+
- [`5adb995`](https://github.com/outfitter-dev/trails/commit/5adb99551c2dda6190d46cce7f60bb08d63c99aa): Complete the v1 hard cutover from the authored `blaze` field to
|
|
12
|
+
`implementation` across trail contracts, surface projections, tests, examples,
|
|
13
|
+
and public source-analysis helpers. Existing applications must rename authored
|
|
14
|
+
trail behavior fields and direct trail-object access before upgrading.
|
|
15
|
+
- [`6712075`](https://github.com/outfitter-dev/trails/commit/67120754df3f614c7f4dd98be1fa0ba9d69b7765): Complete the v1 hard cutover from the `contour` domain-object declaration
|
|
16
|
+
vocabulary to `entity` across contracts, topo facts, store helpers, Warden,
|
|
17
|
+
Wayfinder, operator surfaces, examples, and generated locks. Existing
|
|
18
|
+
applications must rename contour APIs, run `trails dev reset --yes` to discard
|
|
19
|
+
pre-cutover local Topographer snapshots, and then recompile committed
|
|
20
|
+
`trails.lock` artifacts before upgrading. Those derived snapshots are
|
|
21
|
+
intentionally not read through a compatibility layer.
|
|
22
|
+
The entity-shaped wire contract advances `TopoGraph` and split lock manifests
|
|
23
|
+
from schema version 3 to 4; old split artifacts fail with regeneration guidance,
|
|
24
|
+
while the canonical root `trails.lock` remains schema version 5.
|
|
25
|
+
Wayfinder reports those stale rows as topo-store drift while keeping current
|
|
26
|
+
committed lock facts available for inspection.
|
|
27
|
+
- [`aedb87b`](https://github.com/outfitter-dev/trails/commit/aedb87b3b536c5849636c7a5951c51e1e7f0d1cc): Add governed identifier-segment renames for AST-backed migrations. Regrade can
|
|
28
|
+
now migrate camelCase, PascalCase, leading-underscore, and SCREAMING_SNAKE
|
|
29
|
+
identifier segments, including single-segment forms such as `BLAZE` and
|
|
30
|
+
`_BLAZE`, while preserving exact-mode behavior and rejecting lowercase
|
|
31
|
+
substring, concatenated acronym, or inflection matches.
|
|
32
|
+
|
|
33
|
+
### Patch Changes
|
|
34
|
+
|
|
35
|
+
- [`9874e0b`](https://github.com/outfitter-dev/trails/commit/9874e0bb034c0f98edeb19833d9d3519c2a07a4c): Add `@ontrails/cloudflare/d1`, an env-bound Cloudflare D1 store resource for `@ontrails/store` definitions. The new subpath exports `cloudflareD1` and `connectD1`, supports the backend-agnostic store accessor contract (`get`, `list`, `upsert`, `remove`), versioned-table optimistic concurrency, fixture/mock seeding, store-derived write signals, Miniflare-backed conformance tests, and Worker env-bridge integration.
|
|
36
|
+
|
|
37
|
+
`@ontrails/core` and `@ontrails/store` no longer require the Bun global for signal fire ids or late-bound store signal tokens, so store definitions and store-derived signal emission work inside Worker modules. `@ontrails/warden` now treats `cloudflareD1` as a required Cloudflare public export with `@example` coverage.
|
|
38
|
+
|
|
39
|
+
- [`1e64ee7`](https://github.com/outfitter-dev/trails/commit/1e64ee7bc270901486c5bb51ac38bf045c924adc): Add first-class queue activation sources with `queue()` in `@ontrails/core`.
|
|
40
|
+
Queue sources validate their runtime queue name and parse contract, project the
|
|
41
|
+
queue name into durable topo facts, participate in activation input
|
|
42
|
+
compatibility, and block established outputs when malformed.
|
|
43
|
+
|
|
44
|
+
Add `@ontrails/cloudflare/queues` with `cloudflareQueue`, `createMemoryQueue`,
|
|
45
|
+
and `createQueueHandler`. Cloudflare Workers now expose both `fetch` and
|
|
46
|
+
`queue` entrypoints from `createWorkersHandler`, resolve env-bound resources for
|
|
47
|
+
queue-activated trails, acknowledge successful/skipped/cancelled messages, and
|
|
48
|
+
acknowledge traced non-retryable Trails errors so permanently invalid messages
|
|
49
|
+
do not churn through the queue. Failures explicitly marked retryable enter
|
|
50
|
+
Cloudflare's retry and DLQ flow, with rate-limit delays preserved.
|
|
51
|
+
|
|
52
|
+
`@ontrails/warden` now treats queue activation sources as materialized and
|
|
53
|
+
requires `cloudflareQueue` public export example coverage.
|
|
54
|
+
|
|
55
|
+
- [`4086b5b`](https://github.com/outfitter-dev/trails/commit/4086b5b2f01b24660924fd8b667523f38caaed29): Add `@ontrails/cloudflare/r2`, an env-bound Cloudflare R2 bucket resource with
|
|
56
|
+
`cloudflareR2`, `createMemoryR2`, and `r2ObjectToBlobRef`. The resource
|
|
57
|
+
materializes Worker `r2_buckets` bindings through the shared env bridge, records
|
|
58
|
+
Cloudflare lock overlay facts, carries an in-memory object mock for
|
|
59
|
+
configuration-free tests, and documents the supported object operations plus
|
|
60
|
+
streaming/metadata boundaries.
|
|
61
|
+
|
|
62
|
+
`@ontrails/warden` now treats `cloudflareR2` as a required Cloudflare public
|
|
63
|
+
export with `@example` coverage.
|
|
64
|
+
|
|
65
|
+
- [`01b9204`](https://github.com/outfitter-dev/trails/commit/01b92046db52c71f22a871e58a308d7a94483cab): Harden governed v1 vocabulary transitions with property-key-only blaze literal
|
|
66
|
+
rewrites, structured review for ambiguous literal positions, explicit
|
|
67
|
+
scratch/history boundaries, and scan-only preservation for migration plans and
|
|
68
|
+
historical decision evidence.
|
|
69
|
+
- [`ce86e06`](https://github.com/outfitter-dev/trails/commit/ce86e06ea1624cb426f50f7333ae9b01c592868e): Treat same-scope inverse operation pairs such as enable/disable, pause/resume,
|
|
70
|
+
star/unstar, and archive/restore as intentional distinct public contracts in
|
|
71
|
+
the `duplicate-public-contract` rule.
|
|
72
|
+
- [`3531b58`](https://github.com/outfitter-dev/trails/commit/3531b58ba5320753d6d2594257ef71bc950d28a1): Add the advisory captured-kernel Warden rule for ownership review when a public
|
|
73
|
+
subpath re-exports package internals and multiple production workspaces consume
|
|
74
|
+
that subpath, including import-then-export barrels that preserve the internal
|
|
75
|
+
binding through a local alias or default export.
|
|
76
|
+
|
|
77
|
+
Expose typed import-kind inspection from `@ontrails/source` so project rules
|
|
78
|
+
can keep erased type bindings separate from runtime exports.
|
|
79
|
+
|
|
80
|
+
- [`35cbe28`](https://github.com/outfitter-dev/trails/commit/35cbe289db46539b3689dbf6cf8ab0e5d9a1b09c): Found `@ontrails/source` as the shared source-code AST kernel for parsing,
|
|
81
|
+
walking, locations, edits, literals, and generic Trails syntax recognition.
|
|
82
|
+
Warden, Regrade, Wayfinder, and the Trails operator now import those shared
|
|
83
|
+
mechanics from `@ontrails/source`; the legacy Warden AST route is removed by the
|
|
84
|
+
stacked hard cutover.
|
|
85
|
+
- [`35e5fed`](https://github.com/outfitter-dev/trails/commit/35e5fedd228e498783f479f0dd502e2f3ec772b8): Fold the Wayfinder graph-read catalog into `@ontrails/topography`. Wayfind
|
|
86
|
+
remains the product, trail-id, CLI, and MCP brand, but there is no longer an
|
|
87
|
+
`@ontrails/wayfinder` package to install or import. Programmatic consumers
|
|
88
|
+
should move imports such as `wayfinderTopo`, `wayfindOverviewTrail`,
|
|
89
|
+
`loadWayfinderArtifacts`, and the Wayfinder filter/provenance types to
|
|
90
|
+
`@ontrails/topography`.
|
|
91
|
+
|
|
92
|
+
Expose that package move as a governed Regrade transition so exact
|
|
93
|
+
`@ontrails/wayfinder` imports can move safely while product vocabulary and near
|
|
94
|
+
routes remain unchanged for review. Regrade routes package manifests through
|
|
95
|
+
structured review instead of rewriting dependency keys as plain text.
|
|
96
|
+
|
|
97
|
+
The Trails operator now reads all `wayfind.*` query trails and artifact helpers
|
|
98
|
+
from `@ontrails/topography` while preserving the existing CLI/MCP schemas,
|
|
99
|
+
route IDs, output shapes, and internal trail visibility.
|
|
100
|
+
|
|
101
|
+
- [`3a65ae3`](https://github.com/outfitter-dev/trails/commit/3a65ae363e05b7589f4a9876da4346886353b48c): Rename the durable graph substrate package from `@ontrails/topographer` to
|
|
102
|
+
`@ontrails/topography` after folding Wayfind graph queries into that owner.
|
|
103
|
+
|
|
104
|
+
Update imports to `@ontrails/topography` or
|
|
105
|
+
`@ontrails/topography/backend-support`. The pre-1.0 cutover does not ship a
|
|
106
|
+
compatibility package. TopoGraph, lock, topo-store, semantic diff, and Wayfind
|
|
107
|
+
APIs keep their existing contracts, and the `trails wayfind` CLI and MCP names
|
|
108
|
+
remain unchanged.
|
|
109
|
+
|
|
110
|
+
The governed package-route transition moves legacy `@ontrails/wayfinder`
|
|
111
|
+
imports directly to `@ontrails/topography`; it does not emit the retired
|
|
112
|
+
intermediate `@ontrails/topographer` route.
|
|
113
|
+
|
|
114
|
+
- [`2b7da24`](https://github.com/outfitter-dev/trails/commit/2b7da245b7d689e056bfd642e3651244c95e7ff4): Split Warden's source-analysis implementation into focused shared mechanics and
|
|
115
|
+
Warden-owned policy modules while preserving the public AST helper contract.
|
|
116
|
+
- [`76a9e1d`](https://github.com/outfitter-dev/trails/commit/76a9e1da974de24259f7384947e198e1f6380e44): Remove the legacy Warden AST compatibility export now that shared source-analysis helpers are published from `@ontrails/source`.
|
|
117
|
+
- [`a45cead`](https://github.com/outfitter-dev/trails/commit/a45cead6e3ddf6ce606bf5e663b74c0d3b5664b8): Make the planned contour-to-entity Regrade transition code-fact complete for
|
|
118
|
+
apply readiness while leaving the repository cutover status planned.
|
|
119
|
+
Identifiers that already contain the target segment now stay in the review
|
|
120
|
+
inventory instead of producing duplicated target names.
|
|
121
|
+
- [`8a1ac00`](https://github.com/outfitter-dev/trails/commit/8a1ac00b5d789be41ca6e464358c96b01e442bf4): Govern the exact `@ontrails/warden/ast` to `@ontrails/source` package route
|
|
122
|
+
transition for Regrade string-literal and module-specifier rewrites exposed
|
|
123
|
+
through the Trails CLI and MCP tools. Safe rewrites now require the owning
|
|
124
|
+
manifest to already declare the target package; otherwise Regrade preserves the
|
|
125
|
+
occurrence with dependency repair guidance. Invalid manifests remain unchanged
|
|
126
|
+
and produce structured repair guidance that names the owning manifest. Explicit
|
|
127
|
+
preserve rules remain no-ops before dependency validation, and dotted or
|
|
128
|
+
subpath-like near routes remain deferred instead of becoming invented imports.
|
|
129
|
+
|
|
130
|
+
## 1.0.0-beta.39
|
|
131
|
+
|
|
132
|
+
### Patch Changes
|
|
133
|
+
|
|
134
|
+
- [`f42ca6e`](https://github.com/outfitter-dev/trails/commit/f42ca6e40b29155acec446e5bf44e52e014466bd): Hard cutover: the CLI consumes `cli` bindings from the app-authored surfaces overlay. Scalar bindings behave identically to the removed cliAliases (parity-tested) — the binding name splits on `.` into a transparent synonym command path for exactly one trail. List bindings arrive as command groups: each expanded member trail gets a group-prefixed route that dispatches the member trail with its identity preserved, and a singleton list stays a group. Expansion is fail-fast boundary validation: a scalar binding resolving to zero or multiple trails, or a group with an empty member union, is a `ValidationError` naming the binding. `DeriveTopoGraphOptions.cliAliases`, the `cliAliases`/`trailsCliAliases` app-module export convention, and the per-kind compile lift are deleted; `deriveCliCommands`/`createProgram` take `overlays` instead of `aliases`, and both topo-graph derivation pipelines expand the same bindings through one shared helper so runtime CLI routes and lock routes come from one semantic. A leftover legacy export is now a Warden error (`no-legacy-cli-alias-export`) naming the `surfaceOverlay({ cli: { ... } })` rewrite.
|
|
135
|
+
|
|
136
|
+
This is a breaking API removal shipped under the lockstep beta patch convention (pre-1.0 hard-cutover posture, zero external adoption); the removed options have no deprecation window by design.
|
|
137
|
+
|
|
138
|
+
- [`bafde1f`](https://github.com/outfitter-dev/trails/commit/bafde1fc8172abb8d8617f69a3c7a70667626d10): Fresh derivations now collect app-module overlays through the shared channel compile uses. `@ontrails/adapter-kit` exports `resolveTrailsOverlays()`, the one reader of an app module's `trailsOverlays` export; the compile-path fresh app lease and Warden's fresh topo loading both go through it, making per-namespace drift asymmetry structurally impossible. Warden drift checks (`checkDrift` now accepts derive options carrying overlays) and the topo-aware rule context graph derive with the same overlays the committed lock embeds, so rules like `surface-overlay-coherence` fire on standard runs. Stale drift results name the drifted overlay namespaces (`DriftResult.driftedOverlayNamespaces`) and point at `trails compile` as the remediation.
|
|
139
|
+
- [`b077fb7`](https://github.com/outfitter-dev/trails/commit/b077fb7ba6d9724cac6f0e59bc3fec9aec28984c): Add the export-restructure Regrade class family (TRL-1210). `export-restructure:cli-aliases` inverts legacy `cliAliases`/`trailsCliAliases` exports into `surfaceOverlay({ cli })` bindings inside the module's `trailsOverlays` export — adding the `@ontrails/core` import, deleting the legacy export, and routing anything it cannot prove safe (computed keys, spreads, in-module `aliases:` references) to `needs-review` with the exact target shape named. `export-restructure:mcp-trailheads` projects call-site MCP trailhead maps into `surfaceOverlay({ mcp })` group bindings: it rewrites in place when the same module exports `trailsOverlays`, and otherwise emits a classified `needs-review` handoff naming the module-overlay target while the call-site map stays as the richer-metadata override-in-context. Warden's fix-class union grows to `'export-restructure' | 'term-rewrite'`, `no-legacy-cli-alias-export` now advertises the `export-restructure` class, and `loadWardenRegradeClasses` supersedes `loadWardenTermRewriteClasses` (still exported) as the full Warden-routed class loader. Class-mode Regrade also gains the full plan lifecycle: `trails regrade plan --type class --class-ids ...` writes a `.trails/regrade/<slug>.json` plan carrying class ids, scope, and intent, `regrade check` re-runs the dry run and gates on outstanding rewrites or review, and `regrade apply` applies and graduates the plan to `.trails/regrade/history/<slug>-<hash>.json` — the same plan → check → apply → history evidence trail vocabulary regrades already had, now available to structural transforms. The class family ships for downstream apps bridging the pre-1.0 gap, so pre-cutover alias exports and trailhead maps migrate mechanically instead of by hand.
|
|
140
|
+
- [`81373bc`](https://github.com/outfitter-dev/trails/commit/81373bc5e980bb06d56fb06af4f0986f72e318c7): Wave-2 MCP cutover to the app-authored `surfaces` overlay. The overlay's `mcp` bindings are now the authored, lockable default for the MCP surface: a list binding derives one grouped trailhead tool (member selection in `{ trail, input }`, member identity preserved in `{ trail, output }`, deterministic derived description), and a scalar binding derives an additional tool synonym whose MCP-safe name is published verbatim and must expand to exactly one trail. `deriveMcpTools`/`createServer` accept the new `overlays` option; `@ontrails/core` gains `expandMcpSurfaceBindings` and `deriveMcpTrailheadDescription`.
|
|
141
|
+
|
|
142
|
+
The call-site `CreateServerOptions.trailheads` map survives as permanent override-in-context design, not a compatibility bridge: when both channels are present, the call-site map wins at runtime. Warden's new `trailhead-override-divergence` rule (warn) names both sides when a call-site map's binding names or member selectors diverge from the authored overlay default.
|
|
143
|
+
|
|
144
|
+
Topographer now derives `graph.trailheads` from the overlay's `mcp` list bindings in both `deriveTopoGraph` and the store-side graph build, so trailhead facts flow from compiled locks into Wayfinder reads for the first time. The never-wired `DeriveTopoGraphOptions.trailheads` option and the `TopoGraphTrailheadDeclaration`/`TopoGraphTrailheadTrailSelector` types are removed — a beta-window hard cutover of an option no caller could reach; author the equivalent `mcp` list binding in `surfaceOverlay({ mcp })` instead.
|
|
145
|
+
|
|
146
|
+
- [`820b4ad`](https://github.com/outfitter-dev/trails/commit/820b4ad9c40ea383b3c489a05fe7e4b2328e324f): Add `surfaceOverlay` — the shared surface-naming schema (scalar binding = synonym, list binding = grouped entry, singleton list stays a group) with app-authored/adapter-derived overlay provenance enforced at collection and consumption, and the `surface-overlay-coherence` Warden rule. MCP tool-name derivation moves to `@ontrails/core` (`deriveMcpToolName`) so the surface and governance read one projection; `@ontrails/mcp`'s `deriveToolName` now delegates to it. The coherence rule activates on standard warden runs once fresh derivations collect app-module overlays through the shared compile channel (TRL-1209, next in this stack).
|
|
147
|
+
- [`58db715`](https://github.com/outfitter-dev/trails/commit/58db715209442604fe58f5004fec37426c5969b1): `duplicate-public-contract` now includes contour anchoring in the normalized contract fingerprint, so factory CRUD trails derived against different contours (for example two tables' `delete` trails that both normalize to `{ id } → void` with the same intent) are no longer flagged as duplicates. Genuine duplicates — identical facts with the same or no contour anchoring — still warn, and the diagnostic message names contours among the shared facts.
|
|
148
|
+
- [`7cd0576`](https://github.com/outfitter-dev/trails/commit/7cd0576db8bc421cfd441c126f884e425e2254af): `signal-graph-coaching` no longer flags store-derived table signals (`created`/`updated`/`removed`) that have no consumers. Store resources advertise those signals as available capability, so leaving them unconsumed is a legitimate steady state for store-backed apps. Non-store produced signals without consumers still warn, and dead-signal coaching (no producer and no consumer) is unchanged.
|
|
149
|
+
- [`b9e82a3`](https://github.com/outfitter-dev/trails/commit/b9e82a33546356c93fbc302fb934a83f19f1c2c5): Webhook ingress v2 (TRL-1194, absorbing TRL-1174 and TRL-1175): store-verified, per-endpoint webhook ingress becomes framework-expressible. `webhook()` accepts dynamic path segments (`path: '/hooks/:endpoint'`) whose values are delivered as envelope fields, opt-in `rawBody: true` delivery (a non-JSON body is no longer a surface-level failure — the trail owns payload interpretation), an allowlisted `headers` list delivered lowercased, and `resources` that make `verify` resource-capable: the HTTP surface resolves the declared resources into a context for the verifier and releases them afterwards, so signature checks can reach stores holding per-endpoint secrets. Envelope-mode ingress responds 202 Accepted; classic static webhooks keep their exact-match, JSON-gated, 200 behavior. Core exports `parseWebhookPathParams`, `matchWebhookPath`, `webhookPathPatternsOverlap`, and `createResources`. The `webhook-route-collision` Warden rule now also flags dynamic patterns that overlap other webhook or derived routes, not just exact method/path duplicates.
|
|
150
|
+
|
|
151
|
+
## 1.0.0-beta.38
|
|
152
|
+
|
|
153
|
+
### Patch Changes
|
|
154
|
+
|
|
155
|
+
- [`a105127`](https://github.com/outfitter-dev/trails/commit/a105127e5662ed9a6c245125f791fb0182da3f5e): Add the `@ontrails/cloudflare` adapter collection with its first two service subpaths. `@ontrails/cloudflare/workers` exports `createWorkersHandler`, a materializer producing the `{ fetch(request, env, ctx) }` Worker export on the shared HTTP fetch kernel, with an env bridge that re-resolves env-bound resources whenever a new Worker `env` arrives so no resource instance serves a request with a stale env. `@ontrails/cloudflare/kv` exports `cloudflareKv`, a resource definition wrapping a KV namespace binding (`get`/`put`/`delete`/`list` with TTL options) plus an in-memory `createMemoryKv` mock so `testAll` runs configuration-free.
|
|
156
|
+
|
|
157
|
+
`@ontrails/core` now guards the default trail context fields: `requestId` falls back to `crypto.randomUUID()` when the `Bun` global is absent, and `cwd`/`env` fall back to `'/'`/`{}` when `process` is absent, so trail execution works on runtimes like Cloudflare Workers.
|
|
158
|
+
|
|
159
|
+
`@ontrails/warden` registers the `@ontrails/cloudflare` public barrel in the repo-local `public-export-example-coverage` policy, requiring `@example` TSDoc coverage on `createWorkersHandler` and `cloudflareKv`.
|
|
160
|
+
|
|
161
|
+
## 1.0.0-beta.37
|
|
162
|
+
|
|
163
|
+
## 1.0.0-beta.36
|
|
164
|
+
|
|
165
|
+
### Patch Changes
|
|
166
|
+
|
|
167
|
+
- [`6e63e48`](https://github.com/outfitter-dev/trails/commit/6e63e483617b84cb6868d0c4d58d5b5a8d3b9ed2): Complete the v1 grouped surface-entry vocabulary cutover from facet to trailhead, including Regrade dogfood support for governed string literal renames and composed AST rewrite application.
|
|
168
|
+
|
|
169
|
+
## 1.0.0-beta.35
|
|
170
|
+
|
|
171
|
+
### Patch Changes
|
|
172
|
+
|
|
173
|
+
- [`1f5659b`](https://github.com/outfitter-dev/trails/commit/1f5659bfe39568f7bbee0503ace8b6e562d3f899): Add the `duplicate-exported-symbol` Warden rule to warn when multiple first-party packages define the same exported symbol name.
|
|
174
|
+
|
|
175
|
+
## 1.0.0-beta.34
|
|
176
|
+
|
|
177
|
+
## 1.0.0-beta.33
|
|
178
|
+
|
|
179
|
+
### Patch Changes
|
|
180
|
+
|
|
181
|
+
- [`fc002d5`](https://github.com/outfitter-dev/trails/commit/fc002d5669f4303427e99f45f9998fd0b0172bdb): Add governed AST identifier rename helpers and Warden residue detection for
|
|
182
|
+
active vocabulary symbol transitions.
|
|
183
|
+
- [`6ca0d8f`](https://github.com/outfitter-dev/trails/commit/6ca0d8f776801eee71ddd86cb88c198eaf5815fd): Add a typed governed-vocabulary transition registry that Warden owns and Regrade
|
|
184
|
+
can consume for migration planning.
|
|
185
|
+
|
|
186
|
+
## 1.0.0-beta.32
|
|
187
|
+
|
|
188
|
+
### Patch Changes
|
|
189
|
+
|
|
190
|
+
- 3e5c0fc: Export shared diagnostic base types from core and align governance diagnostic
|
|
191
|
+
severity vocabulary across adapter checks, permits, and Warden.
|
|
192
|
+
- f3c4fef: Export a shared `escapeRegExp` helper from core and migrate first-party callers off local copies.
|
|
193
|
+
- cb0a9d8: Export shared workspace package discovery helpers from core and migrate first-party discovery callers.
|
|
194
|
+
- fe72b84: Fold remaining Regrade and Warden scan-target surfaces onto the shared path-scope vocabulary.
|
|
195
|
+
- Updated dependencies [3e5c0fc]
|
|
196
|
+
- Updated dependencies [f3c4fef]
|
|
197
|
+
- Updated dependencies [cb0a9d8]
|
|
198
|
+
- Updated dependencies [8db145e]
|
|
199
|
+
- Updated dependencies [2b819f4]
|
|
200
|
+
- Updated dependencies [21c6dda]
|
|
201
|
+
- Updated dependencies [860ef32]
|
|
202
|
+
- Updated dependencies [fe72b84]
|
|
203
|
+
- @ontrails/adapter-kit@1.0.0-beta.32
|
|
204
|
+
- @ontrails/core@1.0.0-beta.32
|
|
205
|
+
- @ontrails/permits@1.0.0-beta.32
|
|
206
|
+
- @ontrails/topographer@1.0.0-beta.32
|
|
207
|
+
- @ontrails/config@1.0.0-beta.32
|
|
208
|
+
- @ontrails/cli@1.0.0-beta.32
|
|
209
|
+
- @ontrails/store@1.0.0-beta.32
|
|
210
|
+
|
|
211
|
+
## 1.0.0-beta.31
|
|
212
|
+
|
|
213
|
+
### Patch Changes
|
|
214
|
+
|
|
215
|
+
- ee9f3ae: Let Warden fix capabilities declare downstream scan targets and have Regrade
|
|
216
|
+
honor those targets for Warden-backed term-rewrite classes.
|
|
217
|
+
|
|
218
|
+
Dogfood the first safe facet-to-trailhead prose rewrite through project-local
|
|
219
|
+
Warden rules and Regrade.
|
|
220
|
+
|
|
221
|
+
- a0126d9: Add Warden `scope.exclude` globs through project config and the Trails CLI
|
|
222
|
+
wrapper so governance runs can exclude local notes, scratch space, and generated
|
|
223
|
+
state without dropping durable skills or plugin assets from scope.
|
|
224
|
+
- 6a26a08: Rename Warden governance scope controls from jurisdiction ignore settings to `scope.exclude` across config, CLI, and Trails surfaces.
|
|
225
|
+
- Updated dependencies [4cd5d4e]
|
|
226
|
+
- Updated dependencies [38907cc]
|
|
227
|
+
- @ontrails/core@1.0.0-beta.31
|
|
228
|
+
- @ontrails/adapter-kit@1.0.0-beta.31
|
|
229
|
+
- @ontrails/cli@1.0.0-beta.31
|
|
230
|
+
- @ontrails/config@1.0.0-beta.31
|
|
231
|
+
- @ontrails/permits@1.0.0-beta.31
|
|
232
|
+
- @ontrails/store@1.0.0-beta.31
|
|
233
|
+
- @ontrails/topographer@1.0.0-beta.31
|
|
234
|
+
|
|
235
|
+
## 1.0.0-beta.30
|
|
236
|
+
|
|
237
|
+
### Patch Changes
|
|
238
|
+
|
|
239
|
+
- @ontrails/adapter-kit@1.0.0-beta.30
|
|
240
|
+
- @ontrails/cli@1.0.0-beta.30
|
|
241
|
+
- @ontrails/config@1.0.0-beta.30
|
|
242
|
+
- @ontrails/core@1.0.0-beta.30
|
|
243
|
+
- @ontrails/permits@1.0.0-beta.30
|
|
244
|
+
- @ontrails/store@1.0.0-beta.30
|
|
245
|
+
- @ontrails/topographer@1.0.0-beta.30
|
|
246
|
+
|
|
247
|
+
## 1.0.0-beta.29
|
|
248
|
+
|
|
249
|
+
### Patch Changes
|
|
250
|
+
|
|
251
|
+
- @ontrails/adapter-kit@1.0.0-beta.29
|
|
252
|
+
- @ontrails/cli@1.0.0-beta.29
|
|
253
|
+
- @ontrails/config@1.0.0-beta.29
|
|
254
|
+
- @ontrails/core@1.0.0-beta.29
|
|
255
|
+
- @ontrails/permits@1.0.0-beta.29
|
|
256
|
+
- @ontrails/store@1.0.0-beta.29
|
|
257
|
+
- @ontrails/topographer@1.0.0-beta.29
|
|
258
|
+
|
|
259
|
+
## 1.0.0-beta.28
|
|
260
|
+
|
|
261
|
+
### Patch Changes
|
|
262
|
+
|
|
263
|
+
- @ontrails/adapter-kit@1.0.0-beta.28
|
|
264
|
+
- @ontrails/cli@1.0.0-beta.28
|
|
265
|
+
- @ontrails/config@1.0.0-beta.28
|
|
266
|
+
- @ontrails/core@1.0.0-beta.28
|
|
267
|
+
- @ontrails/permits@1.0.0-beta.28
|
|
268
|
+
- @ontrails/store@1.0.0-beta.28
|
|
269
|
+
- @ontrails/topographer@1.0.0-beta.28
|
|
270
|
+
|
|
271
|
+
## 1.0.0-beta.27
|
|
272
|
+
|
|
273
|
+
### Patch Changes
|
|
274
|
+
|
|
275
|
+
- @ontrails/adapter-kit@1.0.0-beta.27
|
|
276
|
+
- @ontrails/cli@1.0.0-beta.27
|
|
277
|
+
- @ontrails/config@1.0.0-beta.27
|
|
278
|
+
- @ontrails/core@1.0.0-beta.27
|
|
279
|
+
- @ontrails/permits@1.0.0-beta.27
|
|
280
|
+
- @ontrails/store@1.0.0-beta.27
|
|
281
|
+
- @ontrails/topographer@1.0.0-beta.27
|
|
282
|
+
|
|
283
|
+
## 1.0.0-beta.26
|
|
284
|
+
|
|
285
|
+
### Patch Changes
|
|
286
|
+
|
|
287
|
+
- 1307568: Centralize Trails config module path conventions, move local config overrides to root `trails.config.local.*`, scaffold the matching gitignore entries, and load project-local Warden rules from `.trails/rules.ts` or `.trails/rules/`.
|
|
288
|
+
- ef09e46: Add shared Trails project-root discovery helpers and use them in Warden so nested
|
|
289
|
+
cwd invocations still load root `trails.config.*` and project-local
|
|
290
|
+
`.trails/rules*` governance.
|
|
291
|
+
- 38cd9d6: Add a shared Trails config file loader that treats `trails.config.ts` as the natural primary while supporting JSON, JSONC, YAML, and TOML peer formats. Release and Warden config loading now consume the same loader and local overrides can be authored as data files.
|
|
292
|
+
- f8403c4: Collapse normal topo compilation onto one root `trails.lock` envelope that embeds the TopoGraph, hash, and summary while keeping legacy `.trails/trails.lock` plus `.trails/topo.lock` readers for migration compatibility.
|
|
293
|
+
- ff48e41: Harden project-local rule loading: Warden now discovers `.trails/rules.ts` and direct `.trails/rules/*.ts` files only, reports duplicate project-local rule ids, and emits a migration diagnostic for the retired `trails/warden/rules` location.
|
|
294
|
+
- Updated dependencies [1307568]
|
|
295
|
+
- Updated dependencies [ef09e46]
|
|
296
|
+
- Updated dependencies [38cd9d6]
|
|
297
|
+
- Updated dependencies [f8403c4]
|
|
298
|
+
- Updated dependencies [371d19e]
|
|
299
|
+
- @ontrails/config@1.0.0-beta.26
|
|
300
|
+
- @ontrails/core@1.0.0-beta.26
|
|
301
|
+
- @ontrails/topographer@1.0.0-beta.26
|
|
302
|
+
- @ontrails/adapter-kit@1.0.0-beta.26
|
|
303
|
+
- @ontrails/cli@1.0.0-beta.26
|
|
304
|
+
- @ontrails/permits@1.0.0-beta.26
|
|
305
|
+
- @ontrails/store@1.0.0-beta.26
|
|
306
|
+
|
|
307
|
+
## 1.0.0-beta.25
|
|
308
|
+
|
|
309
|
+
### Patch Changes
|
|
310
|
+
|
|
311
|
+
- a9fdbc7: Clarify surface accommodation doctrine in MCP surface facet metadata and Warden trail-fork coaching guidance.
|
|
312
|
+
- f8fd6ca: Add OXC Walker-backed AST facade helpers for parent-aware traversal, scope-aware traversal, source locations, and safe source edits.
|
|
313
|
+
- 0fcc42b: Add `dead-public-trail` and `duplicate-public-contract` Warden coaching rules so exported public trails stay anchored and duplicate surface contracts become visible drift.
|
|
314
|
+
- c36aca9: Preserve existing Result error boundaries directly and widen Warden pass-through
|
|
315
|
+
coaching beyond trail blazes.
|
|
316
|
+
- f556559: Adds curated typed AST node guards to the public `@ontrails/warden/ast` helper
|
|
317
|
+
surface so source consumers can narrow common OXC node shapes without assertion
|
|
318
|
+
casts.
|
|
319
|
+
- 6250729: Expands the public AST guard/accessor surface and migrates Warden/Regrade AST
|
|
320
|
+
consumers onto the typed helpers instead of rule-local node-field casts.
|
|
321
|
+
- d73c38e: Warn when Warden rules add raw AST node-field casts where a typed accessor exists.
|
|
322
|
+
- a8e4dc3: Clean up the Wayfinder navigation grammar before RC, including explicit pattern/query/file selectors, target-bound dependency and impact flags, drift-first provenance fields, stricter fires declaration diagnostics, and updated operator dogfood coverage.
|
|
323
|
+
- a4f9cf6: Reserve the `shift` error category and `WorkspaceShiftError` before the stable
|
|
324
|
+
cutover so surface mappings can distinguish moved-workspace retry verdicts.
|
|
325
|
+
Update Warden's error-mapping completeness examples to cover the reserved
|
|
326
|
+
category.
|
|
327
|
+
- 00c0cf8: Add Warden governance for CLI command route and alias coherence.
|
|
328
|
+
- b313c58: Add library projection coherence governance so Warden reports generated library export collisions and stale projection targets before packages materialize.
|
|
329
|
+
- f245fa0: Add advisory trail-fork coaching so Warden can warn when a trail may be hiding
|
|
330
|
+
several capabilities behind one branching action or operation input.
|
|
331
|
+
- f1e6efa: Recognize module-local helper functions that receive the trail context when checking declared compose usage.
|
|
332
|
+
- caff950: `implementation-returns-result` now recognizes conditional returns whose branches are all recognized Result expressions — both `return cond ? Result.err(...) : Result.ok(...)` statements (including branches that are Result helpers or Result-bound variables) and concise ternary blaze bodies. Previously the idiomatic two-branch ternary was flagged as an error.
|
|
333
|
+
- df13faf: Tighten Wayfinder navigation review findings: carry adapter filters into included adapter facts, keep live-source outline off the operator MCP surface until host-root binding exists, make unknown MCP resources protocol errors, route secondary Wayfinder graph populations through unified flags, and keep undeclared string `ctx.compose()` calls as Warden errors.
|
|
334
|
+
- Updated dependencies [c36aca9]
|
|
335
|
+
- Updated dependencies [3befcf1]
|
|
336
|
+
- Updated dependencies [f1e6efa]
|
|
337
|
+
- Updated dependencies [a4f9cf6]
|
|
338
|
+
- Updated dependencies [9bcf34e]
|
|
339
|
+
- Updated dependencies [f7d97fc]
|
|
340
|
+
- Updated dependencies [59d10da]
|
|
341
|
+
- Updated dependencies [d9c6e50]
|
|
342
|
+
- @ontrails/core@1.0.0-beta.25
|
|
343
|
+
- @ontrails/topographer@1.0.0-beta.25
|
|
344
|
+
- @ontrails/cli@1.0.0-beta.25
|
|
345
|
+
- @ontrails/adapter-kit@1.0.0-beta.25
|
|
346
|
+
- @ontrails/permits@1.0.0-beta.25
|
|
347
|
+
- @ontrails/store@1.0.0-beta.25
|
|
348
|
+
|
|
349
|
+
## 1.0.0-beta.24
|
|
350
|
+
|
|
351
|
+
### Patch Changes
|
|
352
|
+
|
|
353
|
+
- @ontrails/adapter-kit@1.0.0-beta.24
|
|
354
|
+
- @ontrails/cli@1.0.0-beta.24
|
|
355
|
+
- @ontrails/core@1.0.0-beta.24
|
|
356
|
+
- @ontrails/permits@1.0.0-beta.24
|
|
357
|
+
- @ontrails/store@1.0.0-beta.24
|
|
358
|
+
- @ontrails/topographer@1.0.0-beta.24
|
|
359
|
+
|
|
360
|
+
## 1.0.0-beta.23
|
|
361
|
+
|
|
362
|
+
### Patch Changes
|
|
363
|
+
|
|
364
|
+
- @ontrails/adapter-kit@1.0.0-beta.23
|
|
365
|
+
- @ontrails/cli@1.0.0-beta.23
|
|
366
|
+
- @ontrails/core@1.0.0-beta.23
|
|
367
|
+
- @ontrails/permits@1.0.0-beta.23
|
|
368
|
+
- @ontrails/store@1.0.0-beta.23
|
|
369
|
+
- @ontrails/topographer@1.0.0-beta.23
|
|
370
|
+
|
|
371
|
+
## 1.0.0-beta.22
|
|
372
|
+
|
|
373
|
+
### Patch Changes
|
|
374
|
+
|
|
375
|
+
- @ontrails/adapter-kit@1.0.0-beta.22
|
|
376
|
+
- @ontrails/cli@1.0.0-beta.22
|
|
377
|
+
- @ontrails/core@1.0.0-beta.22
|
|
378
|
+
- @ontrails/permits@1.0.0-beta.22
|
|
379
|
+
- @ontrails/store@1.0.0-beta.22
|
|
380
|
+
- @ontrails/topographer@1.0.0-beta.22
|
|
381
|
+
|
|
382
|
+
## 1.0.0-beta.21
|
|
383
|
+
|
|
384
|
+
### Minor Changes
|
|
385
|
+
|
|
386
|
+
- 5be032c: Add the repo-local `public-export-example-coverage` Warden rule (and its `publicExportExampleCoverageTrail` wrapper), graduating `scripts/check-public-api-examples.ts` into governed rule coverage. The rule anchors to this repository's five public surface package barrels via the rule module's own on-disk location, so it stays silent in consumer repositories.
|
|
387
|
+
|
|
388
|
+
### Patch Changes
|
|
389
|
+
|
|
390
|
+
- Updated dependencies [99523f2]
|
|
391
|
+
- Updated dependencies [3caa263]
|
|
392
|
+
- @ontrails/core@1.0.0-beta.21
|
|
393
|
+
- @ontrails/permits@1.0.0-beta.21
|
|
394
|
+
- @ontrails/topographer@1.0.0-beta.21
|
|
395
|
+
- @ontrails/adapter-kit@1.0.0-beta.21
|
|
396
|
+
- @ontrails/cli@1.0.0-beta.21
|
|
397
|
+
- @ontrails/store@1.0.0-beta.21
|
|
398
|
+
|
|
399
|
+
## 1.0.0-beta.20
|
|
400
|
+
|
|
401
|
+
### Minor Changes
|
|
402
|
+
|
|
403
|
+
- 8bc0708: Add surface facet coherence diagnostics for selector overlap, visibility widening acknowledgements, dynamic selectors, and description hygiene.
|
|
404
|
+
|
|
405
|
+
### Patch Changes
|
|
406
|
+
|
|
407
|
+
- 851a2a3: Derive trail caller and blaze input types from the authored input schema while keeping one public input contract.
|
|
408
|
+
- 6901776: Add a Warden rule and safe-fix metadata for rewriting retired cross vocabulary to compose vocabulary.
|
|
409
|
+
- Updated dependencies [851a2a3]
|
|
410
|
+
- Updated dependencies [eee1307]
|
|
411
|
+
- Updated dependencies [b248d4a]
|
|
412
|
+
- @ontrails/core@1.0.0-beta.20
|
|
413
|
+
- @ontrails/store@1.0.0-beta.20
|
|
414
|
+
- @ontrails/topographer@1.0.0-beta.20
|
|
415
|
+
- @ontrails/adapter-kit@1.0.0-beta.20
|
|
416
|
+
- @ontrails/cli@1.0.0-beta.20
|
|
417
|
+
- @ontrails/permits@1.0.0-beta.20
|
|
418
|
+
|
|
419
|
+
## 1.0.0-beta.19
|
|
420
|
+
|
|
421
|
+
### Major Changes
|
|
422
|
+
|
|
423
|
+
- 1eb5bdc: Rename first-class trail composition from the `cross` API family to the `compose` family across core contracts, testing helpers, topo projections, Warden rules, CLI scaffolds, and docs. `composes`, `ctx.compose`, `composeInput`, and `Compose*` type names are now the public authoring vocabulary; topo persistence migrates legacy composition rows and graph keys forward.
|
|
424
|
+
|
|
425
|
+
### Minor Changes
|
|
426
|
+
|
|
427
|
+
- 120caf5: Promote topo artifact commands to `trails compile` and `trails validate`.
|
|
428
|
+
- 1c975c3: Define the Warden fix-metadata contract (`WardenFix`, `WardenFixCapability`, `WardenFixClass`, `WardenFixSafety`, `WardenFixEdit`) with optional `fix` metadata on diagnostics and rule metadata, projected through the guide, manifest, markdown, and agent guidance. Export `wardenFixClasses`/`wardenFixSafeties` value arrays and surface the rule `fix` capability in the `warden.guide` trail output schema. Dormant until a rule declares it.
|
|
429
|
+
- d5d518e: Add `warden --fix` to apply safe source fixes. The executor applies only `safety: 'safe'` edits last-to-first, re-reading and rewriting affected files, while review-required, edit-less, and topo diagnostics stay reported but unapplied. The report surfaces applied, changed-file, and skipped counts.
|
|
430
|
+
|
|
431
|
+
Expose `fix` through the Trails app wrapper and mark the `warden` trail as write intent with explicit public access because `fix: true` mutates source files while the local governance command remains directly runnable.
|
|
432
|
+
|
|
433
|
+
### Patch Changes
|
|
434
|
+
|
|
435
|
+
- f8d80b9: Refresh current-facing compose vocabulary in package documentation after the composition cutover.
|
|
436
|
+
- f0f7e2f: Avoid draft-marker false positives when a packed Warden install scans the Trails framework source tree from a different package location.
|
|
437
|
+
- 64fb15a: Add Warden rules for trail version lifecycle guidance, version gaps, marker-safe schemas, pinned composes, examples, and pending force audit events.
|
|
438
|
+
- 5d88104: Polish Trails blaze terminology across package docs and Warden guidance.
|
|
439
|
+
- 48d5ff4: Attach term-rewrite fix metadata to the `no-legacy-layer-imports` rule, marking it review-required with no mechanical edits (the legacy layers were removed, not renamed) so `warden --fix` reports but never auto-applies the migration.
|
|
440
|
+
- 216bf10: Fix a false `dead-internal-trail` warning by unioning file-local compose evidence with the project-context compose set, so same-file composition in scanned-but-unregistered packages is recognized.
|
|
441
|
+
- 678cb1c: Expose the shared adapter readiness engine through Warden's opt-in
|
|
442
|
+
`--adapter-check` diagnostics and the local `trails adapter check` authoring
|
|
443
|
+
workflow.
|
|
444
|
+
- 5874fd6: Preserve diagnostic fix metadata through Warden rule trail outputs.
|
|
445
|
+
- 619cb15: Add a Warden rule (`no-destructured-compose`) that coaches trail blazes to call `ctx.compose(...)` directly instead of destructuring `compose` from the context.
|
|
446
|
+
|
|
447
|
+
Keep the generated `create` trail on the direct `ctx.compose(...)` shape so framework-authored trails follow the same composition guidance.
|
|
448
|
+
|
|
449
|
+
- 4642268: Make the standalone `warden --help` entry point print CLI help instead of running Warden with an unknown-option diagnostic.
|
|
450
|
+
- 9bab0cf: Follow schema aliases when detecting hidden optional wrappers in version marker
|
|
451
|
+
schemas.
|
|
452
|
+
- 3ceeba8: Expand marker-schema-unsupported diagnostics to catch Zod schema constructs that
|
|
453
|
+
runtime marker derivation rejects.
|
|
454
|
+
- beafd03: Add a warning for blazes that re-wrap an existing Result error with Result.err(result.error) instead of returning the original Result.
|
|
455
|
+
- 7b173e0: Warn when a `resource('id', { ... })` definition declares neither a `mock` factory nor an explicit `unmockable` reason, so `testAll(app)` can provision it without production configuration (common pitfall #10).
|
|
456
|
+
- 6e50e7b: Recognize Result-returning helper provenance when helpers use an imported Result type alias.
|
|
457
|
+
- 48edf8d: Expose shared Warden source scan-target predicates so downstream consumers can
|
|
458
|
+
preserve the CLI runner's test and declaration-file filtering before invoking
|
|
459
|
+
Warden-owned rules directly.
|
|
460
|
+
- 12ffa3b: Align Warden signal-rule trail examples so producer trails call `ctx.fire()` for their declared signals.
|
|
461
|
+
- 2f262f7: Improve Warden diagnostics so names-only findings teach the canonical fix instead of only naming the violation.
|
|
462
|
+
- 58b01f2: Warn when topo export modules open Trails surfaces at module top level.
|
|
463
|
+
- Updated dependencies [bb81ffe]
|
|
464
|
+
- Updated dependencies [e41c382]
|
|
465
|
+
- Updated dependencies [a2f1825]
|
|
466
|
+
- Updated dependencies [a2f1825]
|
|
467
|
+
- Updated dependencies [1eb5bdc]
|
|
468
|
+
- Updated dependencies [f8d80b9]
|
|
469
|
+
- Updated dependencies [846a597]
|
|
470
|
+
- Updated dependencies [223aaad]
|
|
471
|
+
- Updated dependencies [3125f4d]
|
|
472
|
+
- Updated dependencies [2494dc6]
|
|
473
|
+
- Updated dependencies [4bc8a99]
|
|
474
|
+
- Updated dependencies [120caf5]
|
|
475
|
+
- Updated dependencies [2d53717]
|
|
476
|
+
- Updated dependencies [16cb740]
|
|
477
|
+
- Updated dependencies [8894ecb]
|
|
478
|
+
- Updated dependencies [fdf7ec9]
|
|
479
|
+
- Updated dependencies [92e709b]
|
|
480
|
+
- Updated dependencies [d76be13]
|
|
481
|
+
- Updated dependencies [84f56a5]
|
|
482
|
+
- Updated dependencies [653d1fc]
|
|
483
|
+
- Updated dependencies [431b04c]
|
|
484
|
+
- Updated dependencies [2e76288]
|
|
485
|
+
- Updated dependencies [5d88104]
|
|
486
|
+
- Updated dependencies [f04a9ef]
|
|
487
|
+
- Updated dependencies [fc00aeb]
|
|
488
|
+
- Updated dependencies [ab1c77c]
|
|
489
|
+
- Updated dependencies [4f43874]
|
|
490
|
+
- Updated dependencies [678cb1c]
|
|
491
|
+
- @ontrails/adapter-kit@1.0.0-beta.19
|
|
492
|
+
- @ontrails/core@1.0.0-beta.19
|
|
493
|
+
- @ontrails/cli@1.0.0-beta.19
|
|
494
|
+
- @ontrails/store@1.0.0-beta.19
|
|
495
|
+
- @ontrails/topographer@1.0.0-beta.19
|
|
496
|
+
- @ontrails/permits@1.0.0-beta.19
|
|
497
|
+
|
|
498
|
+
## 1.0.0-beta.18
|
|
499
|
+
|
|
500
|
+
### Patch Changes
|
|
501
|
+
|
|
502
|
+
- @ontrails/cli@1.0.0-beta.18
|
|
503
|
+
- @ontrails/core@1.0.0-beta.18
|
|
504
|
+
- @ontrails/permits@1.0.0-beta.18
|
|
505
|
+
- @ontrails/store@1.0.0-beta.18
|
|
506
|
+
- @ontrails/topographer@1.0.0-beta.18
|
|
507
|
+
|
|
508
|
+
## 1.0.0-beta.17
|
|
509
|
+
|
|
510
|
+
### Patch Changes
|
|
511
|
+
|
|
512
|
+
- Updated dependencies [3dc8254]
|
|
513
|
+
- Updated dependencies [61497c5]
|
|
514
|
+
- @ontrails/core@1.0.0-beta.17
|
|
515
|
+
- @ontrails/cli@1.0.0-beta.17
|
|
516
|
+
- @ontrails/permits@1.0.0-beta.17
|
|
517
|
+
- @ontrails/store@1.0.0-beta.17
|
|
518
|
+
- @ontrails/topographer@1.0.0-beta.17
|
|
519
|
+
|
|
520
|
+
## 1.0.0-beta.16
|
|
521
|
+
|
|
522
|
+
### Minor Changes
|
|
523
|
+
|
|
524
|
+
- e991a5b: Add generic enum value aliases for CLI flags and migrate Warden command aliases onto the shared alias model.
|
|
525
|
+
- 2e05e27: Add `--dev-permit` for local-development synthetic full-access. New `devPermitPreset()` exposes a boolean flag; when set, the CLI synthesizes a `BasePermit` (`id: 'dev-permit'`, scopes enumerated from every declared scope across the topo) and overlays it on `ctx.permit`. Mutually exclusive with `--permit` and `--token` — any combination fails with `ValidationError` listing the conflicting flags. New Warden rule `no-dev-permit-in-source` flags any committed source file containing `--dev-permit` as an error, with a tight allow-list (`packages/cli/src/flags.ts`, `packages/cli/src/build.ts`, the rule itself). The Warden runner still scans test TypeScript files for this literal while keeping unrelated source rules filtered out of tests. Apps that import `authResource`/`authLayer` are unaffected.
|
|
526
|
+
- ad553a6: Add one warden rule coaching against the removed legacy layer API. `no-legacy-layer-imports` (error) flags any source-string reference to `authLayer`, `autoIterateLayer`, or `dateShortcutsLayer` and points the developer at the migration paths (CLI surface derivation for pagination/date-shortcuts; intrinsic permit enforcement for auth). Allow-list covers the migration notes in `packages/cli/src/{pagination,date-shortcuts}.ts` and the rule's own files. The rule is classified `lifecycle: temporary` with a `retireWhen` string tying it to the legacy layer migration window. Trail count bumps 45 → 46.
|
|
527
|
+
- 802fdfc: Rename Warden guide manifest rule grouping from `category` to `concern` so the
|
|
528
|
+
public JSON contract matches the source metadata field.
|
|
529
|
+
- 22c6c06: Accept ADR-0041 Unified Observability and ship the first activation and
|
|
530
|
+
observability primitives it depends on: activation trace records, topo-level
|
|
531
|
+
observe configuration, webhook activation materialization, signal/webhook
|
|
532
|
+
warden coaching, the `@ontrails/observe` package, sink composition, and
|
|
533
|
+
zero-dependency observe sinks.
|
|
534
|
+
- 767eb41: Ship the default `warden` bin from `@ontrails/warden` and migrate the old private `apps/ci` runner into the package-local CLI surface.
|
|
535
|
+
|
|
536
|
+
The new bin supports `--ci`, `--pre-push`, `--depth`, `--fail-on`, `--strict`, `--format`, `--lock`, `--drafts`, `--apps`, and the Sprint 1 standalone aliases. CI output now uses the package Warden formatters directly, so GitHub annotations and JSON payloads follow the `@ontrails/warden` report shape instead of the retired `apps/ci` wrapper shape.
|
|
537
|
+
|
|
538
|
+
- 82019a7: Export `wardenConfigSchema` for composing Warden options into `trails.config.ts`.
|
|
539
|
+
- f6fdc62: Add structured Warden remediation guidance to rule metadata, diagnostics, report output, and the `trails warden` result schema.
|
|
540
|
+
- a10ffa4: Add a Warden guide manifest projection and expose it through `trails warden guide` in markdown, agent-json, and manifest formats.
|
|
541
|
+
- 7085f01: Add a Warden topo-aware rule that requires public MCP/HTTP surface-eligible trails to declare output schemas.
|
|
542
|
+
- 8ddf5ff: Extend `runWarden` into the shared Warden orchestration entrypoint with effective config resolution, depth/fail thresholds, rule facets, and multi-topo report metadata.
|
|
543
|
+
|
|
544
|
+
Adapt the built-in `trails warden` wrapper to consume the readonly Warden report diagnostics contract without weakening its output schema.
|
|
545
|
+
|
|
546
|
+
- f5b6112: Add an advisory Warden rule that prefers static resource helpers over dynamic context resource lookups when the resource definition is already in scope.
|
|
547
|
+
|
|
548
|
+
### Patch Changes
|
|
549
|
+
|
|
550
|
+
- c3fc5c3: Move previously root-exported helper contracts out of `src/internal/*` to stable core module homes, document their public boundary, and guard the public barrel against future internal re-exports.
|
|
551
|
+
- e898cc4: Add repo-level Knip dead-code detection and remove stale internal exports and unused package dependencies surfaced by the new check.
|
|
552
|
+
- 3395234: Move store adapter-binding helpers to `@ontrails/store/adapter-support` and topographer direct database/admin helpers to `@ontrails/topographer/backend-support`, keeping root exports focused on contract-level APIs.
|
|
553
|
+
- d40430d: Remove the retired `@ontrails/logging` workspace from the prerelease package set. Use `@ontrails/observe` for log and trace sink contracts and `@ontrails/logtape` for LogTape forwarding.
|
|
554
|
+
- de30d6c: Introduce `topo.compile` as the canonical trail for writing `.trails` lockfile
|
|
555
|
+
and surface artifacts, remove the `survey --generate` mode, and update drift
|
|
556
|
+
guidance to point at the compile command.
|
|
557
|
+
- 331e3a9: Relocate the topo-store public API from `@ontrails/core` to `@ontrails/topographer` per ADR-0042. Generic `trails-db` helpers (`openReadTrailsDb`, `openWriteTrailsDb`, `ensureSubsystemSchema`, `deriveTrailsDbPath`, `deriveTrailsDir`) stay in core because tracing and other subsystems share them.
|
|
558
|
+
|
|
559
|
+
Breaking pre-1.0 beta change. Update consumer imports:
|
|
560
|
+
|
|
561
|
+
```diff
|
|
562
|
+
- import { topoStore, createTopoStore, createMockTopoStore, createTopoSnapshot, listTopoSnapshots, pinTopoSnapshot, unpinTopoSnapshot, createStoredTopoSnapshot, getStoredTopoExport, countTopoSnapshots, countPinnedSnapshots, countPrunableSnapshots, pruneUnpinnedSnapshots } from '@ontrails/core';
|
|
563
|
+
+ import { topoStore, createTopoStore, createMockTopoStore, createTopoSnapshot, listTopoSnapshots, pinTopoSnapshot, unpinTopoSnapshot } from '@ontrails/topographer';
|
|
564
|
+
+ import { createStoredTopoSnapshot, getStoredTopoExport, countTopoSnapshots, countPinnedSnapshots, countPrunableSnapshots, pruneUnpinnedSnapshots } from '@ontrails/topographer/backend-support';
|
|
565
|
+
```
|
|
566
|
+
|
|
567
|
+
The same root move applies to types `ReadOnlyTopoStore`, `MockTopoStoreSeed`, `TopoSnapshot`, `TopoStoreRef`, `TopoStoreExportRecord`, `TopoStoreResourceRecord`, `TopoStoreTrailRecord`, `TopoStoreTrailDetailRecord`, `CreateTopoSnapshotInput`, and `ListTopoSnapshotsOptions`. The direct DB helper type `StoredTopoExport` moves to `@ontrails/topographer/backend-support`.
|
|
568
|
+
|
|
569
|
+
Core newly exports `activationSourceKey`, `projectActivationSourceDeclaration`, `activationSourceDeclarationSignature`, and the `ActivationSourceProjection` type — these were already used internally and are now part of the public surface so `@ontrails/topographer` (the only consumer that needs them) can import them through normal package channels.
|
|
570
|
+
|
|
571
|
+
- 4399fdb: Renamed `@ontrails/schema` to `@ontrails/topographer`. Mechanical rename only — no API changes. Update import sites from `@ontrails/schema` to `@ontrails/topographer`. See ADR-0042 for the durable graph substrate doctrine.
|
|
572
|
+
- 2dd9cda: Promote ADR-0043 (Layer Evolution) from draft to accepted, amend it on 2026-05-04 to remove the briefly proposed `Middleware` split, and publish the Layer Evolution Migration Guide at `docs/migration/layer-evolution.md`.
|
|
573
|
+
|
|
574
|
+
Documentation-only change capturing the post-implementation state of the layer-evolution work shipped across TRL-471 through TRL-476: typed `Layer` primitive with optional `input` schema, three attachment scopes (trail, surface, topo), CLI/MCP/HTTP surface projection of layer inputs, removal of `authLayer`, `autoIterateLayer`, and `dateShortcutsLayer`, and warden coaching via `no-legacy-layer-imports` (error). The migration guide is the durable countermeasure to the vocabulary churn flagged in ADR-0043's tradeoffs.
|
|
575
|
+
|
|
576
|
+
- fb10112: Polish Warden guidance projection by preserving labels in plain-text doc links
|
|
577
|
+
and reusing the shared diagnostic schema from the Trails CLI wrapper.
|
|
578
|
+
- bfabe09: Suppress static resource accessor warnings when a string lookup resolves to a
|
|
579
|
+
resource variable name shadowed inside `blaze`.
|
|
580
|
+
- 7a1d4a9: Rename the public resolved graph API from `SurfaceMap` to `TopoGraph`, including
|
|
581
|
+
the derive, hash, diff, and current graph artifact I/O helpers.
|
|
582
|
+
- 84f595a: Add lock v3 manifest and `topo.lock` I/O. `trails.lock` now reads as a compact v3 manifest that points at the serialized TopoGraph artifact, and legacy v2/hash-only lock inputs fail with a regenerate instruction.
|
|
583
|
+
- d2cb9ba: Rename topo-store export artifacts from surface-era names to TopoGraph names. The `topo_exports` table now stores `topo_graph`, `topo_graph_hash`, and `lock_manifest`, and backend-support export records expose `topoGraphJson`, `topoGraphHash`, and `lockManifestJson`.
|
|
584
|
+
- 2cc05da: Harden Warden drift checks for lock v3 manifests. Malformed legacy lock files and manifests without the `topo.lock` artifact now report blocked drift with a regenerate instruction instead of throwing or silently passing.
|
|
585
|
+
- df9a7d0: Add project-aware public export-map governance for @ontrails workspace docs,
|
|
586
|
+
imports, root barrels, and bin-only package surfaces.
|
|
587
|
+
- 30a2c7e: Add the resolver-backed `resolved-import-boundary` Warden rule for cross-package import boundary enforcement.
|
|
588
|
+
- 81bffec: Add Warden import-resolution substrate backed by `oxc-resolver`.
|
|
589
|
+
- d675a53: Omit `topoNames` from Warden reports when no topo targets were governed, matching the optional report contract.
|
|
590
|
+
- Updated dependencies [73622ae]
|
|
591
|
+
- Updated dependencies [e991a5b]
|
|
592
|
+
- Updated dependencies [25f3c5c]
|
|
593
|
+
- Updated dependencies [6300f70]
|
|
594
|
+
- Updated dependencies [d172013]
|
|
595
|
+
- Updated dependencies [c3fc5c3]
|
|
596
|
+
- Updated dependencies [20d7a5c]
|
|
597
|
+
- Updated dependencies [be5fb46]
|
|
598
|
+
- Updated dependencies [199304e]
|
|
599
|
+
- Updated dependencies [e898cc4]
|
|
600
|
+
- Updated dependencies [2bf239e]
|
|
601
|
+
- Updated dependencies [200bece]
|
|
602
|
+
- Updated dependencies [e4beec9]
|
|
603
|
+
- Updated dependencies [3395234]
|
|
604
|
+
- Updated dependencies [bcdc484]
|
|
605
|
+
- Updated dependencies [6300f70]
|
|
606
|
+
- Updated dependencies [3f678d4]
|
|
607
|
+
- Updated dependencies [ed171d5]
|
|
608
|
+
- Updated dependencies [49c2e7d]
|
|
609
|
+
- Updated dependencies [de30d6c]
|
|
610
|
+
- Updated dependencies [331e3a9]
|
|
611
|
+
- Updated dependencies [c40865a]
|
|
612
|
+
- Updated dependencies [4399fdb]
|
|
613
|
+
- Updated dependencies [4b8d13b]
|
|
614
|
+
- Updated dependencies [4b8d13b]
|
|
615
|
+
- Updated dependencies [4b8d13b]
|
|
616
|
+
- Updated dependencies [fbd42fc]
|
|
617
|
+
- Updated dependencies [63d1aef]
|
|
618
|
+
- Updated dependencies [6be2e95]
|
|
619
|
+
- Updated dependencies [819de09]
|
|
620
|
+
- Updated dependencies [be08686]
|
|
621
|
+
- Updated dependencies [112b9f2]
|
|
622
|
+
- Updated dependencies [893025e]
|
|
623
|
+
- Updated dependencies [ed888e2]
|
|
624
|
+
- Updated dependencies [2e05e27]
|
|
625
|
+
- Updated dependencies [c8caa5e]
|
|
626
|
+
- Updated dependencies [f4b90c9]
|
|
627
|
+
- Updated dependencies [eec5e9d]
|
|
628
|
+
- Updated dependencies [4e75129]
|
|
629
|
+
- Updated dependencies [47505fe]
|
|
630
|
+
- Updated dependencies [ebd4434]
|
|
631
|
+
- Updated dependencies [863d473]
|
|
632
|
+
- Updated dependencies [344f2f7]
|
|
633
|
+
- Updated dependencies [26f9ffd]
|
|
634
|
+
- Updated dependencies [66056ac]
|
|
635
|
+
- Updated dependencies [b12e19b]
|
|
636
|
+
- Updated dependencies [ed7f6f6]
|
|
637
|
+
- Updated dependencies [0bad534]
|
|
638
|
+
- Updated dependencies [7a1d4a9]
|
|
639
|
+
- Updated dependencies [84f595a]
|
|
640
|
+
- Updated dependencies [d2cb9ba]
|
|
641
|
+
- Updated dependencies [10eae9a]
|
|
642
|
+
- Updated dependencies [bbb1ea4]
|
|
643
|
+
- Updated dependencies [22c6c06]
|
|
644
|
+
- Updated dependencies [df9a7d0]
|
|
645
|
+
- @ontrails/core@1.0.0-beta.16
|
|
646
|
+
- @ontrails/cli@1.0.0-beta.16
|
|
647
|
+
- @ontrails/permits@1.0.0-beta.16
|
|
648
|
+
- @ontrails/store@1.0.0-beta.16
|
|
649
|
+
- @ontrails/topographer@1.0.0-beta.16
|
|
650
|
+
|
|
651
|
+
## 1.0.0-beta.15
|
|
652
|
+
|
|
653
|
+
### Minor Changes
|
|
654
|
+
|
|
655
|
+
- 4ad6b25: Lexicon rename cleanup (ADR-0023). Breaking for `@ontrails/core`, `@ontrails/cli`, and `@ontrails/tracing` at the boundary; internal-only churn for `@ontrails/warden`.
|
|
656
|
+
|
|
657
|
+
- **core**: the topo store schema renames `topo_provisions` / `topo_trail_provisions` → `topo_resources` / `topo_trail_resources` and `provision_count` → `resource_count`. Schema version bumped v4→v5. Stores still carrying the legacy schema are detected on open, dropped, and recreated from the new DDL — previous topo saves are cleared. Stored-data helpers `listTopoStoreProvisions` / `getTopoStoreProvision` / `readProvisionUsage` / `mapProvisionRow` renamed to their `resource` counterparts. TS row types `TopoTrailProvisionRow` / `TopoProvisionRow` renamed to `TopoTrailResourceRow` / `TopoResourceRow`.
|
|
658
|
+
- **cli**: CLI output mode env vars are now derived from the topo name per ADR-0023. Legacy globals `TRAILS_JSON` / `TRAILS_JSONL` are no longer honored — a topo named `stash` reads `STASH_JSON` / `STASH_JSONL`. `ActionResultContext` gains a `topoName: string` field; `resolveOutputMode(flags, topoName)` takes a topo name argument.
|
|
659
|
+
- **tracing**: legacy `.trails/dev/tracker.db` migration path removed. Any user still running a pre-rename beta build with a `tracker.db` should delete it or migrate before upgrading.
|
|
660
|
+
- **warden**: internal-only rename of `provisionDeclarations` / `provisionExists` rules and their trails to `resourceDeclarations` / `resourceExists`. No behavior change.
|
|
661
|
+
|
|
662
|
+
### Patch Changes
|
|
663
|
+
|
|
664
|
+
- Updated dependencies [4ad6b25]
|
|
665
|
+
- @ontrails/core@1.0.0-beta.15
|
|
666
|
+
- @ontrails/permits@1.0.0-beta.15
|
|
667
|
+
- @ontrails/topographer@1.0.0-beta.15
|
|
668
|
+
|
|
669
|
+
## 1.0.0-beta.14
|
|
670
|
+
|
|
671
|
+
### Minor Changes
|
|
672
|
+
|
|
673
|
+
- 69057e9: Add hierarchical CLI command trees and structured input, enforce established-only topo exports across trailheads, move developer topo and tracker state onto shared `trails.db` with pins and maintenance flows, and ship schema-derived stores through `@ontrails/store` and its Drizzle runtime.
|
|
674
|
+
|
|
675
|
+
### Patch Changes
|
|
676
|
+
|
|
677
|
+
- Updated dependencies [69057e9]
|
|
678
|
+
- @ontrails/core@1.0.0-beta.14
|
|
679
|
+
- @ontrails/schema@1.0.0-beta.14
|
|
680
|
+
|
|
681
|
+
## 1.0.0-beta.13
|
|
682
|
+
|
|
683
|
+
### Minor Changes
|
|
684
|
+
|
|
685
|
+
- Trail-native vocabulary cutover. Breaking API field renames across all packages:
|
|
686
|
+
|
|
687
|
+
- Trail spec: `run:` → `blaze:`, `follow:` → `crosses:`, `services:` → `provisions:`, `metadata:` → `meta:`, `emits:` → `signals:`
|
|
688
|
+
- Runtime: `ctx.follow()` → `ctx.cross()`, `ctx.emit()` → `ctx.signal()`, `ctx.signal` (abort) → `ctx.abortSignal`
|
|
689
|
+
- Entry points: `blaze(app)` → `trailhead(app)`
|
|
690
|
+
- Package rename: `@ontrails/crumbs` → `@ontrails/tracker`
|
|
691
|
+
- Wrapper types: `Layer` → `Gate`, `layers`/`middleware` → `gates`
|
|
692
|
+
- Transport: `surface` → `trailhead`, `adapter` → `connector`
|
|
693
|
+
|
|
694
|
+
### Patch Changes
|
|
695
|
+
|
|
696
|
+
- Updated dependencies [6944147]
|
|
697
|
+
- Updated dependencies
|
|
698
|
+
- @ontrails/core@1.0.0-beta.13
|
|
699
|
+
- @ontrails/schema@1.0.0-beta.13
|
|
700
|
+
|
|
701
|
+
## 1.0.0-beta.12
|
|
702
|
+
|
|
703
|
+
### Patch Changes
|
|
704
|
+
|
|
705
|
+
- Updated dependencies
|
|
706
|
+
- @ontrails/core@1.0.0-beta.12
|
|
707
|
+
- @ontrails/schema@1.0.0-beta.12
|
|
708
|
+
|
|
709
|
+
## 1.0.0-beta.11
|
|
710
|
+
|
|
711
|
+
### Minor Changes
|
|
712
|
+
|
|
713
|
+
- Add provisions as a first-class primitive.
|
|
714
|
+
|
|
715
|
+
Provisions make infrastructure dependencies declarative, injectable, and governable. Define a provision with `provision()`, declare it on a trail with `provisions: [db]`, and access it with `db.from(ctx)` or `ctx.provision()`.
|
|
716
|
+
|
|
717
|
+
**Core:** `provision()` factory, `ProvisionSpec<T>`, `ProvisionContext`, singleton resolution in `executeTrail`, in-flight creation dedup, `isProvision` guard, `findDuplicateProvisionId`, topo provision discovery and validation, `provisions` field on trail specs.
|
|
718
|
+
|
|
719
|
+
**Testing:** Auto-resolution of `mock` factories in `testAll`, `testExamples`, `testContracts`, and `testCrosses`. Explicit `provisions` overrides with correct precedence (`explicit > ctx.extensions > auto-mock`). Provision mock propagation through crossing graphs.
|
|
720
|
+
|
|
721
|
+
**Warden:** `provision-declarations` rule validates `db.from(ctx)` and `ctx.provision()` usage matches declared `provisions: [...]`. `provision-exists` rule validates declared provision IDs resolve in project context. Scope-aware AST walking skips nested function boundaries.
|
|
722
|
+
|
|
723
|
+
**Trailheads:** Provision overrides thread through `run` and `trailhead` on CLI, MCP, and HTTP.
|
|
724
|
+
|
|
725
|
+
**Introspection:** Survey and trailhead map outputs include provision graph. Topo exposes `.provisions`, `.getProvision()`, `.hasProvision()`, `.listProvisions()`, `.provisionIds()`, `.provisionCount`.
|
|
726
|
+
|
|
727
|
+
**Docs:** ADR-009 accepted. Unified services guide, updated vocabulary, getting-started, architecture, and package READMEs.
|
|
728
|
+
|
|
729
|
+
### Patch Changes
|
|
730
|
+
|
|
731
|
+
- Updated dependencies
|
|
732
|
+
- @ontrails/core@1.0.0-beta.11
|
|
733
|
+
- @ontrails/schema@1.0.0-beta.11
|
|
734
|
+
|
|
735
|
+
## 1.0.0-beta.10
|
|
736
|
+
|
|
737
|
+
### Patch Changes
|
|
738
|
+
|
|
739
|
+
- Cleanup and hardening pass across all packages.
|
|
740
|
+
|
|
741
|
+
**core**: Deduplicate `RunOptions` as type alias of `ExecuteTrailOptions`. Replace `TrailContext` index signature with typed `extensions` field for type safety. Deep-merge `extensions` in `executeTrail` context resolution. Remove unused `Trailhead` type and proof-of-concept files from published package.
|
|
742
|
+
|
|
743
|
+
**cli**: Remove vestigial `kind` checks from build. Run `validateTopo()` automatically in `trailhead()` with opt-out via `validate: false`.
|
|
744
|
+
|
|
745
|
+
**http**: Remove vestigial `kind` checks from build. Run `validateTopo()` automatically in `trailhead()` with opt-out.
|
|
746
|
+
|
|
747
|
+
**mcp**: Remove vestigial `kind` checks from build. Run `validateTopo()` automatically in `trailhead()` with opt-out.
|
|
748
|
+
|
|
749
|
+
**warden**: Project-aware rule context preserved in trail wrappers.
|
|
750
|
+
|
|
751
|
+
- Updated dependencies
|
|
752
|
+
- @ontrails/core@1.0.0-beta.10
|
|
753
|
+
- @ontrails/schema@1.0.0-beta.10
|
|
754
|
+
|
|
755
|
+
## 1.0.0-beta.9
|
|
756
|
+
|
|
757
|
+
### Minor Changes
|
|
758
|
+
|
|
759
|
+
- Consolidated improvements across all trailhead packages.
|
|
760
|
+
|
|
761
|
+
**core**: Add `TrailResult<T>` utility type, `topo.ids()` and `topo.count` accessors, `run()` for headless trail execution, and extract shared `executeTrail` pipeline used by CLI/MCP/HTTP.
|
|
762
|
+
|
|
763
|
+
**http**: Detect route path collisions and return `Result` from `buildHttpRoutes()`, wire request `AbortSignal` through to trail context, and make write → POST mapping explicit in intent-to-method lookup.
|
|
764
|
+
|
|
765
|
+
**mcp**: Return `Result` from `buildMcpTools()` on collision instead of throwing.
|
|
766
|
+
|
|
767
|
+
**cli**: Verify exception catching via centralized `executeTrail`.
|
|
768
|
+
|
|
769
|
+
**testing**: Cross-context awareness improvements.
|
|
770
|
+
|
|
771
|
+
**warden**: Refactor rules as composable trails with examples.
|
|
772
|
+
|
|
773
|
+
**schema**: Error code and empty body fixes.
|
|
774
|
+
|
|
775
|
+
### Patch Changes
|
|
776
|
+
|
|
777
|
+
- Updated dependencies
|
|
778
|
+
- @ontrails/core@1.0.0-beta.9
|
|
779
|
+
- @ontrails/schema@1.0.0-beta.9
|
|
780
|
+
|
|
781
|
+
## 1.0.0-beta.8
|
|
782
|
+
|
|
783
|
+
### Patch Changes
|
|
784
|
+
|
|
785
|
+
- Updated dependencies
|
|
786
|
+
- @ontrails/schema@1.0.0-beta.8
|
|
787
|
+
- @ontrails/core@1.0.0-beta.8
|
|
788
|
+
|
|
789
|
+
## 1.0.0-beta.7
|
|
790
|
+
|
|
791
|
+
### Patch Changes
|
|
792
|
+
|
|
793
|
+
- Updated dependencies
|
|
794
|
+
- @ontrails/schema@1.0.0-beta.7
|
|
795
|
+
- @ontrails/core@1.0.0-beta.7
|
|
796
|
+
|
|
797
|
+
## 1.0.0-beta.6
|
|
798
|
+
|
|
799
|
+
### Patch Changes
|
|
800
|
+
|
|
801
|
+
- Fix Codex review findings on type-utils and cross-declarations.
|
|
802
|
+
|
|
803
|
+
**core**: `inputOf()`/`outputOf()` now preserve the exact Zod schema subtype instead of widening to `z.ZodType`.
|
|
804
|
+
|
|
805
|
+
**warden**: `cross-declarations` rule now recognizes single-object trail overload, detects any context parameter name (not just `ctx`), matches destructured `cross()` calls, resolves const identifiers in `crosses` arrays, and restricts blaze body extraction to top-level config properties.
|
|
806
|
+
|
|
807
|
+
- Updated dependencies
|
|
808
|
+
- @ontrails/core@1.0.0-beta.6
|
|
809
|
+
- @ontrails/schema@1.0.0-beta.6
|
|
810
|
+
|
|
811
|
+
## 1.0.0-beta.5
|
|
812
|
+
|
|
813
|
+
### Minor Changes
|
|
814
|
+
|
|
815
|
+
- Type utilities and cross-declarations warden rule.
|
|
816
|
+
|
|
817
|
+
**core**: Add `TrailInput<T>`, `TrailOutput<T>` utility types and `inputOf()`, `outputOf()` runtime schema accessors.
|
|
818
|
+
|
|
819
|
+
**warden**: Add `cross-declarations` rule — statically analyzes `ctx.cross()` calls against declared `crosses: [...]` arrays. Errors on undeclared calls, warns on unused declarations.
|
|
820
|
+
|
|
821
|
+
### Patch Changes
|
|
822
|
+
|
|
823
|
+
- Updated dependencies
|
|
824
|
+
- @ontrails/core@1.0.0-beta.5
|
|
825
|
+
- @ontrails/schema@1.0.0-beta.5
|
|
826
|
+
|
|
3
827
|
## 1.0.0-beta.4
|
|
4
828
|
|
|
5
829
|
### Major Changes
|
|
@@ -8,15 +832,15 @@
|
|
|
8
832
|
|
|
9
833
|
**BREAKING CHANGES:**
|
|
10
834
|
|
|
11
|
-
- `hike()` removed — use `trail()` with optional `
|
|
12
|
-
- `follows` renamed to `
|
|
835
|
+
- `hike()` removed — use `trail()` with optional `crosses: [...]` field
|
|
836
|
+
- `follows` renamed to `crosses` (matching `ctx.cross()`)
|
|
13
837
|
- `topo.hikes` removed — single `topo.trails` map
|
|
14
838
|
- `kind: 'hike'` removed — everything is `kind: 'trail'`
|
|
15
839
|
- `readOnly`/`destructive` booleans replaced by `intent: 'read' | 'write' | 'destroy'`
|
|
16
840
|
- `implementation` field renamed to `run`
|
|
17
841
|
- `markers` field renamed to `metadata`
|
|
18
|
-
- `testHike` renamed to `
|
|
19
|
-
- `
|
|
842
|
+
- `testHike` renamed to `testCrosses`, `HikeScenario` to `CrossScenario`
|
|
843
|
+
- `trailhead()` now returns the trailhead handle (`Command` for CLI, `Server` for MCP)
|
|
20
844
|
|
|
21
845
|
### Patch Changes
|
|
22
846
|
|
|
@@ -28,15 +852,15 @@
|
|
|
28
852
|
|
|
29
853
|
### Minor Changes
|
|
30
854
|
|
|
31
|
-
- Bug fixes across all
|
|
855
|
+
- Bug fixes across all trailhead packages found via parallel Codex review.
|
|
32
856
|
|
|
33
857
|
**core**: Fix Result.toJson false circular detection on DAGs, deserializeError subclass round-trip, topo cross-kind ID collisions, validateTopo multi-node cycle detection, error example input validation bypass, and deriveFields array type collapse.
|
|
34
858
|
|
|
35
|
-
**cli**: Switch
|
|
859
|
+
**cli**: Switch trailhead to parseAsync for proper async error handling, add boolean flag negation (--no-flag), and strict number parsing that rejects partial input.
|
|
36
860
|
|
|
37
861
|
**mcp**: Align BlobRef with core (including ReadableStream support) and detect tool-name collisions after normalization.
|
|
38
862
|
|
|
39
|
-
**testing**: Include hikes in testContracts validation, with
|
|
863
|
+
**testing**: Include hikes in testContracts validation, with cross-context awareness.
|
|
40
864
|
|
|
41
865
|
**warden**: Collect hike detour targets, validate detour refs in hike specs, and stop implementation-returns-result from walking into nested function bodies.
|
|
42
866
|
|
|
@@ -73,13 +897,13 @@
|
|
|
73
897
|
|
|
74
898
|
- Initial v1 beta release of the Trails framework.
|
|
75
899
|
|
|
76
|
-
- **@ontrails/core** — Result type, error taxonomy, trail/hike/
|
|
77
|
-
- **@ontrails/cli** — CLI
|
|
78
|
-
- **@ontrails/mcp** — MCP
|
|
79
|
-
- **@ontrails/logging** — Structured logging, sinks, formatters, LogTape
|
|
80
|
-
- **@ontrails/testing** — testAll, testExamples, testTrail, testHike, testContracts, testDetours,
|
|
900
|
+
- **@ontrails/core** — Result type, error taxonomy, trail/hike/signal/topo, validateTopo, validateInput/Output, deriveFields, patterns, redaction, branded types, resilience
|
|
901
|
+
- **@ontrails/cli** — CLI trailhead connector, Commander integration, flag derivation
|
|
902
|
+
- **@ontrails/mcp** — MCP trailhead connector, tool generation, annotations, progress bridge
|
|
903
|
+
- **@ontrails/logging** — Structured logging, sinks, formatters, LogTape connector
|
|
904
|
+
- **@ontrails/testing** — testAll, testExamples, testTrail, testHike, testContracts, testDetours, trailhead harnesses
|
|
81
905
|
- **@ontrails/warden** — AST-based code convention rules via oxc-parser, drift detection, CI formatters
|
|
82
|
-
- **@ontrails/schema** —
|
|
906
|
+
- **@ontrails/schema** — Trailhead map generation, hashing, semantic diffing
|
|
83
907
|
|
|
84
908
|
### Patch Changes
|
|
85
909
|
|