diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d0a3950..777f8b86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,71 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Version ## [Unreleased] +## [6.0.0] — Unreleased + +Bump category: **MAJOR**. Knowledge supersession now enforces errors on admitted +objects that the 5.1.0 linter accepted, including the published `KS-019` +warning-to-error change. Follow the [5.1 → 6.0 migration recipe](migrations/5.1-to-6.0/) +before upgrading. The manifest and ingest coverage presets both target 6.0.0; +package versions retain their independent versioning. + +### Added + +- Repository MCP pattern and enterprise setup guidance, including responsibilities + for catalogue hosts and consumers. (#587, #603) +- Catalogue-release and vocabulary CI examples, plus ingest guidance for + recognition, promotion, and review of returned bindings. (#592, #594) +- HTML glossary reports derived from admitted canon through the document-view + engine's `view` directive. (#593) +- Cold-read adoption review procedure and expanded knowledge freshness tests. (#588, #595) + +### Changed + +- **Breaking: knowledge supersession validation.** `KS-018` checks both pointers + for a unique admitted target; `KS-019` requires reciprocal admitted pointers; + `KS-020` rejects mismatches, self-links and cycles. A draft proposing + `supersedes` still receives only a missing-backlink warning. Linear chains + may grow beyond two objects. Re-curation preserves original assertions and + sources, admits a successor, and updates only predecessor lifecycle metadata. + The knowledge-store skill minimum version is 6.0.0. (#589, #597) +- **Extraction compatibility:** unsupported top-level extraction fields now fail + explicitly instead of disappearing; schema-undefined data belongs in + `extensions`. Corroboration preserves existing values while filling missing + fields and adding provenance. Review custom extraction producers before + upgrading. (#602) +- Validator coverage contract requires exhaustive file accounting, visible + unvalidated paths and warnings, and `NOTATION-SKIP-001` promotion under + `--strict`. Action scheduling advisories are documented at warning severity. + Downstream tool conformance must be checked separately. (#599) +- Compaction guidance requires demonstrated reachability and preservation; + base/open-tier stores defer removal. No compaction algorithm ships. (#598) +- Issued-document preservation and assembly-history guidance: each release records + its full environment, earlier assembly facts remain available, and RELEASE + subjects remain PRODUCT or APPLICATION. No new release-state schema is added. (#600) + +### Fixed + +- Candidate TYPE fields survive extraction and review without importing source + claims of admission authority. (#602) +- The first Goals-tree session and one-command L0 adoption instructions are + shorter and directly executable. (#590, #591) +- Plugin example dependency `js-yaml` updates from 4.3.1 to 4.3.2. (#596) +- Knowledge-store rule tables now match enforced supersession severity and scope. + +### Removed + +- Obsolete documentation audit report. (#586) + +### Upgrade compatibility + +Stores without supersession pointers need no knowledge-object rewrite. Repair +existing links through review; never auto-create a relationship or mutate an +admitted assertion to satisfy validation. Refresh the knowledge-store linter +and skill alongside the manifest, specs, and ingest CLI. `tools/lint.py` is +unchanged. Coverage preset element and relation lists are unchanged. Independent +notation revisions updated for this span are Action 2.3, Relations 0.4 and +Glossary 0.2; other notation edits only refresh example methodology pins. + ## [5.1.0] — 2026-09-04 Bump category: **MINOR** — highest change since the 5.0.0 pin is additive: the `documents` package, knowledge-object supersession fields and freshness warnings, the issue-tracker binding guide, and document-renderer paged-media / landscape / caption work. No migration recipe: a repository that never declares `packages: [documents]` and never uses the new knowledge-store fields validates as it did on 5.0.0. New `error` codes (`DOCS-001..007`, `KS-018`, `KS-020`) fire only when those optional surfaces are in use. diff --git a/integration/test_catalogue_workflows.py b/integration/test_catalogue_workflows.py index c2a2dbe0..7c3a0c60 100644 --- a/integration/test_catalogue_workflows.py +++ b/integration/test_catalogue_workflows.py @@ -69,7 +69,7 @@ def test_publication_rejects_mismatch_extra_fields_duplicates_and_lossy_yaml(sel def test_ci_reports_both_findings_without_editing_canon_and_fails_on_broken_pin(self): manifest = self.root / 'transitrix.yaml' - manifest.write_text('methodology_version: "5.1.0"\n') + manifest.write_text('methodology_version: "6.0.0"\n') result = self.run_step('ci-example.yaml', 'vocabulary', 'Report collisions and unbound matches') self.assertEqual((result.returncode, result.stdout), (0, '')) (self.root / 'vendor').mkdir() diff --git a/method/06-team-operations.md b/method/06-team-operations.md index dffd942f..2c328d4c 100644 --- a/method/06-team-operations.md +++ b/method/06-team-operations.md @@ -110,7 +110,7 @@ Deliberately **not** one-file-per-record like ADR/WI: the journal is a single fi --- ### FB-0002 type: notation-gap -methodology_version: "5.1.0" +methodology_version: "6.0.0" raised_by: modeler date: "2026-07-27" status: sent-upstream diff --git a/migrations/5.1-to-6.0/README.md b/migrations/5.1-to-6.0/README.md new file mode 100644 index 00000000..56b7399a --- /dev/null +++ b/migrations/5.1-to-6.0/README.md @@ -0,0 +1,101 @@ +# Migration recipe — methodology 5.1 → 6.0 + +Version 6.0.0 preserves knowledge supersession history and enforces reciprocal +links. The v5.1.0 rule table described `KS-019` as a warning; it is now an error +for admitted objects. `KS-018` and `KS-020` also enforce target resolution and +graph integrity. A store that passed the old linter can fail the new one. +Stores without supersession fields need no knowledge-object edits. + +| Old form or behaviour | 6.0.0 requirement | +|---|---| +| Admitted successor names a predecessor without a backlink | Both admitted objects name each other; `KS-019` is an error | +| Malformed, missing, ambiguous, or draft target | Each pointer is one non-empty string resolving to one admitted knowledge object (`KS-018`) | +| Mismatched reverse pointer, self-link, or cycle | Repair the reviewed linear history (`KS-020`); chains of any length are allowed | +| Draft proposes a successor | Missing predecessor backlink remains a `KS-019` warning; do not mutate the predecessor before approval | +| Extraction carries unsupported top-level fields | Put schema-undefined data under `extensions`; supported TYPE fields stay at their defined locations | +| A later extraction overwrites an existing candidate value | Corroboration preserves existing values, fills absent fields, and adds provenance | + +## Manual steps + +1. Preserve the current revision and review the upgrade in a separate change. + Run the **6.0.0** `tools/knowledge_store_lint.py` against the adopter root. + Resolve `KS-018`/`KS-020` findings from evidence; do not infer a relationship + from filenames or rewrite an assertion to make the linter pass. +2. For an already approved successor, add the missing reciprocal lifecycle + pointer and advance the predecessor's `timestamp` to the repair time. For example: + + ```diff + # knowledge/old.md (predecessor) + -timestamp: 2026-09-01T10:00:00Z + +timestamp: 2026-09-18T10:00:00Z + +superseded_by: /knowledge/new.md + # knowledge/new.md already contains: + supersedes: /knowledge/old.md + ``` + + Preserve the predecessor's body, `source`, `description`, `confidence`, + `created_at`, and any existing `supersedes`. Retain both objects, original + sources and hashes, index rows, and a dated admission/repair log. A draft + stays under review until the successor and backlink can be admitted together. + This requires curator review; the codemod deliberately cannot do it. +3. Review extraction producers against the supported fields in + [`emit-candidates.mjs`](../../packages/ingest-cli/src/emit-candidates.mjs). + For example, replace top-level `custom_score: 7` with + `extensions: {custom_score: 7}` when that field is not in the schema. + Re-extract previously dropped TYPE fields from preserved sources, then review + them; do not overwrite reviewed candidates merely to refresh confidence. +4. Review assembly history against + [`17-relations.md`](../../notations/elements/17-relations.md). + Each release records its complete `assembled_on` environment, including + unchanged systems. A successor does not end its predecessor's historical + links. Correct a `valid_to` set solely for succession only after reviewing + the original evidence. `RELEASE` subjects are `PRODUCT` or `APPLICATION`; + the former `TECHNOLOGY_SERVICE` wording did not override that restriction. +5. Set `methodology_version` in `transitrix.yaml` from `5.1.0` to `6.0.0`, + manually or with the codemod below. Reinstall the ingest CLI from the new + checkout, refresh adopted specs and skills, and refresh the knowledge-store + linter if vendored. The knowledge-store skill now has `min_version: "6.0.0"`; + update the corresponding skill-table entry. `tools/lint.py` itself did not + change in this release. Follow the four-artefact procedure in + [`RELEASING.md`](../../RELEASING.md#adopter-upgrade-procedure). +6. Run the post-check below, normal canon validation and `repo-check`. Review + warnings explicitly. Validator implementers must also check CONTRACT §18's + exhaustive coverage accounting and `NOTATION-SKIP-001` strict promotion; + the specification does not certify every downstream validator's support. + +Compaction remains a decision frame, with no deletion tool. Retain knowledge +objects until mechanical reachability and preservation can be demonstrated; +base/open-tier stores cannot establish the required canon binding and must +defer removal. See [the pattern](../../patterns/knowledge-store.md). + +## Commands and boundaries + +Use Node.js ≥20 for the pin-only, dependency-free codemod. The post-check also +requires `python3` and PyYAML, as does the reference knowledge-store linter. +Run these commands from the 6.0.0 methodology checkout: + +```bash +node migrations/5.1-to-6.0/codemod.mjs --dry-run +node migrations/5.1-to-6.0/codemod.mjs +node migrations/5.1-to-6.0/validate.mjs +``` + +The codemod changes only one unambiguous top-level manifest pin and preserves +other text, comments, quoting and line endings. Rerunning is a no-op. It exits +`1` for an unsupported/ambiguous pin, `2` for an I/O or invocation error, and +`0` on success; `--dry-run` writes nothing. Its success is not evidence that +manual compatibility work is complete. Upgrade older versions through their +intervening recipes first. For a knowledge-only store without a manifest, use +the manual steps and run `python3 tools/knowledge_store_lint.py ` +directly rather than adding a manifest solely for this wrapper. + +`validate.mjs` checks the target pin and invokes the same reference linter used +by the skill. It exits `0` with no errors, `1` for validation findings, or `2` +for invocation/I/O errors. It never applies the codemod. It cannot verify +historical preservation, human approval, extraction producers, or downstream +validator implementations; those remain the manual review above. + +`fixtures/before/` and `fixtures/after/` demonstrate the automated pin change +on an already valid reciprocal history. The test also removes a backlink to +prove the post-check rejects incomplete admission; it verifies dry-run, +idempotence, and byte preservation of the knowledge objects. diff --git a/migrations/5.1-to-6.0/codemod.mjs b/migrations/5.1-to-6.0/codemod.mjs new file mode 100644 index 00000000..897211c1 --- /dev/null +++ b/migrations/5.1-to-6.0/codemod.mjs @@ -0,0 +1,29 @@ +#!/usr/bin/env node +// Only the manifest pin is mechanical. Knowledge relationships require review. +import { readFileSync, writeFileSync } from 'node:fs'; +import { join, resolve } from 'node:path'; + +const args = process.argv.slice(2); +if (args.some(a => a.startsWith('--') && a !== '--dry-run') || args.filter(a => !a.startsWith('--')).length > 1) { + console.error('Usage: node codemod.mjs [--dry-run] [target-dir]'); + process.exit(2); +} +try { + const file = join(resolve(args.find(a => !a.startsWith('--')) ?? '.'), 'transitrix.yaml'); + const text = readFileSync(file, 'utf8'); + const lines = text.match(/^methodology_version:.*$/gm) ?? []; + const pin = /^methodology_version: (["']?)(5\.1\.0|6\.0\.0)\1([ \t]*(?:#.*)?)(\r?)$/; + if (lines.length !== 1 || !pin.test(lines[0])) { + console.error('Manual intervention: expected one top-level 5.1.0 or 6.0.0 methodology_version pin.'); + process.exit(1); + } + const next = text.replace(/^methodology_version:.*$/m, line => line.replace(pin, (_, quote, version, comment, cr) => `methodology_version: ${quote}6.0.0${quote}${comment}${cr}`)); + const changed = next !== text; + if (changed && !args.includes('--dry-run')) writeFileSync(file, next); + if (changed) console.log('transitrix.yaml: methodology_version 5.1.0 -> 6.0.0 (1 field)'); + console.log(`1 file scanned; ${changed ? 1 : 0} file${changed ? '' : 's'} ${args.includes('--dry-run') ? 'would change' : 'changed'}.`); + console.log('Pin update only: complete the manual compatibility review and run validate.mjs.'); +} catch (error) { + console.error(error.message); + process.exit(2); +} diff --git a/migrations/5.1-to-6.0/fixtures/after/_intake/processed/2026-07-01-cfo-interview.md b/migrations/5.1-to-6.0/fixtures/after/_intake/processed/2026-07-01-cfo-interview.md new file mode 100644 index 00000000..6c483031 --- /dev/null +++ b/migrations/5.1-to-6.0/fixtures/after/_intake/processed/2026-07-01-cfo-interview.md @@ -0,0 +1,16 @@ +--- +type: source-document +title: "CFO onboarding interview" +description: "First-hand account of the order-fulfilment pain points from the CFO." +source: "_intake/originals/2026-07-01-cfo-interview.md" +source_hash: "sha256:0000000000000000000000000000000000000000000000000000000000000001" +created_at: 2026-07-01 +confidence: observed +tags: [interview, fulfilment] +tracks: [okf] +status: processed +--- + +# Summary + +The CFO described manual hand-offs between warehouse and finance as the primary bottleneck. diff --git a/migrations/5.1-to-6.0/fixtures/after/knowledge/order-fulfilment-bottleneck.md b/migrations/5.1-to-6.0/fixtures/after/knowledge/order-fulfilment-bottleneck.md new file mode 100644 index 00000000..6a80ae52 --- /dev/null +++ b/migrations/5.1-to-6.0/fixtures/after/knowledge/order-fulfilment-bottleneck.md @@ -0,0 +1,19 @@ +--- +type: insight +title: "Order fulfilment bottleneck" +description: "Manual hand-offs between warehouse and finance slow order fulfilment." +source: _intake/processed/2026-07-01-cfo-interview.md +created_at: 2026-07-01 +confidence: inferred +tags: [fulfilment, operations] +superseded_by: /knowledge/warehouse-finance-handoff.md +timestamp: 2026-07-01T10:00:00Z +--- + +# Body + +Warehouse picks are complete before finance receives the invoice trigger, creating a multi-day lag. + +# Citations + +- CFO onboarding interview (`_intake/processed/2026-07-01-cfo-interview.md`) diff --git a/migrations/5.1-to-6.0/fixtures/after/knowledge/warehouse-finance-handoff.md b/migrations/5.1-to-6.0/fixtures/after/knowledge/warehouse-finance-handoff.md new file mode 100644 index 00000000..c1d029dc --- /dev/null +++ b/migrations/5.1-to-6.0/fixtures/after/knowledge/warehouse-finance-handoff.md @@ -0,0 +1,19 @@ +--- +type: finding +title: "Warehouse-finance handoff delay" +description: "Finance invoice trigger arrives days after warehouse completion." +source: _intake/processed/2026-07-01-cfo-interview.md +created_at: 2026-07-01 +confidence: observed +tags: [finance, warehouse] +supersedes: /knowledge/order-fulfilment-bottleneck.md +timestamp: 2026-07-01T10:30:00Z +--- + +# Body + +The hand-off relies on a spreadsheet emailed twice weekly; no system integration exists. + +# Citations + +- [Order fulfilment bottleneck](/knowledge/order-fulfilment-bottleneck.md) diff --git a/migrations/5.1-to-6.0/fixtures/after/transitrix.yaml b/migrations/5.1-to-6.0/fixtures/after/transitrix.yaml new file mode 100644 index 00000000..0c8f0d2d --- /dev/null +++ b/migrations/5.1-to-6.0/fixtures/after/transitrix.yaml @@ -0,0 +1,2 @@ +# Upgrade only the methodology pin. +methodology_version: "6.0.0" # reviewed version diff --git a/migrations/5.1-to-6.0/fixtures/before/_intake/processed/2026-07-01-cfo-interview.md b/migrations/5.1-to-6.0/fixtures/before/_intake/processed/2026-07-01-cfo-interview.md new file mode 100644 index 00000000..6c483031 --- /dev/null +++ b/migrations/5.1-to-6.0/fixtures/before/_intake/processed/2026-07-01-cfo-interview.md @@ -0,0 +1,16 @@ +--- +type: source-document +title: "CFO onboarding interview" +description: "First-hand account of the order-fulfilment pain points from the CFO." +source: "_intake/originals/2026-07-01-cfo-interview.md" +source_hash: "sha256:0000000000000000000000000000000000000000000000000000000000000001" +created_at: 2026-07-01 +confidence: observed +tags: [interview, fulfilment] +tracks: [okf] +status: processed +--- + +# Summary + +The CFO described manual hand-offs between warehouse and finance as the primary bottleneck. diff --git a/migrations/5.1-to-6.0/fixtures/before/knowledge/order-fulfilment-bottleneck.md b/migrations/5.1-to-6.0/fixtures/before/knowledge/order-fulfilment-bottleneck.md new file mode 100644 index 00000000..6a80ae52 --- /dev/null +++ b/migrations/5.1-to-6.0/fixtures/before/knowledge/order-fulfilment-bottleneck.md @@ -0,0 +1,19 @@ +--- +type: insight +title: "Order fulfilment bottleneck" +description: "Manual hand-offs between warehouse and finance slow order fulfilment." +source: _intake/processed/2026-07-01-cfo-interview.md +created_at: 2026-07-01 +confidence: inferred +tags: [fulfilment, operations] +superseded_by: /knowledge/warehouse-finance-handoff.md +timestamp: 2026-07-01T10:00:00Z +--- + +# Body + +Warehouse picks are complete before finance receives the invoice trigger, creating a multi-day lag. + +# Citations + +- CFO onboarding interview (`_intake/processed/2026-07-01-cfo-interview.md`) diff --git a/migrations/5.1-to-6.0/fixtures/before/knowledge/warehouse-finance-handoff.md b/migrations/5.1-to-6.0/fixtures/before/knowledge/warehouse-finance-handoff.md new file mode 100644 index 00000000..c1d029dc --- /dev/null +++ b/migrations/5.1-to-6.0/fixtures/before/knowledge/warehouse-finance-handoff.md @@ -0,0 +1,19 @@ +--- +type: finding +title: "Warehouse-finance handoff delay" +description: "Finance invoice trigger arrives days after warehouse completion." +source: _intake/processed/2026-07-01-cfo-interview.md +created_at: 2026-07-01 +confidence: observed +tags: [finance, warehouse] +supersedes: /knowledge/order-fulfilment-bottleneck.md +timestamp: 2026-07-01T10:30:00Z +--- + +# Body + +The hand-off relies on a spreadsheet emailed twice weekly; no system integration exists. + +# Citations + +- [Order fulfilment bottleneck](/knowledge/order-fulfilment-bottleneck.md) diff --git a/migrations/5.1-to-6.0/fixtures/before/transitrix.yaml b/migrations/5.1-to-6.0/fixtures/before/transitrix.yaml new file mode 100644 index 00000000..b2e851f6 --- /dev/null +++ b/migrations/5.1-to-6.0/fixtures/before/transitrix.yaml @@ -0,0 +1,2 @@ +# Upgrade only the methodology pin. +methodology_version: "5.1.0" # reviewed version diff --git a/migrations/5.1-to-6.0/migration.test.mjs b/migrations/5.1-to-6.0/migration.test.mjs new file mode 100644 index 00000000..dc85eb38 --- /dev/null +++ b/migrations/5.1-to-6.0/migration.test.mjs @@ -0,0 +1,59 @@ +import { test } from 'node:test'; +import assert from 'node:assert/strict'; +import { cpSync, mkdtempSync, readFileSync, writeFileSync, rmSync, readdirSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { spawnSync } from 'node:child_process'; + +const here = fileURLToPath(new URL('.', import.meta.url)); +function run(script, root, ...args) { + return spawnSync(process.execPath, [join(here, script), ...args, root], { encoding: 'utf8' }); +} +function snapshot(root) { + return Object.fromEntries(readdirSync(root, { recursive: true, withFileTypes: true }) + .filter(e => e.isFile()).map(e => { + const path = join(e.parentPath ?? e.path, e.name); + return [path.slice(root.length), readFileSync(path, 'utf8')]; + })); +} + +test('migration preserves knowledge bytes, previews, and is idempotent', () => { + const root = mkdtempSync(join(tmpdir(), 'migration-6-')); + try { + cpSync(join(here, 'fixtures/before'), root, { recursive: true }); + const before = snapshot(root); + assert.equal(run('validate.mjs', root).status, 1); + assert.equal(run('codemod.mjs', root, '--dry-run').status, 0); + assert.deepEqual(snapshot(root), before); + assert.equal(run('codemod.mjs', root).status, 0); + assert.deepEqual(snapshot(root), snapshot(join(here, 'fixtures/after'))); + const after = snapshot(root); + assert.equal(run('codemod.mjs', root).status, 0); + assert.deepEqual(snapshot(root), after); + const valid = run('validate.mjs', root); + assert.equal(valid.status, 0, valid.stdout + valid.stderr); + const predecessor = join(root, 'knowledge/order-fulfilment-bottleneck.md'); + writeFileSync(predecessor, readFileSync(predecessor, 'utf8').replace(/^superseded_by:.*\n/m, '')); + const invalid = run('validate.mjs', root); + assert.equal(invalid.status, 1); + assert.match(invalid.stdout, /KS-019/); + } finally { rmSync(root, { recursive: true, force: true }); } +}); + +test('unsupported and duplicate pins are refused without mutation; CRLF is preserved', () => { + const root = mkdtempSync(join(tmpdir(), 'migration-6-')); + try { + const file = join(root, 'transitrix.yaml'); + for (const text of ['methodology_version: "5.0.0"\n', 'methodology_version: "5.1.0"\nmethodology_version: "5.1.0"\n']) { + writeFileSync(file, text); + assert.equal(run('codemod.mjs', root).status, 1); + assert.equal(readFileSync(file, 'utf8'), text); + } + const text = "# preserve\r\nmethodology_version: '5.1.0' # pin\r\nzones: [canon]\r\n"; + writeFileSync(file, text); + assert.equal(run('codemod.mjs', root).status, 0); + assert.equal(readFileSync(file, 'utf8'), text.replace('5.1.0', '6.0.0')); + assert.equal(run('codemod.mjs', join(root, 'missing')).status, 2); + } finally { rmSync(root, { recursive: true, force: true }); } +}); diff --git a/migrations/5.1-to-6.0/validate.mjs b/migrations/5.1-to-6.0/validate.mjs new file mode 100644 index 00000000..8ebbfc9e --- /dev/null +++ b/migrations/5.1-to-6.0/validate.mjs @@ -0,0 +1,27 @@ +#!/usr/bin/env node +// Reuse the release's reference validator so severity and graph rules cannot drift. +import { readFileSync, statSync } from 'node:fs'; +import { join, resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { spawnSync } from 'node:child_process'; + +try { + const args = process.argv.slice(2); + if (args.length > 1 || args.some(a => a.startsWith('--'))) throw new Error('Usage: node validate.mjs [target-dir]'); + const root = resolve(args[0] ?? '.'); + if (!statSync(root).isDirectory()) throw new Error('Target must be a directory'); + const text = readFileSync(join(root, 'transitrix.yaml'), 'utf8'); + const pins = text.match(/^methodology_version:.*$/gm) ?? []; + if (pins.length !== 1 || !/^methodology_version: (["']?)6\.0\.0\1[ \t]*(?:#.*)?\r?$/.test(pins[0])) { + console.error('transitrix.yaml: expected methodology_version 6.0.0'); + process.exit(1); + } + const linter = fileURLToPath(new URL('../../tools/knowledge_store_lint.py', import.meta.url)); + const result = spawnSync('python3', [linter, root], { stdio: 'inherit' }); + if (result.error || result.signal) throw result.error ?? new Error(`Validator stopped: ${result.signal}`); + if (result.status !== 0) process.exit(result.status === 1 ? 1 : 2); + console.log('PASS: release pin and knowledge-store checks. Review historical preservation, extraction inputs, and external validator coverage separately (README.md).'); +} catch (error) { + console.error(error.message); + process.exit(2); +} diff --git a/notations/CONTRACT.md b/notations/CONTRACT.md index 749e2799..a54e040f 100644 --- a/notations/CONTRACT.md +++ b/notations/CONTRACT.md @@ -946,7 +946,7 @@ Structural layout of a view document: ```yaml notation: dgca # §1 — required header spec_version: "0.1" # §1 — optional header -methodology_version: "5.1.0" # manifest-pinned methodology version +methodology_version: "6.0.0" # manifest-pinned methodology version name: "Retail strategy chain" # §1.1 — required document name view: # view identity block — id only; name lives at root per §1.1 @@ -1045,7 +1045,7 @@ views/ ```yaml view_id: DGCA-RETAIL-1 # canonical ID of the view being captured generated_at: "2026-06-20T14:30:00Z" # ISO-8601 UTC timestamp — matches the file name -methodology_version: "5.1.0" # methodology version in use at generation time +methodology_version: "6.0.0" # methodology version in use at generation time # …notation-specific element list follows (format defined per notation spec)… ``` diff --git a/notations/COVERAGE_PROFILES.md b/notations/COVERAGE_PROFILES.md index 86eba113..0906ea11 100644 --- a/notations/COVERAGE_PROFILES.md +++ b/notations/COVERAGE_PROFILES.md @@ -24,7 +24,7 @@ A profile is declared at the repository root in `transitrix.yaml` under the `cov ```yaml transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" notations: [dgca, goals, activities, capability-map] zones: [canon, field] coverage_profile: core # short form — name a shipped preset @@ -250,7 +250,7 @@ The shipped presets (`minimal`, `core`, `full`) are *re-defined per methodology ```yaml # transitrix.yaml transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" notations: [dgca, goals, activities, capability-map, applications] zones: [canon, field] # coverage_profile omitted → defaults to `full` diff --git a/notations/CURRENT_VERSION.yaml b/notations/CURRENT_VERSION.yaml index e7e7507f..b5ac540b 100644 --- a/notations/CURRENT_VERSION.yaml +++ b/notations/CURRENT_VERSION.yaml @@ -5,4 +5,4 @@ # placeholder allowlist in scripts/check-notations.mjs. Enforced by that # script's V1 check. See notations/CONTRACT.md §10 for the versioning and # compatibility policy this pin follows. -methodology_version: "5.1.0" +methodology_version: "6.0.0" diff --git a/notations/MANIFEST.md b/notations/MANIFEST.md index eeceb295..9e4e0ade 100644 --- a/notations/MANIFEST.md +++ b/notations/MANIFEST.md @@ -29,7 +29,7 @@ A worked example lives at `transitrix.yaml` in the [acme-corp reference repo](ht ```yaml transitrix: 1 # manifest schema version (integer) -methodology_version: "5.1.0" # the methodology release this repo conforms to +methodology_version: "6.0.0" # the methodology release this repo conforms to notations: [dgca, goals, action, capability-map, codex] zones: [canon, field, codex] coverage_profile: full # optional — see COVERAGE_PROFILES.md diff --git a/notations/PACKAGES.md b/notations/PACKAGES.md index 3d6cd0c4..6a94cb6d 100644 --- a/notations/PACKAGES.md +++ b/notations/PACKAGES.md @@ -20,7 +20,7 @@ A package is declared at the repository root in `transitrix.yaml` under the `pac ```yaml transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" notations: [dgca, goals, activities, capability-map] zones: [canon, field] coverage_profile: core diff --git a/notations/elements/17-relations.md b/notations/elements/17-relations.md index de9d56aa..ce7ada54 100644 --- a/notations/elements/17-relations.md +++ b/notations/elements/17-relations.md @@ -1,8 +1,8 @@ --- title: "Relations — first-class time-aware links" -version: "0.3" +version: "0.4" author: "Valerii Korobeinikov" -last_updated: "2026-08-25" +last_updated: "2026-09-18" status: "draft" --- diff --git a/notations/examples/action/root-action-scope/scoped.action.transitrix.yaml b/notations/examples/action/root-action-scope/scoped.action.transitrix.yaml index e31738a0..963e2b73 100644 --- a/notations/examples/action/root-action-scope/scoped.action.transitrix.yaml +++ b/notations/examples/action/root-action-scope/scoped.action.transitrix.yaml @@ -1,6 +1,6 @@ notation: action spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" id: ACTION_SCHED-LAUNCH-1 name: "Launch — scoped by root_action" generated_at: "2026-08-25" diff --git a/notations/examples/action/root-action-scope/transitrix.yaml b/notations/examples/action/root-action-scope/transitrix.yaml index 4989df8b..50b15a70 100644 --- a/notations/examples/action/root-action-scope/transitrix.yaml +++ b/notations/examples/action/root-action-scope/transitrix.yaml @@ -2,7 +2,7 @@ # Its own catalogue root (MANIFEST.md §4): declares the boundary the # uniqueness scope in IDS_AND_REFERENCES.md §4 resolves against. transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" notations: [action] zones: [canon] coverage_profile: core diff --git a/notations/examples/action/root-action-scope/unscoped.action.transitrix.yaml b/notations/examples/action/root-action-scope/unscoped.action.transitrix.yaml index e47ee10d..e69f6555 100644 --- a/notations/examples/action/root-action-scope/unscoped.action.transitrix.yaml +++ b/notations/examples/action/root-action-scope/unscoped.action.transitrix.yaml @@ -1,6 +1,6 @@ notation: action spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" id: ACTION_SCHED-LAUNCH-UNSCOPED-1 name: "Launch — no root_action" generated_at: "2026-08-25" diff --git a/notations/examples/codex/standard/transitrix.yaml b/notations/examples/codex/standard/transitrix.yaml index 45a8830d..5af1618c 100644 --- a/notations/examples/codex/standard/transitrix.yaml +++ b/notations/examples/codex/standard/transitrix.yaml @@ -2,7 +2,7 @@ # Its own catalogue root (MANIFEST.md §4): declares the boundary the # uniqueness scope in IDS_AND_REFERENCES.md §4 resolves against. transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" notations: [codex] zones: [codex] coverage_profile: core diff --git a/notations/examples/compliance-impact/README.md b/notations/examples/compliance-impact/README.md index 7edba436..9cdd8c56 100644 --- a/notations/examples/compliance-impact/README.md +++ b/notations/examples/compliance-impact/README.md @@ -25,7 +25,7 @@ A compliance-impact view file carries the shared envelope (`notation:`, `spec_ve ```yaml notation: compliance-impact spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: COMPLIANCE_IMPACT--1 diff --git a/notations/examples/compliance-impact/retail-gdpr.compliance-impact.transitrix.yaml b/notations/examples/compliance-impact/retail-gdpr.compliance-impact.transitrix.yaml index c3c8eb66..7e6ae604 100644 --- a/notations/examples/compliance-impact/retail-gdpr.compliance-impact.transitrix.yaml +++ b/notations/examples/compliance-impact/retail-gdpr.compliance-impact.transitrix.yaml @@ -1,6 +1,6 @@ notation: compliance-impact spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" name: "Retail product — GDPR obligations" view: diff --git a/notations/examples/dgca/action-scoped-delivery-2026.dgca.transitrix.yaml b/notations/examples/dgca/action-scoped-delivery-2026.dgca.transitrix.yaml index 66649c58..4ee80122 100644 --- a/notations/examples/dgca/action-scoped-delivery-2026.dgca.transitrix.yaml +++ b/notations/examples/dgca/action-scoped-delivery-2026.dgca.transitrix.yaml @@ -1,6 +1,6 @@ notation: dgca spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" id: DGCA-DELIVERY-1 name: "Delivery chain 2026 — action-scoped" diff --git a/notations/examples/dgca/constraint-driven.dgca.transitrix.yaml b/notations/examples/dgca/constraint-driven.dgca.transitrix.yaml index bd3bd0d7..4f0a6a16 100644 --- a/notations/examples/dgca/constraint-driven.dgca.transitrix.yaml +++ b/notations/examples/dgca/constraint-driven.dgca.transitrix.yaml @@ -1,6 +1,6 @@ notation: dgca spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" id: DGCA-DATA-RESIDENCY-1 name: "EU data-residency DGCA chain" diff --git a/notations/examples/dgca/goal-link-duplicate-warning.dgca.transitrix.yaml b/notations/examples/dgca/goal-link-duplicate-warning.dgca.transitrix.yaml index 40a79629..d850ed6c 100644 --- a/notations/examples/dgca/goal-link-duplicate-warning.dgca.transitrix.yaml +++ b/notations/examples/dgca/goal-link-duplicate-warning.dgca.transitrix.yaml @@ -1,6 +1,6 @@ notation: dgca spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" id: DGCA-DUPLICATE-GOAL-LINK-1 name: "Goal link duplication — DGCA-021 demonstration" diff --git a/notations/examples/dgca/goal-scoped-projection-omitted-goals.dgca.transitrix.yaml b/notations/examples/dgca/goal-scoped-projection-omitted-goals.dgca.transitrix.yaml index 43d3079a..424dce6b 100644 --- a/notations/examples/dgca/goal-scoped-projection-omitted-goals.dgca.transitrix.yaml +++ b/notations/examples/dgca/goal-scoped-projection-omitted-goals.dgca.transitrix.yaml @@ -1,6 +1,6 @@ notation: dgca spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" id: DGCA-PROJECTION-OMIT-1 name: "Goal-scoped projection with omitted goals" description: >- diff --git a/notations/examples/dgca/startup.dgca.transitrix.yaml b/notations/examples/dgca/startup.dgca.transitrix.yaml index 69485afa..655f3008 100644 --- a/notations/examples/dgca/startup.dgca.transitrix.yaml +++ b/notations/examples/dgca/startup.dgca.transitrix.yaml @@ -1,6 +1,6 @@ notation: dgca spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" id: DGCA-STARTUP-1 name: "Product launch — strategy chain" diff --git a/notations/examples/dgca/strategy-2026-dga.dgca.transitrix.yaml b/notations/examples/dgca/strategy-2026-dga.dgca.transitrix.yaml index 3d4c17a4..95642bf2 100644 --- a/notations/examples/dgca/strategy-2026-dga.dgca.transitrix.yaml +++ b/notations/examples/dgca/strategy-2026-dga.dgca.transitrix.yaml @@ -1,6 +1,6 @@ notation: dgca spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" id: DGCA-STRATEGY-2026-DGA name: "Strategy 2026 — DGA view" diff --git a/notations/examples/dgca/strategy-2026.dgca.transitrix.yaml b/notations/examples/dgca/strategy-2026.dgca.transitrix.yaml index c7234168..c33be88f 100644 --- a/notations/examples/dgca/strategy-2026.dgca.transitrix.yaml +++ b/notations/examples/dgca/strategy-2026.dgca.transitrix.yaml @@ -1,6 +1,6 @@ notation: dgca spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" id: DGCA-STRAT-1 name: "Strategy 2026 — DGCA chain" diff --git a/notations/examples/integration-map/README.md b/notations/examples/integration-map/README.md index bcd155b3..cd123ae5 100644 --- a/notations/examples/integration-map/README.md +++ b/notations/examples/integration-map/README.md @@ -26,7 +26,7 @@ An integration-map view file carries the shared envelope (`notation:`, `spec_ver ```yaml notation: integration-map spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: INTEGRATION_MAP--1 diff --git a/notations/examples/integration-map/enterprise.integration-map.transitrix.yaml b/notations/examples/integration-map/enterprise.integration-map.transitrix.yaml index 7d4fd2a7..66524053 100644 --- a/notations/examples/integration-map/enterprise.integration-map.transitrix.yaml +++ b/notations/examples/integration-map/enterprise.integration-map.transitrix.yaml @@ -1,6 +1,6 @@ notation: integration-map spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" name: "Enterprise integration landscape" view: diff --git a/notations/examples/integration-map/rule-violations/attempted-inline-edge.integration-map.transitrix.yaml b/notations/examples/integration-map/rule-violations/attempted-inline-edge.integration-map.transitrix.yaml index df06adc4..11a56983 100644 --- a/notations/examples/integration-map/rule-violations/attempted-inline-edge.integration-map.transitrix.yaml +++ b/notations/examples/integration-map/rule-violations/attempted-inline-edge.integration-map.transitrix.yaml @@ -1,6 +1,6 @@ notation: integration-map spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" name: "Attempted inline edge — invalid on purpose" view: diff --git a/notations/examples/mrd/README.md b/notations/examples/mrd/README.md index 9874e1c2..9303de76 100644 --- a/notations/examples/mrd/README.md +++ b/notations/examples/mrd/README.md @@ -34,7 +34,7 @@ An MRD view file carries the shared envelope (`notation:`, `spec_version:`, `met ```yaml notation: mrd spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: MRD--1 diff --git a/notations/examples/mrd/incident-status.mrd.transitrix.yaml b/notations/examples/mrd/incident-status.mrd.transitrix.yaml index e71c210e..55751341 100644 --- a/notations/examples/mrd/incident-status.mrd.transitrix.yaml +++ b/notations/examples/mrd/incident-status.mrd.transitrix.yaml @@ -2,7 +2,7 @@ notation: mrd spec_version: "0.1" name: "Incident status communication — MRD" generated_at: "2026-08-04" -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: MRD-INCIDENT-STATUS-1 diff --git a/notations/examples/mrd/transitrix.yaml b/notations/examples/mrd/transitrix.yaml index 6f20b1d7..c326663e 100644 --- a/notations/examples/mrd/transitrix.yaml +++ b/notations/examples/mrd/transitrix.yaml @@ -2,7 +2,7 @@ # Its own catalogue root (MANIFEST.md §4): declares the boundary the # uniqueness scope in IDS_AND_REFERENCES.md §4 resolves against. transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" notations: [mrd, requirement, stakeholder, actor] zones: [canon] coverage_profile: core diff --git a/notations/examples/packages/reqif/transitrix.yaml b/notations/examples/packages/reqif/transitrix.yaml index d9694e21..e5d64b76 100644 --- a/notations/examples/packages/reqif/transitrix.yaml +++ b/notations/examples/packages/reqif/transitrix.yaml @@ -3,7 +3,7 @@ # permitted cross-reference (Transitrix.CanonRef, reqif.md §3) something real # to cite, plus the reqif/ package folder itself. transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" notations: [requirement] zones: [canon] coverage_profile: core diff --git a/notations/examples/relations/depends-on/transitrix.yaml b/notations/examples/relations/depends-on/transitrix.yaml index d3ee9722..6aec0f92 100644 --- a/notations/examples/relations/depends-on/transitrix.yaml +++ b/notations/examples/relations/depends-on/transitrix.yaml @@ -2,7 +2,7 @@ # Its own catalogue root (MANIFEST.md §4): declares the boundary the # uniqueness scope in IDS_AND_REFERENCES.md §4 resolves against. transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" notations: [relation, requirement] zones: [canon] coverage_profile: core diff --git a/notations/examples/relations/process-parent/transitrix.yaml b/notations/examples/relations/process-parent/transitrix.yaml index acfb9ec5..5bee0b49 100644 --- a/notations/examples/relations/process-parent/transitrix.yaml +++ b/notations/examples/relations/process-parent/transitrix.yaml @@ -2,7 +2,7 @@ # Its own catalogue root (MANIFEST.md §4): declares the boundary the # uniqueness scope in IDS_AND_REFERENCES.md §4 resolves against. transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" notations: [relation, process-blueprint] zones: [canon] coverage_profile: core diff --git a/notations/examples/relations/required-for/transitrix.yaml b/notations/examples/relations/required-for/transitrix.yaml index eb328b8a..827fb8d8 100644 --- a/notations/examples/relations/required-for/transitrix.yaml +++ b/notations/examples/relations/required-for/transitrix.yaml @@ -2,7 +2,7 @@ # Its own catalogue root (MANIFEST.md §4): declares the boundary the # uniqueness scope in IDS_AND_REFERENCES.md §4 resolves against. transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" notations: [relation, requirement] zones: [canon] coverage_profile: core diff --git a/notations/examples/release-qualifiers-rule-violations/transitrix.yaml b/notations/examples/release-qualifiers-rule-violations/transitrix.yaml index 9718367a..ff6ea6d7 100644 --- a/notations/examples/release-qualifiers-rule-violations/transitrix.yaml +++ b/notations/examples/release-qualifiers-rule-violations/transitrix.yaml @@ -4,7 +4,7 @@ # manifest may enclose another, which is also why this fixture moved out # from under its parent folder. transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" notations: [requirement, assertion, verification] zones: [canon] coverage_profile: core diff --git a/notations/examples/release-qualifiers/transitrix.yaml b/notations/examples/release-qualifiers/transitrix.yaml index b4adad59..76895557 100644 --- a/notations/examples/release-qualifiers/transitrix.yaml +++ b/notations/examples/release-qualifiers/transitrix.yaml @@ -3,7 +3,7 @@ # notations/examples/release-qualifiers-rule-violations/ rather than its # parent — no manifest may enclose another. transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" notations: [requirement, assertion, verification] zones: [canon] coverage_profile: core diff --git a/notations/examples/requirement-parent/transitrix.yaml b/notations/examples/requirement-parent/transitrix.yaml index c56444a0..fa8915b3 100644 --- a/notations/examples/requirement-parent/transitrix.yaml +++ b/notations/examples/requirement-parent/transitrix.yaml @@ -2,7 +2,7 @@ # Its own catalogue root (MANIFEST.md §4): declares the boundary the # uniqueness scope in IDS_AND_REFERENCES.md §4 resolves against. transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" notations: [requirement] zones: [canon] coverage_profile: core diff --git a/notations/examples/scenarios/README.md b/notations/examples/scenarios/README.md index 86af446a..f2aba3f1 100644 --- a/notations/examples/scenarios/README.md +++ b/notations/examples/scenarios/README.md @@ -26,7 +26,7 @@ A post-reclassification scenarios view file carries no canonical content. It dec ```yaml notation: scenarios spec_version: "0.3" -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: SCENARIOS-2027-CUT-1 diff --git a/notations/examples/sdd/README.md b/notations/examples/sdd/README.md index 409bd57f..da7aef88 100644 --- a/notations/examples/sdd/README.md +++ b/notations/examples/sdd/README.md @@ -35,7 +35,7 @@ An SDD view file carries the shared envelope (`notation:`, `spec_version:`, `met ```yaml notation: sdd spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: SDD--1 diff --git a/notations/examples/sdd/data-export.sdd.transitrix.yaml b/notations/examples/sdd/data-export.sdd.transitrix.yaml index c697453c..ba30aa58 100644 --- a/notations/examples/sdd/data-export.sdd.transitrix.yaml +++ b/notations/examples/sdd/data-export.sdd.transitrix.yaml @@ -2,7 +2,7 @@ notation: sdd spec_version: "0.1" name: "Data export capability — SDD" generated_at: "2026-08-04" -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: SDD-DATA-EXPORT-1 diff --git a/notations/examples/sdd/transitrix.yaml b/notations/examples/sdd/transitrix.yaml index 604bf677..4aa130e5 100644 --- a/notations/examples/sdd/transitrix.yaml +++ b/notations/examples/sdd/transitrix.yaml @@ -2,7 +2,7 @@ # Its own catalogue root (MANIFEST.md §4): declares the boundary the # uniqueness scope in IDS_AND_REFERENCES.md §4 resolves against. transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" notations: [sdd, requirement, assertion] zones: [canon] coverage_profile: core diff --git a/notations/examples/srs/README.md b/notations/examples/srs/README.md index 843ba46a..8d8b14b9 100644 --- a/notations/examples/srs/README.md +++ b/notations/examples/srs/README.md @@ -33,7 +33,7 @@ An SRS view file carries the shared envelope (`notation:`, `spec_version:`, `met ```yaml notation: srs spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: SRS--1 diff --git a/notations/examples/srs/backup-power.srs.transitrix.yaml b/notations/examples/srs/backup-power.srs.transitrix.yaml index 6ac4a318..c0c68a24 100644 --- a/notations/examples/srs/backup-power.srs.transitrix.yaml +++ b/notations/examples/srs/backup-power.srs.transitrix.yaml @@ -2,7 +2,7 @@ notation: srs spec_version: "0.1" name: "Backup-power controller — SRS" generated_at: "2026-08-04" -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: SRS-BACKUP-POWER-1 diff --git a/notations/examples/srs/transitrix.yaml b/notations/examples/srs/transitrix.yaml index bf998124..6b038810 100644 --- a/notations/examples/srs/transitrix.yaml +++ b/notations/examples/srs/transitrix.yaml @@ -2,7 +2,7 @@ # Its own catalogue root (MANIFEST.md §4): declares the boundary the # uniqueness scope in IDS_AND_REFERENCES.md §4 resolves against. transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" notations: [srs, requirement] zones: [canon] coverage_profile: core diff --git a/notations/examples/validation/transitrix.yaml b/notations/examples/validation/transitrix.yaml index 50f229eb..9f364180 100644 --- a/notations/examples/validation/transitrix.yaml +++ b/notations/examples/validation/transitrix.yaml @@ -2,7 +2,7 @@ # Its own catalogue root (MANIFEST.md §4): declares the boundary the # uniqueness scope in IDS_AND_REFERENCES.md §4 resolves against. transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" notations: [validation, requirement, stakeholder, actor] zones: [canon] coverage_profile: core diff --git a/notations/examples/verification-reverse-trace-gaps/transitrix.yaml b/notations/examples/verification-reverse-trace-gaps/transitrix.yaml index 7cfcd904..57a2c57d 100644 --- a/notations/examples/verification-reverse-trace-gaps/transitrix.yaml +++ b/notations/examples/verification-reverse-trace-gaps/transitrix.yaml @@ -4,7 +4,7 @@ # manifest may enclose another, which is also why this fixture moved out # from under its parent folder. transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" notations: [verification, requirement] zones: [canon] coverage_profile: core diff --git a/notations/examples/verification/transitrix.yaml b/notations/examples/verification/transitrix.yaml index 65eeb18c..8fefc7d0 100644 --- a/notations/examples/verification/transitrix.yaml +++ b/notations/examples/verification/transitrix.yaml @@ -3,7 +3,7 @@ # notations/examples/verification-reverse-trace-gaps/ rather than its # parent — no manifest may enclose another. transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" notations: [verification, requirement] zones: [canon] coverage_profile: core diff --git a/notations/packages/documents.md b/notations/packages/documents.md index b2fadcd3..834f9dbf 100644 --- a/notations/packages/documents.md +++ b/notations/packages/documents.md @@ -23,7 +23,7 @@ This is a package, not a core notation: nothing here changes `IDS_AND_REFERENCES ```yaml transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" packages: [documents] ``` @@ -508,7 +508,7 @@ document_provenance("doc-srs-v2-1") recipe_version: "1.0", baseline_commit: "a1b2c3d4…", baseline_tag: "release-2026-q3", - methodology_version: "5.1.0", + methodology_version: "6.0.0", elements_cited: ["CAPABILITY-V2", "REQUIREMENT-sched-auth-1"], run_record: { … } } diff --git a/notations/packages/reqif.md b/notations/packages/reqif.md index 29ce97ab..69b34e15 100644 --- a/notations/packages/reqif.md +++ b/notations/packages/reqif.md @@ -21,7 +21,7 @@ This is a package, not a core notation: nothing here changes `IDS_AND_REFERENCES ```yaml transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" packages: [reqif] ``` diff --git a/notations/views/diagrams/02-dgca.md b/notations/views/diagrams/02-dgca.md index 913458b9..8716a5ee 100644 --- a/notations/views/diagrams/02-dgca.md +++ b/notations/views/diagrams/02-dgca.md @@ -154,7 +154,7 @@ A DGCA document opens with a shared header block (`notation:`, `spec_version:`, ```yaml notation: dgca spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" id: DGCA-LAUNCH-1 name: "Product launch strategy chain" period: "2026" @@ -188,7 +188,7 @@ notation: dgca spec_version: "0.1" id: DGCA-RETAIL-1 name: "Retail strategy chain 2026" -methodology_version: "5.1.0" +methodology_version: "6.0.0" view_config: goals: diff --git a/notations/views/diagrams/04-goals.md b/notations/views/diagrams/04-goals.md index ad11617e..b2daf554 100644 --- a/notations/views/diagrams/04-goals.md +++ b/notations/views/diagrams/04-goals.md @@ -117,7 +117,7 @@ After goals are promoted to `canon/elements/01_motivation/goals/`, the view beco ```yaml notation: goals spec_version: "0.1" -methodology_version: "5.1.0" # required from v2.0 onward +methodology_version: "6.0.0" # required from v2.0 onward id: GOALS-STRAT-2026-1 # required — GOALS-[-] name: "Strategy 2026 — Goals Tree" # required per CONTRACT.md §1.1 diff --git a/notations/views/diagrams/07-action.md b/notations/views/diagrams/07-action.md index ddbe33e3..4194abb6 100644 --- a/notations/views/diagrams/07-action.md +++ b/notations/views/diagrams/07-action.md @@ -128,7 +128,7 @@ After actions are promoted to `canon/elements/05_implementation/actions/`, the v ```yaml notation: action spec_version: "0.1" -methodology_version: "5.1.0" # required from v2.0 onward +methodology_version: "6.0.0" # required from v2.0 onward id: ACTION_SCHED-PLATFORM-2026-1 # required — ACTION_SCHED-[-] name: "Platform Launch 2026" # required per CONTRACT.md §1.1 @@ -369,7 +369,7 @@ Both views are projections of the same underlying schedule. A document never "be ```yaml notation: action spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" id: ACTION_SCHED-MINIMAL-1 name: "Minimal schedule example" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 diff --git a/notations/views/diagrams/09-products.md b/notations/views/diagrams/09-products.md index 38d7ea47..5f49eee4 100644 --- a/notations/views/diagrams/09-products.md +++ b/notations/views/diagrams/09-products.md @@ -59,7 +59,7 @@ The reconstruction invariant applies: `render(Elements, view_config)` → Produc ```yaml notation: products spec_version: "0.2" -methodology_version: "5.1.0" +methodology_version: "6.0.0" id: PROD-ENTERPRISE-1 name: "Human-readable title" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 @@ -72,7 +72,7 @@ products_catalogue: ```yaml notation: products spec_version: "0.2" -methodology_version: "5.1.0" +methodology_version: "6.0.0" id: PROD-RETAIL-1 name: "Retail product portfolio" description: "All products and services offered in the retail channel" @@ -234,7 +234,7 @@ A Products Catalogue document in projection form carries only the `view_config` ```yaml notation: products spec_version: "0.2" -methodology_version: "5.1.0" +methodology_version: "6.0.0" id: PROD-DIGITAL-1 name: "Digital Products & Services" description: "All digital-channel offerings sorted by maturity" diff --git a/notations/views/diagrams/12-integration-map.md b/notations/views/diagrams/12-integration-map.md index f3e7e9c3..18d244a9 100644 --- a/notations/views/diagrams/12-integration-map.md +++ b/notations/views/diagrams/12-integration-map.md @@ -45,7 +45,7 @@ notation: integration-map spec_version: "0.1" name: "Human-readable title" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: # ... see §3 ``` @@ -86,7 +86,7 @@ notation: integration-map spec_version: "0.1" name: "Enterprise integration landscape" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: INTEGRATION_MAP-ENTERPRISE-1 @@ -169,7 +169,7 @@ notation: integration-map spec_version: "0.1" name: "Full integration map" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: INTEGRATION_MAP-ALL-1 name: "Full integration map" diff --git a/notations/views/documents/29-mrd.md b/notations/views/documents/29-mrd.md index b1422f1c..eb955688 100644 --- a/notations/views/documents/29-mrd.md +++ b/notations/views/documents/29-mrd.md @@ -45,7 +45,7 @@ notation: mrd spec_version: "0.1" name: "Human-readable title" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: # ... see §3 ``` @@ -99,7 +99,7 @@ notation: mrd spec_version: "0.1" name: "Incident status communication — MRD" # required per CONTRACT.md §1.1 generated_at: "2026-08-04" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: MRD-INCIDENT-STATUS-1 @@ -168,7 +168,7 @@ notation: mrd spec_version: "0.1" name: "Full MRD — all needs" # required per CONTRACT.md §1.1 generated_at: "2026-08-04" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: MRD-ALL-1 name: "Full MRD — all needs" diff --git a/notations/views/documents/30-srs.md b/notations/views/documents/30-srs.md index b78c9aa4..d3ae3778 100644 --- a/notations/views/documents/30-srs.md +++ b/notations/views/documents/30-srs.md @@ -45,7 +45,7 @@ notation: srs spec_version: "0.1" name: "Human-readable title" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: # ... see §3 ``` @@ -97,7 +97,7 @@ notation: srs spec_version: "0.1" name: "Backup-power controller — SRS" # required per CONTRACT.md §1.1 generated_at: "2026-08-04" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: SRS-BACKUP-POWER-1 @@ -158,7 +158,7 @@ notation: srs spec_version: "0.1" name: "Full SRS — all software-tier requirements" # required per CONTRACT.md §1.1 generated_at: "2026-08-04" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: SRS-ALL-1 name: "Full SRS — all software-tier requirements" diff --git a/notations/views/documents/31-sdd.md b/notations/views/documents/31-sdd.md index ad3face5..a131e0ee 100644 --- a/notations/views/documents/31-sdd.md +++ b/notations/views/documents/31-sdd.md @@ -45,7 +45,7 @@ notation: sdd spec_version: "0.1" name: "Human-readable title" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: # ... see §3 ``` @@ -101,7 +101,7 @@ notation: sdd spec_version: "0.1" name: "Data export capability — SDD" # required per CONTRACT.md §1.1 generated_at: "2026-08-04" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: SDD-DATA-EXPORT-1 @@ -170,7 +170,7 @@ notation: sdd spec_version: "0.1" name: "Full SDD — all design elements" # required per CONTRACT.md §1.1 generated_at: "2026-08-04" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: SDD-ALL-1 name: "Full SDD — all design elements" diff --git a/notations/views/reports/11-scenarios.md b/notations/views/reports/11-scenarios.md index 759c29ac..59749bf6 100644 --- a/notations/views/reports/11-scenarios.md +++ b/notations/views/reports/11-scenarios.md @@ -45,7 +45,7 @@ notation: scenarios spec_version: "0.3" name: "Human-readable title" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: # ... see §3 ``` @@ -95,7 +95,7 @@ notation: scenarios spec_version: "0.3" name: "Optimistic vs Conservative — 2027 cut" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: SCENARIOS--1 @@ -152,7 +152,7 @@ notation: scenarios spec_version: "0.3" name: "All scenarios" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: SCENARIOS-ALL-1 name: "All scenarios" diff --git a/notations/views/reports/21-compliance-impact.md b/notations/views/reports/21-compliance-impact.md index 2ffcbb4e..6ef51b1d 100644 --- a/notations/views/reports/21-compliance-impact.md +++ b/notations/views/reports/21-compliance-impact.md @@ -45,7 +45,7 @@ notation: compliance-impact spec_version: "0.1" name: "Human-readable title" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: # ... see §3 ``` @@ -104,7 +104,7 @@ notation: compliance-impact spec_version: "0.1" name: "Retail product — GDPR obligations" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: COMPLIANCE_IMPACT-RETAIL-GDPR-1 @@ -191,7 +191,7 @@ notation: compliance-impact spec_version: "0.1" name: "Full compliance matrix" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: COMPLIANCE_IMPACT-ALL-1 name: "Full compliance matrix" diff --git a/notations/views/reports/22-coverage-metric.md b/notations/views/reports/22-coverage-metric.md index 7aa86076..1906b38f 100644 --- a/notations/views/reports/22-coverage-metric.md +++ b/notations/views/reports/22-coverage-metric.md @@ -45,7 +45,7 @@ notation: coverage-metric spec_version: "0.1" name: "Human-readable title" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: # ... see §3 ``` @@ -99,7 +99,7 @@ notation: coverage-metric spec_version: "0.1" name: "Retail product — regime coverage" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: COVERAGE_METRIC-RETAIL-1 @@ -199,7 +199,7 @@ notation: coverage-metric spec_version: "0.1" name: "Full coverage metric" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: COVERAGE_METRIC-ALL-1 name: "Full coverage metric" diff --git a/notations/views/reports/24-rules-in-force.md b/notations/views/reports/24-rules-in-force.md index 4ebb9640..73c241ca 100644 --- a/notations/views/reports/24-rules-in-force.md +++ b/notations/views/reports/24-rules-in-force.md @@ -45,7 +45,7 @@ notation: rules-in-force spec_version: "0.1" name: "Human-readable title" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: # ... see §3 ``` @@ -94,7 +94,7 @@ notation: rules-in-force spec_version: "0.1" name: "Rules in force" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: RULES_IN_FORCE-ALL-1 @@ -163,7 +163,7 @@ notation: rules-in-force spec_version: "0.1" name: "Rules in force" # required per CONTRACT.md §1.1 generated_at: "YYYY-MM-DD" # optional per CONTRACT.md §4 -methodology_version: "5.1.0" +methodology_version: "6.0.0" view: id: RULES_IN_FORCE-ALL-1 name: "Rules in force" diff --git a/notations/views/reports/32-glossary.md b/notations/views/reports/32-glossary.md index 9cfe1264..0f0b0f09 100644 --- a/notations/views/reports/32-glossary.md +++ b/notations/views/reports/32-glossary.md @@ -1,8 +1,8 @@ --- notation: "Glossary" -version: "0.1" +version: "0.2" author: "Valerii Korobeinikov" -last_updated: "2026-08-10" +last_updated: "2026-09-18" status: "draft" file_extension: "*.glossary.transitrix.yaml" dsm_status: "planned" diff --git a/notations/vocabulary.yaml b/notations/vocabulary.yaml index c343b7a2..82c4fca6 100644 --- a/notations/vocabulary.yaml +++ b/notations/vocabulary.yaml @@ -27,7 +27,7 @@ # the ingest CLI needs to place and validate it. # Must equal notations/CURRENT_VERSION.yaml (enforced by check V1). -methodology_version: "5.1.0" +methodology_version: "6.0.0" # --------------------------------------------------------------------------- # Element TYPE registry — ELEMENT_PRIMITIVES.md §4 (mode table) and §6 (layer diff --git a/packages/documents-cli/tests/test_documents_integrity.py b/packages/documents-cli/tests/test_documents_integrity.py index 335c411b..8b3215c9 100644 --- a/packages/documents-cli/tests/test_documents_integrity.py +++ b/packages/documents-cli/tests/test_documents_integrity.py @@ -32,7 +32,7 @@ def test_documents_removal_clean(): transitrix_yaml = work_dir / "transitrix.yaml" transitrix_yaml.write_text( "transitrix: 1\n" - 'methodology_version: "5.1.0"\n' + 'methodology_version: "6.0.0"\n' "packages: [documents]\n" ) @@ -81,7 +81,7 @@ def test_absence_is_silent(): transitrix_yaml = work_dir / "transitrix.yaml" yaml_content = ( "transitrix: 1\n" - 'methodology_version: "5.1.0"\n' + 'methodology_version: "6.0.0"\n' "notations: [goals, activities]\n" ) transitrix_yaml.write_text(yaml_content) diff --git a/packages/ingest-cli/src/coverage-presets.mjs b/packages/ingest-cli/src/coverage-presets.mjs index 62313068..a04fbff3 100644 --- a/packages/ingest-cli/src/coverage-presets.mjs +++ b/packages/ingest-cli/src/coverage-presets.mjs @@ -23,7 +23,7 @@ // notations/CURRENT_VERSION.yaml, or when the tables below stop matching the §3 / §3.1 // tables they encode. A release PR that bumps the pin and not this file cannot go green. -export const PRESETS_VERSION = '5.1.0'; +export const PRESETS_VERSION = '6.0.0'; export const LAYERS = ['01_motivation', '02_business', '03_application', '04_technology', '05_implementation']; diff --git a/patterns/knowledge-store.md b/patterns/knowledge-store.md index 37104a81..3c06d897 100644 --- a/patterns/knowledge-store.md +++ b/patterns/knowledge-store.md @@ -227,9 +227,9 @@ What it MAY NOT vary: the admission rules, the risk-tier table, the mandatory-fi | `KS-016` | error | 6 | Draft missing or with invalid `review_status:` (`ready` / `ambiguous` / `blocked`). | | `KS-017` | error | 6 | `review_status: ambiguous` without a non-empty `ambiguity_note:`. | -| `KS-018` | error | — | `supersedes` present but the referenced object does not exist or does not resolve. | -| `KS-019` | warning | — | `supersedes` and `superseded_by` point to each other but one is missing on the other side (bidirectional pointer inconsistency). | -| `KS-020` | error | — | A knowledge object in `knowledge/` (non-draft) carries both `supersedes` (points backward) and is pointed to by a `superseded_by` with incorrect identity — the pointer target and actual pointer source do not match. | +| `KS-018` | error | 2.1 | Either supersession field is malformed or does not resolve to exactly one admitted `knowledge/` object. | +| `KS-019` | error (draft proposal: warning) | 2.1 | The target lacks the reciprocal pointer. Only a draft’s `supersedes` proposal receives a warning; admitted objects require both pointers in the same reviewed change. | +| `KS-020` | error | 2.1 | A reciprocal pointer resolves to a different object, a pointer references itself, or the supersession history contains a cycle. | Integrity test harness: [`transitrix/skills/knowledge-store/tests/test_knowledge_store_integrity.py`](../transitrix/skills/knowledge-store/tests/test_knowledge_store_integrity.py) (CI job `knowledge-store-lint-test`). --- diff --git a/scripts/check-notations.mjs b/scripts/check-notations.mjs index 40ae6c45..1acee5f6 100644 --- a/scripts/check-notations.mjs +++ b/scripts/check-notations.mjs @@ -128,6 +128,8 @@ const ID1_EXCLUDED_FILES = new Set([IDS_AND_REFERENCES_PATH, CONVENTIONS_PATH]); // Files that legitimately carry a non-SoT methodology_version (placeholders). const VERSION_PIN_ALLOWLIST = new Set([ 'transitrix/skills/onboard/templates/transitrix.yaml', // "pin a real release once the adopter chooses one" + 'migrations/5.1-to-6.0/fixtures/before/transitrix.yaml', // fixed migration source version + 'migrations/5.1-to-6.0/fixtures/after/transitrix.yaml', // fixed migration target version 'migrations/0.6-to-0.7/README.md', // documents the target version, not the current pin 'migrations/0.7-to-1.0/README.md', // documents the source version, not the current pin 'migrations/0.7-to-1.0/fixtures/before/canon/views/compliance-impact/retail.compliance-impact.transitrix.yaml', // pre-migration fixture diff --git a/tests/fixtures/comprehensive-notation-coverage/views/dgca/test-chain.dgca.transitrix.yaml b/tests/fixtures/comprehensive-notation-coverage/views/dgca/test-chain.dgca.transitrix.yaml index f80d4359..0f057b49 100644 --- a/tests/fixtures/comprehensive-notation-coverage/views/dgca/test-chain.dgca.transitrix.yaml +++ b/tests/fixtures/comprehensive-notation-coverage/views/dgca/test-chain.dgca.transitrix.yaml @@ -1,6 +1,6 @@ notation: dgca spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" id: DGCA-TEST-1 name: "Test strategy chain" period: "2026" diff --git a/transitrix/skills/feedback/SKILL.md b/transitrix/skills/feedback/SKILL.md index 0d3a616f..21ed8ee4 100644 --- a/transitrix/skills/feedback/SKILL.md +++ b/transitrix/skills/feedback/SKILL.md @@ -190,7 +190,7 @@ element"* — which passes. --- ### FB-0003 type: notation-gap - methodology_version: "5.1.0" + methodology_version: "6.0.0" raised_by: Modeler date: "2026-07-28" status: open diff --git a/transitrix/skills/knowledge-store/SKILL.md b/transitrix/skills/knowledge-store/SKILL.md index e151c2af..a9b0e10b 100644 --- a/transitrix/skills/knowledge-store/SKILL.md +++ b/transitrix/skills/knowledge-store/SKILL.md @@ -2,7 +2,7 @@ name: Transitrix Knowledge Store description: Ingest raw source material into the OKF single-repo MVP knowledge store — assess, archive, route to the OKF track (extract drafts → verify → human review → promote to knowledge/) and/or the Canon track (extract Transitrix primitives → PR to canon/), and log every decision. when_to_use: User says "ingest this document", "add this to the knowledge store", "extract knowledge objects from this", "route this to canon", or drops a file into `_intake/inbox/` and wants it processed. -min_version: "1.0.0" +min_version: "6.0.0" allowed-tools: Read, Write, Edit, Bash, Glob, Grep --- diff --git a/transitrix/skills/knowledge-store/tests/README.md b/transitrix/skills/knowledge-store/tests/README.md index 8bc3806c..069f31bc 100644 --- a/transitrix/skills/knowledge-store/tests/README.md +++ b/transitrix/skills/knowledge-store/tests/README.md @@ -5,11 +5,11 @@ implementation (`patterns/knowledge-store.md` §Quality gates). | Script | Purpose | When | |---|---|---| -| `test_knowledge_store_integrity.py` | Runs `tools/knowledge_store_lint.py` on fixtures; asserts KS-001..017 behaviour | Every PR touching the skill, linter, or pattern doc; CI job `knowledge-store-lint-test` | +| `test_knowledge_store_integrity.py` | Runs `tools/knowledge_store_lint.py` on fixtures; asserts KS-001..020 behaviour and 6.0 migration compatibility | Every PR touching the skill, linter, or pattern doc; CI job `knowledge-store-lint-test` | Fixtures live under `fixtures/valid/` — a minimal OKF single-repo MVP bundle with one source-document and two linked knowledge objects. -Run locally: +Run locally with Node.js ≥20 and Python 3: ```bash pip install pyyaml diff --git a/transitrix/skills/knowledge-store/tests/test_knowledge_store_integrity.py b/transitrix/skills/knowledge-store/tests/test_knowledge_store_integrity.py index b2aed118..41df7c35 100644 --- a/transitrix/skills/knowledge-store/tests/test_knowledge_store_integrity.py +++ b/transitrix/skills/knowledge-store/tests/test_knowledge_store_integrity.py @@ -313,6 +313,14 @@ def main(): check(result.returncode == 0, f"Supersession tests failed:\n{result.stdout}{result.stderr}") print(result.stdout) + print("Part H — 6.0 migration compatibility") + result = subprocess.run( + ["node", "--test", os.path.join(REPO_ROOT, "migrations", "5.1-to-6.0", "migration.test.mjs")], + capture_output=True, text=True, encoding="utf-8", + ) + check(result.returncode == 0, f"Migration tests failed:\n{result.stdout}{result.stderr}") + print(result.stdout) + if _failures: print("FAILED:") for f in _failures: diff --git a/transitrix/skills/onboard/templates/AGENTS.md b/transitrix/skills/onboard/templates/AGENTS.md index 3b162e96..a3f3fb28 100644 --- a/transitrix/skills/onboard/templates/AGENTS.md +++ b/transitrix/skills/onboard/templates/AGENTS.md @@ -160,7 +160,7 @@ The root `transitrix.yaml` pins which methodology release this repo conforms to ```yaml transitrix: 1 -methodology_version: "5.1.0" +methodology_version: "6.0.0" notations: [dgca, goals, activities, issues, capability-map, codex] zones: [canon, field, codex] ``` diff --git a/transitrix/skills/onboard/templates/action.action.transitrix.yaml b/transitrix/skills/onboard/templates/action.action.transitrix.yaml index 266c2802..a1a3098f 100644 --- a/transitrix/skills/onboard/templates/action.action.transitrix.yaml +++ b/transitrix/skills/onboard/templates/action.action.transitrix.yaml @@ -1,6 +1,6 @@ notation: action spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" # Action schedule — pure projection over standalone ACTION elements. # Spec: notations/views/diagrams/07-action.md (v2.0). No action data is authored inline. diff --git a/transitrix/skills/onboard/templates/coverage-metric.coverage-metric.transitrix.yaml b/transitrix/skills/onboard/templates/coverage-metric.coverage-metric.transitrix.yaml index 901b9bc3..06268cdf 100644 --- a/transitrix/skills/onboard/templates/coverage-metric.coverage-metric.transitrix.yaml +++ b/transitrix/skills/onboard/templates/coverage-metric.coverage-metric.transitrix.yaml @@ -1,6 +1,6 @@ notation: coverage-metric spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" # Coverage Metric. Spec: notations/views/reports/22-coverage-metric.md # Report-config over the coverage read of canon (sibling of Compliance Impact). diff --git a/transitrix/skills/onboard/templates/goals.goals.transitrix.yaml b/transitrix/skills/onboard/templates/goals.goals.transitrix.yaml index e0828145..5d00cea5 100644 --- a/transitrix/skills/onboard/templates/goals.goals.transitrix.yaml +++ b/transitrix/skills/onboard/templates/goals.goals.transitrix.yaml @@ -1,6 +1,6 @@ notation: goals spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" # Goals tree — pure projection over standalone GOAL elements. # Spec: notations/views/diagrams/04-goals.md (v2.0). No element data is authored inline. diff --git a/transitrix/skills/onboard/templates/integration-map.integration-map.transitrix.yaml b/transitrix/skills/onboard/templates/integration-map.integration-map.transitrix.yaml index f6a49ff0..3e010a92 100644 --- a/transitrix/skills/onboard/templates/integration-map.integration-map.transitrix.yaml +++ b/transitrix/skills/onboard/templates/integration-map.integration-map.transitrix.yaml @@ -1,6 +1,6 @@ notation: integration-map spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" # Integration Map. Spec: notations/views/diagrams/12-integration-map.md # Application-cooperation / data-flow graph, projected from admitted diff --git a/transitrix/skills/onboard/templates/rules-in-force.rules-in-force.transitrix.yaml b/transitrix/skills/onboard/templates/rules-in-force.rules-in-force.transitrix.yaml index 2b881dba..1258ed28 100644 --- a/transitrix/skills/onboard/templates/rules-in-force.rules-in-force.transitrix.yaml +++ b/transitrix/skills/onboard/templates/rules-in-force.rules-in-force.transitrix.yaml @@ -1,6 +1,6 @@ notation: rules-in-force spec_version: "0.1" -methodology_version: "5.1.0" +methodology_version: "6.0.0" # Rules in Force. Spec: notations/views/reports/24-rules-in-force.md # Report-config over the codex zone itself (sibling of Compliance Impact and