@flancer32/skill-adsm-ctx 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +23 -10
  3. package/package.json +3 -2
  4. package/skills/adsm-ctx/SKILL.md +12 -2
  5. package/skills/adsm-ctx/references/agents-hierarchy.md +3 -1
  6. package/skills/adsm-ctx/references/context-evolution.md +12 -8
  7. package/skills/adsm-ctx/references/context-lifecycle.md +2 -2
  8. package/skills/adsm-ctx/references/document-projections.md +4 -2
  9. package/skills/adsm-ctx/references/testing-and-verification.md +20 -0
  10. package/skills/adsm-ctx/templates/AGENTS.md +13 -1
  11. package/skills/adsm-ctx/templates/ctx/README.md +1 -1
  12. package/skills/adsm-ctx/templates/ctx/adsm.json +1 -1
  13. package/skills/adsm-ctx/templates/ctx/docs/architecture/AGENTS.md +1 -1
  14. package/skills/adsm-ctx/templates/ctx/docs/architecture/behavior.md +4 -4
  15. package/skills/adsm-ctx/templates/ctx/docs/code/AGENTS.md +1 -1
  16. package/skills/adsm-ctx/templates/ctx/docs/code/testing.md +3 -1
  17. package/skills/adsm-ctx/templates/ctx/docs/environment/AGENTS.md +1 -1
  18. package/skills/adsm-ctx/templates/ctx/docs/filesystem.md +1 -1
  19. package/skills/adsm-ctx/templates/ctx/docs/product/AGENTS.md +1 -1
  20. package/src/Cli/Command/Init.mjs +21 -5
  21. package/src/Cli/Command/InstallSkill.mjs +16 -5
  22. package/src/Cli/Command/Validate.mjs +17 -5
  23. package/src/Init/Service.mjs +21 -21
  24. package/src/Shared/Constants.mjs +2 -1
  25. package/src/Shared/CopyDirectory.mjs +9 -9
  26. package/src/Shared/Metadata.mjs +1 -1
  27. package/src/Skill/Installer.mjs +2 -2
  28. package/src/Validate/Service.mjs +96 -141
  29. package/types.d.ts +31 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,21 @@
2
2
 
3
3
  All notable changes to this package are documented in this file.
4
4
 
5
+ ## 0.7.0 — 2026-11-05
6
+
7
+ - Target context schema `0.7`; validate older schema labels as unsupported without changing their contexts. Evolve existing contexts through agent review before updating metadata.
8
+ - Make fresh integration of trusted first-party dependencies part of the Rapid Evolution default, subject to accepted security, reproducibility, offline, and deployment requirements.
9
+ - Clarify that failure handling and compatibility require an accepted requirement, demonstrated problem, or meaningful identified risk; align root and architecture templates.
10
+ - Separate bounded product verification from technical test suites and align verification specifications and CI.
11
+ - Clarify Git delivery authorization in generated root instructions and maintain substantive template version dates.
12
+
13
+ ## 0.6.0 — 2026-11-04
14
+
15
+ - Use two-part context schema versions aligned to the npm package major and minor; target schema `0.6`, retaining it for package patches.
16
+ - Clarify development policy and project testing versus product verification in the skill and initialization templates. Evolve existing contexts through agent inspection and human decisions.
17
+ - Report unsupported schema versions uniformly without automatic migration; preserve context and metadata during validation.
18
+ - Align TeqFW dependencies and JSDoc contracts, and improve repository context navigation.
19
+
5
20
  ## 0.5.0 — 2026-10-24
6
21
 
7
22
  - Adopt context schema `0.5.0`: require five documentation directories, including the cross-cutting Verification Layer, while preserving four ordered declarative levels. Allow an AGENTS-only verification root without placeholder specifications.
package/README.md CHANGED
@@ -10,6 +10,8 @@ It manages the lifecycle of project context as its primary object. It does not d
10
10
 
11
11
  This package is developed according to the [ADSM methodology](http://fly.wiredgeese.com/flancer/leanpub/adsm-en/).
12
12
 
13
+ ADSM defaults to **Rapid Evolution by Default, Reliability by Requirement**: deliver essential functionality in short feedback cycles, fail visibly, avoid unrequired compatibility, and verify according to contracts and risk. Humans control acceptable risk and can set a different project policy; accepted context, security, integrity, and explicit invariants remain binding. New projects receive a concise policy in their root `AGENTS.md`; existing projects are not rewritten. See the bundled [skill guidance](skills/adsm-ctx/SKILL.md#development-policy) for details.
14
+
13
15
  The package includes:
14
16
 
15
17
  - the `adsm-ctx` CLI for lifecycle operations;
@@ -58,7 +60,7 @@ This package does not:
58
60
  Install the package and then explicitly install its matching agent payload:
59
61
 
60
62
  ```sh
61
- npm install --global git+ssh://git@github.com/flancer32/skill-adsm-ctx.git
63
+ npm install --global @flancer32/skill-adsm-ctx
62
64
  adsm-ctx install-skill "$HOME/.agents/skills"
63
65
  ```
64
66
 
@@ -76,11 +78,11 @@ test -f "$HOME/.agents/skills/adsm-ctx/SKILL.md"
76
78
  To update, update the global npm package and reinstall its payload:
77
79
 
78
80
  ```sh
79
- npm install --global git+ssh://git@github.com/flancer32/skill-adsm-ctx.git
81
+ npm install --global @flancer32/skill-adsm-ctx
80
82
  adsm-ctx install-skill "$HOME/.agents/skills"
81
83
  ```
82
84
 
83
- The npm package is the canonical distribution of both artifacts. Its public `adsm-ctx` launcher runs the package as an explicit TeqFW host; the `install-skill` command copies the version-matched `skills/adsm-ctx/` bundle. Do not copy only `SKILL.md` manually: the payload also needs its references and templates.
85
+ The public npm registry package is the canonical distribution of both artifacts and does not require GitHub SSH access. Its public `adsm-ctx` launcher runs the package as an explicit TeqFW host; the `install-skill` command copies the version-matched `skills/adsm-ctx/` bundle. Do not copy only `SKILL.md` manually: the payload also needs its references and templates.
84
86
 
85
87
  For a project-pinned CI or team workflow, install the package locally and invoke the same public launcher with npm:
86
88
 
@@ -133,7 +135,7 @@ teq --host @flancer32/skill-adsm-ctx adsm-ctx:validate .
133
135
 
134
136
  ### `init`
135
137
 
136
- Creates the minimal ADSM-compatible context structure, starter documents, and `ctx/adsm.json` metadata. Schema `0.5.0` creates all five documentation directories, including `ctx/docs/verification/AGENTS.md`, without empty target categories or placeholder specifications.
138
+ Creates the minimal ADSM-compatible context structure, starter documents, and `ctx/adsm.json` metadata. Schema `0.7` creates all five documentation directories, including `ctx/docs/verification/AGENTS.md`, without empty target categories or placeholder specifications.
137
139
 
138
140
  ### `design`
139
141
 
@@ -157,7 +159,7 @@ The default compression corpus is `ctx/docs/`. Operational context such as `ctx/
157
159
 
158
160
  ### Agent-driven evolution
159
161
 
160
- Use [the skill evolution procedure](skills/adsm-ctx/references/context-evolution.md) for existing contexts, including unknown historical states. The agent follows discover → interpret → compare → plan → evolve → validate → finalize, preserving accepted meaning and semantic skins. Humans decide changes to accepted meaning and authority. CLI `validate` supplies deterministic findings; there is no evolution command or automatic schema promotion. The agent records target schema `0.5.0` only after structural checks and semantic review succeed, then validates again. npm versioning remains independent.
162
+ Use [the skill evolution procedure](skills/adsm-ctx/references/context-evolution.md) for existing contexts, including unknown historical states. The agent follows discover → interpret → compare → plan → evolve → validate → finalize, preserving accepted meaning and semantic skins. Humans decide changes to accepted meaning and authority. CLI `validate` supplies deterministic findings; there is no evolution command or automatic schema promotion. The agent records target schema `0.7` only after structural checks and semantic review succeed, then validates again. The package major and minor match the two-part schema version.
161
163
 
162
164
  ## Workflow
163
165
 
@@ -184,7 +186,7 @@ product
184
186
 
185
187
  Use the architecture level once product meaning is clear enough to define stable engineering guardrails.
186
188
 
187
- `ctx/docs/verification/` is mandatory and cross-cutting in schema `0.5.0`. It is not a fifth declarative level. Its root may contain only `AGENTS.md`; create primary-target categories only when durable specifications exist; place that specification below the category of the declaration it primarily evaluates.
189
+ `ctx/docs/verification/` is mandatory and cross-cutting in schema `0.7`. It is not a fifth declarative level. Its root may contain only `AGENTS.md`; create primary-target categories only when durable specifications exist; place that specification below the category of the declaration it primarily evaluates.
188
190
 
189
191
  The bundled architecture templates expect these top-level documents:
190
192
 
@@ -241,12 +243,23 @@ Run the CLI directly from the repository:
241
243
  npm exec -- adsm-ctx --help
242
244
  ```
243
245
 
244
- Run the tests:
246
+ Run the fast local project smoke check (context structure and skill/package conventions):
245
247
 
246
248
  ```sh
247
249
  npm test
248
250
  ```
249
251
 
252
+ Run bounded product verification and the technical suites separately:
253
+
254
+ ```sh
255
+ npm run verify
256
+ npm run test:unit
257
+ npm run test:integration
258
+ npm run test:package
259
+ ```
260
+
261
+ Project testing checks technical health and engineering correctness; product verification evaluates observable behavior or properties against accepted declarations using applicable specifications. Test level and mechanism do not determine this distinction. The smoke check does not establish product conformity or semantic context correctness. The verification specifications under `ctx/docs/verification/` identify the observed contracts and their limits. The package installation scenario uses a temporary installation and may skip locally when its offline dependency cache is unavailable; a skip is not evidence of successful installation.
262
+
250
263
  ## Changelog
251
264
 
252
265
  See [CHANGELOG.md](CHANGELOG.md) for the dated release notes.
@@ -261,15 +274,15 @@ Apache-2.0
261
274
 
262
275
  ## Versioning And Compatibility
263
276
 
264
- Release `0.5.0` uses npm package `0.5.0` and context schema `0.5.0`. These numbers have independent responsibilities: the package versions CLI, validator, skill, templates, and fixes; the schema versions accepted context conventions. Package `0.5.1` may fix a validator while retaining schema `0.5.0`, requiring no context evolution.
277
+ Package `0.7.0` targets context schema `0.7`. Schema versions use major.minor; npm package versions use major.minor.patch with matching major and minor. Package patch `0.7.1` retains schema `0.7`; a new minor establishes a new schema target. Changes in context conventions require a new minor.
265
278
 
266
- `adsm-ctx --version` identifies the installed npm package. Read `ctx/adsm.json` for a project's schema; `adsm-ctx validate <project-root>` reports recorded and supported schema versions. Compatibility follows supported requirements, not numerical equality. Current validation supports schema `0.5.0`; older labels receive evolution guidance and unknown versions require investigation.
279
+ `adsm-ctx --version` identifies the installed npm package. Read `ctx/adsm.json` for a project's schema; `adsm-ctx validate <project-root>` reports recorded and supported schema versions. Compatibility follows supported requirements, not numerical equality. Current validation supports schema `0.7`; all other versions are unsupported and require investigation.
267
280
 
268
281
  Installing or updating the package and explicitly reinstalling its skill do not promote project metadata. An agent compares actual context with the installed skill's target conventions and evolves directly when needed, preserving project meaning and skins. Humans approve changes to accepted meaning. Only after conformance and semantic review does the agent record the target schema; no intermediate CLI migrations are required.
269
282
 
270
283
  ## Continuous Integration
271
284
 
272
- GitHub Actions runs `.github/workflows/ci.yaml` for pushes and pull requests to `main`, and on manual dispatch. Ubuntu jobs use Node.js 20 (minimum) and 24 (LTS), run `npm ci`, `npm test`, context validation, and `npm pack --dry-run`.
285
+ GitHub Actions runs `.github/workflows/ci.yaml` for pushes and pull requests to `main`, and on manual dispatch. Ubuntu jobs use Node.js 20 (minimum) and 24 (LTS), run `npm ci`, `npm test`, all three technical suites, `npm run verify`, context validation, and `npm pack --dry-run`.
273
286
 
274
287
  Package tests install a real npm archive into an isolated temporary environment, exercise the installed CLI and skill installer, compare the complete payload, and preserve neighboring skills. In CI the installation test uses network-enabled dependency resolution and fails on errors instead of skipping for missing offline cache. Local offline runs may report a skip; that is incomplete installation evidence. CI does not publish packages or prove semantic correctness of project documentation.
275
288
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flancer32/skill-adsm-ctx",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "description": "Build and evolve project cognitive context for Agent-Driven Software Management (ADSM).",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -29,7 +29,8 @@
29
29
  "test:unit": "find test/unit -name '*.test.mjs' -print0 | xargs -0 -r node --test",
30
30
  "test:integration": "find test/integration -name '*.test.mjs' -print0 | xargs -0 -r node --test",
31
31
  "test:package": "node --test test/package/*.test.mjs",
32
- "test": "npm run test:unit && npm run test:integration && npm run test:package"
32
+ "test": "node bin/adsm-ctx.mjs validate . && node --test test/package/skill.test.mjs",
33
+ "verify": "node --test test/integration/schema-050.test.mjs test/integration/cli-init-validate.test.mjs test/integration/cli-install-skill.test.mjs test/package/installation.test.mjs test/package/skill.test.mjs"
33
34
  },
34
35
  "dependencies": {
35
36
  "@teqfw/cli": "^2.2.0",
@@ -9,6 +9,16 @@ Manage the lifecycle of an ADSM project cognitive context. Manage generic contex
9
9
 
10
10
  Humans own direction, accepted meaning, approval, and accountability. Agents refine, check consistency, maintain documentation, and report decisions that require human authority.
11
11
 
12
+ ## Development Policy
13
+
14
+ ADSM defaults to **Rapid Evolution by Default, Reliability by Requirement**. Plan short hypothesis → implementation → execution → feedback cycles around essential functionality. Prefer simple working solutions; add retries, fallbacks, recovery systems, migrations, compatibility layers, or other defensive machinery only for accepted requirements, demonstrated problems, or meaningful identified risks. Fail fast and visibly on unexpected conditions and contract violations rather than hiding them with speculative retries, repairs, or fallbacks.
15
+
16
+ Accepted cognitive context defines the target; code and tests converge on it, and historical behavior is not independent architectural authority. Breaking software interfaces is acceptable by default; retain compatibility, migrations, or legacy layers only for accepted requirements, demonstrated problems, or meaningful identified risks. Preserve decisions explaining accepted and rejected directions. Verify the happy path and essential contracts with sufficient fast feedback; add regression coverage and stronger checks for observed defects, meaningful risks, or explicit requirements.
17
+
18
+ Fresh integration of trusted, actively developed first-party dependencies is inherited from this default without separate opt-in to expose cross-package incompatibilities early. Accepted requirements or human instructions can override it, including for secure, reproducible, offline, or production use. Investigate failures and fix the responsible contract or implementation instead of masking them. See [testing and verification](references/testing-and-verification.md#fresh-first-party-integration) for applicability and npm details.
19
+
20
+ Humans decide acceptable risks and reliability guarantees; project-specific accepted context can strengthen or replace this default. Never silently compromise security, integrity, or accepted invariants. This software compatibility default does not authorize rewriting consumer contexts or bypassing context-schema evolution and human approval.
21
+
12
22
  ## Start Here
13
23
 
14
24
  1. Identify the target repository and the requested lifecycle mode.
@@ -22,7 +32,7 @@ Humans own direction, accepted meaning, approval, and accountability. Agents ref
22
32
  | --- | --- |
23
33
  | `init` baseline | [context-lifecycle.md](references/context-lifecycle.md); use the `templates/ctx/` baseline. |
24
34
  | `design` or new branch | [context-lifecycle.md](references/context-lifecycle.md), [design-questionnaire.md](references/design-questionnaire.md), and [specialized-skills.md](references/specialized-skills.md). |
25
- | Verification Layer or Software Evolution Loop | [document-projections.md](references/document-projections.md), [context-lifecycle.md](references/context-lifecycle.md), [documentation-quality-audit.md](references/documentation-quality-audit.md), and [specialized-skills.md](references/specialized-skills.md). |
35
+ | Project testing, Verification Layer, or Software Evolution Loop | [testing-and-verification.md](references/testing-and-verification.md), [document-projections.md](references/document-projections.md), [context-lifecycle.md](references/context-lifecycle.md), [documentation-quality-audit.md](references/documentation-quality-audit.md), and [specialized-skills.md](references/specialized-skills.md). |
26
36
  | `validate` structure | [context-lifecycle.md](references/context-lifecycle.md), [document-projections.md](references/document-projections.md), and the repository-provided deterministic validator when available. Report errors and warnings separately. |
27
37
  | `quality-audit` | Run `validate` first; then load [documentation-quality-audit.md](references/documentation-quality-audit.md). Report findings; do not rewrite project meaning. |
28
38
  | `documentation-compression` | Load [documentation-compression.md](references/documentation-compression.md). Rewrite only with authorization and preserve accepted meaning. |
@@ -53,7 +63,7 @@ The existing context supplies accepted project meaning; this installed skill sup
53
63
 
54
64
  Finish with explicit validation results, Verification Layer structure and specification presence when relevant, specialization gaps, human decisions, and any preserved project-specific content. Use `templates/AGENTS.md` and `templates/ctx/` for initialization; use skill `assets/` only for authorized agent-guided document or report work.
55
65
 
56
- The current target is schema `0.5.0`. npm package updates and context evolution are separate: package patches may retain the same supported schema. Inspect project metadata and actual conformance against this installed skill; never infer compatibility or promote metadata from package-version equality. See [context evolution](references/context-evolution.md) for the decision procedure.
66
+ The current target is schema `0.7`. The npm package major and minor match this two-part schema version; package patches retain the same schema. Package updates and context evolution remain separate. Inspect project metadata and actual conformance against this installed skill; never infer compatibility or promote metadata from package-version equality. See [context evolution](references/context-evolution.md) for the decision procedure.
57
67
 
58
68
  ## Resource Ownership
59
69
 
@@ -1,7 +1,7 @@
1
1
  # AGENTS Hierarchy
2
2
 
3
3
  - Path: `skills/adsm-ctx/references/agents-hierarchy.md`
4
- - Changed: `20260715`
4
+ - Changed: `20261104`
5
5
 
6
6
  This reference operationalizes `AGENTS.md` handling for ADSM contexts.
7
7
 
@@ -32,6 +32,8 @@ Repository-root and context-side files are not identical:
32
32
  - the repository-root `AGENTS.md` controls root work and may use a lighter shape;
33
33
  - context-side `AGENTS.md` files under `ctx/` must contain `Purpose`, `Level Map`, and `Level Boundary`.
34
34
 
35
+ The root template states the skill's Rapid Evolution development default concisely and routes agents to the skill for its meaning. Accepted project context may strengthen or replace that default under human authority; deeper instructions must preserve the root's security, integrity, and accepted-context boundaries. Initialization does not overwrite existing root instructions.
36
+
35
37
  For skill operation:
36
38
 
37
39
  - interpret `AGENTS.md` as local control files inside already-declared boundaries;
@@ -1,16 +1,20 @@
1
1
  # Agent-Driven Context Evolution
2
2
 
3
3
  - Path: `skills/adsm-ctx/references/context-evolution.md`
4
- - Changed: `20261024`
4
+ - Changed: `20261105`
5
5
 
6
6
  Evolution brings an existing cognitive context into conformance with the installed skill's target conventions through agent inspection and reasoning. The starting point is the actual context, not an assumed version-to-version file transformation. Use this procedure for methodology, organization, authority relationships, projection rules, and schema changes, including contexts predating known schema versions. Evolution is a skill-guided agent activity and has no CLI command.
7
7
 
8
+ Apply the skill's Rapid Evolution default to planning and verification: work toward accepted target meaning in small feedback cycles, without preserving obsolete software behavior by default. This does not make existing context or schema disposable: investigate actual conventions, preserve accepted meaning and decisions, and obtain human approval for semantic or authority changes. Do not automatically rewrite consumer projects when the skill or root template changes. Required reliability and verification remain controlled by humans and applicable project context.
9
+
8
10
  ## Target And Responsibilities
9
11
 
10
- The current target is context schema `adsm-context` version `0.5.0`, independent of the npm package version. Require five documentation directories: `product/`, `architecture/`, `environment/`, `code/`, and `verification/`, each with `AGENTS.md`. Exactly four form the ordered hierarchy product → architecture → environment → code. The cross-cutting verification root may contain only `AGENTS.md`; create primary-target categories only for actual durable specifications. Keep specifications distinct from observations, evidence records, and operational feedback state. Use [document-projections.md](document-projections.md) for projection, links, assets, and capacity conventions.
12
+ The current target is context schema `adsm-context` version `0.7`, matching the npm package major and minor. Require five documentation directories: `product/`, `architecture/`, `environment/`, `code/`, and `verification/`, each with `AGENTS.md`. Exactly four form the ordered hierarchy product → architecture → environment → code. The cross-cutting verification root may contain only `AGENTS.md`; create primary-target categories only for actual durable specifications. Keep specifications distinct from observations, evidence records, and operational feedback state. Use [document-projections.md](document-projections.md) for projection, links, assets, and capacity conventions.
11
13
 
12
14
  The skill defines target conventions and this procedure. The agent interprets the existing context, compares, applies authorized changes, checks consistency, and finalizes metadata. CLI `init` creates missing baseline files, including verification routing and initial metadata, without overwriting existing files. CLI `validate` is read-only: it never creates verification files, replaces documents, changes skins, or promotes metadata. There is no CLI evolution command. Humans control accepted project meaning, authority, and approval of changes beyond the agent's existing authorization.
13
15
 
16
+ For schema `0.7`, assess the rapid-evolution development default, inherited fresh first-party integration, requirement-driven reliability, and the distinction between project testing and bounded product verification against the actual project instructions, testing documentation, and accepted decisions. Existing `0.6` contexts require this review as well; preserve explicitly accepted reproducibility and security requirements. The default is replaceable by project policy; do not override a project's accepted policy or copy template text blindly. Reconcile testing guidance with the project's ecosystem and existing requirements, with human decisions for changes to accepted meaning.
17
+
14
18
  ## 1. Discover
15
19
 
16
20
  Inspect applicable `AGENTS.md` instructions, the existing context and metadata, filesystem types, Git boundaries, and current worktree changes. Identify separately mounted `ctx/` and keep each history in place. Do not remove, replace, relocate, or unmount it. Do not traverse unrelated repositories or secret-bearing files. Resolve unsafe links, nested repository ownership, or missing permissions before editing affected paths.
@@ -23,7 +27,7 @@ Locate authoritative product intent, architecture decisions and rationale, envir
23
27
 
24
28
  ## 3. Compare
25
29
 
26
- Compare actual structure and meaning with current target conventions, even when the recorded version is unknown or already `0.5.0`. Inventory structural, documentary, projection, and authority differences. Run `adsm-ctx validate <project-root>` and distinguish mechanical findings from semantic inconsistencies. A current version is not proof of conformance; green structure does not establish semantic correctness, verification coverage, or runtime correctness.
30
+ Compare actual structure and meaning with current target conventions, even when the recorded version is unknown or already `0.7`. Inventory structural, documentary, projection, and authority differences. Run `adsm-ctx validate <project-root>` and distinguish mechanical findings from semantic inconsistencies. A current version is not proof of conformance; green structure does not establish semantic correctness, verification coverage, or runtime correctness.
27
31
 
28
32
  For example, `0.1.0` and `0.2.0` may lack `verification/AGENTS.md` or describe verification as optional. Inspect their actual documents instead of applying a fixed replacement. Unknown historical layouts require investigation and explicit reporting of what cannot yet be interpreted safely.
29
33
 
@@ -33,23 +37,23 @@ Classify proposed changes as structural, editorial, semantic, or requiring human
33
37
 
34
38
  ## 5. Evolve
35
39
 
36
- Apply authorized changes in documentation dependency order. Add missing required boundaries from canonical templates only after inspecting the destination; adapt routing to the actual project instead of replacing custom instructions. For `0.5.0`, add missing `verification/AGENTS.md`, update the documentation Level Map, and reconcile optional-adoption wording with accepted declarations and skins. Preserve existing specifications and project directories; create no placeholder specifications or empty target categories.
40
+ Apply authorized changes in documentation dependency order. Add missing required boundaries from canonical templates only after inspecting the destination; adapt routing to the actual project instead of replacing custom instructions. For `0.7`, add missing `verification/AGENTS.md`, update the documentation Level Map, and reconcile optional-adoption wording with accepted declarations and skins. Preserve existing specifications and project directories; create no placeholder specifications or empty target categories.
37
41
 
38
42
  Restructure or clarify only within authorization. Preserve intent, constraints, rationale, history, and projection meaning. Update linked consumers when moving a document and preserve one canonical authority home. Use deterministic helpers only for bounded, agent-selected operations; they do not decide semantic changes. Reinspect on partial failure, report completed work and unresolved differences, and preserve the previous schema label while work remains incomplete.
39
43
 
40
44
  ## 6. Validate
41
45
 
42
- Run deterministic validation and inspect every error and warning. Assess semantic consistency across declarations, decisions, projections, and local instructions separately. Confirm preserved project-specific knowledge and correct Git boundaries. If the context still bears a known older schema label, the validator's version finding is expected: establish that all other target requirements pass before promotion. Never ignore malformed metadata, unknown-version ambiguity, or unresolved semantic conflicts as merely a version mismatch. Obtain required human decisions before finalizing.
46
+ Run deterministic validation and inspect every error and warning. Assess semantic consistency across declarations, decisions, projections, and local instructions separately. Confirm preserved project-specific knowledge and correct Git boundaries. If the context still bears an unsupported schema label, the validator's version finding is expected: establish that all other target requirements pass before promotion. Never ignore malformed metadata, unknown-version ambiguity, or unresolved semantic conflicts as merely a version mismatch. Obtain required human decisions before finalizing.
43
47
 
44
48
  ## 7. Finalize
45
49
 
46
- Only after target structural requirements and semantic consistency are satisfied, update `ctx/adsm.json` to version `0.5.0`, preserving meaningful metadata fields. A version edit records successful evolution; it does not perform it. Do not promote partially evolved contexts. Run validation again against the final metadata; investigate any failure and retain or restore the prior label if conformance is not established. Do not overwrite an unknown future schema based on this package's older target conventions.
50
+ Only after target structural requirements and semantic consistency are satisfied, update `ctx/adsm.json` to version `0.7`, preserving meaningful metadata fields. A version edit records successful evolution; it does not perform it. Do not promote partially evolved contexts. Run validation again against the final metadata; investigate any failure and retain or restore the prior label if conformance is not established. Do not overwrite an unknown future schema based on this package's older target conventions.
47
51
 
48
52
  Report changes and rationale, preserved content, deterministic results, semantic review scope and limits, remaining warnings, human decisions, and relevant Git histories. On a repeat request, compare the actual state again and make only necessary authorized changes. Repeated CLI validation remain read-only regardless of context state.
49
53
 
50
54
 
51
55
  ## Package Updates And Schema Compatibility
52
56
 
53
- A package update replaces the npm implementation; explicitly rerun `adsm-ctx install-skill <skills-root>` to replace its bundled agent guidance. This does not change any context schema metadata and does not imply context evolution is required. Schema versions describe accepted context conventions; package versions describe implementation releases. Package `0.5.1` may support schema `0.5.0` unchanged. Never infer compatibility from numerical equality.
57
+ A package update replaces the npm implementation; explicitly rerun `adsm-ctx install-skill <skills-root>` to replace its bundled agent guidance. This does not change any context schema metadata and does not imply context evolution is required. Schema versions describe accepted context conventions; package versions describe implementation releases. Package `0.7.1` targets schema `0.7` unchanged. Never infer compatibility from numerical equality.
54
58
 
55
- Read the current schema from the project's `ctx/adsm.json`; identify this installed skill's target from Target Conventions above, not the npm version shown by `adsm-ctx --version`. Compare actual context with those conventions and use `validate` to check recorded and supported schema labels plus structural findings. If already conforming to the same schema, no evolution is needed merely because the package changed. Classify structural repairs separately from semantic changes; use the seven phases above for needed evolution and obtain human approval for changes to accepted meaning or authority. Older or intermediate labels, including `0.3.0`, do not require sequential migrations; investigate actual state and evolve directly toward the understood target. Never relabel an older context based solely on package installation.
59
+ Read the current schema from the project's `ctx/adsm.json`; identify this installed skill's target from Target Conventions above, not the npm version shown by `adsm-ctx --version`. Compare actual context with those conventions and use `validate` to check recorded and supported schema labels plus structural findings. If already conforming to the same schema, no evolution is needed merely because the package changed. Classify structural repairs separately from semantic changes; use the seven phases above for needed evolution and obtain human approval for changes to accepted meaning or authority. Unsupported labels require investigation; no version-specific migration is provided. Never relabel an older context based solely on package installation.
@@ -1,7 +1,7 @@
1
1
  # Context Lifecycle
2
2
 
3
3
  - Path: `skills/adsm-ctx/references/context-lifecycle.md`
4
- - Changed: `20261024`
4
+ - Changed: `20261104`
5
5
 
6
6
  `adsm-ctx` manages six lifecycle modes for project cognitive context.
7
7
 
@@ -27,7 +27,7 @@ The lifecycle is iterative. A project may return to `design`, `validate`, `quali
27
27
  The package-level `adsm-ctx install-skill <skills-root>` command installs the version-matched skill payload into an explicitly supplied agent skills root. After installation or update, run:
28
28
 
29
29
  ```sh
30
- npm install --global git+ssh://git@github.com/flancer32/skill-adsm-ctx.git
30
+ npm install --global @flancer32/skill-adsm-ctx
31
31
  adsm-ctx install-skill "$HOME/.agents/skills"
32
32
  ```
33
33
 
@@ -1,7 +1,7 @@
1
1
  # Documentation Projections
2
2
 
3
3
  - Path: `skills/adsm-ctx/references/document-projections.md`
4
- - Changed: `20261024`
4
+ - Changed: `20261105`
5
5
 
6
6
  Use this reference whenever an agent initializes, designs, validates, audits, compresses, or evolves ADSM documentation under `ctx/docs/`.
7
7
 
@@ -122,7 +122,9 @@ Their meanings remain:
122
122
 
123
123
  `ctx/docs/verification/` is a mandatory cross-cutting documentation block. It relates declarations to observations of reality, but is not a fifth refinement level and does not change declaration authority.
124
124
 
125
- Require the block in schema `0.5.0`, even when it contains only `AGENTS.md`. Its root requires `AGENTS.md`; direct categories are optional `product/`, `architecture/`, `environment/`, and `code/`. Create a category only when a durable specification exists beneath it. Do not initialize empty categories or placeholder specifications.
125
+ For the distinction between project testing and product verification, evidence limits, and npm command conventions, see [testing-and-verification.md](testing-and-verification.md).
126
+
127
+ Require the block in schema `0.7`, even when it contains only `AGENTS.md`. Its root requires `AGENTS.md`; direct categories are optional `product/`, `architecture/`, `environment/`, and `code/`. Create a category only when a durable specification exists beneath it. Do not initialize empty categories or placeholder specifications.
126
128
 
127
129
  A verification specification has one canonical home selected by its **primary verification target**: the declaration or bounded declaration group whose truth it chiefly evaluates. It may link to secondary declarations, executable tests, monitors, environments, dependencies, and other contexts. Mechanism, test framework, source path, CI job, endpoint, reporting context, and current Responsible Context do not determine placement.
128
130
 
@@ -0,0 +1,20 @@
1
+ # Project Testing And Product Verification
2
+
3
+ - Path: `skills/adsm-ctx/references/testing-and-verification.md`
4
+ - Changed: `20261105`
5
+
6
+ Project testing checks technical health and engineering conventions of the project and its artifacts, such as context structure, types, module conventions, dependency boundaries, and packaging. A passing project check is not evidence that the product satisfies all its declared requirements. In particular, structural context validation cannot establish semantic correctness.
7
+
8
+ Product verification assesses a declared product property or behavior through bounded observations guided by applicable specifications under `ctx/docs/verification/`. Specifications identify the target, applicable state, approach, and interpretation limits; actual evidence and its provenance remain separate. Explain what each scenario establishes and what it does not: a controlled collaborator can support a bounded contract check, but does not prove live interoperability. The Verification Layer is cross-cutting and cannot redefine accepted product meaning.
9
+
10
+ Choose checks proportionally to the change and risk. Include focused negative tests when security or failure boundaries change. The same test mechanism can contribute to either concern when its target and evidence are explicit; test level alone does not decide the distinction. Humans and accepted project context determine required guarantees. Projects own their scenarios, mechanisms, and evidence; do not invent them in generic templates.
11
+
12
+ For npm projects, `npm test` should be a very fast local project smoke check: no network, temporary installations, or end-to-end scenarios. Use focused `test:*` commands where useful for other project checks. Use `npm run verify` for explicitly bounded product verification, not an indiscriminate aggregate of technical suites, and optional `verify:*` commands for selected scopes; document their coverage, prerequisites, skips, and limits. Do not prescribe a universal suite or mandatory end-to-end setup. These are npm conventions, not requirements to use npm in other ecosystems; keep existing contexts intact and evolve project commands only within the authorized scope.
13
+
14
+ ## Fresh First-Party Integration
15
+
16
+ Projects inherit this convention from the Rapid Evolution default without separate opt-in: prefer freshly resolved integration of trusted, actively developed first-party libraries to shorten feedback across repositories. Accepted project context and human instructions override this default, including reproducibility, offline, security, integrity, operational, and deployment requirements. It does not prescribe floating third-party dependencies or production and regulated deployments. Releases and deployments may require independently locked, reproducible inputs. Do not rewrite existing consumer repositories without authorization.
17
+
18
+ For applicable npm projects, a dependency such as `"@teqfw/dem-idb": "github:teqfw/dem-idb"` has no ref selector and resolves the repository's default branch on fresh resolution. Avoid maintaining a committed `package-lock.json` by default: set `package-lock=false` in the project `.npmrc` so npm neither consumes nor writes that lockfile, ignore `package-lock.json`, and stop tracking an existing one only as part of an authorized transition. Check for other lock mechanisms, such as `npm-shrinkwrap.json`, and explicit requirements before assuming resolution is fresh.
19
+
20
+ Use clean CI installations with `npm install` for this integration mode; `npm ci` requires a lockfile and installs its frozen graph. An ordinary `npm install` over existing `node_modules` does not guarantee a newer Git revision: explicitly refresh the dependency or use a clean installation when freshness matters. Do not require npm publication for every first-party iteration. Investigate incompatibilities and fix the responsible contract or implementation instead of silently pinning an older revision, masking failures, or adding speculative compatibility layers.
@@ -1,7 +1,7 @@
1
1
  # Root Level
2
2
 
3
3
  - Path: `AGENTS.md`
4
- - Template Version: `20261024`
4
+ - Template Version: `20261105`
5
5
  - Changed: `YYYYMMDD`
6
6
 
7
7
  ## Boundary
@@ -12,8 +12,20 @@ This file controls repository work. `ctx/` owns project meaning and is authorita
12
12
 
13
13
  A task may cover multiple repositories. Coordinate affected contracts and consumers, verify their integration, and keep each Git history separate. Do not expand into unrelated repositories. The human defines scope and approves changes to accepted meaning.
14
14
 
15
+ ## Development Policy
16
+
17
+ Default to Rapid Evolution by Default, Reliability by Requirement: deliver the essential happy path for fast feedback, fail visibly on unexpected conditions, and avoid speculative defenses and backward compatibility unless justified by accepted requirements, demonstrated problems, or meaningful identified risks. Verify essential contracts and increase verification when risk or observed defects justify it. Accepted context defines the target; humans determine acceptable risk and may strengthen or replace this default. Preserve security, integrity, and explicit invariants. Consult the `adsm-ctx` skill for the policy.
18
+
19
+ This default includes fresh integration of trusted, actively developed first-party dependencies without separate opt-in. Accepted requirements or human instructions may override it; preserve required security, integrity, offline operation, and reproducibility, particularly for releases and deployments. Follow the skill's dependency guidance.
20
+
15
21
  ## Efficient Execution
16
22
 
17
23
  Classify the task before reading context or running checks. Git-only work needs Git-state checks, not product-context scans or tests. For code or context changes, inspect only relevant owners; run deterministic checks chosen by changed responsibility and risk. Capture verbose output outside the model context and inspect logs on failure or when evidence is needed. Report results, omitted coverage, and material risks concisely.
18
24
 
19
25
  Do not modify, replace, delete, or relocate this file without explicit human instruction. Do not read, search, or expose secret-bearing files or credentials; non-secret examples may describe configuration shape. If a secret is accidentally exposed, do not repeat it; notify the human that it should be rotated or revoked.
26
+
27
+ ## Git Delivery
28
+
29
+ An explicit task instruction to commit and push authorizes delivery of the verified commit to the named repository and branch, or to its configured upstream when the branch is unspecified. Inspect the worktree, branch, and remote before pushing. If sandbox networking blocks Git, use the normal approved escalation path; do not ask for duplicate authorization.
30
+
31
+ An automated approval rejection is a platform restriction, not evidence that user authorization is missing. Report the specific restriction and request only the approval the gate requires. Keep delivery pending while that approval is required. These instructions do not override platform security or approval controls or applicable repository rules.
@@ -1,7 +1,7 @@
1
1
  # Cognitive Context
2
2
 
3
3
  - Path: `ctx/README.md`
4
- - Template Version: `20260623`
4
+ - Template Version: `20261024`
5
5
  - Changed: `YYYYMMDD`
6
6
 
7
7
  ## Purpose
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema": "adsm-context",
3
- "version": "0.5.0",
3
+ "version": "0.7",
4
4
  "capabilities": [
5
5
  "verification-layer"
6
6
  ],
@@ -1,7 +1,7 @@
1
1
  # Architecture Documentation
2
2
 
3
3
  - Path: `ctx/docs/architecture/AGENTS.md`
4
- - Template Version: `20260702`
4
+ - Template Version: `20260708`
5
5
  - Changed: `YYYYMMDD`
6
6
 
7
7
  ## Purpose
@@ -1,7 +1,7 @@
1
1
  # Architecture Behavior
2
2
 
3
3
  - Path: `ctx/docs/architecture/behavior.md`
4
- - Template Version: `20260605`
4
+ - Template Version: `20261105`
5
5
  - Changed: `YYYYMMDD`
6
6
 
7
7
  ## Purpose
@@ -14,7 +14,7 @@ This document explains how the system works internally, not which product outcom
14
14
 
15
15
  Describe the main architectural flows that matter for the system.
16
16
 
17
- Examples may include request handling, synchronization, ingestion, supervision, background processing, or recovery.
17
+ Examples may include request handling, synchronization, ingestion, supervision, or background processing when relevant.
18
18
 
19
19
  Do not rewrite product use cases here.
20
20
 
@@ -27,9 +27,9 @@ For each major flow, clarify:
27
27
  - where important decisions are made;
28
28
  - where the flow ends or commits durable change.
29
29
 
30
- ## Failure And Recovery
30
+ ## Failure Behavior
31
31
 
32
- Describe important failure handling, retry, fallback, or degradation behavior at the architectural level.
32
+ Describe visible failure behavior and any handling required by accepted requirements, demonstrated problems, or meaningful identified risks. Do not introduce retries, fallback, recovery, or degradation speculatively. Preserve security, integrity, and accepted invariants.
33
33
 
34
34
  ## Product Dependency
35
35
 
@@ -1,7 +1,7 @@
1
1
  # Code Documentation
2
2
 
3
3
  - Path: `ctx/docs/code/AGENTS.md`
4
- - Template Version: `20260702`
4
+ - Template Version: `20260708`
5
5
  - Changed: `YYYYMMDD`
6
6
 
7
7
  ## Purpose
@@ -1,7 +1,7 @@
1
1
  # Testing Overview
2
2
 
3
3
  - Path: `ctx/docs/code/testing.md`
4
- - Template Version: `20260605`
4
+ - Template Version: `20261104`
5
5
  - Changed: `YYYYMMDD`
6
6
 
7
7
  ## Purpose
@@ -15,3 +15,5 @@ List the main test layers, directories, and intended verification scope.
15
15
  ## Verification Target Boundary
16
16
 
17
17
  Keep executable test organization, framework conventions, fixtures, and isolation in this code-level document. When a project adds a durable specification under the mandatory `ctx/docs/verification/` boundary, that specification states the observed declared expectation and primary target; the executable mechanism remains governed here.
18
+
19
+ Distinguish project health checks from product verification and document each command's scope and limits. Apply the `adsm-ctx` skill's testing and verification guidance to the project's ecosystem and risk.
@@ -1,7 +1,7 @@
1
1
  # Environment Documentation
2
2
 
3
3
  - Path: `ctx/docs/environment/AGENTS.md`
4
- - Template Version: `20260702`
4
+ - Template Version: `20260708`
5
5
  - Changed: `YYYYMMDD`
6
6
 
7
7
  ## Purpose
@@ -1,7 +1,7 @@
1
1
  # Filesystem Structure
2
2
 
3
3
  - Path: `ctx/docs/filesystem.md`
4
- - Template Version: `20260605`
4
+ - Template Version: `20260707`
5
5
  - Changed: `YYYYMMDD`
6
6
 
7
7
  ## Purpose
@@ -1,7 +1,7 @@
1
1
  # Product Documentation
2
2
 
3
3
  - Path: `ctx/docs/product/AGENTS.md`
4
- - Template Version: `20260702`
4
+ - Template Version: `20260708`
5
5
  - Changed: `YYYYMMDD`
6
6
 
7
7
  ## Purpose
@@ -1,13 +1,25 @@
1
1
  // @ts-check
2
2
 
3
- import processModule from "node:process";
4
-
5
- /** @namespace Fl32_Skill_Adsm_Ctx_Cli_Command_Init */
3
+ /**
4
+ * @namespace Fl32_Skill_Adsm_Ctx_Cli_Command_Init
5
+ * @description Initializes project context via the CLI.
6
+ */
6
7
  export default class Init {
7
- constructor({config, init}) {
8
+ /**
9
+ * @param {object} deps
10
+ * @param {Fl32_Skill_Adsm_Ctx_Cli_Config} deps.config
11
+ * @param {Fl32_Skill_Adsm_Ctx_Init_Service} deps.init
12
+ * @param {typeof import("node:process")} deps.processModule
13
+ */
14
+ constructor({config, init, processModule}) {
8
15
  this.id = "adsm-ctx:init";
9
16
  this.summary = "Initialize an ADSM context.";
10
17
  this.lifetime = "finite";
18
+ /**
19
+ * @param {object} deps
20
+ * @param {Record<string, string>} deps.args
21
+ * @returns {Promise<void>}
22
+ */
11
23
  this.execute = async function ({args}) {
12
24
  const result = await init.execute({targetPath: args["target-path"] ?? config.cwd});
13
25
  processModule.stdout.write(`${formatInitReport(result)}\n`);
@@ -15,8 +27,12 @@ export default class Init {
15
27
  }
16
28
  }
17
29
 
30
+ /**
31
+ * @param {Fl32_Skill_Adsm_Ctx_Init_Result} result
32
+ * @returns {string}
33
+ */
18
34
  function formatInitReport(result) {
19
35
  return [`Initialized ADSM context in ${result.ctxRoot}`, ...result.created.map((entry) => `Created: ${entry}`), ...result.skipped.map((entry) => `Skipped: ${entry}`)].join("\n");
20
36
  }
21
37
 
22
- export const __deps__ = Object.freeze({default: Object.freeze({config: "TeqFw_Cli_Config$", init: "Fl32_Skill_Adsm_Ctx_Init_Service$"})});
38
+ export const __deps__ = Object.freeze({default: Object.freeze({processModule: "node:process", config: "TeqFw_Cli_Config$", init: "Fl32_Skill_Adsm_Ctx_Init_Service$"})});
@@ -1,13 +1,24 @@
1
1
  // @ts-check
2
2
 
3
- import processModule from "node:process";
4
-
5
- /** @namespace Fl32_Skill_Adsm_Ctx_Cli_Command_InstallSkill */
3
+ /**
4
+ * @namespace Fl32_Skill_Adsm_Ctx_Cli_Command_InstallSkill
5
+ * @description Installs the skill payload via the CLI.
6
+ */
6
7
  export default class InstallSkill {
7
- constructor({installer}) {
8
+ /**
9
+ * @param {object} deps
10
+ * @param {Fl32_Skill_Adsm_Ctx_Skill_Installer} deps.installer
11
+ * @param {typeof import("node:process")} deps.processModule
12
+ */
13
+ constructor({installer, processModule}) {
8
14
  this.id = "adsm-ctx:install-skill";
9
15
  this.summary = "Install the bundled agent skill payload.";
10
16
  this.lifetime = "finite";
17
+ /**
18
+ * @param {object} deps
19
+ * @param {Record<string, string>} deps.args
20
+ * @returns {Promise<void>}
21
+ */
11
22
  this.execute = async function ({args}) {
12
23
  const targetDir = await installer.execute({targetRoot: args["skills-root"]});
13
24
  processModule.stdout.write(`Installed skill payload to ${targetDir}\n`);
@@ -15,4 +26,4 @@ export default class InstallSkill {
15
26
  }
16
27
  }
17
28
 
18
- export const __deps__ = Object.freeze({default: Object.freeze({installer: "Fl32_Skill_Adsm_Ctx_Skill_Installer$"})});
29
+ export const __deps__ = Object.freeze({default: Object.freeze({processModule: "node:process", installer: "Fl32_Skill_Adsm_Ctx_Skill_Installer$"})});
@@ -1,13 +1,25 @@
1
1
  // @ts-check
2
2
 
3
- import processModule from "node:process";
4
-
5
- /** @namespace Fl32_Skill_Adsm_Ctx_Cli_Command_Validate */
3
+ /**
4
+ * @namespace Fl32_Skill_Adsm_Ctx_Cli_Command_Validate
5
+ * @description Validates project context via the CLI.
6
+ */
6
7
  export default class Validate {
7
- constructor({config, validate}) {
8
+ /**
9
+ * @param {object} deps
10
+ * @param {Fl32_Skill_Adsm_Ctx_Cli_Config} deps.config
11
+ * @param {typeof import("node:process")} deps.processModule
12
+ * @param {Fl32_Skill_Adsm_Ctx_Validate_Service} deps.validate
13
+ */
14
+ constructor({config, processModule, validate}) {
8
15
  this.id = "adsm-ctx:validate";
9
16
  this.summary = "Validate an ADSM context.";
10
17
  this.lifetime = "finite";
18
+ /**
19
+ * @param {object} deps
20
+ * @param {Record<string, string>} deps.args
21
+ * @returns {Promise<void>}
22
+ */
11
23
  this.execute = async function ({args}) {
12
24
  const result = await validate.execute({targetPath: args["target-path"] ?? config.cwd});
13
25
  processModule.stdout.write(`${validate.format({result})}\n`);
@@ -16,4 +28,4 @@ export default class Validate {
16
28
  }
17
29
  }
18
30
 
19
- export const __deps__ = Object.freeze({default: Object.freeze({config: "TeqFw_Cli_Config$", validate: "Fl32_Skill_Adsm_Ctx_Validate_Service$"})});
31
+ export const __deps__ = Object.freeze({default: Object.freeze({processModule: "node:process", config: "TeqFw_Cli_Config$", validate: "Fl32_Skill_Adsm_Ctx_Validate_Service$"})});
@@ -21,9 +21,9 @@ export default class Service {
21
21
  /**
22
22
  * Creates baseline context structure in the target project.
23
23
  *
24
- * @param {object} params
25
- * @param {string} params.targetPath
26
- * @returns {Promise<{created: string[], ctxRoot: string, projectRoot: string, skipped: string[]}>}
24
+ * @param {object} deps
25
+ * @param {string} deps.targetPath
26
+ * @returns {Promise<Fl32_Skill_Adsm_Ctx_Init_Result>}
27
27
  */
28
28
  this.execute = async function ({targetPath}) {
29
29
  const projectRoot = pathService.resolve(targetPath);
@@ -49,12 +49,12 @@ export default class Service {
49
49
  }
50
50
 
51
51
  /**
52
- * @param {object} params
53
- * @param {string[]} params.created
54
- * @param {typeof import("node:fs")} params.fs
55
- * @param {Fl32_Skill_Adsm_Ctx_Shared_Path} params.pathService
56
- * @param {string} params.projectRoot
57
- * @param {string[]} params.skipped
52
+ * @param {object} deps
53
+ * @param {Array<string>} deps.created
54
+ * @param {typeof import("node:fs")} deps.fs
55
+ * @param {Fl32_Skill_Adsm_Ctx_Shared_Path} deps.pathService
56
+ * @param {string} deps.projectRoot
57
+ * @param {Array<string>} deps.skipped
58
58
  * @returns {void}
59
59
  */
60
60
  function ensureRootAgents({created, fs, pathService, projectRoot, skipped}) {
@@ -68,11 +68,11 @@ function ensureRootAgents({created, fs, pathService, projectRoot, skipped}) {
68
68
  }
69
69
 
70
70
  /**
71
- * @param {object} params
72
- * @param {string[]} params.created
73
- * @param {typeof import("node:fs")} params.fs
74
- * @param {Fl32_Skill_Adsm_Ctx_Shared_Path} params.pathService
75
- * @param {string} params.projectRoot
71
+ * @param {object} deps
72
+ * @param {Array<string>} deps.created
73
+ * @param {typeof import("node:fs")} deps.fs
74
+ * @param {Fl32_Skill_Adsm_Ctx_Shared_Path} deps.pathService
75
+ * @param {string} deps.projectRoot
76
76
  * @returns {void}
77
77
  */
78
78
  function stampCreatedMarkdownDates({created, fs, pathService, projectRoot}) {
@@ -87,13 +87,13 @@ function stampCreatedMarkdownDates({created, fs, pathService, projectRoot}) {
87
87
  }
88
88
 
89
89
  /**
90
- * @param {object} params
91
- * @param {string[]} params.created
92
- * @param {typeof import("node:fs")} params.fs
93
- * @param {Fl32_Skill_Adsm_Ctx_Shared_Metadata} params.metadata
94
- * @param {Fl32_Skill_Adsm_Ctx_Shared_Path} params.pathService
95
- * @param {string} params.projectRoot
96
- * @param {string[]} params.skipped
90
+ * @param {object} deps
91
+ * @param {Array<string>} deps.created
92
+ * @param {typeof import("node:fs")} deps.fs
93
+ * @param {Fl32_Skill_Adsm_Ctx_Shared_Metadata} deps.metadata
94
+ * @param {Fl32_Skill_Adsm_Ctx_Shared_Path} deps.pathService
95
+ * @param {string} deps.projectRoot
96
+ * @param {Array<string>} deps.skipped
97
97
  * @returns {void}
98
98
  */
99
99
  function writeMetadata({created, fs, metadata, pathService, projectRoot, skipped}) {
@@ -6,9 +6,10 @@
6
6
  */
7
7
 
8
8
  export default class Constants {
9
+ /** Initializes the supported context constants. */
9
10
  constructor() {
10
11
  this.CONTEXT_SCHEMA = "adsm-context";
11
- this.CONTEXT_VERSION = "0.5.0";
12
+ this.CONTEXT_VERSION = "0.7";
12
13
  this.VERIFICATION_CAPABILITY = "verification-layer";
13
14
  this.CONTEXT_CAPABILITIES = Object.freeze([this.VERIFICATION_CAPABILITY]);
14
15
  this.VERIFICATION_BLOCK = "verification";
@@ -15,9 +15,9 @@ export default class CopyDirectory {
15
15
  /**
16
16
  * Copies a directory tree recursively.
17
17
  *
18
- * @param {object} params
19
- * @param {string} params.sourcePath
20
- * @param {string} params.targetPath
18
+ * @param {object} deps
19
+ * @param {string} deps.sourcePath
20
+ * @param {string} deps.targetPath
21
21
  * @returns {void}
22
22
  */
23
23
  this.execute = function ({sourcePath, targetPath}) {
@@ -36,12 +36,12 @@ export default class CopyDirectory {
36
36
  /**
37
37
  * Copies only missing directories and files from source to target.
38
38
  *
39
- * @param {object} params
40
- * @param {string[]} params.created
41
- * @param {string} params.pathPrefix
42
- * @param {string[]} params.skipped
43
- * @param {string} params.sourcePath
44
- * @param {string} params.targetPath
39
+ * @param {object} deps
40
+ * @param {Array<string>} deps.created
41
+ * @param {string} deps.pathPrefix
42
+ * @param {Array<string>} deps.skipped
43
+ * @param {string} deps.sourcePath
44
+ * @param {string} deps.targetPath
45
45
  * @returns {void}
46
46
  */
47
47
  this.copyMissing = function ({created, pathPrefix, skipped, sourcePath, targetPath}) {
@@ -14,7 +14,7 @@ export default class Metadata {
14
14
  /**
15
15
  * Creates the baseline metadata object.
16
16
  *
17
- * @returns {{schema: string, version: string}}
17
+ * @returns {Fl32_Skill_Adsm_Ctx_Metadata_Value}
18
18
  */
19
19
  this.create = function () {
20
20
  return {
@@ -19,8 +19,8 @@ export default class Installer {
19
19
  /**
20
20
  * Installs the skill payload.
21
21
  *
22
- * @param {object} params
23
- * @param {string} params.targetRoot
22
+ * @param {object} deps
23
+ * @param {string} deps.targetRoot
24
24
  * @returns {Promise<string>}
25
25
  */
26
26
  this.execute = async function ({targetRoot}) {
@@ -21,30 +21,9 @@ export default class Validate {
21
21
  /**
22
22
  * Validates context structure.
23
23
  *
24
- * @param {object} params
25
- * @param {string} params.targetPath
26
- * @returns {Promise<{
27
- * errorCount: number,
28
- * findings: {
29
- * message: string,
30
- * path: string,
31
- * ruleId: string,
32
- * severity: "error" | "warning"
33
- * }[],
34
- * metadata: {capabilities?: string[], schema: string, version: string, initializedAt?: string} | null,
35
- * missingPaths: string[],
36
- * ok: boolean,
37
- * projectRoot: string,
38
- * projection: {
39
- * assets: string[],
40
- * bodies: string[],
41
- * orphanSkins: string[],
42
- * pairs: {body: string, skin: string}[],
43
- * skins: string[],
44
- * verification: {categories: string[], present: boolean}
45
- * },
46
- * warningCount: number
47
- * }>}
24
+ * @param {object} deps
25
+ * @param {string} deps.targetPath
26
+ * @returns {Promise<Fl32_Skill_Adsm_Ctx_Validate_Result>}
48
27
  */
49
28
  this.execute = async function ({targetPath}) {
50
29
  const projectRoot = pathService.resolve(targetPath);
@@ -96,20 +75,8 @@ export default class Validate {
96
75
  /**
97
76
  * Formats validation result for CLI output.
98
77
  *
99
- * @param {object} params
100
- * @param {{
101
- * errorCount: number,
102
- * findings: {
103
- * message: string,
104
- * path: string,
105
- * ruleId: string,
106
- * severity: "error" | "warning"
107
- * }[],
108
- * metadata: {version: string} | null,
109
- * ok: boolean,
110
- * projectRoot: string,
111
- * warningCount: number
112
- * }} params.result
78
+ * @param {object} deps
79
+ * @param {Fl32_Skill_Adsm_Ctx_Validate_Result} deps.result
113
80
  * @returns {string}
114
81
  */
115
82
  this.format = function ({result}) {
@@ -140,12 +107,12 @@ export default class Validate {
140
107
  }
141
108
 
142
109
  /**
143
- * @param {object} params
144
- * @param {string} params.message
145
- * @param {string} params.path
146
- * @param {string} params.ruleId
147
- * @param {"error" | "warning"} params.severity
148
- * @returns {{message: string, path: string, ruleId: string, severity: "error" | "warning"}}
110
+ * @param {object} deps
111
+ * @param {string} deps.message
112
+ * @param {string} deps.path
113
+ * @param {string} deps.ruleId
114
+ * @param {Fl32_Skill_Adsm_Ctx_Finding_Severity} deps.severity
115
+ * @returns {Fl32_Skill_Adsm_Ctx_Finding}
149
116
  */
150
117
  function createFinding({message, path, ruleId, severity}) {
151
118
  return {message, path, ruleId, severity};
@@ -155,7 +122,7 @@ function createFinding({message, path, ruleId, severity}) {
155
122
  * Classifies a semantic-skin filename and derives its canonical agent document.
156
123
  *
157
124
  * @param {string} file
158
- * @returns {{body: string, language: string | null, markerError: string | null} | null}
125
+ * @returns {Fl32_Skill_Adsm_Ctx_SkinInfo_Optional}
159
126
  */
160
127
  function parseSkinFilename(file) {
161
128
  const explicitMatch = file.match(EXPLICIT_SKIN_FILENAME);
@@ -185,18 +152,12 @@ function parseSkinFilename(file) {
185
152
  }
186
153
 
187
154
  /**
188
- * @param {object} params
189
- * @param {Fl32_Skill_Adsm_Ctx_Shared_Constants} params.constants
190
- * @param {typeof import("node:fs")} params.fs
191
- * @param {Fl32_Skill_Adsm_Ctx_Shared_Path} params.pathService
192
- * @param {string} params.projectRoot
193
- * @returns {{
194
- * ok: false,
195
- * finding: {message: string, path: string, ruleId: string, severity: "error" | "warning"}
196
- * } | {
197
- * ok: true,
198
- * metadata: {schema: string, version: string, initializedAt?: string}
199
- * }}
155
+ * @param {object} deps
156
+ * @param {Fl32_Skill_Adsm_Ctx_Shared_Constants} deps.constants
157
+ * @param {typeof import("node:fs")} deps.fs
158
+ * @param {Fl32_Skill_Adsm_Ctx_Shared_Path} deps.pathService
159
+ * @param {string} deps.projectRoot
160
+ * @returns {Fl32_Skill_Adsm_Ctx_Metadata_ReadResult}
200
161
  */
201
162
  function readMetadata({constants, fs, pathService, projectRoot}) {
202
163
  const findings = [];
@@ -223,9 +184,7 @@ function readMetadata({constants, fs, pathService, projectRoot}) {
223
184
  }
224
185
  if (parsed.version !== constants.CONTEXT_VERSION) {
225
186
  findings.push(createFinding({
226
- message: ["0.1.0", "0.2.0", "0.3.0"].includes(parsed.version)
227
- ? `Legacy schema ${parsed.version}; use skill adsm-ctx for agent-driven context evolution. Target schema: ${constants.CONTEXT_VERSION}.`
228
- : `Unsupported metadata version: ${parsed.version}; investigate with skill adsm-ctx before changing schema metadata.`,
187
+ message: `Unsupported metadata version: ${parsed.version}; target schema: ${constants.CONTEXT_VERSION}. Investigate with skill adsm-ctx before changing schema metadata.`,
229
188
  path: "ctx/adsm.json",
230
189
  ruleId: "metadata-version",
231
190
  severity: "error",
@@ -279,26 +238,13 @@ function readMetadata({constants, fs, pathService, projectRoot}) {
279
238
  }
280
239
 
281
240
  /**
282
- * @param {object} params
283
- * @param {Fl32_Skill_Adsm_Ctx_Shared_Constants} params.constants
284
- * @param {typeof import("node:fs")} params.fs
285
- * @param {Fl32_Skill_Adsm_Ctx_Shared_Path} params.pathService
286
- * @param {string} params.projectRoot
287
- * @returns {{
288
- * findings: {
289
- * message: string,
290
- * path: string,
291
- * ruleId: string,
292
- * severity: "error" | "warning"
293
- * }[],
294
- * summary: {
295
- * assets: string[],
296
- * bodies: string[],
297
- * orphanSkins: string[],
298
- * pairs: {body: string, skin: string}[],
299
- * skins: string[]
300
- * }
301
- * }}
241
+ * @param {object} deps
242
+ * @param {Fl32_Skill_Adsm_Ctx_Shared_Constants} deps.constants
243
+ * @param {typeof import("node:fs")} deps.fs
244
+ * @param {Fl32_Skill_Adsm_Ctx_Shared_Path} deps.pathService
245
+ * @param {string} deps.projectRoot
246
+ * @param {Fl32_Skill_Adsm_Ctx_Metadata_Optional} deps.metadata
247
+ * @returns {Fl32_Skill_Adsm_Ctx_Projection_Result}
302
248
  */
303
249
  function inspectProjection({constants, fs, metadata, pathService, projectRoot}) {
304
250
  const docsRoot = pathService.join(projectRoot, "ctx", "docs");
@@ -441,16 +387,13 @@ function inspectProjection({constants, fs, metadata, pathService, projectRoot})
441
387
  * Inspects the cross-cutting Verification Layer without treating it as a fifth
442
388
  * declarative documentation level.
443
389
  *
444
- * @param {object} params
445
- * @param {Fl32_Skill_Adsm_Ctx_Shared_Constants} params.constants
446
- * @param {Map<string, {name: string, isDirectory: () => boolean, isFile: () => boolean}>} params.docsEntryMap
447
- * @param {typeof import("node:fs")} params.fs
448
- * @param {Fl32_Skill_Adsm_Ctx_Shared_Path} params.pathService
449
- * @param {string} params.projectRoot
450
- * @returns {{
451
- * findings: {message: string, path: string, ruleId: string, severity: "error" | "warning"}[],
452
- * summary: {categories: string[], present: boolean}
453
- * }}
390
+ * @param {object} deps
391
+ * @param {Fl32_Skill_Adsm_Ctx_Shared_Constants} deps.constants
392
+ * @param {Fl32_Skill_Adsm_Ctx_DirectoryEntryMap} deps.docsEntryMap
393
+ * @param {typeof import("node:fs")} deps.fs
394
+ * @param {Fl32_Skill_Adsm_Ctx_Shared_Path} deps.pathService
395
+ * @param {string} deps.projectRoot
396
+ * @returns {Fl32_Skill_Adsm_Ctx_Verification_Result}
454
397
  */
455
398
  function inspectVerificationBlock({constants, docsEntryMap, fs, pathService, projectRoot}) {
456
399
  const findings = [];
@@ -550,13 +493,13 @@ function inspectVerificationBlock({constants, docsEntryMap, fs, pathService, pro
550
493
  * Warns when a documentation level exceeds the recommended direct-entry capacity
551
494
  * and requires its local AGENTS.md to make an intentional exception explicit.
552
495
  *
553
- * @param {object} params
554
- * @param {Fl32_Skill_Adsm_Ctx_Shared_Constants} params.constants
555
- * @param {Map<string, {name: string, isDirectory: () => boolean, isFile: () => boolean}>} params.docsEntryMap
556
- * @param {typeof import("node:fs")} params.fs
557
- * @param {Fl32_Skill_Adsm_Ctx_Shared_Path} params.pathService
558
- * @param {string} params.projectRoot
559
- * @returns {{message: string, path: string, ruleId: string, severity: "error" | "warning"}[]}
496
+ * @param {object} deps
497
+ * @param {Fl32_Skill_Adsm_Ctx_Shared_Constants} deps.constants
498
+ * @param {Fl32_Skill_Adsm_Ctx_DirectoryEntryMap} deps.docsEntryMap
499
+ * @param {typeof import("node:fs")} deps.fs
500
+ * @param {Fl32_Skill_Adsm_Ctx_Shared_Path} deps.pathService
501
+ * @param {string} deps.projectRoot
502
+ * @returns {Array<Fl32_Skill_Adsm_Ctx_Finding>}
560
503
  */
561
504
  function validateDocumentationLevelCapacity({constants, docsEntryMap, fs, pathService, projectRoot}) {
562
505
  const findings = [];
@@ -622,12 +565,12 @@ function validateDocumentationLevelCapacity({constants, docsEntryMap, fs, pathSe
622
565
  }
623
566
 
624
567
  /**
625
- * @param {object} params
626
- * @param {typeof import("node:fs")} params.fs
627
- * @param {Fl32_Skill_Adsm_Ctx_Shared_Path} params.pathService
628
- * @param {string} params.root
629
- * @param {string} params.prefix
630
- * @returns {string[]}
568
+ * @param {object} deps
569
+ * @param {typeof import("node:fs")} deps.fs
570
+ * @param {Fl32_Skill_Adsm_Ctx_Shared_Path} deps.pathService
571
+ * @param {string} deps.root
572
+ * @param {string} deps.prefix
573
+ * @returns {Array<string>}
631
574
  */
632
575
  function listFiles({fs, pathService, root, prefix}) {
633
576
  const result = [];
@@ -644,21 +587,20 @@ function listFiles({fs, pathService, root, prefix}) {
644
587
  }
645
588
 
646
589
  /**
647
- * @param {object} params
648
- * @param {typeof import("node:fs")} params.fs
649
- * @param {string} params.root
650
- * @returns {{name: string, isDirectory: () => boolean, isFile: () => boolean}[]}
590
+ * @param {object} deps
591
+ * @param {typeof import("node:fs")} deps.fs
592
+ * @param {string} deps.root
593
+ * @returns {Array<Fl32_Skill_Adsm_Ctx_DirectoryEntry>}
651
594
  */
652
595
  function listEntries({fs, root}) {
653
596
  return fs.readdirSync(root, {withFileTypes: true});
654
597
  }
655
598
 
656
599
  /**
657
- * @param {object} params
658
- * @param {string} params.file
659
- * @param {{body: string, language: string | null, markerError: string | null}} params.skinInfo
660
- * @param {string} params.text
661
- * @returns {{message: string, path: string, ruleId: string, severity: "error" | "warning"}[]}
600
+ * @param {object} deps
601
+ * @param {string} deps.file
602
+ * @param {string} deps.text
603
+ * @returns {Array<Fl32_Skill_Adsm_Ctx_Finding>}
662
604
  */
663
605
  function validateDocumentMetadata({file, text}) {
664
606
  const findings = [];
@@ -700,13 +642,13 @@ function validateDocumentMetadata({file, text}) {
700
642
  }
701
643
 
702
644
  /**
703
- * @param {object} params
704
- * @param {string} params.file
705
- * @param {typeof import("node:fs")} params.fs
706
- * @param {Fl32_Skill_Adsm_Ctx_Shared_Path} params.pathService
707
- * @param {string} params.projectRoot
708
- * @param {string} params.text
709
- * @returns {{message: string, path: string, ruleId: string, severity: "error" | "warning"}[]}
645
+ * @param {object} deps
646
+ * @param {string} deps.file
647
+ * @param {typeof import("node:fs")} deps.fs
648
+ * @param {Fl32_Skill_Adsm_Ctx_Shared_Path} deps.pathService
649
+ * @param {string} deps.projectRoot
650
+ * @param {string} deps.text
651
+ * @returns {Array<Fl32_Skill_Adsm_Ctx_Finding>}
710
652
  */
711
653
  function validateLocalMarkdownLinks({file, fs, pathService, projectRoot, text}) {
712
654
  const findings = [];
@@ -738,12 +680,13 @@ function validateLocalMarkdownLinks({file, fs, pathService, projectRoot, text})
738
680
  }
739
681
 
740
682
  /**
741
- * @param {object} params
742
- * @param {Set<string>} params.bodySet
743
- * @param {Fl32_Skill_Adsm_Ctx_Shared_Constants} params.constants
744
- * @param {string} params.file
745
- * @param {string} params.text
746
- * @returns {{message: string, path: string, ruleId: string, severity: "error" | "warning"}[]}
683
+ * @param {object} deps
684
+ * @param {Fl32_Skill_Adsm_Ctx_StringSet} deps.bodySet
685
+ * @param {Fl32_Skill_Adsm_Ctx_Shared_Constants} deps.constants
686
+ * @param {string} deps.file
687
+ * @param {Fl32_Skill_Adsm_Ctx_SkinInfo} deps.skinInfo
688
+ * @param {string} deps.text
689
+ * @returns {Array<Fl32_Skill_Adsm_Ctx_Finding>}
747
690
  */
748
691
  function validateSkinDocument({bodySet, constants, file, skinInfo, text}) {
749
692
  const findings = [];
@@ -767,9 +710,9 @@ function validateSkinDocument({bodySet, constants, file, skinInfo, text}) {
767
710
  }
768
711
 
769
712
  /**
770
- * @param {object} params
771
- * @param {string} params.sectionName
772
- * @param {string} params.text
713
+ * @param {object} deps
714
+ * @param {string} deps.sectionName
715
+ * @param {string} deps.text
773
716
  * @returns {string}
774
717
  */
775
718
  function extractSectionBody({sectionName, text}) {
@@ -789,10 +732,10 @@ function extractSectionBody({sectionName, text}) {
789
732
  }
790
733
 
791
734
  /**
792
- * @param {object} params
793
- * @param {string} params.file
794
- * @param {string} params.link
795
- * @returns {{fragment: string | null, path: string} | null}
735
+ * @param {object} deps
736
+ * @param {string} deps.file
737
+ * @param {string} deps.link
738
+ * @returns {Fl32_Skill_Adsm_Ctx_Validate_Link_Optional}
796
739
  */
797
740
  function normalizeLocalMarkdownLink({file, link}) {
798
741
  const trimmed = link.trim();
@@ -819,8 +762,8 @@ function normalizeLocalMarkdownLink({file, link}) {
819
762
  }
820
763
 
821
764
  /**
822
- * @param {string[]} parts
823
- * @returns {string[]}
765
+ * @param {Array<string>} parts
766
+ * @returns {Array<string>}
824
767
  */
825
768
  function normalizeRelativeSegments(parts) {
826
769
  const result = [];
@@ -835,17 +778,23 @@ function normalizeRelativeSegments(parts) {
835
778
  return result;
836
779
  }
837
780
 
838
- export const __deps__ = Object.freeze({default: Object.freeze({
839
- constants: "Fl32_Skill_Adsm_Ctx_Shared_Constants$",
840
- fs: "node:fs",
841
- pathService: "Fl32_Skill_Adsm_Ctx_Shared_Path$",
842
- })});
843
-
844
- /** Checks context-side routing sections; root repository instructions have a separate shape. */
781
+ /**
782
+ * Checks context-side routing sections; root repository instructions have a separate shape.
783
+ * @param {object} deps
784
+ * @param {typeof import("node:fs")} deps.fs
785
+ * @param {Fl32_Skill_Adsm_Ctx_Shared_Path} deps.pathService
786
+ * @param {string} deps.projectRoot
787
+ * @returns {Array<Fl32_Skill_Adsm_Ctx_Finding>}
788
+ */
845
789
  function inspectAgentsHierarchy({fs, pathService, projectRoot}) {
846
790
  const findings = [];
847
791
  const root = pathService.join(projectRoot, "ctx");
848
792
  if (!fs.existsSync(root)) return findings;
793
+ /**
794
+ * @param {string} directory
795
+ * @param {string} relative
796
+ * @returns {void}
797
+ */
849
798
  const visit = (directory, relative) => {
850
799
  let entries;
851
800
  try { entries = listEntries({fs, root: directory}); }
@@ -890,3 +839,9 @@ function inspectAgentsHierarchy({fs, pathService, projectRoot}) {
890
839
  visit(root, "ctx");
891
840
  return findings;
892
841
  }
842
+
843
+ export const __deps__ = Object.freeze({default: Object.freeze({
844
+ constants: "Fl32_Skill_Adsm_Ctx_Shared_Constants$",
845
+ fs: "node:fs",
846
+ pathService: "Fl32_Skill_Adsm_Ctx_Shared_Path$",
847
+ })});
package/types.d.ts CHANGED
@@ -1,14 +1,45 @@
1
1
  declare global {
2
2
  type Fl32_Skill_Adsm_Ctx_Cli_Command_Init = import("./src/Cli/Command/Init.mjs").default;
3
+ type Fl32_Skill_Adsm_Ctx_Cli_Command_Init__Class = typeof import("./src/Cli/Command/Init.mjs").default;
3
4
  type Fl32_Skill_Adsm_Ctx_Cli_Command_InstallSkill = import("./src/Cli/Command/InstallSkill.mjs").default;
5
+ type Fl32_Skill_Adsm_Ctx_Cli_Command_InstallSkill__Class = typeof import("./src/Cli/Command/InstallSkill.mjs").default;
4
6
  type Fl32_Skill_Adsm_Ctx_Cli_Command_Validate = import("./src/Cli/Command/Validate.mjs").default;
7
+ type Fl32_Skill_Adsm_Ctx_Cli_Command_Validate__Class = typeof import("./src/Cli/Command/Validate.mjs").default;
8
+ type Fl32_Skill_Adsm_Ctx_Cli_Config = {cwd: string};
9
+ type Fl32_Skill_Adsm_Ctx_DirectoryEntry = {name: string; isDirectory: () => boolean; isFile: () => boolean};
10
+ type Fl32_Skill_Adsm_Ctx_DirectoryEntryMap = {get: (name: string) => Fl32_Skill_Adsm_Ctx_DirectoryEntry | undefined};
11
+ type Fl32_Skill_Adsm_Ctx_Finding = {message: string; path: string; ruleId: string; severity: "error" | "warning"};
12
+ type Fl32_Skill_Adsm_Ctx_Finding_Severity = "error" | "warning";
13
+ type Fl32_Skill_Adsm_Ctx_Init_Result = {created: Array<string>; ctxRoot: string; projectRoot: string; skipped: Array<string>};
5
14
  type Fl32_Skill_Adsm_Ctx_Init_Service = import("./src/Init/Service.mjs").default;
15
+ type Fl32_Skill_Adsm_Ctx_Init_Service__Class = typeof import("./src/Init/Service.mjs").default;
16
+ type Fl32_Skill_Adsm_Ctx_Metadata = {schema: string; version: string; capabilities?: Array<string>; initializedAt?: string};
17
+ type Fl32_Skill_Adsm_Ctx_Metadata_Optional = Fl32_Skill_Adsm_Ctx_Metadata | null;
18
+ type Fl32_Skill_Adsm_Ctx_Metadata_ReadResult = {findings: Array<Fl32_Skill_Adsm_Ctx_Finding>; metadata: Fl32_Skill_Adsm_Ctx_Metadata | null; ok: boolean};
19
+ type Fl32_Skill_Adsm_Ctx_Metadata_Value = {schema: string; version: string; capabilities: Array<string>};
20
+ type Fl32_Skill_Adsm_Ctx_Projection = {assets: Array<string>; bodies: Array<string>; orphanSkins: Array<string>; pairs: Array<Fl32_Skill_Adsm_Ctx_Projection_Pair>; skins: Array<string>; verification?: Fl32_Skill_Adsm_Ctx_Verification_Summary};
21
+ type Fl32_Skill_Adsm_Ctx_Projection_Pair = {body: string; skin: string};
22
+ type Fl32_Skill_Adsm_Ctx_Projection_Result = {findings: Array<Fl32_Skill_Adsm_Ctx_Finding>; summary: Fl32_Skill_Adsm_Ctx_Projection};
6
23
  type Fl32_Skill_Adsm_Ctx_Shared_Constants = import("./src/Shared/Constants.mjs").default;
24
+ type Fl32_Skill_Adsm_Ctx_Shared_Constants__Class = typeof import("./src/Shared/Constants.mjs").default;
7
25
  type Fl32_Skill_Adsm_Ctx_Shared_CopyDirectory = import("./src/Shared/CopyDirectory.mjs").default;
26
+ type Fl32_Skill_Adsm_Ctx_Shared_CopyDirectory__Class = typeof import("./src/Shared/CopyDirectory.mjs").default;
8
27
  type Fl32_Skill_Adsm_Ctx_Shared_Metadata = import("./src/Shared/Metadata.mjs").default;
28
+ type Fl32_Skill_Adsm_Ctx_Shared_Metadata__Class = typeof import("./src/Shared/Metadata.mjs").default;
9
29
  type Fl32_Skill_Adsm_Ctx_Shared_Path = import("./src/Shared/Path.mjs").default;
30
+ type Fl32_Skill_Adsm_Ctx_Shared_Path__Class = typeof import("./src/Shared/Path.mjs").default;
10
31
  type Fl32_Skill_Adsm_Ctx_Skill_Installer = import("./src/Skill/Installer.mjs").default;
32
+ type Fl32_Skill_Adsm_Ctx_Skill_Installer__Class = typeof import("./src/Skill/Installer.mjs").default;
33
+ type Fl32_Skill_Adsm_Ctx_SkinInfo = {body: string; language: string | null; markerError: string | null};
34
+ type Fl32_Skill_Adsm_Ctx_SkinInfo_Optional = Fl32_Skill_Adsm_Ctx_SkinInfo | null;
35
+ type Fl32_Skill_Adsm_Ctx_StringSet = {has: (value: string) => boolean};
36
+ type Fl32_Skill_Adsm_Ctx_Validate_Link = {fragment: string | null; path: string};
37
+ type Fl32_Skill_Adsm_Ctx_Validate_Link_Optional = Fl32_Skill_Adsm_Ctx_Validate_Link | null;
38
+ type Fl32_Skill_Adsm_Ctx_Validate_Result = {errorCount: number; findings: Array<Fl32_Skill_Adsm_Ctx_Finding>; metadata: Fl32_Skill_Adsm_Ctx_Metadata | null; missingPaths: Array<string>; ok: boolean; projectRoot: string; projection: Fl32_Skill_Adsm_Ctx_Projection; warningCount: number};
11
39
  type Fl32_Skill_Adsm_Ctx_Validate_Service = import("./src/Validate/Service.mjs").default;
40
+ type Fl32_Skill_Adsm_Ctx_Validate_Service__Class = typeof import("./src/Validate/Service.mjs").default;
41
+ type Fl32_Skill_Adsm_Ctx_Verification_Result = {findings: Array<Fl32_Skill_Adsm_Ctx_Finding>; summary: Fl32_Skill_Adsm_Ctx_Verification_Summary};
42
+ type Fl32_Skill_Adsm_Ctx_Verification_Summary = {categories: Array<string>; present: boolean};
12
43
  }
13
44
 
14
45
  export {};