Repository navigation
0.7.1i: bind API migrations to the release lineage (api-migrations registry) - #482
Conversation
The api-architecture gate was red on the 0.7.1 -> release/0.7.0 promotion (#440) with 13 failure-severity diagnostics: 6 modules changed without an exact hash-bound migration entry, and 7 entries from a branch-only lineage that is no longer authoritative. Keep the 6 real 0.7.0 -> 0.7.1 transitions as ACTIVE entries (fromSha256 = release/0.7.0's committed dump, toSha256 = this line's dump, targetVersion 0.7.0) and remove the 7 non-authoritative entries. Git preserves their history; no registry redesign, no retire-with-record mechanism, no DAG. ApiCompatibilityVerifier accepts an entry only when it is ACTIVE or its toSha256 reaches the module's base dump by following entries as a sequence. The removed targets are intermediate states of the epic lineage that never landed in release/0.7.0, so no chain can reach that base: a linear successor chain cannot express a merge of two divergent API lineages, and the release lineage is authoritative. Nothing else changes: no module architecture, no catalog reclassification, no production code, no gate, no baseline. The 5 pre-existing stability inversions need no exemption -- verifyStabilityInversions already reports them as WARNING when the descriptor is present in the base dump. Verified: verify060Architecture PASS 10/10 against release/0.7.0 and against the PR base; spotlessCheck + verifyStaticAnalysis + verifyStaticSafetyGuards green; verifyChangePolicy PASSED.
There was a problem hiding this comment.
Copilot review overview
🔵 Needs a closer look
Correctness hinges entirely on the fromSha256 bindings to the release/0.7.0 base dumps, which are not accessible in this environment, and this gate-registry change for a release promotion warrants human verification of the base-dump hashes.
Review effort: Balanced
Findings: None
What changed in this PR
This PR rebinds the api-architecture quality gate's migration registry (config/quality/api-migrations.yml) to the authoritative release/0.7.0 lineage so the 0.7.1 → release/0.7.0 promotion (#440) passes. The registry authorizes each exact preview/experimental API transition via SHA‑256 hash pairs (fromSha256 = base-branch dump, toSha256 = current committed dump); the prior entries targeted intermediate epic-branch API states that never landed on release/0.7.0, so their targets could not reach the real base dump and failed ApiCompatibilityVerifier's ACTIVE/retained-history check.
Changes:
- Rebinds 6 changed modules to single ACTIVE entries whose
fromSha256isrelease/0.7.0's committed dump andtoSha256is this line's dump, alltargetVersion: 0.7.0. - Removes the non-authoritative branch-only lineage entries (including the chained two-step
:tramai-control-planehistory and the old:tramai-engineentry) and relocates the unchanged:tramai-schedulerentry. - Rewrites the rationale/migration prose for the rebound entries to describe the cumulative 0.7.0 → 0.7.1 transition.
| File | Description |
|---|---|
| config/quality/api-migrations.yml | Replaces branch-lineage migration entries with 6 release-lineage ACTIVE entries (control-plane, engine, persistence-file, persistence-jdbc, sovereign-ops, sovereign-persistence-jdbc) and removes stale entries so the architecture gate passes against release/0.7.0. |
Verification performed during review: all eight toSha256 values (the six rebound modules plus the unchanged :tramai-scheduler/:tramai-orchestration) hash-match their current committed api/*.api dumps exactly; the file contains 11 entries with no duplicate (module, from, to) triples and no remnants of the removed stale hashes. The fromSha256 values bind to origin/release/0.7.0 dumps, which are not present in this review snapshot and therefore could not be independently confirmed.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
80cecf9
into
epic/0.7.1-control-plane-authority
Problem
The
api-architecturecheck was red on the 0.7.1 →release/0.7.0promotion (#440) with 13 failure-severity diagnostics in two classes:ApiCompatibilityVerifieraccepts an entry in exactly two states: ACTIVE (from== base dump,to== current dump, version match) or retained history — which walks from the entry'stoSha256forward to the base dump hash. The 7 stale entries point at intermediate API states of the epic lineage that never landed inrelease/0.7.0, so their targets cannot reach that base by any chain. A linear successor chain cannot express a merge of two divergent API lineages, and the release lineage is the authoritative one.Change
One file:
config/quality/api-migrations.yml(+33 / −39).fromSha256=release/0.7.0's committed dump,toSha256= this line's dump,targetVersion: 0.7.0::tramai-control-plane,:tramai-engine,:tramai-persistence-file,:tramai-persistence-jdbc,:tramai-spring-boot-starter-sovereign-ops,:tramai-spring-boot-starter-sovereign-persistence-jdbc.Rule this establishes:
api-migrations.ymldescribes the authoritative released API lineage, not every development branch that ever existed.Not touched
:tramai-platformpreview →:tramai-serverinternal) need no exemption and no follow-up:verifyStabilityInversionsalready emits those withDiagnosticSeverity.WARNINGwhen the descriptor is present in the base dump — the existing base-dump comparison is the mechanism. No new baseline, no new abstraction.Verification
./gradlew verify060Architecture -PchangePolicyBase=origin/release/0.7.0— PASS, 10/10 checks, 0 failure-severity diagnostics (this is the exact Epic/0.7.1 control plane authority #440 base that was failing)../gradlew verify060Architecture -PchangePolicyBase=2ba0fe46(this PR's base) — PASS, 10/10, 0 failures../gradlew spotlessCheck verifyStaticAnalysis verifyStaticSafetyGuards— BUILD SUCCESSFUL../gradlew verifyChangePolicy -PchangePolicyBase=2ba0fe46— PASSED, 1 changed file, no violations.