Repository navigation
[Docs] ADR-MF-01 — Generic Git / Features / State (design gate for PR-1) #160
Copy link
Copy link
Closed
Labels
priority:P1Major user-facing defect or release blockerMajor user-facing defect or release blockertype:docsDocumentation workDocumentation work
Description
Problem
The Multi-Forge architecture (v1.3.2-final) is frozen, but its first decision
cluster exists only in the external architecture document. The repository needs an
accepted ADR recording: Generic Git as the base product, features as additive
capabilities, the project-scope feature model, and the State V2 schema — before any
implementation (PR-1) starts.
Source: Multi-Forge v1.3.2-final §15 (ADR-MF-01).
Expected outcome
An accepted ADR (3–5 pages, decisions only — Context · Decision · Rejected
alternatives · Consequences) that freezes:
- Generic Git first; profiles are governance levels, features are optional
capabilities — the two are independent ("Profiles != Features"). - The Feature model:
name,scope,components[],conflicts[];
forge-githubconflicts withforge-gitlab; 0 or 1 active work forge. - State schema V2:
active_features[], a single sharedproject_install_state(),
read-only V1 projection, state-last persistence, reuse of the existing
per-project lifecycle lock. - Legacy compatibility:
forge-githubcompatibility default for legacy projects;
legacy missing managed files remain absent during migration (never resurrected);
github-templatesID preserved;gitlab-templatesadded;feature switch none. STATE_CONFLICTING_WORK_FORGE_FEATURESas the refusal for a state naming two
work forges.- Dogfood
AGENTS.mdprotection; GHES support deferred until qualified.
Acceptance criteria
- ADR written in
docs/adr/following the repository series format and the
decisions listed above; maximum 3–5 pages. - Profiles-vs-features separation stated explicitly, with the rejected
alternative (extending profiles into capability bundles) recorded. - State V2 schema frozen with the V1 read-only projection and state-last
persistence rules; no second migration transaction system. - Legacy migration semantics frozen: compatibility default, absent files stay
absent, templates IDs preserved, switch transaction semantics. - Accepted by the maintainer (explicit approval recorded on this Issue or the
PR) before PR-1 begins. - Issue [Architecture] Separate governance profiles from optional capabilities #23 is updated with the accepted Feature model this ADR records.
Out of scope
- Implementing features/state V2 (PR-1).
- Workflow/claims neutrality (ADR-MF-02) and release V3 (ADR-MF-03).
- GHES, GitLab Self-Managed qualification, universal Forge SDK.
Context
- Issue [Architecture] Separate governance profiles from optional capabilities #23 — Feature design gate; this ADR records the design [Architecture] Separate governance profiles from optional capabilities #23 accepts.
- ADR-0009 — distribution profiles and lifecycle ownership (current model).
ainative/lifecycle/data/profiles.json,components.json.- Blocks PR-1.
Dependencies
- None. Blocks PR-1 ([Feature] Profiles / Features / State V2 (PR-1) #162) together with [Architecture] Separate governance profiles from optional capabilities #23.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
priority:P1Major user-facing defect or release blockerMajor user-facing defect or release blockertype:docsDocumentation workDocumentation work
Activity
docs(adr): ADR-MF-01 - Generic Git, features and state V2 (Refs #160) (…
Rwanbt commentedon Sep 16, 2026
Reopened: this work was merged into
mainby mistake.mainhas been restored to its pre-merge state (9301253); the tested work now lives ondev(merge commit 0721237). The Issue stays open until the finaldev->mainpromotion, once the whole plan is implemented and tested.feat: Multi-Forge v1 — production promotion (dev -> main) (#176)
Rwanbt commentedon Sep 17, 2026
Done: the work is merged into
main(squash 8f319ad via PR #176, full CI matrix green including the Production Gate). Closed as completed.