Releases: transitrix/methodology
Release list
v5.0.0 — ReqIF lifecycle retirement (breaking)
[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, formerlyFGCA-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/, andcodex/(outside thesources/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 insources/). 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 form —
notations/views/diagrams/09-products.mdadds full support for projection-form authoring alongside the existing inline form. A products catalogue can now be authored with aview_configblock that selects PRODUCT elements fromcanon/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 rulesPROD-001..010and 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 validORGANIZATIONmay exist in a catalogue at any point in time (time-aware: a mission restatement is a new element with a newvalid_fromdate). 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 anORGANIZATIONelement 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 directgoals[]link and adelivers_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 withgoals.filter: idsorgoals.filter: tagsare 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 toDGCA-008/DGCA-009in projection form: a driver or change outside the selected set is omitted, not an error. Validation rulesDGCA-008,DGCA-009, andDGCA-011now 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). Runsnode scan.mjsto 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 oftransitrix/methodologyshows 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_configcan 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.tagsparallelgoals.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 rulesDGCA-019..020enforce 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, andsuspectcommands are deleted; validation rulesREQIF-008andREQIF-009are 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); aspec-objectadmitted into canon now carries its lifecycle state through core'sagreementfield, not through the package. Foreignworkflow_state,revision,revisions, andrecorded_target_revisionfields 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) forspec-objectinstances that will become core elements, use core's agreement axis (CONTRACT.md§6.3) to record lifecycle once admitted; (3) therecorded_target_revisionfield onspec-relationmay be kept or removed — it is inert and round-trips either way. Seemigrations/4.2-to-5.0/. - BREAKING:
FGCA-008..014rule codes retired.FGCA-008..011(superseded byDGCA-REPO-008..011, above) andFGCA-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...
v4.2.0
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 incodex/external/<jurisdiction>/withLAW/REGULATION; internationally issued bodies useintl(no longer reserved). Discriminator at admission: statute →REGULATION(orLAW); org writes it for itself →INTERNAL_STANDARD/POLICY/PRINCIPLE; an SDO issues it →STANDARD. A regulation that incorporates a standard by reference stays aREGULATIONand cites theSTANDARD. Required fields arejurisdiction,effective_date, andissuing_authority. Permitted-TYPE lists forREQ-003,TERM-002,COVMET-003,RIF-002,SEGMENT-002, andAMENDMENT-002widen to includeSTANDARD.@transitrix/ingest-cliaccepts--type STANDARDwith--jurisdictionand--issuing-authority. (transitrix-hq#318, #539)
Fixed
tools/lint.pyreads relationfrom/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-inteldiscovery readsoperations/config/scan-sources.yaml, with stricter date checks. (#537)- Plugin
--checktreats CRLF and LF manifests as equal. (#534)
v4.1.0
Bump category: MINOR — validator tests and fixtures for the assembled_on relation kind. Additive; no new validator codes.
Added
- Validator tests for
assembled_onrelation kind — positive and negative fixtures covering endpoint constraints (both ends RELEASE), referential integrity, and cross-subject permission. ExistingREL-001/REL-002suffice. (transitrix-hq#345)
v4.0.0
[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_version → recipe_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 sameREQUIREMENT.derived_fromjoin, reading the codex catalogue itself rather than the obligation × subject overlay. Onboarding skill gains arules-in-forcetemplate. Purely additive — a repository with no such view validates as before. (#513)ACT-021(warning) — an Action Schedule scoped byview_config.scope.root_actionnames an ACTION that is not that root and not aparent-descendant of it. Descendants resolve only throughACTION.parent. The message names the ACTION id and theroot_action; the ACTION is omitted from the render rather than dropped silently. Does not fire whenroot_actionis absent. Does not makeparentrequired on a true root (ACTION-003unchanged). NumberedACT-021becauseACT-004–ACT-009already 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-classPROCESS→PROCESSrelation 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. Optionalgoal/resultonPROCESS(ELEMENT_PRIMITIVES.md§7.5). A process-blueprint column MAY name an admittedPROCESS-…(derived label, no restatedname/goal/result) or keep a document-localSTAGE-…sketch;STAGEis not registered.ASSERT-003is unchanged: a phase goes inrealised_via(or issubjectwhen it owns the obligation). Compliance-lane and report-config join forPROCESS-columns is specified (13-process-blueprint.md§5.4,21-compliance-impact.md,22-coverage-metric.md). New codesREL-007/REL-008,BP-012/BP-013/BP-014. Worked example:examples/relations/process-parent/. Additive — existingSTAGE-only blueprints validate unchanged. (#522)DRIVER.falsifierandASSESSMENT.geographic_scope— two optional fields on the motivation-layer primitives (ELEMENT_PRIMITIVES.md§7.1, §7.17).falsifieris 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_scopeis a list of country codes (ISO 3166-1 alpha-2 oreu, 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"). NewASSESS-001(error) validates the value grammar. Purely additive — both fields are optional, no existing field's semantics changed, and an existingDRIVERorASSESSMENTfile with neither field validates exactly as before. No backfill. (#514)- A decision guide for connecting two
REQUIREMENTrecords (15-requirement.md§2.4.1) — a compact table distinguishingparent(inline, same-TYPE decomposition),depends_on(first-class REL, conditional dependency between peer obligations), andrequired_for(first-class REL, obligation-to-release scoping), each with a one-line use/avoid rule. Cross-linked from17-relations.md§3, which now also states explicitly thatparentis 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 thatparentMAY cross document-stage boundaries — the ISO/IEC/IEEE 29148 StRS → SyRS → SRS tiers recorded bylevel(§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 confirmsparentis independently silent on the endpoints'admission_state. New worked exampleexamples/requirement-parent/— a three-tierparentchain (stakeholder→system→software) 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 ptis US Letter and wrong;595 × 842 ptis 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 aview, never a pre-exported raster placed as afigure). 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, nottemplate/skeleton, across@transitrix/document-view-engineand@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 nowrecipeeverywhere in both packages — filenames, identifiers, comments, and package descriptions (parse-template.mjs/parse-skeleton.mjs→parse-recipe.mjs,parseSkeleton→parseRecipe). 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:
.ttrsheader fieldstemplate_id/template_versionrenamed torecipe_id/recipe_version. Required on every.ttrsfile (document,kind,recipe_id,recipe_version,canon). Migration recipe:migrations/3.1-to-4.0/Transform B. No adopter.ttrsfile 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-1is invalid; writeLAW-PERSONAL-DATA-1. Documented as Transform C ofmigrations/3.1-to-4.0/— not auto-rewritten, because a blanket_→-would also hit TYPE prefixes. (#523) REQUIREMENT.derived_fromorigin guidance: Field artefacts are not valid origin ids for a canon obligation. Documentation only;REQ-003unchanged. (#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
fganotation key is removed.*.fga.transitrix.yaml/notation: fga— the 3-layer Driver → Goal → Activity chain — is no longer a valid notation; author it as adgcadocument withview_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 in2.0.0(2026-07-12); its own spec front matter namedremoved_in: "4.0.0"(CONTRACT.md§10.6's one-major window, satisfied as of3.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.yamlfile exists outside the migration recipe's own fixture, so the recipe carries nothing real to rewrite today. (#520)
Fixed
ASSERTION.realised_viano longer claims a process-blueprint stage as a resolvable target.16-assertion.md§2.1,21-compliance-impact.md,22-coverage-metric.md, and13-process-blueprint.md§5.4 listed a blueprintSTAGE-…id as arealised_via/ lane-join target; stages are document-local andASSERT-004cannot resolve them. The decided process-local idiom isSTEP. View grouping bystages[]is unchanged. No schema, enum, TYPE, or validation-severity change. (#521)
v3.7.0
[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 arestatement(one normative sentence) andrationale;issuing_authorityandeffective_dateare optional — where an artefact can state both an issuing authority and a conformance test, §2.1's discriminator classifies it asPOLICYorINTERNAL_STANDARDinstead. An optionalestablished_byfield 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 includePRINCIPLE(15-requirement.md§2,REQ-003), and so doesTERM.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 inIDS_AND_REFERENCES.md§3.5 and §4 (uniqueness scope: the organisation'scodex/internal/zone, resolved against the nearest enclosingtransitrix.yaml, unchanged fromPOLICY/INTERNAL_STANDARD). The onboarding skill gains atemplates/codex-principle.yamlscaffold;@transitrix/ingest-cli'scodex-artefact/admit-source --zone codexcommands accept--type PRINCIPLEwith--statement/--rationale/--established-by. Purely additive: no existing field became required, no existing TYPE's shape changed, and a repository with noPRINCIPLEartefact 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 enclosingtransitrix.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 twelvenotations/examples/**catalogue roots now carry their owntransitrix.yaml; two example trees that violated the no-nesting rule become siblings. (#509) ADMIT-009(warning) —extraction_confidencemust 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 invocabulary.yaml, cross-referenced fromELEMENT_PRIMITIVES.md§7.29. (#505)- A new optional
example: trueadmission-record field —ADMIT-010/ADMIT-011.CONTRACT.md§6.4: absent means real; onlytrueis 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 withADMIT-005). Newcheck-notations.mjsEX1check keeps everynotations/examples/**zone: canonfixture marked; all 75 such fixtures now carry the field. (#506) - A new
introduced_inrelation kind — closed-enum,INTEGRATION | APPLICATION -> RELEASE, M:N, time-aware (17-relations.md§3.3), registered invocabulary.yaml. Separates the discrete per-release axis (which shipped state first carried a fact) from the continuous per-elementvalid_fromaxis; gives the derived what-shipped-in-release-R query as a predecessor walk. Endpoints stay narrow in v1 —TECHNOLOGY_SERVICE,NODE,CHANGEsources are a later widening, not a second kind. Also records the decision not to widenASSERTION.subjecttoAPPLICATION(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 theINFORMATION_ENTITY→BUSINESS_OBJECTalias closed and old ids a hard error; the specs, the artefact, and the validator were never updated to agree, so at 3.6.0ELEMENT_PRIMITIVES.md§7.15 andIDS_AND_REFERENCES.md§6 still promised an open one-release window with aBOBJ-D001warning and a closure "in the following release".BOBJ-D001is nowerror; 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.ACTIVITYandFACTORcarry the same 1.0.0-vs-reality gap and are deliberately left open — closing them reaches past this table (theactivity_goalrelation alias, theactivity_typefield, theactivities/path prefix) and is its own pass. (#504)vocabulary.yaml'sdeprecated_element_typesentries carryaccepted(andretired_inwhen 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.acceptedis required and validated; a closed entry must name the release that closed it.transitrix-ingest validatewords its finding from that field — an open window reads[deprecation], a closed one[error]naming the release. (#504)method/08-governance.mdgains §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. Both03_application.mdprompts (and their READMEs, the twoSKILL.mds,templates/AGENTS.md, and the process-blueprint template'sinformation_entities[]block) still named the TYPE retired by ADR 2026-06-08, so every application-layer extraction produced candidates that failedvalidateon the first pass and had to be renamed by hand. All now sayBUSINESS_OBJECT/business_objects[].ingest/SKILL.md's promotion rule additionally listedEQUIPMENTandINFORMATION_ENTITYasview-defined, which the same ADR reversed when it promoted both to standalone catalogued elements. (#503, #504) ELEMENT_PRIMITIVES.md§7.29 described aRELEASE'svalid_fromas 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 setvalid_fromfromadmitted_at(two others, already correct fromreleased_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_fromalready covers tag-sourced releases via the section 3 envelope every standalone TYPE carries. (#494)
v3.6.0
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 across02-team-operations.md,03-architecture-decision-log.md,04-methodology-update-propagation.md, and01-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 tomethod/'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 aMINORwith 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 frommethod/04-methodology-update-propagation.md§7 as maintainer-side operational content, distinct from the adopter-facing propagation contract it sits alongside. check-notations.mjsgains four new mechanical invariants —ID1(example-ID grammar checked againstIDS_AND_REFERENCES.md§1),LAYER1(layer-folder enumeration completeness),DUALHOME1(nomethod/table restates anotations/table), andSIZE1(warn-only per-file section-count soft ceiling); example checking and L1 link resolution now covermethod/alongsidenotations/. (#489)- A portable
transitrix/plugin.jsontargeting the Agent Plugins Specification v1.0.0 alongside the existing Claude-Code-specific.claude-plugin/plugin.json, generated byscripts/generate-plugin-manifests.mjsso the two manifests never disagree on name or version by hand-editing drift; CI validates both the generator's--checkmode andclaude plugin validateon 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 ownnotations/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.mdpairing, 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 newID1check surfaced pre-existing violations, now corrected: leading-zero worked-example IDs (ROLE-*-001,GOAL-CUST-001) and prose placeholders rewritten to the canonicalTYPE-…convention; two proposed-but-unregistered rule codes (ACTION-006,REL-COVERAGE-001) added tovocabulary.yaml'sdeferred.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 (00–09), 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.mdshowedAPPLICATION-ORDER-1in one place and the abbreviated, explicitly-forbiddenAPP-TRX-001in another, plus a third relation-id variant.method/03-modelling.mdnow shows the one canonical grammar throughout and states the relation-id form once. - The repository-tree listing in
method/02-repository.md(formerly01-methodology.md§4) restores thecanon/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 tonotations/CONTRACT.md§10 — the one place that policy is defined. 01-methodology.md§12.1 (scaffold a new organisation) is merged intoGETTING_STARTED.mdStep 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... |
v3.5.0
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
TERMelement type (business-layer vocabulary, ArchiMate Meaning) — the 31st live element TYPE, folded into theELEM-ALIAS-001cross-catalogue uniqueness gate. New glossary report view (32-glossary.md) projects name/aliases/description fromTERMand 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/originbinding envelope and its validation rules (BIND-001–005). (#477) - Catalogue publication, the consumer pin, and the L1 vocabulary-divergence check — publication format, the
transitrix.yamlcatalogue:pin, the fails-closed load rule, the pin-bump ADR gate, and a report-only L1 divergence check;ingest-cligains a fails-closed catalogue loader. (#478) ingest-cliL2 recognition + L3 promotion —catalogue-recognize(propose a binding by unambiguous name/alias + TYPE match),catalogue-bind(human-gated write, fails closed againstBIND-001–004), andcatalogue-promote(emits a promotion proposal, never writes across the repository boundary);repo-checksurfaces the fullBIND-001–005envelope check. (#480)- Catalogue — adopter-facing half. New pattern (
patterns/network-catalogue.md), a §7 "Setting it up" section on the catalogue-integration doc, andingest-cli'sadopt-adl(L0) andcatalogue-pin(L1) commands. (#481) blocksrender contract for the matrix subset (§7a) — what a conformant renderer must produce for agrid:root document: rectangular table sizing, header order, pre-layoutassign:expansion, and inline validation surfacing perBL-020–025. States explicitly that the general layered-grid superset remains unspecified by design. (#484)document-rendererpass 2 — fills{{# instruct ... }}slots left open by pass 1 via a caller-suppliedfillhook, agent-agnostic by construction, enforcing the closed-input discipline of the 2026-08-12 instruction-slot decision. (#485)document-rendererrun 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-rendererPDF 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
v3.3.0
[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.mdnormative conformance spec (notations/views/documents/, stable, v1.0) — the{{ ... }}directive grammar shared by.ttrsdocument-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 toCONTRACT.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>.ttrsalongside*.<short-name>.transitrix.yaml(CONTRACT.md§3). (#461, #462)@transitrix/document-rendererpackage — reference implementation of the directive language and the.ttrsdocument-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. NewT1doc-lint check names the.trsnear-miss extension explicitly. Frozen byte-for-byte conformance fixture (tests/fixtures/product.mrd.expected.md) thattest_conformance.mjsdiffs against and never regenerates; line endings pinned to LF across the fixture tree. Newdocument-renderer-testCI 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 intoreview(coloured, flagged) orclean(fails the build on a configured state set) HTML per §4;figure/figrefrender with document-order illustration numbering (forward references resolve; manual vs. missing border classes);evaluateTrace()builds the fullfrom-type ×to-type{{ trace }}coverage matrix, resolvingviaagainst 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-notationviewrendering — newblocks-view.mjsparses ablocksnotationnested_blocksdocument and lays it out as nested-box SVG;render.mjs'sviewcase renders it clean (green), suspect via⚑S(amber, cross-linked block id resolves suspect), or missing/unsupported (red,⚑U);figureandviewnow 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. FourVOC1–VOC4checks inscripts/check-notations.mjscross-verify it againstELEMENT_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-cliderives itsplacement.mjs/validate.mjsclosed sets from this file instead of hand-maintained literal copies. (#457, #466)- README names the new
.ttrsdocument source format and links the spec. (#464)
Changed
document-view-engineanddocument-renderershare one grammar owner.document-renderer/src/ids.mjsabsorbsisValidTypeNameand becomes the single ID grammar for the notation; newdocument-renderer/src/syntax.mjsholds the front-matter, header-scalar, and identifier/field-path primitives both parsers previously carried as byte-identical copies.document-view-engine's ownids.mjsis deleted andparse-skeleton.mjsimports fromdocument-rendererinstead. 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-enginegains its own CI workflow, path-filtered to also run on grammar changes indocument-renderer. (#465)
Fixed
notations/CURRENT_VERSION.yamland every dependentmethodology_versionpin (CONTRACT.md, examples, view specs, onboarding templates, migration fixtures) bumped to3.2.0— thev3.2.0tag 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 ownmethodology_versionpin bumped to3.2.0(missed by #455). (#463)ingest-cliplacement.mjs/validate.mjswere silently missing several catalogued element TYPEs and relation kinds versus the spec (stale hand-maintained literal lists) — both now derive fromvocabulary.yaml, closing the gap. (#457)offersrelation was missing itsfrom_subtype: [business_unit]narrowing in the newvocabulary.yaml, despite17-relations.md§3's table and prose already documenting it. (#457)BOBJ-D001— a live warning row inELEMENT_PRIMITIVES.md— was missing fromvocabulary.yaml'srule_codes. (#466)ELEMENT_PRIMITIVES.md§4's materialisation-mode table still listedEQUIPMENT/INFORMATION_ENTITYas view-defined, predating the 2026-06-08 ADR that promoted both to standalone catalogued elements (EQUIPMENT, renamedBUSINESS_OBJECT). (#457)
v3.2.0
[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,.fieldreferences,trace,view,figure/figref,view'sas=/fit=parameters, and the\{{escape; plusresolveReference()/createResolver()classifying an id against canon into the four §3 states (ok,⚑Uunresolved,⚑Anot admitted,⚑Vout of validity,⚑Ssuspect 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 (groupedNEED+REQUIREMENTviaREQUIREMENT.serves), SRS (software-tierREQUIREMENTsectioned bykind), SDD (APPLICATION/NODE/TECHNOLOGY_SERVICEdesign elements traced to theREQUIREMENTs they realise). Reserved inertview.standardfield; newDOC1doc-lint rule forbidding a shipped layout from emitting a standard identifier. (#426, #427, #430, #431) RELEASEelement TYPE (ELEMENT_PRIMITIVES.md§7.29,canon/elements/05_implementation/releases/) — dated/versioned state of aPRODUCT/APPLICATION(of,version, optionalpredecessor,released_at). RulesRELEASE-001..005. (#446)required_forrelation (REQUIREMENT→RELEASE,17-relations.md§3) — scopes an obligation to one release rather than the whole subject; derived "what must hold in release R" query via apredecessor-chain walk (scripts/release-obligations.mjs). No new rule code (reusesREL-002/REL-003). (#447)ASSERTION.subject_releaseandVERIFICATION.verified_on— optionalRELEASEqualifiers narrowing a claim/protocol run to a specific release; derived "superseded" read via thepredecessorchain. RulesASSERT-010,VERIF-007(both error, reachable only when the new optional field is set). (#448)depends_onrelation kind (REQUIREMENT→REQUIREMENT,17-relations.md§3) — conditional obligation dependency, distinct fromparent/work-order relations. RulesREL-005(self-reference, error),REL-006(cycle, warning). (#438)- Agreement axis (
CONTRACT.md§6.3) —agreement: draft | agreed | disputedonREQUIREMENT/CONSTRAINT/NEED, independent of admission; only a human may writeagreed(AGREE-001..003). Reference implementationscripts/check-agreement.mjs. (#433) - Link suspicion / content identity (
CONTRACT.md§16) — git-derived (never stored) suspicion flag overREL/ASSERTION/VERIFICATION/VALIDATIONendpoints and agreement-carrying elements, with a mechanical-procedure hatch for declared bulk migrations. Reference implementationscripts/check-link-suspicion.mjs. (#437) - Deprecation policy (
CONTRACT.md§10.6) — astatus: deprecatedspec must name itsremoved_in:release; window is at least one MAJOR; removal is always a BREAKING entry. NewDEP1doc-lint rule. FGA scheduled for removal in4.0.0, migration recipe pre-staged undermigrations/3.1-to-4.0/. (#429) - Externally-distributed packages (
PACKAGES.md§1, §7.2) — package class with its own version andcompatible_withrange (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 lifecycle —
admitted_at/admitted_by/gate_checks/valid_fromare no longer hand-typed placeholders;SKILL.mdgains an "Admission record and lifecycle" procedure mirroring the CLI's owntransitrix newbehaviour. (#424) - Capability/application maturity converges on the versioned-attribute sidecar (
CONTRACT.md§9.4,05-capability-map.md,10-applications.md) —target_maturityjoinscurrent_maturity/target_dateas 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 renamedVIEW_TYPE;check-notations.mjsC1 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-manifestscope — derived from everyid:undercanon/instead of a hardcoded two-directory list, so newly registered TYPEs are no longer silently omitted. (#428)ingest-cli admit-sourceidempotency — 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;--forcestill mints a genuine duplicate. (#432)check-notationsunit tests wired into CI —scripts/check-notations.test.mjsnow runs innotations-doc-lint.ymlon every PR (previously local-only, blocked by a token-scope gap). (#442)- Duplicated
RISKelement schema content removed (ELEMENT_PRIMITIVES.md§7.26) — broken nested code-fence and duplicated table/prose cleaned up. (#445)
v3.1.0
Bump category: MINOR — additive core vocabulary and tooling only; no migration recipe required.
Added
RISKelement 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 inCONTRACT.md§8.1. RulesRISK-001..004,RISK-COVERAGE-001. (#416)METRICelement type (ELEMENT_PRIMITIVES.md§7.27) — managed indicator (unit / target /direction_of_good/measures), distinct from report-configCOVERAGE_METRIC. RulesMETRIC-001..004. (#417)NEEDelement type +VALIDATIONclaim (ELEMENT_PRIMITIVES.md§7.28,elements/28-validation.md) — stakeholder/user need upstream ofREQUIREMENT;VALIDATIONmirrorsVERIFICATIONbut anchors onNEEDwith a validation-method vocabulary.REQUIREMENT.servesoptional back-reference. RulesNEED-001..002,NEED-COVERAGE-001,NEED-VALIDATION-COVERAGE-001..002,REQ-SERVES-001,VALID-001..006. Worked example undernotations/examples/validation/. (#419)REQUIREMENT.levelandREQUIREMENT.kind— optional ISO/IEC/IEEE 29148 specification-tier ladder (stakeholder/system/software) and functional/quality classification. RulesREQ-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
VERIFICATIONwording — documents verification only (not full V&V);verifieshas only ever resolved toREQUIREMENT. (#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)
.gitignorenotes — staletemplates/commentary trimmed. (#410, #404)
Full changelog: https://github.com/transitrix/methodology/blob/main/CHANGELOG.md