Skip to content

Releases: transitrix/methodology

v5.0.0 — ReqIF lifecycle retirement (breaking)

Choose a tag to compare

@transitrix transitrix released this 31 Aug 09:54
f35fdf7

[5.0.0] — 2026-08-31

Bump category: MAJOR — two breaking changes ride in this release: the ReqIF package's lifecycle commands/rules are removed, and the FGCA-008..014 rule codes (deprecated in favor of DGCA-REPO-008..011) are retired. Every additive change accumulated since 4.2.0 rides along. Migration recipe: migrations/4.2-to-5.0/.

Added

  • DGCA-REPO-008..011 — renamed repo-scope rules, formerly FGCA-008..011. The codes print DGCA-REPO-008 (GOAL's missing DRIVER), DGCA-REPO-009 (CHANGE's missing GOAL), DGCA-REPO-010 (ACTION's missing CHANGE), DGCA-REPO-011 (ACTION's missing GOAL) (notations/vocabulary.yaml, notations/views/diagrams/02-dgca.md § Cross-element validation rules).
  • Zone enumeration validation (CONTRACT §6.5) — every file is validated or reported. The validator now reports on zones as a whole, not only on files it can parse. Every file under canon/, field/, and codex/ (outside the sources/ archival subfolder) must be either a YAML artefact with a complete admission record, or formally reported as unenumerated. New validation rules: ZONE-001 (unenumerated file), ZONE-002 (non-YAML syntax error), ZONE-003 (contradictory admission+format), ADMIT-012 (admission record in sources/). Fixtures and worked examples demonstrating all cases: notations/examples/zone-enumeration/. (transitrix-hq#455)
  • Validator coverage and code publication contract (notations/CONTRACT.md §18) — documents which notations are validated and which are skipped (e.g., BPMN is skipped pending implementation, while DGCA and goal elements are validated). Establishes the rule that every validation code the validator may emit must appear in a published specification table (either CONTRACT.md for shared codes or the notation's own spec for notation-specific codes). Specifies that skipped notations must be explicitly reported in validator output (not silently omitted), with counts showing "files examined" ≥ "files validated" + "files skipped". Enables adopters to understand validator coverage gaps and prevents silent omission of unsupported notations. (transitrix-hq#448)
  • Products Catalogue projection formnotations/views/diagrams/09-products.md adds full support for projection-form authoring alongside the existing inline form. A products catalogue can now be authored with a view_config block that selects PRODUCT elements from canon/elements/02_business/products/, allowing filtering by type, domain, owner_role, and custom extensions (e.g., pricing models). The inline form remains valid; promotion to projection form is optional until cross-document sharing requires it. New validation rules PROD-001..010 and view_config defaults documented. Notation version bumped to 0.2, status to documented. Purely additive — a repository with products-catalogues in inline form validates as before. (transitrix-hq#436)
  • ORGANIZATION — a motivation-layer element type for the organisation's own statement of itself — its name, mission, vision, and background. Carries the organisation's stated intent (mission, vision) as canonical elements rather than product configuration. At most one valid ORGANIZATION may exist in a catalogue at any point in time (time-aware: a mission restatement is a new element with a new valid_from date). Placement: canon/elements/01_motivation/organizations/ORGANIZATION-<SLUG>-1.yaml. Schema: ELEMENT_PRIMITIVES.md §7.31. Validation: ORG-001 (at most one valid per date), ORG-002 (must have mission or vision). Purely additive — a repository without an ORGANIZATION element validates as before. (transitrix-hq#410, #444)
  • DGCA-021 — a new warning-severity validation rule (notations/views/diagrams/02-dgca.md § Validation rules). Emitted when an action carries both a direct goals[] link and a delivers_changes[] link where at least one goal is reachable via the changes — i.e., the direct link duplicates a goal the action reaches through the change layer. The direct link is reserved for cases where the change layer adds no new goals; when both paths exist to the same goal, the direct link is redundant. Does not fire in DGA mode (changes layer off) where direct goal links are required. Rule code reserved for future cross-element extension. Worked fixture: examples/dgca/goal-link-duplicate-warning.dgca.transitrix.yaml. Purely additive — an existing DGCA document without this pattern validates as before. (#451)
  • Goal-scoped DGCA projections — specification and caption contract (notations/views/diagrams/02-dgca.md §"Goal-scoped projections and reachability"). Goal-scoped projections with goals.filter: ids or goals.filter: tags are not required to close under action→goal references. An action is included because it serves at least one selected goal; other goals on that action remain in the catalogue and are omitted from this picture (not missing). The same reading applies to DGCA-008 / DGCA-009 in projection form: a driver or change outside the selected set is omitted, not an error. Validation rules DGCA-008, DGCA-009, and DGCA-011 now distinguish inline vs projection "defined" semantics. A derived caption renders above the diagram when the condition holds: "This diagram is shown for the selected goal scope. Actions on it may also serve goals outside that scope." The caption is render output, not authored text. New subsection answers the key adopter question "Why weren't all goals shown for this action?" with a sourced answer an agent can cite directly. Worked example: examples/dgca/goal-scoped-projection-omitted-goals.dgca.transitrix.yaml. Purely additive — an existing DGCA document with closed projections validates as before. (transitrix-hq#479)
  • guides/adoption-health-profile.md — a framework to measure how effectively a Transitrix adoption is working in practice. The profile defines five instrumental indicators (validity, coverage, freshness, assertion-queue age/drain, connectedness) calculated from two independent records each — the measure cannot be faked without doing the work. Denominator rule makes the blind spot explicit: every file is classified as read/out-of-scope/unread-marker/foreign, qualifying every coverage number that follows. Three properties: the adopter measures themselves and we do not collect; no norm from us beyond their declared scope; every result is a reconciliation of two independently produced records. Specification closes or defers each of four design questions (phase detection, survey questions, computation home, cross-adopter benchmarking). Purely additive — a repository without adoption-health measurement infrastructure validates as before. (#391)
  • transitrix/skills/health-profile/ — the Skill implementation of the adoption-health profile's instrumental layer (computation home: Skill / Claude Code agent procedure). Runs node scan.mjs to scan a repository's model files, computes five indicators with precision and diagnosis readings from two independent sources each, and produces a markdown report showing file classification (denominator), indicator values, and actionable findings. Proof-of-concept scan of transitrix/methodology shows 201 read files, zero unread-marker files (no actionable gaps), 40 foreign files, and 100% file freshness. Deferred items from the spec remain: phase detection (workflow-dependent), full queue/connectedness computation, survey instrument, cross-adopter benchmarking. Report does not fail the build; validator treats it as informational only.
  • DGCA chain-view action-scoped selector (notations/views/diagrams/02-dgca.md): view_config can now anchor the projection on actions (work-package subtrees) in addition to goals. Goal-scoped mode (default, top-down) selects goals and derives changes and drivers downward; action-scoped mode (new, bottom-up) selects actions and derives goals and drivers upward from the change links. Symmetrical interface: actions.filter / actions.ids / actions.tags parallel goals.filter / goals.ids / goals.tags; modes are mutually exclusive. Enables the "delivery chain of an initiative" view (what drives it, what it changes, what it contains) without goal approximation. Validation rules DGCA-019..020 enforce mode exclusivity. Worked example added. (transitrix-hq#456)

Removed

  • BREAKING: ReqIF package's workflow-state, revision-history, and suspect-link commands and validators are removed. The transitrix-reqif transition, revise, history, and suspect commands are deleted; validation rules REQIF-008 and REQIF-009 are removed from the rule table (§5). The package's own lifecycle surface is deprecated in favor of core's agreement axis (CONTRACT.md §6.3); a spec-object admitted into canon now carries its lifecycle state through core's agreement field, not through the package. Foreign workflow_state, revision, revisions, and recorded_target_revision fields arriving via ReqIF import are preserved as inert document metadata and round-trip unchanged; the package does not manage or validate them. notations/packages/reqif.md §2.9 is rewritten to clarify what remains. Migration: (1) remove any direct use of the four deleted commands; (2) for spec-object instances that will become core elements, use core's agreement axis (CONTRACT.md §6.3) to record lifecycle once admitted; (3) the recorded_target_revision field on spec-relation may be kept or removed — it is inert and round-trips either way. See migrations/4.2-to-5.0/.
  • BREAKING: FGCA-008..014 rule codes retired. FGCA-008..011 (superseded by DGCA-REPO-008..011, above) and FGCA-012..014 (unreferenced driver/goal/change warnings, removed without replacement — a future aggregate coverage observation supersedes the per-element findings, not yet implemented) are no longer recognized codes. Historical mapping recorded in `notation...
Read more

v4.2.0

Choose a tag to compare

@transitrix transitrix released this 27 Aug 13:12
5ad423c

What's changed

Bump category: MINOR. New catalogued TYPE STANDARD. No migration recipe.

Added

  • STANDARD — a new codex TYPE for a technical standard issued by a standards-developing organisation (notations/elements/14-codex.md §2, §2.2). Lives in codex/external/<jurisdiction>/ with LAW/REGULATION; internationally issued bodies use intl (no longer reserved). Discriminator at admission: statute → REGULATION (or LAW); org writes it for itself → INTERNAL_STANDARD/POLICY/PRINCIPLE; an SDO issues it → STANDARD. A regulation that incorporates a standard by reference stays a REGULATION and cites the STANDARD. Required fields are jurisdiction, effective_date, and issuing_authority. Permitted-TYPE lists for REQ-003, TERM-002, COVMET-003, RIF-002, SEGMENT-002, and AMENDMENT-002 widen to include STANDARD. @transitrix/ingest-cli accepts --type STANDARD with --jurisdiction and --issuing-authority. (transitrix-hq#318, #539)

Fixed

  • tools/lint.py reads relation from/to. (#536)
  • Document parsers reject unknown directive attributes and leftover text on view / figure (TTRS-002). (#535)
  • Ingest and reg-intel batch paths no longer overwrite an unresolved flat file; identity is run_id. (#538)
  • reg-intel discovery reads operations/config/scan-sources.yaml, with stricter date checks. (#537)
  • Plugin --check treats CRLF and LF manifests as equal. (#534)

v4.1.0

Choose a tag to compare

@transitrix transitrix released this 27 Aug 12:02

Bump category: MINOR — validator tests and fixtures for the assembled_on relation kind. Additive; no new validator codes.

Added

  • Validator tests for assembled_on relation kind — positive and negative fixtures covering endpoint constraints (both ends RELEASE), referential integrity, and cross-subject permission. Existing REL-001/REL-002 suffice. (transitrix-hq#345)

v4.0.0

Choose a tag to compare

@transitrix transitrix released this 25 Aug 18:40
8d846a0

[4.0.0] — 2026-08-25

Bump category: MAJOR — categorised the PRs landed since #512's 3.7.0 tag per RELEASING.md's bump table; highest is the set of breaking changes already staged for this cut (FGA notation-key removal, .ttrs template_id/template_versionrecipe_id/recipe_version, underscore forbidden in an ID middle segment). Additive work in the same window (process_parent, DRIVER.falsifier / ASSESSMENT.geographic_scope, rules-in-force, ACT-021, and the documentation PRs) rides along. Migration recipe: migrations/3.1-to-4.0/ (Transforms A and B landed ahead of the cut per CONTRACT.md §10.6; Transform C is documented). node scripts/check-notations.mjs passes clean (two pre-existing SIZE1 warnings, non-blocking).

Added

  • rules-in-force — a report-config view over the codex zone (notations/views/reports/24-rules-in-force.md). Sibling of Compliance Impact and Coverage Metric: the same REQUIREMENT.derived_from join, reading the codex catalogue itself rather than the obligation × subject overlay. Onboarding skill gains a rules-in-force template. Purely additive — a repository with no such view validates as before. (#513)
  • ACT-021 (warning) — an Action Schedule scoped by view_config.scope.root_action names an ACTION that is not that root and not a parent-descendant of it. Descendants resolve only through ACTION.parent. The message names the ACTION id and the root_action; the ACTION is omitted from the render rather than dropped silently. Does not fire when root_action is absent. Does not make parent required on a true root (ACTION-003 unchanged). Numbered ACT-021 because ACT-004ACT-009 already name different checks. Worked fixture: examples/action/root-action-scope/. Additive — a scoped view whose listed or projected ACTIONs are all in the descendant tree validates as before. (#527)
  • process_parent — a first-class PROCESSPROCESS relation recording that the child is a phase of the parent (17-relations.md §3, vocabulary.yaml). Composition of behaviour, not sequence and not view membership. Optional goal / result on PROCESS (ELEMENT_PRIMITIVES.md §7.5). A process-blueprint column MAY name an admitted PROCESS-… (derived label, no restated name/goal/result) or keep a document-local STAGE-… sketch; STAGE is not registered. ASSERT-003 is unchanged: a phase goes in realised_via (or is subject when it owns the obligation). Compliance-lane and report-config join for PROCESS- columns is specified (13-process-blueprint.md §5.4, 21-compliance-impact.md, 22-coverage-metric.md). New codes REL-007/REL-008, BP-012/BP-013/BP-014. Worked example: examples/relations/process-parent/. Additive — existing STAGE- only blueprints validate unchanged. (#522)
  • DRIVER.falsifier and ASSESSMENT.geographic_scope — two optional fields on the motivation-layer primitives (ELEMENT_PRIMITIVES.md §7.1, §7.17). falsifier is prose recording the observation that would weaken or refute a driver as a standing force; whether it has fired stays a human judgement, not a stored boolean. geographic_scope is a list of country codes (ISO 3166-1 alpha-2 or eu, reusing the codex jurisdiction vocabulary, elements/14-codex.md §1.1) naming where a finding was observed — a region is an explicit list of the countries it comprises, a market is not modelled by this field at all, and the reserved value [global] states "everywhere" explicitly, distinct from omitting the field ("not stated"). New ASSESS-001 (error) validates the value grammar. Purely additive — both fields are optional, no existing field's semantics changed, and an existing DRIVER or ASSESSMENT file with neither field validates exactly as before. No backfill. (#514)
  • A decision guide for connecting two REQUIREMENT records (15-requirement.md §2.4.1) — a compact table distinguishing parent (inline, same-TYPE decomposition), depends_on (first-class REL, conditional dependency between peer obligations), and required_for (first-class REL, obligation-to-release scoping), each with a one-line use/avoid rule. Cross-linked from 17-relations.md §3, which now also states explicitly that parent is an inline alternative to the REL kinds it registers, not a gap in the enum. Documentation only — clarifies existing normative text; no new field, TYPE, or validator rule. (#518)
  • 15-requirement.md §2.4 states explicitly that parent MAY cross document-stage boundaries — the ISO/IEC/IEEE 29148 StRS → SyRS → SRS tiers recorded by level (§2.5). This was already the typical direction described in §2.5's ladder; the new "Stage-agnostic" point states it as the field's own rule rather than as an aside on a different field, and confirms parent is independently silent on the endpoints' admission_state. New worked example examples/requirement-parent/ — a three-tier parent chain (stakeholdersystemsoftware) grounding the schema example already shown in §2. Documentation only; no new field, TYPE, or validator rule. (#519)
  • guides/how-a-document-prints.md — page size is declared, never inherited, A4 (612 × 792 pt is US Letter and wrong; 595 × 842 pt is A4); portrait by default; a wide picture takes a landscape page; if it still does not fit, split the view in the model. DIRECTIVE_LANGUAGE.md §3.5 states which supplied pictures are legitimate (photograph, screenshot of third-party software, scan — a picture of model content is a view, never a pre-exported raster placed as a figure). Named gaps: print layout, landscape PDF, and embedded pictures are specified and not built. (#526)

Changed

  • BREAKING: the document-view source object is named recipe, not template/skeleton, across @transitrix/document-view-engine and @transitrix/document-renderer. One object previously carried four names (.ttrs "template", the view engine's "skeleton", template_id/template_version, parseSkeleton/parse-skeleton.mjs); it is now recipe everywhere in both packages — filenames, identifiers, comments, and package descriptions (parse-template.mjs/parse-skeleton.mjsparse-recipe.mjs, parseSkeletonparseRecipe). Decided 2026-08-23; what a recipe produces is a model-backed document, never live/living document. The directive language spec and site copy are unaffected — this change is scoped to the two packages and their tests. (#515)
  • BREAKING: .ttrs header fields template_id/template_version renamed to recipe_id/recipe_version. Required on every .ttrs file (document, kind, recipe_id, recipe_version, canon). Migration recipe: migrations/3.1-to-4.0/ Transform B. No adopter .ttrs file exists outside this repo's own test fixture, so the recipe carries nothing real to rewrite today — it ships anyway, per CONTRACT.md §10.6. (#515)
  • BREAKING: an ID middle segment may not contain _. Underscore is TYPE-only (PROCESS_BLUEPRINT, INTERNAL_STANDARD, BUSINESS_OBJECT). A middle segment is [A-Za-z0-9]+; a hyphen splits segments. LAW-PERSONAL_DATA-1 is invalid; write LAW-PERSONAL-DATA-1. Documented as Transform C of migrations/3.1-to-4.0/ — not auto-rewritten, because a blanket _- would also hit TYPE prefixes. (#523)
  • REQUIREMENT.derived_from origin guidance: Field artefacts are not valid origin ids for a canon obligation. Documentation only; REQ-003 unchanged. (#524)
  • A repository may hold both a project role and the central role (patterns/enterprise-adr-registry.md, patterns/network-catalogue.md). Dual-role is allowed; harvest/index vs central admission/promotion stay distinct. Documentation only. (#525)

Removed

  • BREAKING: the fga notation key is removed. *.fga.transitrix.yaml / notation: fga — the 3-layer Driver → Goal → Activity chain — is no longer a valid notation; author it as a dgca document with view_config.layers.changes: off (DGA mode) instead, per the 2026-06-23 FGA-into-DGCA merge decision (notations/README.md § Family selection). FGA was deprecated in 2.0.0 (2026-07-12); its own spec front matter named removed_in: "4.0.0" (CONTRACT.md §10.6's one-major window, satisfied as of 3.0.0). The spec file (notations/views/diagrams/03-fga.md) and its example stub (notations/examples/fga/) are deleted — preserved in git history only, not repackaged. Migration recipe: migrations/3.1-to-4.0/ Transform A. No adopter *.fga.transitrix.yaml file exists outside the migration recipe's own fixture, so the recipe carries nothing real to rewrite today. (#520)

Fixed

  • ASSERTION.realised_via no longer claims a process-blueprint stage as a resolvable target. 16-assertion.md §2.1, 21-compliance-impact.md, 22-coverage-metric.md, and 13-process-blueprint.md §5.4 listed a blueprint STAGE-… id as a realised_via / lane-join target; stages are document-local and ASSERT-004 cannot resolve them. The decided process-local idiom is STEP. View grouping by stages[] is unchanged. No schema, enum, TYPE, or validation-severity change. (#521)

v3.7.0

Choose a tag to compare

@transitrix transitrix released this 22 Aug 20:09

[3.7.0] — 2026-08-22

Bump category: MINOR — categorised the commits landed since #493's 3.6.0 tag per RELEASING.md's bump table; highest is a set of purely additive schema changes (new PRINCIPLE codex TYPE, new introduced_in relation kind, new CAT-001/CAT-002/ADMIT-009/ADMIT-010/ADMIT-011 validator codes). Two of the new codes (CAT-002, and BOBJ-D001's severity correction below) are error-severity, but CONTRACT §10.4's grandfather clause keeps a MINOR/PATCH release's new error rules from applying retroactively to already-admitted adopter canon, so neither forces a MAJOR bump. node scripts/check-notations.mjs passes clean (two pre-existing SIZE1 warnings, non-blocking).

Added

  • PRINCIPLE — a new codex TYPE for a rule the organisation holds over itself with no stated issuing authority or conformance test (notations/elements/14-codex.md §2, §2.1, §4.1). Required fields are statement (one normative sentence) and rationale; issuing_authority and effective_date are optional — where an artefact can state both an issuing authority and a conformance test, §2.1's discriminator classifies it as POLICY or INTERNAL_STANDARD instead. An optional established_by field cites the decision that established the principle, in the decision-log reference form already in use (method/07-decisions.md §2); its absence is a review finding (CODEX-006, info), not a validator error. REQUIREMENT.derived_from's permitted TYPEs widen to include PRINCIPLE (15-requirement.md §2, REQ-003), and so does TERM.derived_from's (ELEMENT_PRIMITIVES.md §7.30, TERM-002) — both restrictions are stated as the same rule for the same reason, so they widen together. Registered in IDS_AND_REFERENCES.md §3.5 and §4 (uniqueness scope: the organisation's codex/internal/ zone, resolved against the nearest enclosing transitrix.yaml, unchanged from POLICY/INTERNAL_STANDARD). The onboarding skill gains a templates/codex-principle.yaml scaffold; @transitrix/ingest-cli's codex-artefact / admit-source --zone codex commands accept --type PRINCIPLE with --statement/--rationale/--established-by. Purely additive: no existing field became required, no existing TYPE's shape changed, and a repository with no PRINCIPLE artefact validates exactly as it did before — no migration recipe needed. (#511)
  • A catalogue declares its own boundary — CAT-001/CAT-002. IDS_AND_REFERENCES.md §4's uniqueness scope now resolves against the nearest enclosing transitrix.yaml (MANIFEST.md §4) instead of an unstated tree-wide scope. CAT-001 (warning) flags a scanned tree with no manifest at its root; CAT-002 (error) flags a manifest nested inside another's subtree — grandfathered per CONTRACT §10.4, so only files authored against this release or later are checked against it. All twelve notations/examples/** catalogue roots now carry their own transitrix.yaml; two example trees that violated the no-nesting rule become siblings. (#509)
  • ADMIT-009 (warning) — extraction_confidence must not persist onto admitted canon. CONTRACT.md §11.1 states why the field is an ingest-candidate review flag that never reaches canon and never enters the §11.4 confidence formula; registered in vocabulary.yaml, cross-referenced from ELEMENT_PRIMITIVES.md §7.29. (#505)
  • A new optional example: true admission-record field — ADMIT-010/ADMIT-011. CONTRACT.md §6.4: absent means real; only true is a valid value (ADMIT-010); an example is excluded from every derived view/coverage total, and nothing without the field may reference something that has it (ADMIT-011, cross-cutting with ADMIT-005). New check-notations.mjs EX1 check keeps every notations/examples/** zone: canon fixture marked; all 75 such fixtures now carry the field. (#506)
  • A new introduced_in relation kind — closed-enum, INTEGRATION | APPLICATION -> RELEASE, M:N, time-aware (17-relations.md §3.3), registered in vocabulary.yaml. Separates the discrete per-release axis (which shipped state first carried a fact) from the continuous per-element valid_from axis; gives the derived what-shipped-in-release-R query as a predecessor walk. Endpoints stay narrow in v1 — TECHNOLOGY_SERVICE, NODE, CHANGE sources are a later widening, not a second kind. Also records the decision not to widen ASSERTION.subject to APPLICATION (16-assertion.md §2.4). (#495)

Changed

  • INFORMATION_ENTITY's alias window is now recorded as closed, matching what 1.0.0 announced. 1.0.0 declared the INFORMATION_ENTITYBUSINESS_OBJECT alias closed and old ids a hard error; the specs, the artefact, and the validator were never updated to agree, so at 3.6.0 ELEMENT_PRIMITIVES.md §7.15 and IDS_AND_REFERENCES.md §6 still promised an open one-release window with a BOBJ-D001 warning and a closure "in the following release". BOBJ-D001 is now error; the spec text says the window closed at 1.0.0; and the old name stays listed only so a tool that meets it can name the replacement instead of reporting an unknown TYPE. ACTIVITY and FACTOR carry the same 1.0.0-vs-reality gap and are deliberately left open — closing them reaches past this table (the activity_goal relation alias, the activity_type field, the activities/ path prefix) and is its own pass. (#504)
  • vocabulary.yaml's deprecated_element_types entries carry accepted (and retired_in when closed). A retired TYPE name previously had no way to say whether it was still admissible, so every consumer inferred warn-vs-reject for itself. accepted is required and validated; a closed entry must name the release that closed it. transitrix-ingest validate words its finding from that field — an open window reads [deprecation], a closed one [error] naming the release. (#504)
  • method/08-governance.md gains §2.1 — a human may ratify a bounded class of change in advance, not only a single instance. A standing grant names the exact change permitted, the conditions a guard must evaluate on every use, and an end condition; an agent acting inside it executes a decision rather than takes one, so the run is the record rather than a fresh decision entry. The unconditional guarantee is unchanged: every change in force was ratified by a human, an agent may never author/widen/ratify the grant it acts under, and a grant with no evaluating guard is not in force. (#502)

Fixed

  • The ingest and onboard extraction prompts told agents to emit INFORMATION_ENTITY. Both 03_application.md prompts (and their READMEs, the two SKILL.mds, templates/AGENTS.md, and the process-blueprint template's information_entities[] block) still named the TYPE retired by ADR 2026-06-08, so every application-layer extraction produced candidates that failed validate on the first pass and had to be renamed by hand. All now say BUSINESS_OBJECT / business_objects[]. ingest/SKILL.md's promotion rule additionally listed EQUIPMENT and INFORMATION_ENTITY as view-defined, which the same ADR reversed when it promoted both to standalone catalogued elements. (#503, #504)
  • ELEMENT_PRIMITIVES.md §7.29 described a RELEASE's valid_from as the admission-time record lifecycle; CONTRACT.md §7 already defined it as the modelled thing's own lifecycle — the ship date, not when the record was admitted. Three bundled examples had followed the wrong sentence and set valid_from from admitted_at (two others, already correct from released_at, are unchanged); the worked example is corrected so its three dates actually differ. Also records the provenance decision behind it: no schema extension for release provenance — derived_from already covers tag-sourced releases via the section 3 envelope every standalone TYPE carries. (#494)

v3.6.0

Choose a tag to compare

@transitrix transitrix released this 17 Aug 12:09
26b1305

Bump category: MINOR — categorised the 6 PRs landed since #486's 3.5.0 tag per RELEASING.md's bump table; highest is #487/#489 (new CONTRACT.md §10.7 section, new check-notations.mjs validation codes at warning severity) -> MINOR. method/ is divided from four content files (515 lines in the largest) into a ten-file structure, one file per reader question, plus a new guides/ folder for task procedures. Three pre-existing documentation defects are fixed while splitting: two incompatible ID-grammar examples are reconciled to the one canonical grammar, a repository-tree listing missing 04_technology/ is restored, and a paraphrased compatibility policy is replaced with a pointer to its canonical source. check-notations.mjs is widened to cover method/ and gains four new mechanical invariants (ID1, LAYER1, DUALHOME1, SIZE1 — the last warn-only). No schema, field, enum, or required-field change; node scripts/check-notations.mjs passes clean with no new failures (two pre-existing SIZE1 warnings on files over the new soft ceiling, non-blocking).

Added

  • A new method/08-governance.md — assembled from doctrine previously scattered across 02-team-operations.md, 03-architecture-decision-log.md, 04-methodology-update-propagation.md, and 01-methodology.md: who may change what (human vs. agent authorship, the ratification gate, the cross-repo authorship limit), what gates a change (validation + review), immutability and supersession, mechanical enforcement, and the versioning/compatibility promise.
  • A new guides/ folder at the repository root — unnumbered, adopter-facing task procedures that don't belong to method/'s reading order: modelling-capabilities.md, modelling-complex-processes.md, adl-adopter-setup.md.
  • notations/CONTRACT.md §10.7 — a document path is now explicitly part of the published surface: retirable in a MINOR with one release of deprecation (a stub at the old path); a section-anchor change carries the same promise through a redirect table in the release notes (below).
  • A "Discovery" section in RELEASING.md — the scheduled drift-detection job, moved here from method/04-methodology-update-propagation.md §7 as maintainer-side operational content, distinct from the adopter-facing propagation contract it sits alongside.
  • check-notations.mjs gains four new mechanical invariantsID1 (example-ID grammar checked against IDS_AND_REFERENCES.md §1), LAYER1 (layer-folder enumeration completeness), DUALHOME1 (no method/ table restates a notations/ table), and SIZE1 (warn-only per-file section-count soft ceiling); example checking and L1 link resolution now cover method/ alongside notations/. (#489)
  • A portable transitrix/plugin.json targeting the Agent Plugins Specification v1.0.0 alongside the existing Claude-Code-specific .claude-plugin/plugin.json, generated by scripts/generate-plugin-manifests.mjs so the two manifests never disagree on name or version by hand-editing drift; CI validates both the generator's --check mode and claude plugin validate on every PR. (#488)
  • Rendered view-example SVGs in transitrix/README.md — every notation view the plugin's onboard skill produces that has a real renderer in @transitrix/diagrams, sourced from this repository's own notations/examples/, with a CI drift check that regenerates and diffs on every relevant PR. (#490)
  • Outbound links to transitrix.com carry a ?utm_source=<surface-slug> parameter identifying which surface (README, skill, etc.) the link lives on. (#491)
  • CONTRIBUTING.md "Adding or changing a Skill" section — structure, SKILL.md/README.md pairing, and the per-skill validation gate. .github/ISSUE_TEMPLATE/ (bug report, feature request, config) and an extended PR template checklist (DCO sign-off, one-concern-per-PR, no-work-item-reference). (#492)

Fixed

  • check-notations.mjs's new ID1 check surfaced pre-existing violations, now corrected: leading-zero worked-example IDs (ROLE-*-001, GOAL-CUST-001) and prose placeholders rewritten to the canonical TYPE-… convention; two proposed-but-unregistered rule codes (ACTION-006, REL-COVERAGE-001) added to vocabulary.yaml's deferred.rule_codes. (#489)
  • CONTRIBUTING.md's "Submitting changes" step 4 named a validator path (organizations/<org>/.validators/lint.py) this repo does not have; replaced with the accurate per-touched-path gate (check-notations.mjs, @transitrix/cli validate, skill-cheatsheet conformance, skill test suites). (#492)

Changed

  • method/ divided into ten files (0009), each answering one reader question in place of the former four mixed-scope files. See the redirect tables below for the full old-path → new-path and old-anchor → new-anchor mapping.
  • The two incompatible ID-grammar examples are reconciled. The former 01-methodology.md showed APPLICATION-ORDER-1 in one place and the abbreviated, explicitly-forbidden APP-TRX-001 in another, plus a third relation-id variant. method/03-modelling.md now shows the one canonical grammar throughout and states the relation-id form once.
  • The repository-tree listing in method/02-repository.md (formerly 01-methodology.md §4) restores the canon/elements/04_technology/ line, missing from the tree since it was first written.
  • The compatibility-policy paraphrase is replaced with a pointer. The former §13's inline restatement of "breaking changes to the YAML DSL, file layout, or naming convention" is replaced, in method/08-governance.md, with a pointer to notations/CONTRACT.md §10 — the one place that policy is defined.
  • 01-methodology.md §12.1 (scaffold a new organisation) is merged into GETTING_STARTED.md Step 1 and deleted, rather than moved — it was the same recipe already told, in more depth, at the repository root.
  • 132+ inbound references across the repository — skills, scripts, patterns, notation specs, CONTRACT.md, MANIFEST.md, README.md, CONTRIBUTING.md — repointed from the five retired paths to their successor file(s) and section(s); none left resolving to a stub.

Redirects — old path → new path

Old path New path(s)
method/01-methodology.md method/01-foundations.md (§1, §1a, §2, §3) · method/02-repository.md (§4) · method/03-modelling.md (§5, §9) · method/04-notations.md (§6) · method/05-working-the-model.md (§7, §8) · method/08-governance.md (§7 closing line, §8, §13) · GETTING_STARTED.md (§12.1, merged) · guides/modelling-capabilities.md (§12.2) · guides/modelling-complex-processes.md (§12.3)
method/02-team-operations.md method/06-team-operations.md (§1–§2, §3.2–§3.4, §4–§10) · method/07-decisions.md §2 (§3.1, the ADR record shape)
method/03-architecture-decision-log.md method/07-decisions.md (§1–§9, §11–§12) · guides/adl-adopter-setup.md (§10)
method/04-methodology-update-propagation.md method/09-releases-and-propagation.md (§1–§6, §8–§9) · RELEASING.md § "Discovery" (§7)
method/05-catalogue-integration.md method/09-releases-and-propagation.md §6 (in full)

Every retired path above keeps a stub pointing at its successor(s), kept for at least one further MINOR release (notations/CONTRACT.md §10.7).

Redirects — old anchor → new anchor

Old anchor New anchor
01-methodology.md#1-what-this-is 01-foundations.md#1-what-this-is
01-methodology.md#1a-how-the-to-be-is-obtained 01-foundations.md#2-how-the-to-be-is-obtained
01-methodology.md#2-four-core-principles 01-foundations.md#3-four-core-principles
01-methodology.md#3-standards-transitrix-builds-on 01-foundations.md#4-standards-transitrix-builds-on
01-methodology.md#3a-archimate-vocabulary-reference notations/IDS_AND_REFERENCES.md (deleted, replaced by a pointer)
01-methodology.md#4-repository-structure 02-repository.md#1-repository-structure
01-methodology.md#41-operational-layer--team-operations-operations 02-repository.md#11-operational-layer--team-operations-operations
01-methodology.md#5-the-yaml-dsl 03-modelling.md#1-the-yaml-dsl
01-methodology.md#6-notation-kit 04-notations.md#1-the-notation-kit
01-methodology.md#61-where-each-notation-lives-in-the-repository notations/README.md (deleted, replaced by a pointer)
01-methodology.md#7-change-lifecycle 05-working-the-model.md#1-change-lifecycle
01-methodology.md#8-validation-matrix 05-working-the-model.md#2-validation-matrix
01-methodology.md#9-naming-conventions 03-modelling.md#2-naming-conventions
01-methodology.md#12-getting-started GETTING_STARTED.md (§12.1) · guides/modelling-capabilities.md (§12.2) · guides/modelling-complex-processes.md (§12.3)
01-methodology.md#13-versioning 08-governance.md#5-the-versioning-and-compatibility-promise
02-team-operations.md#31-architecture-decision-record-adr 07-decisions.md#2-the-record-format
02-team-operations.md#6-status-vocabularies (ADR rows) 07-decisions.md#21-provenance-and-source-author-source
02-team-operations.md#6-status-vocabularies (WI/Feedback rows) 06-team-operations.md#31-work-item-wi / #32-feedback-record-fb
02-team-operations.md#7-the-1-screen-rules-doc--operationsreadmemd 06-team-operations.md#6-the-1-screen-rules-doc--operationsreadmemd
02-team-operations.md#8-templates 06-team-operations.md#7-templates
03-architecture-decision-log.md#6-provenance-and-the-ratification-gate 07-decisions.md#4-provenance-and-the-ratification-gate (mechanics) · 08-governance.md#2-who-may-change-what--human-and-agent-authorship (doctrine)
03-architecture-decision-log.md#7-immutability-discipline 07-decisions.md#6-immutability-discipline (mechanics) · 08-governance.md#3-immutability-and-supersession (doctrine...
Read more

v3.5.0

Choose a tag to compare

@transitrix transitrix released this 16 Aug 17:20
125efea

Bump category: MINOR — new TERM element type, a new catalogue-integration spec surface (levels, binding envelope, adopter pattern, ingest-cli commands), a new render contract section, and document-renderer pass 2/run-record/PDF output; all additive, no migration recipe required. Also cuts the tag v3.4.0 never got — notations/CURRENT_VERSION.yaml was bumped in #475 but the release was never tagged; this release folds that gap in rather than shipping an intermediate untagged version.

Added

  • TERM element type (business-layer vocabulary, ArchiMate Meaning) — the 31st live element TYPE, folded into the ELEM-ALIAS-001 cross-catalogue uniqueness gate. New glossary report view (32-glossary.md) projects name/aliases/description from TERM and every other TYPE into one flat, alphabetised lookup surface. (#479)
  • Catalogue integration — four levels and the binding envelope. The ownership rule and the four separately-enabled levels (decisions / vocabulary / recognition / promotion) at which a project repository joins a network around a central catalogue repository, plus the canon_id/origin binding envelope and its validation rules (BIND-001005). (#477)
  • Catalogue publication, the consumer pin, and the L1 vocabulary-divergence check — publication format, the transitrix.yaml catalogue: pin, the fails-closed load rule, the pin-bump ADR gate, and a report-only L1 divergence check; ingest-cli gains a fails-closed catalogue loader. (#478)
  • ingest-cli L2 recognition + L3 promotioncatalogue-recognize (propose a binding by unambiguous name/alias + TYPE match), catalogue-bind (human-gated write, fails closed against BIND-001004), and catalogue-promote (emits a promotion proposal, never writes across the repository boundary); repo-check surfaces the full BIND-001005 envelope check. (#480)
  • Catalogue — adopter-facing half. New pattern (patterns/network-catalogue.md), a §7 "Setting it up" section on the catalogue-integration doc, and ingest-cli's adopt-adl (L0) and catalogue-pin (L1) commands. (#481)
  • blocks render contract for the matrix subset (§7a) — what a conformant renderer must produce for a grid: root document: rectangular table sizing, header order, pre-layout assign: expansion, and inline validation surfacing per BL-020025. States explicitly that the general layered-grid superset remains unspecified by design. (#484)
  • document-renderer pass 2 — fills {{# instruct ... }} slots left open by pass 1 via a caller-supplied fill hook, agent-agnostic by construction, enforcing the closed-input discipline of the 2026-08-12 instruction-slot decision. (#485)
  • document-renderer run record — a pure function over template id/version, repository commit, model id, run timestamp, and per-slot instruction/verdict (sufficient / insufficient / not-attempted). (#485)
  • document-renderer PDF output — dependency-free Markdown-to-PDF, A4, paginating automatically; bold/italic stripped and figures become text placeholders as named, non-silent scope limits. (#485)

Changed

  • Dependabot now watches all six npm manifests under packages/, including document-renderer and document-view-engine. (#482)
  • The public-surface hygiene scan now also runs on direct pushes to main, not only on pull requests. (#483)

v3.3.0

Choose a tag to compare

@transitrix transitrix released this 08 Aug 06:22
03dc876

[3.3.0] — 2026-08-08

Bump category: MINOR — new notation spec file, additive document-view-engine rendering, and tooling/hygiene fixes only; no migration recipe required.

Added

  • DIRECTIVE_LANGUAGE.md normative conformance spec (notations/views/documents/, stable, v1.0) — the {{ ... }} directive grammar shared by .ttrs document-source templates and document-view-engine skeleton files becomes a conformance contract an independent implementation can build against without reading the reference code: five reference states (adds ⚑S, cited to CONTRACT.md §16), a three-way suspicion-distinguishability requirement (§5.1), a normative strict/lenient render-profile split where lenient must detect exactly what strict fails on (§6), a named-failure requirement for any unimplemented construct (§7.1), and a conformance checklist (§9). New canonical extension form *.<short-name>.ttrs alongside *.<short-name>.transitrix.yaml (CONTRACT.md §3). (#461, #462)
  • @transitrix/document-renderer package — reference implementation of the directive language and the .ttrs document-source template format. Pass 1 resolver runs with no agent present, touches nothing in the model (read-only), and is re-run-stable; resolves model-object references ({{ REQ-14.parent.title }}, depth 3) and derived/supplied/reference figures, and copies {{# instruct }} slots through byte-for-byte. New T1 doc-lint check names the .trs near-miss extension explicitly. Frozen byte-for-byte conformance fixture (tests/fixtures/product.mrd.expected.md) that test_conformance.mjs diffs against and never regenerates; line endings pinned to LF across the fixture tree. New document-renderer-test CI workflow. (#461, #462)
  • Document-view engine gains derived-content evaluation, render profiles, illustrations, and the trace-coverage matrix (packages/document-view-engine/) — createEvaluator() resolves {{ ID.field }} traversal (re-classifying the §3 states at every hop) and {{# each ... }} selection against canon; renderDocument() walks the AST into review (coloured, flagged) or clean (fails the build on a configured state set) HTML per §4; figure/figref render with document-order illustration numbering (forward references resolve; manual vs. missing border classes); evaluateTrace() builds the full from-type × to-type {{ trace }} coverage matrix, resolving via against either a first-class REL kind or a claim record's named endpoint field (e.g. VERIFICATION.verifies), with every row/column present even when uncovered. Derivation share, telemetry, and PDF output remain open on the epic. (#450, #451, #452)
  • blocks-notation view rendering — new blocks-view.mjs parses a blocks notation nested_blocks document and lays it out as nested-box SVG; render.mjs's view case renders it clean (green), suspect via ⚑S (amber, cross-linked block id resolves suspect), or missing/unsupported (red, ⚑U); figure and view now share one illustration-numbering sequence in document order. (#452)
  • notations/vocabulary.yaml — new machine-readable source of truth for the element TYPE registry, the relation-type enum (with endpoint TYPE set and ACTOR-subtype narrowing), closed value vocabularies, and rule codes. Four VOC1VOC4 checks in scripts/check-notations.mjs cross-verify it against ELEMENT_PRIMITIVES.md §4, elements/17-relations.md §3, each vocabulary's owning spec, and rule-code tables respectively, failing closed on a missing or unparseable artefact. packages/ingest-cli derives its placement.mjs/validate.mjs closed sets from this file instead of hand-maintained literal copies. (#457, #466)
  • README names the new .ttrs document source format and links the spec. (#464)

Changed

  • document-view-engine and document-renderer share one grammar owner. document-renderer/src/ids.mjs absorbs isValidTypeName and becomes the single ID grammar for the notation; new document-renderer/src/syntax.mjs holds the front-matter, header-scalar, and identifier/field-path primitives both parsers previously carried as byte-identical copies. document-view-engine's own ids.mjs is deleted and parse-skeleton.mjs imports from document-renderer instead. Structural only — each parser keeps its own construct set, error shape, and AST node names; all eight existing test suites across both packages, including the frozen conformance fixture's byte comparison, pass unchanged. document-view-engine gains its own CI workflow, path-filtered to also run on grammar changes in document-renderer. (#465)

Fixed

  • notations/CURRENT_VERSION.yaml and every dependent methodology_version pin (CONTRACT.md, examples, view specs, onboarding templates, migration fixtures) bumped to 3.2.0 — the v3.2.0 tag shipped without this step. RELEASING.md's per-release checklist gains the missing step so a future release cuts the pin bump in the same PR as the changelog, before tagging. (#455)
  • notations/vocabulary.yaml's own methodology_version pin bumped to 3.2.0 (missed by #455). (#463)
  • ingest-cli placement.mjs/validate.mjs were silently missing several catalogued element TYPEs and relation kinds versus the spec (stale hand-maintained literal lists) — both now derive from vocabulary.yaml, closing the gap. (#457)
  • offers relation was missing its from_subtype: [business_unit] narrowing in the new vocabulary.yaml, despite 17-relations.md §3's table and prose already documenting it. (#457)
  • BOBJ-D001 — a live warning row in ELEMENT_PRIMITIVES.md — was missing from vocabulary.yaml's rule_codes. (#466)
  • ELEMENT_PRIMITIVES.md §4's materialisation-mode table still listed EQUIPMENT/INFORMATION_ENTITY as view-defined, predating the 2026-06-08 ADR that promoted both to standalone catalogued elements (EQUIPMENT, renamed BUSINESS_OBJECT). (#457)

v3.2.0

Choose a tag to compare

@transitrix transitrix released this 07 Aug 11:50
080aee8

[3.2.0] — 2026-08-07

Bump category: MINOR — additive notation, tooling, and CI-hygiene changes only; no migration recipe required.

Added

  • Document-view engine (packages/document-view-engine/) — skeleton-file parser (parseSkeleton()) covering bare/field/traversal inline references, {{# each TYPE where ... order by ... }} selection blocks, .field references, trace, view, figure/figref, view's as=/fit= parameters, and the \{{ escape; plus resolveReference()/createResolver() classifying an id against canon into the four §3 states (ok, ⚑U unresolved, ⚑A not admitted, ⚑V out of validity, ⚑S suspect via CONTRACT §16). Zero runtime dependencies; syntax/resolution scope only — render profiles, derivation share, telemetry, and PDF output remain open. (#439, #440, #443)
  • Document-view class + MRD/SRS/SDD layouts (notations/views/documents/) — new view class alongside diagrams/reports; three deterministic, render-contract-defined layouts derived from admitted canon with no hand-authored prose surface: MRD (grouped NEED+REQUIREMENT via REQUIREMENT.serves), SRS (software-tier REQUIREMENT sectioned by kind), SDD (APPLICATION/NODE/TECHNOLOGY_SERVICE design elements traced to the REQUIREMENTs they realise). Reserved inert view.standard field; new DOC1 doc-lint rule forbidding a shipped layout from emitting a standard identifier. (#426, #427, #430, #431)
  • RELEASE element TYPE (ELEMENT_PRIMITIVES.md §7.29, canon/elements/05_implementation/releases/) — dated/versioned state of a PRODUCT/APPLICATION (of, version, optional predecessor, released_at). Rules RELEASE-001..005. (#446)
  • required_for relation (REQUIREMENTRELEASE, 17-relations.md §3) — scopes an obligation to one release rather than the whole subject; derived "what must hold in release R" query via a predecessor-chain walk (scripts/release-obligations.mjs). No new rule code (reuses REL-002/REL-003). (#447)
  • ASSERTION.subject_release and VERIFICATION.verified_on — optional RELEASE qualifiers narrowing a claim/protocol run to a specific release; derived "superseded" read via the predecessor chain. Rules ASSERT-010, VERIF-007 (both error, reachable only when the new optional field is set). (#448)
  • depends_on relation kind (REQUIREMENTREQUIREMENT, 17-relations.md §3) — conditional obligation dependency, distinct from parent/work-order relations. Rules REL-005 (self-reference, error), REL-006 (cycle, warning). (#438)
  • Agreement axis (CONTRACT.md §6.3) — agreement: draft | agreed | disputed on REQUIREMENT/CONSTRAINT/NEED, independent of admission; only a human may write agreed (AGREE-001..003). Reference implementation scripts/check-agreement.mjs. (#433)
  • Link suspicion / content identity (CONTRACT.md §16) — git-derived (never stored) suspicion flag over REL/ASSERTION/VERIFICATION/VALIDATION endpoints and agreement-carrying elements, with a mechanical-procedure hatch for declared bulk migrations. Reference implementation scripts/check-link-suspicion.mjs. (#437)
  • Deprecation policy (CONTRACT.md §10.6) — a status: deprecated spec must name its removed_in: release; window is at least one MAJOR; removal is always a BREAKING entry. New DEP1 doc-lint rule. FGA scheduled for removal in 4.0.0, migration recipe pre-staged under migrations/3.1-to-4.0/. (#429)
  • Externally-distributed packages (PACKAGES.md §1, §7.2) — package class with its own version and compatible_with range (PKG-002); package-agnostic validator discovery (ingest-cli check-packages); required §6 envelope-statement row on every package spec (PKGDOC1). (#434)
  • Ingest review-queue semantic_links — optional typed edges between candidates for relations with no closed REL kind yet; passed through, never admitted to canon. (#435)
  • Ingest approver extraction + role_assignment_proposals — new cross-cutting extraction prompt for a document's approval/sign-off chain; review-only person→role proposals, never shaped into a relation candidate or admitted. (#436)
  • .github/pull_request_template.md — two-section PR template (What changed / How it is verified). (#444)

Changed

  • ADL per-repo decision layer (method/03-architecture-decision-log.md §1, §6, §10) — canonical only where the repo's readership is the reasoning's intended audience; a public repo keeps at most an unmotivated pointer, record lives centrally. Matching agent-authorship boundary added to §6. (#423)
  • Onboarding skill computes the admission record and lifecycleadmitted_at/admitted_by/gate_checks/valid_from are no longer hand-typed placeholders; SKILL.md gains an "Admission record and lifecycle" procedure mirroring the CLI's own transitrix new behaviour. (#424)
  • Capability/application maturity converges on the versioned-attribute sidecar (CONTRACT.md §9.4, 05-capability-map.md, 10-applications.md) — target_maturity joins current_maturity/target_date as time-varying (sidecar {valid_from, value} step function); single shared CMMI V2.0 scale definition. (#425)
  • View catalogue split into diagrams//reports//documents/ (notations/views/) — each spec's class now structural via folder rather than a README table position; IDS_AND_REFERENCES.md §3.2's document-level TYPE registry renamed VIEW_TYPE; check-notations.mjs C1 count check derives counts from the filesystem. (#426)

Fixed

  • CI work-item reference guard — widened to catch the unpunctuated "hub"+worktype+number form alongside the existing #-punctuated pattern; self-test added against the live extracted pattern. (#422)
  • baseline-manifest scope — derived from every id: under canon/ instead of a hardcoded two-directory list, so newly registered TYPEs are no longer silently omitted. (#428)
  • ingest-cli admit-source idempotency — retrying on the same converted markdown after the raw source moved out of _intake/inbox/ no longer skips the duplicate check and mints a spurious second artefact; --force still mints a genuine duplicate. (#432)
  • check-notations unit tests wired into CIscripts/check-notations.test.mjs now runs in notations-doc-lint.yml on every PR (previously local-only, blocked by a token-scope gap). (#442)
  • Duplicated RISK element schema content removed (ELEMENT_PRIMITIVES.md §7.26) — broken nested code-fence and duplicated table/prose cleaned up. (#445)

v3.1.0

Choose a tag to compare

@transitrix transitrix released this 01 Aug 07:22
2015071

Bump category: MINOR — additive core vocabulary and tooling only; no migration recipe required.

Added

  • RISK element type (ELEMENT_PRIMITIVES.md §7.26) — motivation-layer projected event (likelihood / impact / residual / owner; threatens / treated_by). Additive alongside the ArchiMate Risk and Security Overlay mapping in CONTRACT.md §8.1. Rules RISK-001..004, RISK-COVERAGE-001. (#416)
  • METRIC element type (ELEMENT_PRIMITIVES.md §7.27) — managed indicator (unit / target / direction_of_good / measures), distinct from report-config COVERAGE_METRIC. Rules METRIC-001..004. (#417)
  • NEED element type + VALIDATION claim (ELEMENT_PRIMITIVES.md §7.28, elements/28-validation.md) — stakeholder/user need upstream of REQUIREMENT; VALIDATION mirrors VERIFICATION but anchors on NEED with a validation-method vocabulary. REQUIREMENT.serves optional back-reference. Rules NEED-001..002, NEED-COVERAGE-001, NEED-VALIDATION-COVERAGE-001..002, REQ-SERVES-001, VALID-001..006. Worked example under notations/examples/validation/. (#419)
  • REQUIREMENT.level and REQUIREMENT.kind — optional ISO/IEC/IEEE 29148 specification-tier ladder (stakeholder / system / software) and functional/quality classification. Rules REQ-005, REQ-006. (#418)
  • Weekly Dependabot with gated auto-merge for this repository's manifests and Actions. (#420)
  • Interactive one-card admission review on @transitrix/decisions-cli (review), plus ingest/reg-intel conversational one-card review + stop/resume skill docs. (#397, #398)
  • Onboard skill absorbs adopter starter templates previously living in the companion reference repo; teaching-content docs migrate into this repository. (#406, #405)
  • CI gates — PR-description disclosure policy; commit-message scan with no PR-metadata carve-out; fail-closed when a hygiene value cannot be evaluated; committed content carries no work-item reference. (#413, #412, #408, #411)

Changed

  • VERIFICATION wording — documents verification only (not full V&V); verifies has only ever resolved to REQUIREMENT. (#415)
  • Public-surface hygiene — work-item references use a neutral form in committed content; four remaining neutral-form cleanups. (#409, #403)

Fixed

  • Stale-base squash restore — content a stale-base squash had reverted is restored. (#414)
  • .gitignore notes — stale templates/ commentary trimmed. (#410, #404)

Full changelog: https://github.com/transitrix/methodology/blob/main/CHANGELOG.md