Skip to content

[Docs] ADR-MF-01 — Generic Git / Features / State (design gate for PR-1) #160

Closed

Description

@Rwanbt

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-github conflicts with forge-gitlab; 0 or 1 active work forge.
  • State schema V2: active_features[], a single shared project_install_state(),
    read-only V1 projection, state-last persistence, reuse of the existing
    per-project lifecycle lock.
  • Legacy compatibility: forge-github compatibility default for legacy projects;
    legacy missing managed files remain absent during migration (never resurrected);
    github-templates ID preserved; gitlab-templates added; feature switch none.
  • STATE_CONFLICTING_WORK_FORGE_FEATURES as the refusal for a state naming two
    work forges.
  • Dogfood AGENTS.md protection; 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

Dependencies

Activity

  1. added
    type:docsDocumentation work
    priority:P1Major user-facing defect or release blocker
    on Sep 16, 2026
  2. Rwanbt commented on Sep 16, 2026

    @Rwanbt
    OwnerAuthor

    Reopened: this work was merged into main by mistake. main has been restored to its pre-merge state (9301253); the tested work now lives on dev (merge commit 0721237). The Issue stays open until the final dev -> main promotion, once the whole plan is implemented and tested.

  3. reopened this on Sep 16, 2026
  4. Rwanbt commented on Sep 17, 2026

    @Rwanbt
    OwnerAuthor

    Done: the work is merged into main (squash 8f319ad via PR #176, full CI matrix green including the Production Gate). Closed as completed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority:P1Major user-facing defect or release blockertype:docsDocumentation work

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions