Repository navigation
Define and validate core capability management stages and system coverage #658
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
4ae076a
Define capability management stages and application coverage in the c…
vkgeorgia 7024fb2
Normalize capability specification end of file
vkgeorgia e52aa92
Qualify consumer status for the new capability map contracts
vkgeorgia 49e4045
Validate native capability stages, technical inventory and coverage s…
vkgeorgia 28c6cfc
Limit capability contract test workflow to read-only contents
vkgeorgia 162949d
Check both technical lifetime endpoints against the owning application
vkgeorgia File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| name: Capability core contract | ||
| on: | ||
| pull_request: | ||
| paths: | ||
| - 'tools/lint.py' | ||
| - 'tools/tests/test_capability_contract.py' | ||
| - 'notations/schemas/**' | ||
| - 'notations/vocabulary.yaml' | ||
| - 'notations/views/diagrams/05-capability-map.md' | ||
| - 'notations/views/diagrams/10-applications.md' | ||
| - 'notations/examples/capability-map/**' | ||
| - 'tests/fixtures/capability-management-cycle/**' | ||
| - '.github/workflows/capability-contract-test.yml' | ||
| workflow_dispatch: | ||
| permissions: | ||
| contents: read | ||
|
|
||
| jobs: | ||
| contract: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - uses: actions/setup-python@v5 | ||
| with: | ||
| python-version: '3.12' | ||
| - run: pip install pyyaml | ||
| - name: Check positive, negative and compatibility cases | ||
| run: python -m unittest discover -s tools/tests -p test_capability_contract.py | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,45 @@ | ||
| # Capability-map compatibility checks | ||
|
|
||
| This change corrects the core methodology. It adds optional native fields rather | ||
| than requiring a renderer-specific extension. No existing methodology version | ||
| pin changes until a release is prepared under CONTRACT §10. | ||
|
|
||
| | Surface | Checked on 2026-10-23 | Limit | | ||
| | --- | --- | --- | | ||
| | Published additive JSON Schema | Draft-07 AJV with date-format assertions: nine fixture fragments accepted; four malformed controls refused | Validate the selected definition, not the full organisation envelope | | ||
| | `tools/lint.py` | Positive/negative integration cases, legacy omission, published schema/vocabulary parity and existing capability examples | New fields, mapping references, local keys, dates and view selections; no history reconstruction or renderer geometry | | ||
| | CLI `@transitrix/cli@2.11.0`, file scope | Native capability-map example returns zero errors and six `NOTATION-SKIP-001` warnings for unavailable maturity sidecars | The result says the file remains unvalidated; it is not full compatibility proof | | ||
| | CLI negative control | The same file with `management_cycle_stage: ESG` and `view_config.display.depth: 99` still returns zero errors | Released CLI does not enforce these new core contracts; run the reference linter and do not silently treat this acceptance as validation | | ||
| | DSM / Studio / standalone renderer | Not adopted by this source change | Separate consumer implementation and release evidence required | | ||
|
|
||
| The reference validator preserves its existing single-file installation shape: | ||
|
|
||
| ```sh | ||
| python tools/lint.py | ||
| python -m unittest discover -s tools/tests -p test_capability_contract.py | ||
| python tools/tests/test_lint_encoding.py | ||
| ``` | ||
|
|
||
| The complete synthetic source model lives in | ||
| `tests/fixtures/capability-management-cycle/`. From that directory, run | ||
| `python ../../../tools/lint.py`. The view example is checked against that fixture | ||
| for drift. Past, present and future dates are accepted as selections; validating | ||
| a date does not establish that evidence exists for it. | ||
|
|
||
| The new validator rejects malformed **new** native fields. Existing source data | ||
| without them remains valid; it is not classified from names, H/V orientation, | ||
| parent stages, tags or maturity. Existing direct application coverage fields | ||
| retain their previous validation boundary; new technical mappings always check | ||
| canonical CAPABILITY targets before display filtering. Common free-form tags | ||
| are not narrowed to ESG, MDM and Support. | ||
|
|
||
| For proposals that placed these values under `extensions`, move | ||
| `extensions.management_cycle_stage` to the defined native field explicitly. | ||
| Reconcile conflicts before moving and retain the source history. Do not infer | ||
| stages from a legacy renderer's `layer`: canonical architectural `layer` remains | ||
| `business`. Native APPLICATION technical entry `key` projects to standalone | ||
| renderer `id`; source and adapter endpoint conventions require explicit date | ||
| conversion. This is a mapping boundary, not a new global technical TYPE. | ||
|
|
||
| CLI/DSM/Studio adoption, whole-source temporal assessment, source-to-renderer | ||
| projection and product release remain separate from this methodology PR. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
82 changes: 82 additions & 0 deletions
82
notations/examples/capability-map/management-cycle.capability-map.transitrix.yaml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,82 @@ | ||
| # Complete canonical sources: tests/fixtures/capability-management-cycle/ | ||
| notation: capability-map | ||
| spec_version: '0.5' | ||
| name: Management cycle and system coverage | ||
| capability_map: | ||
| id: CAPABILITY_MAP-CYCLE-1 | ||
| name: Management cycle and system coverage | ||
| assessment_date: '2026-10-23' | ||
| capabilities: | ||
| - id: CAPABILITY-V1 | ||
| name: Order Management | ||
| type: domain | ||
| valid_from: '2026-01-01' | ||
| valid_to: null | ||
| children: | ||
| - id: CAPABILITY-V1.1 | ||
| name: Order strategy | ||
| type: domain | ||
| valid_from: '2026-01-01' | ||
| valid_to: null | ||
| management_cycle_stage: Strategic | ||
| - id: CAPABILITY-V1.2 | ||
| name: Order improvement learning | ||
| type: domain | ||
| valid_from: '2026-01-01' | ||
| valid_to: null | ||
| management_cycle_stage: Learning | ||
| - id: CAPABILITY-V1.3 | ||
| name: Fulfilment planning | ||
| type: domain | ||
| valid_from: '2026-01-01' | ||
| valid_to: null | ||
| management_cycle_stage: Planning | ||
| children: | ||
| - id: CAPABILITY-V1.3.1 | ||
| name: Pick and pack | ||
| type: domain | ||
| valid_from: '2026-01-01' | ||
| valid_to: null | ||
| management_cycle_stage: Execution | ||
| - id: CAPABILITY-H1 | ||
| name: Order assurance | ||
| type: supporting | ||
| valid_from: '2026-01-01' | ||
| valid_to: null | ||
| management_cycle_stage: Assurance | ||
| tags: | ||
| - ESG | ||
| - MDM | ||
| - Support | ||
| view_config: | ||
| valid_at: null | ||
| scenario: null | ||
| management_cycle: | ||
| group: true | ||
| order: | ||
| - Strategic | ||
| - Learning | ||
| - Planning | ||
| - Execution | ||
| - Assurance | ||
| tags: | ||
| filter: | ||
| - ESG | ||
| - MDM | ||
| - Support | ||
| show: true | ||
| display: | ||
| depth: 3 | ||
| backlog: false | ||
| maturity: false | ||
| legend: true | ||
| systems: | ||
| labels: false | ||
| coverage: true | ||
| selected: | ||
| - APPLICATION-OMS-1 | ||
| - APPLICATION-GOVERNANCE-1 | ||
| highlight: null | ||
| shape: angled | ||
| rounded: false | ||
| overlap: true |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| # Capability-map additive schemas | ||
|
|
||
| `capability-map-contract.schema.json` is JSON Schema draft-07. Validate a | ||
| canonical CAPABILITY fragment against `#/$defs/capabilityFields`, a canonical | ||
| APPLICATION (or applications catalogue entry) against `#/$defs/applicationFields`, | ||
| and a capability-map `view_config` against `#/$defs/viewConfig`. | ||
|
|
||
| These are additive field contracts. Element admission, primitive lifecycle, | ||
| identity and the rest of each notation remain governed by their existing | ||
| specifications. Additional source element fields are accepted; unknown keys in | ||
| the newly defined view settings and technical inventory entries are rejected. | ||
| Schema `default` annotations describe render defaults and do not mutate sources. | ||
| Enable date format assertion in the schema consumer. | ||
|
|
||
| The single-file `tools/lint.py` carries an equivalent embedded contract for | ||
| onboarding compatibility. Regression tests require exact parity with this | ||
| schema and the controlled vocabulary. The linter additionally checks local-key | ||
| uniqueness, canonical mapping references, view references and explicit lifetime | ||
| bounds. No external schema library is needed to run the reference linter. | ||
|
|
||
| Use the complete synthetic model in `tests/fixtures/capability-management-cycle/` | ||
| for integration checks. See capability-map §16.4 for consumer compatibility. |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.