katalyst-forge 4.0.0__tar.gz → 4.2.0__tar.gz

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 (91) hide show
  1. katalyst_forge-4.2.0/.gitignore +8 -0
  2. katalyst_forge-4.2.0/CHANGELOG.md +83 -0
  3. katalyst_forge-4.2.0/LICENSE +8 -0
  4. katalyst_forge-4.2.0/PKG-INFO +9 -0
  5. katalyst_forge-4.2.0/pyproject.toml +91 -0
  6. katalyst_forge-4.2.0/schemas/CHANGELOG.md +117 -0
  7. katalyst_forge-4.2.0/schemas/README.md +300 -0
  8. katalyst_forge-4.2.0/schemas/agents/agent.schema.json +200 -0
  9. katalyst_forge-4.2.0/schemas/agents/config.schema.json +148 -0
  10. katalyst_forge-4.2.0/schemas/agents/manifest.json +37 -0
  11. katalyst_forge-4.2.0/schemas/agents/skill.schema.json +82 -0
  12. katalyst_forge-4.2.0/schemas/environment.schema.json +95 -0
  13. katalyst_forge-4.2.0/schemas/hooks/hook-config.schema.json +116 -0
  14. katalyst_forge-4.2.0/schemas/katalyst-lock.schema.json +190 -0
  15. katalyst_forge-4.2.0/schemas/nodes/common.schema.json +114 -0
  16. katalyst_forge-4.2.0/schemas/nodes/design.schema.json +341 -0
  17. katalyst_forge-4.2.0/schemas/nodes/organizational.schema.json +205 -0
  18. katalyst_forge-4.2.0/schemas/nodes/portfolio.schema.json +97 -0
  19. katalyst_forge-4.2.0/schemas/nodes/technical.schema.json +130 -0
  20. katalyst_forge-4.2.0/schemas/taxonomy-node.schema.json +24 -0
  21. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/bundle.py +2 -2
  22. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/relationships.py +25 -0
  23. katalyst_forge-4.2.0/src/katalyst_forge/wings/delivery.py +310 -0
  24. katalyst_forge-4.2.0/tests/conftest.py +0 -0
  25. katalyst_forge-4.2.0/tests/test_agent_run.py +29 -0
  26. katalyst_forge-4.2.0/tests/test_delivery_doc_consistency.py +66 -0
  27. katalyst_forge-4.2.0/tests/test_delivery_traceability.py +73 -0
  28. katalyst_forge-4.2.0/tests/test_entry_point_discovery.py +38 -0
  29. katalyst_forge-4.2.0/tests/test_forge.py +154 -0
  30. katalyst_forge-4.2.0/tests/test_wing_schemas.py +581 -0
  31. katalyst_forge-4.2.0/tests/test_wings.py +120 -0
  32. katalyst_forge-4.0.0/.gitignore +0 -112
  33. katalyst_forge-4.0.0/PKG-INFO +0 -8
  34. katalyst_forge-4.0.0/pyproject.toml +0 -43
  35. katalyst_forge-4.0.0/src/katalyst_forge/wings/delivery.py +0 -160
  36. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/__init__.py +0 -0
  37. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/py.typed +0 -0
  38. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/creation/_base.yaml.j2 +0 -0
  39. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/creation/layer.yaml.j2 +0 -0
  40. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/creation/project.yaml.j2 +0 -0
  41. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/creation/stack.yaml.j2 +0 -0
  42. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/creation/system.yaml.j2 +0 -0
  43. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/creation/team.yaml.j2 +0 -0
  44. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/creation/team_member.yaml.j2 +0 -0
  45. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/app-docker/.dockerignore +0 -0
  46. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/app-docker/.env.example +0 -0
  47. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/app-docker/README.md +0 -0
  48. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/app-docker/base/Dockerfile +0 -0
  49. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/app-docker/docker-compose.yaml +0 -0
  50. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/app-docker/env-template/Dockerfile +0 -0
  51. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/app-docker/env-template/docker-compose.override.yaml +0 -0
  52. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/app-docker/env-template/environment.yaml +0 -0
  53. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/app-docker/layer.yaml +0 -0
  54. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/iac-terragrunt/README.md +0 -0
  55. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/iac-terragrunt/composite/terraform/main.tf +0 -0
  56. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/iac-terragrunt/composite/terraform/outputs.tf +0 -0
  57. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/iac-terragrunt/composite/terraform/variables.tf +0 -0
  58. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/iac-terragrunt/env-template/environment.yaml +0 -0
  59. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/iac-terragrunt/env-template/terragrunt.hcl +0 -0
  60. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/iac-terragrunt/global/iac/context.hcl +0 -0
  61. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/iac-terragrunt/global/iac/dev.yaml +0 -0
  62. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/iac-terragrunt/global/iac/prod.yaml +0 -0
  63. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/iac-terragrunt/global/iac/staging.yaml +0 -0
  64. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/iac-terragrunt/layer.yaml +0 -0
  65. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/iac-terragrunt/version.yaml +0 -0
  66. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/k8s-argocd/README.md +0 -0
  67. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/k8s-argocd/base/app/argocd-application.yaml +0 -0
  68. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/k8s-argocd/base/kustomization.yaml +0 -0
  69. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/k8s-argocd/base/namespace.yaml +0 -0
  70. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/k8s-argocd/environment-template/argocd-application.yaml +0 -0
  71. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/k8s-argocd/environment-template/kustomization.yaml +0 -0
  72. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/k8s-argocd/environment-template/patch-argocd-application.yaml +0 -0
  73. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/k8s-argocd/layer.yaml +0 -0
  74. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/k8s-kustomize/README.md +0 -0
  75. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/k8s-kustomize/base/deployment.yaml +0 -0
  76. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/k8s-kustomize/base/kustomization.yaml +0 -0
  77. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/k8s-kustomize/base/namespace.yaml +0 -0
  78. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/k8s-kustomize/base/service.yaml +0 -0
  79. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/k8s-kustomize/environment-template/kustomization.yaml +0 -0
  80. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/k8s-kustomize/environment-template/patch-deployment.yaml +0 -0
  81. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/k8s-kustomize/global/k8s/base/kustomization.yaml +0 -0
  82. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/k8s-kustomize/global/k8s/base/namespace.yaml +0 -0
  83. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/k8s-kustomize/global/k8s/kustomization.yaml +0 -0
  84. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/templates/scaffolds/k8s-kustomize/layer.yaml +0 -0
  85. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/wings/__init__.py +0 -0
  86. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/wings/agentic.py +0 -0
  87. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/wings/design.py +0 -0
  88. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/wings/org.py +0 -0
  89. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/wings/pipeline.py +0 -0
  90. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/wings/practices.py +0 -0
  91. {katalyst_forge-4.0.0 → katalyst_forge-4.2.0}/src/katalyst_forge/wings/system.py +0 -0
@@ -0,0 +1,8 @@
1
+ __pycache__/
2
+ *.pyc
3
+ .venv/
4
+ dist/
5
+ site/
6
+ node_modules/
7
+ .pytest_cache/
8
+ .ruff_cache/
@@ -0,0 +1,83 @@
1
+ # Changelog — katalyst-forge
2
+
3
+ All notable changes to the **katalyst-forge** bundle are documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ As of 4.2.0 this package lives in its own repository
9
+ (`esimplicityinc/katalyst-forge`) and tags use the plain `vX.Y.Z` prefix.
10
+ Releases 4.1.0 and earlier were cut from the `katalyst-taxonomy` monorepo
11
+ with `forge-vX.Y.Z` tags.
12
+
13
+ The Forge **bundle `schema_version`** (declared in `bundle.py`) is the
14
+ consumer-facing node-model contract and is versioned separately from this
15
+ PyPI package version. A breaking node-type/model change bumps `schema_version`.
16
+
17
+ ---
18
+
19
+ ## [4.2.0] -- 2026-07-06
20
+
21
+ Repo split (RIC-1070). First release from the standalone
22
+ `esimplicityinc/katalyst-forge` repository, extracted from `katalyst-taxonomy`.
23
+ No node-model changes; bundle `schema_version` stays **4**.
24
+
25
+ ### Added
26
+
27
+ - Standalone repository: the Forge schema bundle, the 21 kata-forge agent
28
+ definitions and forge skills (extracted from `katalyst-taxonomy-agents`),
29
+ the creation/scaffold templates, the JSON Schemas, and the Forge lifecycle
30
+ docs now live and version together as one product.
31
+ - JSON Schemas ship as package data in the wheel under `katalyst_forge/schemas/`.
32
+
33
+ ### Changed
34
+
35
+ - Release tags drop the `forge-` prefix: this repo tags plain `vX.Y.Z`.
36
+ - Docs move to https://esimplicityinc.github.io/katalyst-forge/.
37
+
38
+ ## [4.1.0] -- 2026-06-26
39
+
40
+ Delivery-wing evolution (#138 / #140). Bundle `schema_version` stays **4** (additive within the v4 node-model); bundle node count 29 → 30.
41
+
42
+ ### Added
43
+
44
+ - **`agent_run` node kind** (child of `work_item`): per-stage agent telemetry (`stages`, `totals`, `entered_status` / `exited_status`, `started` / `ended`) -- identifiers and counts only, no prompts or PII.
45
+ - **`work_item.status` 10-state lifecycle enum** (`idea, proposed, accepted, planned, in_progress, blocked, delivered, validated, released, retired`), enforced through the engine's `FieldSpec.allowed_values`.
46
+ - **Single `TRACES_TO` relationship** on `work_item`, disambiguated by the source field's target kind, covering `capabilities`, `user_needs`, `nfrs`, `adrs`, `design_specs`, `specifications`. Adding a new traceable target is a one-line field addition.
47
+ - **`change_entry` -> `work_item` link** (`work_item_id` + `REFERENCES_WORK_ITEM`).
48
+
49
+ ### Changed
50
+
51
+ - Minimum `katalyst-engine` raised to `>=4.1` -- the `work_item` status enum relies on `FieldSpec.allowed_values`, added in engine 4.1.0.
52
+ - Replaced the per-target relationship definitions (`implements_capability`, `addresses_need`, `satisfies_nfr`) with the single `TRACES_TO` edge. `road_id` / `REFERENCES_ROAD_ITEM` on `change_entry` retained as a deprecated alias of `work_item_id`.
53
+
54
+ ## [4.0.0] -- 2026-06-16
55
+
56
+ Bundle `schema_version` bumped to **4** and manifest version to **4.0** to reflect the breaking node-kind removals below.
57
+
58
+ ### Removed
59
+
60
+ - **BREAKING: Relocated mechanism kinds out of the Forge bundle** (#79/#82). Six node kinds no longer ship in Forge: `template`, `action`, `template_overlay`, `dx`, `cicd_job_template`, and `cicd_workflow_template`. Scaffolding/CI-CD mechanisms are now provided by the taxonomy runtime and its plugins rather than declared as Forge node types. Documents using these kinds must migrate (`kata tax migrate`); `template_overlay` becomes `node_wiring`.
61
+
62
+ ### Added
63
+
64
+ - **`design_spec` node type** in the Design wing (#44). A pre-executable specification artifact sitting between `user_need` and `specification` in the intent chain, capturing visual structure, interaction flows, and testable design constraints. Includes a `design_specs` field + `IMPLEMENTS_DESIGN` cross-reference on `specification`, and the `DESIGNS_FOR_NEED` / `DESIGNS_CAPABILITY` / `IMPLEMENTS_DESIGN` relationships. Brings the Forge bundle to **29 node types**.
65
+
66
+ ## [3.0.1] -- 2026-06-11
67
+
68
+ ### Changed
69
+ - **Corrected bundle `schema_version` to `3`** to reflect the breaking `user_story` → `user_need` rename that shipped in 3.0.0. The `BundleManifest.version` was bumped to `3.0` and `SchemaDefinition.schema_version` to `3`.
70
+ - First release published independently via the per-package `forge-v*` release pipeline.
71
+
72
+ ## [3.0.0] -- 2026-06-10
73
+
74
+ ### Changed
75
+ - **BREAKING: Renamed `user_story` node type to `user_need`** in the Design wing. The kind (`user_story` → `user_need`), directory (`user_stories/` → `user_needs/`), display labels (`User Story`/`User Stories` → `User Need`/`User Needs`), and Neo4j label (`UserStory` → `UserNeed`) all changed. Creation template `user_story.yaml.j2` → `user_need.yaml.j2`. No backward-compatibility alias is provided. (RIC-616)
76
+
77
+ ### Added
78
+ - **`katalyst-xbrl` bundle** companion node types and the pluggable parser registry landed in the same `3.0.0` release train (see root `CHANGELOG.md` for cross-package detail).
79
+
80
+ ---
81
+
82
+ > Versions prior to 3.0.0 were released in lockstep with `katalyst-taxonomy`
83
+ > under the umbrella `vX.Y.Z` tags. See the root `CHANGELOG.md` for that history.
@@ -0,0 +1,8 @@
1
+ Copyright (c) 2024 eSimplicity
2
+
3
+ All Rights Reserved.
4
+
5
+ This software is proprietary and confidential. Unauthorized copying, distribution,
6
+ modification, or use of this software, via any medium, is strictly prohibited.
7
+
8
+ This software is licensed for internal use within eSimplicity only.
@@ -0,0 +1,9 @@
1
+ Metadata-Version: 2.4
2
+ Name: katalyst-forge
3
+ Version: 4.2.0
4
+ Summary: Katalyst Forge: the delivery-lifecycle bundle (node kinds, wings, agents, templates, schemas)
5
+ Author: eSimplicity
6
+ License: Proprietary
7
+ License-File: LICENSE
8
+ Requires-Python: >=3.12
9
+ Requires-Dist: katalyst-engine<5,>=4.1
@@ -0,0 +1,91 @@
1
+ [project]
2
+ name = "katalyst-forge"
3
+ version = "4.2.0"
4
+ description = "Katalyst Forge: the delivery-lifecycle bundle (node kinds, wings, agents, templates, schemas)"
5
+ license = { text = "Proprietary" }
6
+ requires-python = ">=3.12"
7
+ authors = [
8
+ { name = "eSimplicity" }
9
+ ]
10
+ dependencies = [
11
+ "katalyst-engine>=4.1,<5",
12
+ ]
13
+
14
+ [project.entry-points."katalyst_engine.bundles"]
15
+ forge = "katalyst_forge.bundle:ForgeBundle"
16
+
17
+ [build-system]
18
+ requires = ["hatchling"]
19
+ build-backend = "hatchling.build"
20
+
21
+ [tool.hatch.build.targets.wheel]
22
+ packages = ["src/katalyst_forge"]
23
+
24
+ [tool.hatch.build.targets.wheel.sources]
25
+ "src" = ""
26
+
27
+ [tool.hatch.build]
28
+ include = [
29
+ "src/katalyst_forge/**/*.py",
30
+ "src/katalyst_forge/**/*.yaml.j2",
31
+ "src/katalyst_forge/**/*.yaml",
32
+ "src/katalyst_forge/**/*.json",
33
+ "src/katalyst_forge/**/*.tf",
34
+ "src/katalyst_forge/**/*.hcl",
35
+ "src/katalyst_forge/**/*.md",
36
+ "src/katalyst_forge/**/*.just",
37
+ "src/katalyst_forge/**/*.sh",
38
+ "src/katalyst_forge/**/Justfile",
39
+ "src/katalyst_forge/**/Dockerfile",
40
+ "src/katalyst_forge/**/.dockerignore",
41
+ "src/katalyst_forge/**/.env.example",
42
+ "src/katalyst_forge/py.typed",
43
+ ]
44
+
45
+ # JSON Schemas ship as package data inside the wheel so consumers
46
+ # (katalyst-taxonomy's importlib.resources fallback) can resolve them
47
+ # without a repo checkout.
48
+ [tool.hatch.build.targets.wheel.force-include]
49
+ "schemas" = "katalyst_forge/schemas"
50
+
51
+ # The wheel is built from the sdist, so the sdist must carry schemas/
52
+ # for the wheel force-include to resolve.
53
+ [tool.hatch.build.targets.sdist]
54
+ include = [
55
+ "src/katalyst_forge/**",
56
+ "schemas/**",
57
+ "tests/**",
58
+ "CHANGELOG.md",
59
+ ]
60
+
61
+ [dependency-groups]
62
+ dev = [
63
+ "pytest>=8.2",
64
+ "ruff>=0.5",
65
+ "pyright>=1.1",
66
+ # test_wing_schemas.py validates the shipped JSON Schemas
67
+ "jsonschema>=4.22",
68
+ "referencing>=0.35",
69
+ ]
70
+
71
+ [tool.ruff]
72
+ target-version = "py312"
73
+ line-length = 100
74
+
75
+ [tool.ruff.lint]
76
+ select = ["E4", "E7", "E9", "F", "B", "I"]
77
+
78
+ [tool.ruff.format]
79
+ quote-style = "double"
80
+
81
+ [tool.pyright]
82
+ include = ["src", "tests"]
83
+ venvPath = "."
84
+ venv = ".venv"
85
+ pythonVersion = "3.12"
86
+ typeCheckingMode = "strict"
87
+
88
+ [tool.pytest.ini_options]
89
+ addopts = ["-ra"]
90
+ testpaths = ["tests"]
91
+ pythonpath = ["src"]
@@ -0,0 +1,117 @@
1
+ # Schema Changelog
2
+
3
+ All notable changes to the Katalyst Taxonomy schemas will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Changed
11
+ - **BREAKING: Renamed `user_story` node type to `user_need`** (Forge bundle schema_version → 3). The `kind`, directory (`user_stories/` → `user_needs/`), display labels, and Neo4j label changed; no backward-compatibility alias. Shipped in `katalyst-forge` 3.0.0; schema_version metadata corrected in 3.0.1.
12
+
13
+ ### Added
14
+ - `references` annotation on cross-reference attributes declaring target node types
15
+ - `rel_type` annotation for semantic relationship names (e.g., `TESTS_CAPABILITY`, `PROVIDES_CAPABILITY`)
16
+ - `cross_references` field in registry.json per node type
17
+ - Environment node type (`node_types/system/environment.yaml`) in system wing
18
+
19
+ ### Removed
20
+ - **`subsystem` node type** — Systems are now self-referential (a system can be a child of another system). The `subsystem` taxonomyNodeType has been removed from `nodes/technical.schema.json`, along with its if/then conditional block. All enum/scope lists across plugin manifests (`capabilities`, `design`, `practices`, `archetypes`) and agent schemas (`config.schema.json`, `agent.schema.json`) have been updated to remove `subsystem` references. Existing subsystem nodes should be migrated to nested systems.
21
+
22
+ ---
23
+
24
+ ## [0.16.0] - 2026-03-19
25
+
26
+ ### Added
27
+ - **Per-wing schema split** — `taxonomy-node.schema.json` is now a slim coordinator that delegates to four wing schemas via `$ref`:
28
+ - `nodes/common.schema.json` — shared field definitions (metadata, specBase)
29
+ - `nodes/technical.schema.json` — system, subsystem, stack, layer, library
30
+ - `nodes/portfolio.schema.json` — organization, program, project (with type-specific spec blocks and if/then guards)
31
+ - `nodes/organizational.schema.json` — team, team_member, user, practice_area, competency (with type-specific spec blocks and if/then guards)
32
+ - `nodes/design.schema.json` — 15 design types (DDD, capabilities, user research, delivery, architecture, BDD)
33
+ - **`$ref` resolution infrastructure** — new `schema_registry.py` module builds a `referencing.Registry` from all schema files, enabling cross-file `$ref` resolution in Python validation
34
+ - **Cross-wing spec guards** — each wing explicitly forbids type-specific spec blocks from other wings (e.g. `spec.organization` forbidden on technical wing nodes)
35
+ - `practice_area` and `competency` moved to the Organizational wing (alongside team, team_member, user)
36
+
37
+ ### Changed
38
+ - `taxonomy-node.schema.json` reduced from 576 lines to ~24 lines (coordinator only)
39
+ - `taxonomy_linter.py` and `plugin_linter.py` now pass a `referencing.Registry` to `Draft202012Validator`, fixing previously silent `$ref` resolution failures in plugin schemas
40
+ - `_shared.py` classifier updated to detect slug pattern errors regardless of oneOf index prefix in schema_path
41
+ - `pyproject.toml` — added explicit `referencing>=0.35` dependency
42
+
43
+ ### Fixed
44
+ - **Plugin `$ref` resolution** — 30+ cross-file `$ref`s in plugin schemas (pointing at `../common/plugin-requirement.schema.json` and `../common/environment-contract.schema.json`) are now actually resolved during Python-side validation. Previously they were silently skipped.
45
+
46
+ ---
47
+
48
+ ## [0.15.0] - 2026-03-17
49
+
50
+ ### Added
51
+ - **Design plugin** (`katalyst.taxonomy.plugins.design/v1alpha`) — 16 resource kinds across 6 domain areas:
52
+ - **Capabilities:** `Capability`, `CapabilityRelationship` — business/technical capability modeling with node bindings
53
+ - **DDD:** `BoundedContext`, `Aggregate`, `ValueObject`, `DomainEvent`, `GlossaryTerm` — Domain-Driven Design tactical patterns
54
+ - **User Research:** `UserType`, `UserStory`, `UseCase` — personas, stories, and interaction flows
55
+ - **Delivery Lifecycle:** `RoadItem`, `ChangeEntry` — roadmap governance with ADR/BDD/NFR compliance tracking
56
+ - **Architecture Decisions:** `Adr`, `Nfr` — Architecture Decision Records and Non-Functional Requirements
57
+ - **Executable Specs (BDD):** `Feature`, `Scenario` — BDD feature and scenario metadata with Given/When/Then steps
58
+ - **Practices plugin** (`katalyst.taxonomy.plugins.practices/v1alpha`) — 2 resource kinds:
59
+ - `PracticeArea` — team knowledge organized around 6 pillars (strategy, standards, frameworks, libraries, processes, measures)
60
+ - `Competency` — skills with 3 level definitions (basic, intermediate, advanced) and dependency DAG
61
+ - `schemas/plugins/design/manifest.json` — design plugin manifest with 16 registered schemas
62
+ - `schemas/plugins/practices/manifest.json` — practices plugin manifest with 2 registered schemas
63
+ - 14 new `taxonomyNodeType` values added to `taxonomy-node.schema.json` for design and practices kinds
64
+ - Plugin schema validation wired into `kata tax lint` for both plugins
65
+
66
+ ### Changed
67
+ - `schemas/plugins/registry.json` — added `design` and `practices` plugins; marked `capabilities` as deprecated
68
+ - `schemas/plugins/capabilities/manifest.json` — added `deprecated: true` and `replacedBy: "design"` fields
69
+
70
+ ---
71
+
72
+ ## [0.14.0] - 2026-03-14
73
+
74
+ ### Added
75
+ - `plugins/commitguard/commitguard-config.schema.json` — CommitGuardConfig schema for declaring supported hook tools (pre-commit, Husky, Lefthook) with install/generate commands
76
+ - `plugins/commitguard/commitguard-binding.schema.json` — CommitGuardBinding schema for mapping kata actions and additional hooks to a specific layer type per tool
77
+ - `hooks/hook-config.schema.json` — Schema for `.katalyst-hooks.yaml` user configuration (tool selection, kata_actions by layer type, additional_hooks)
78
+ - `plugins/extensions/extension.schema.json` — Extension plugin schema (existing, now with bundled seed content)
79
+
80
+ ---
81
+
82
+ ## [0.13.0] - 2026-03-09
83
+
84
+ ### Added
85
+ - Initial public schema hosting setup
86
+ - `index.json` manifest listing all available schemas
87
+ - Version and timestamp metadata in index
88
+ - `katalyst-lock.schema.json` - Lock file schema for tracking installed components and versions
89
+
90
+ ### Changed
91
+ - Replaced `org_unit` taxonomy node type with five new types: `organization`, `program`, `project`, `team`, `team_member`
92
+ - `PARENT_NODE_TYPES` now supports polymorphic parents (`project` can be child of `program` or `organization`; `team` can be child of `organization` or another `team`)
93
+ - Added conditional spec blocks: `spec.organization`, `spec.program`, `spec.project`, `spec.team`, `spec.teamMember`
94
+
95
+ ### Removed
96
+ - `org_unit` taxonomy node type (replaced by `team`)
97
+
98
+ ## [0.1.0] - 2025-01-11
99
+
100
+ ### Added
101
+ - Core schemas:
102
+ - `taxonomy-node.schema.json` - TaxonomyNode definition (system, subsystem, stack, layer, user, organization, program, project, team, team_member)
103
+ - `environment.schema.json` - Environment configuration schema
104
+
105
+ - Plugin schemas:
106
+ - `plugins/registry.json` - Plugin registry manifest
107
+ - `plugins/capabilities/` - Capability and CapabilityRelationship schemas
108
+ - `plugins/cicd/` - CI/CD workflow, job, and stage template schemas
109
+ - `plugins/layer-actions/` - Layer action catalog schemas
110
+ - `plugins/layer-types/` - Layer type definition schemas
111
+ - `plugins/tools/` - Tool catalog schemas
112
+
113
+ ### Schema Features
114
+ - JSON Schema Draft 2020-12 compliance
115
+ - Canonical `$id` URLs at `https://prima.dev/schemas/katalyst/`
116
+ - Support for organizational wing (user, organization, program, project, team, team_member) taxonomy nodes
117
+ - Plugin extension system via `spec.extensions` block
@@ -0,0 +1,300 @@
1
+ # Katalyst Taxonomy Schemas
2
+
3
+ This directory contains the **v1** JSON Schema definitions for Katalyst Taxonomy resources.
4
+
5
+ > **Note:** The v2 modeling engine generates per-kind JSON schemas from LinkML
6
+ > definitions. V2 generated schemas live in `taxonomy/src/katalyst_taxonomy/engine/generated/schemas/`
7
+ > and are produced by `kata tax build-types`. Both v1 and v2 schemas coexist
8
+ > during the transition period. See `plan.md` for migration status.
9
+
10
+ ## Overview
11
+
12
+ | Schema | Description |
13
+ |--------|-------------|
14
+ | [`taxonomy-node.schema.json`](taxonomy-node.schema.json) | Coordinator schema — delegates to per-wing schemas via `$ref` |
15
+ | [`nodes/common.schema.json`](nodes/common.schema.json) | Shared field definitions (metadata, spec base) |
16
+ | [`nodes/technical.schema.json`](nodes/technical.schema.json) | Technical wing: system, stack, layer, library |
17
+ | [`nodes/portfolio.schema.json`](nodes/portfolio.schema.json) | Portfolio wing: organization, program, project |
18
+ | [`nodes/organizational.schema.json`](nodes/organizational.schema.json) | Organizational wing: team, team\_member, practice\_area, competency |
19
+ | [`nodes/design.schema.json`](nodes/design.schema.json) | Design wing: DDD, capabilities, user research, delivery, architecture, BDD |
20
+ | [`environment.schema.json`](environment.schema.json) | Environment configuration |
21
+ | [`katalyst-lock.schema.json`](katalyst-lock.schema.json) | Lock file for tracking installed components |
22
+ | [`plugins/extensions/`](plugins/extensions/) | Extension plugin schema |
23
+ | [`hooks/hook-config.schema.json`](hooks/hook-config.schema.json) | `.katalyst-hooks.yaml` configuration |
24
+
25
+ ## Schema Version
26
+
27
+ - **V1 API Version**: `katalyst.taxonomy/v1alpha` (schemas in this directory)
28
+ - **V2 API Version**: `katalyst.taxonomy/v2alpha` (schemas in `taxonomy/src/katalyst_taxonomy/engine/generated/schemas/`)
29
+ - **JSON Schema Draft**: 2020-12
30
+ - **Canonical URL Base**: `https://prima.dev/schemas/katalyst/`
31
+
32
+ The parser accepts both v1alpha and v2alpha documents. V2 documents use
33
+ `kind` as the node type directly (e.g., `kind: system`) instead of the
34
+ v1 pattern of `kind: TaxonomyNode` + `taxonomyNodeType: system`.
35
+
36
+ ## Core Schemas
37
+
38
+ ### TaxonomyNode (`taxonomy-node.schema.json`)
39
+
40
+ The coordinator schema for all taxonomy nodes. It delegates to four per-wing schemas via `$ref`:
41
+
42
+ | Wing | File | Node Types |
43
+ |------|------|------------|
44
+ | **Technical** | `nodes/technical.schema.json` | system, stack, layer, library |
45
+ | **Portfolio** | `nodes/portfolio.schema.json` | organization, program, project |
46
+ | **Organizational** | `nodes/organizational.schema.json` | team, team\_member, practice\_area, competency |
47
+ | **Design** | `nodes/design.schema.json` | business\_domain\_model, capability, user\_type, user\_story, use\_case, work\_item, adr, nfr, change\_entry, specification, assertion |
48
+
49
+ Shared field definitions (metadata, spec base) live in `nodes/common.schema.json` and are referenced by each wing.
50
+
51
+ ```yaml
52
+ apiVersion: katalyst.taxonomy/v1alpha
53
+ kind: TaxonomyNode
54
+ metadata:
55
+ name: my-service # DNS-compatible name
56
+ labels: {} # Key-value labels
57
+ taxonomyNodeType: layer # system | stack | layer | organization | program | project | team | team_member
58
+ spec:
59
+ description: "My service"
60
+ owners:
61
+ - team@example.com
62
+ environments:
63
+ - dev
64
+ - prod
65
+ parents:
66
+ node: my-stack # Parent reference
67
+ dependsOn:
68
+ nodes:
69
+ - other-layer # Dependencies
70
+ extensions: {} # Plugin-specific data
71
+ ```
72
+
73
+ **Key Constraints:**
74
+ - `metadata.name` must match pattern `^[a-z0-9]([-_a-z0-9]{0,61}[a-z0-9])?$`
75
+ - `spec.environments` must have at least one entry
76
+ - `spec.parents.node` required for all types except `system` and `organization`
77
+
78
+ ### Environment (`environment.schema.json`)
79
+
80
+ Defines environment configurations with template replacements.
81
+
82
+ ```yaml
83
+ apiVersion: katalyst.taxonomy/v1alpha
84
+ kind: Environment
85
+ metadata:
86
+ name: prod
87
+ spec:
88
+ description: "Production environment"
89
+ templateReplacements:
90
+ ENVIRONMENT: PROD
91
+ REPLICA_COUNT: "3"
92
+ ```
93
+
94
+ ### Lock File (`katalyst-lock.schema.json`)
95
+
96
+ Tracks installed components and versions.
97
+
98
+ ```yaml
99
+ apiVersion: katalyst.taxonomy/v1alpha
100
+ kind: KatalystLock
101
+ metadata:
102
+ generatedAt: "2025-01-15T10:30:00Z"
103
+ generatedBy: "kata tax init"
104
+ katalystVersion: "1.0.0"
105
+ installed:
106
+ core:
107
+ version: "1.0.0"
108
+ schemaVersion: "v1alpha"
109
+ installedAt: "2025-01-15T10:30:00Z"
110
+ source: bundled
111
+ plugins:
112
+ layer_types:
113
+ version: "1.0.0"
114
+ installedAt: "2025-01-15T10:30:00Z"
115
+ source: bundled
116
+ canonical:
117
+ - app-docker
118
+ - k8s-kustomize
119
+ ```
120
+
121
+ ## Plugin Schemas
122
+
123
+ Plugin schemas extend the core taxonomy with additional resource types.
124
+
125
+ | Directory | Plugin | Description |
126
+ |-----------|--------|-------------|
127
+ | [`plugins/capabilities/`](plugins/capabilities/) | Capabilities | Service capability definitions *(deprecated -- use design)* |
128
+ | [`plugins/design/`](plugins/design/) | Design | System design: capabilities, DDD, user research, delivery, architecture, BDD (16 kinds) |
129
+ | [`plugins/practices/`](plugins/practices/) | Practices | Team knowledge with practice areas and competencies (2 kinds) |
130
+ | [`plugins/layer-actions/`](plugins/layer-actions/) | Actions | Executable actions bound to layer types |
131
+ | [`plugins/layer-types/`](plugins/layer-types/) | Layer Types | Scaffolding template definitions |
132
+ | [`plugins/cicd/`](plugins/cicd/) | CI/CD | Pipeline workflow and job templates |
133
+ | [`plugins/tools/`](plugins/tools/) | Tools | Tool catalog definitions |
134
+ | [`plugins/extensions/`](plugins/extensions/) | Extensions | Conditional layer type augmentation |
135
+ | [`hooks/`](hooks/) | Hooks | `.katalyst-hooks.yaml` user configuration |
136
+
137
+ ### Plugin Registry
138
+
139
+ The [`plugins/registry.json`](plugins/registry.json) file lists all available plugins:
140
+
141
+ ```json
142
+ {
143
+ "plugins": [
144
+ { "name": "capabilities", "manifest": "capabilities/manifest.json" },
145
+ { "name": "layer_actions", "manifest": "layer-actions/manifest.json" },
146
+ { "name": "layer_types", "manifest": "layer-types/manifest.json" },
147
+ { "name": "tools", "manifest": "tools/manifest.json" },
148
+ { "name": "cicd", "manifest": "cicd/manifest.json" }
149
+ ]
150
+ }
151
+ ```
152
+
153
+ ### Layer Types (`plugins/layer-types/`)
154
+
155
+ ```yaml
156
+ apiVersion: katalyst.taxonomy.plugins.layer_types/v1alpha
157
+ kind: LayerType
158
+ metadata:
159
+ name: app-docker
160
+ spec:
161
+ description: "Docker application scaffold"
162
+ template: templates/app-docker
163
+ defaultLayerDir: app
164
+ optionalPaths:
165
+ - README.md
166
+ - "*/Dockerfile"
167
+ ```
168
+
169
+ ### Layer Actions (`plugins/layer-actions/`)
170
+
171
+ ```yaml
172
+ apiVersion: katalyst.taxonomy.plugins.actions/v1alpha
173
+ kind: Action
174
+ metadata:
175
+ name: build-docker
176
+ labels:
177
+ layerType: app-docker
178
+ spec:
179
+ description: "Build Docker image"
180
+ type: shell
181
+ when: pre
182
+ run: docker build -t $IMAGE_NAME .
183
+ ```
184
+
185
+ ### Capabilities (`plugins/capabilities/`)
186
+
187
+ ```yaml
188
+ apiVersion: katalyst.taxonomy.plugins.capabilities/v1alpha
189
+ kind: Capability
190
+ metadata:
191
+ name: user-authentication
192
+ spec:
193
+ description: "OAuth2/OIDC authentication service"
194
+ categories:
195
+ - security
196
+ - identity
197
+ ```
198
+
199
+ ### CI/CD Templates (`plugins/cicd/`)
200
+
201
+ ```yaml
202
+ apiVersion: katalyst.taxonomy.plugins.cicd/v1alpha
203
+ kind: Stage
204
+ metadata:
205
+ name: ci
206
+ spec:
207
+ description: "Continuous Integration stage"
208
+ ```
209
+
210
+ ### Hook Config (`hooks/`)
211
+
212
+ Schema for the user-facing `.katalyst-hooks.yaml` file:
213
+
214
+ ```yaml
215
+ apiVersion: katalyst.taxonomy.hooks/v1alpha
216
+ kind: HookConfig
217
+ spec:
218
+ tool: pre-commit
219
+ kata_actions:
220
+ app-docker:
221
+ - action: lint
222
+ stage: pre-commit
223
+ - action: build
224
+ stage: pre-push
225
+ iac-terragrunt:
226
+ - action: validate
227
+ stage: pre-commit
228
+ additional_hooks:
229
+ - name: hadolint
230
+ stage: pre-commit
231
+ run: hadolint Dockerfile
232
+ files: Dockerfile
233
+ ```
234
+
235
+ ## Validation
236
+
237
+ ### Using the CLI
238
+
239
+ ```bash
240
+ # Validate all taxonomy documents
241
+ kata tax lint
242
+
243
+ # JSON output for CI
244
+ kata tax lint --json
245
+ ```
246
+
247
+ ### Using jsonschema (Python)
248
+
249
+ ```bash
250
+ pip install jsonschema
251
+
252
+ # Validate a single document
253
+ python -m jsonschema my-node.yaml -i schemas/taxonomy-node.schema.json
254
+ ```
255
+
256
+ ### IDE Integration
257
+
258
+ Most IDEs support JSON Schema validation for YAML files:
259
+
260
+ **VS Code** (with YAML extension):
261
+ ```yaml
262
+ # .vscode/settings.json
263
+ {
264
+ "yaml.schemas": {
265
+ "./schemas/taxonomy-node.schema.json": ["**/layer.yaml", "**/stack.yaml", "**/system.yaml"]
266
+ }
267
+ }
268
+ ```
269
+
270
+ **JetBrains IDEs**:
271
+ Configure in Settings > Languages & Frameworks > Schemas and DTDs > JSON Schema Mappings.
272
+
273
+ ## Versioning
274
+
275
+ Schemas follow semantic versioning within the `apiVersion` field:
276
+
277
+ - **Alpha** (`v1alpha`): Breaking changes possible
278
+ - **Beta** (`v1beta`): Mostly stable, minor changes possible
279
+ - **Stable** (`v1`): Backwards compatible
280
+
281
+ See [CHANGELOG.md](CHANGELOG.md) for version history.
282
+
283
+ ## Extending Schemas
284
+
285
+ To add custom fields to taxonomy nodes, use the `spec.extensions` block:
286
+
287
+ ```yaml
288
+ spec:
289
+ extensions:
290
+ myPlugin:
291
+ customField: value
292
+ ```
293
+
294
+ For creating new plugin schemas, see the [Plugin Architecture](../docs/extending/plugin-architecture.md) documentation.
295
+
296
+ ## Resources
297
+
298
+ - [Core Concepts](../docs/users/core-concepts.md) - Understanding the taxonomy model
299
+ - [Plugin Architecture](../docs/extending/plugin-architecture.md) - Creating plugins
300
+ - [Creating Layer Types](../docs/extending/creating-layer-types.md) - Layer type schemas