Skip to content

Architecture Decision Records

Each record captures the context, decision, and consequences of one design choice in the fork management system. They are grouped by the question they answer.

Impact Levels

Critical - Fundamental to system operation; changes require careful migration planning

High - Significant workflow effects; changes affect multiple components

Medium - Localized improvements; changes have bounded effects

Catalog

Numbers 017, 032, and 034 were retired and are intentionally unused.

Foundation & Core Architecture

"What are the fundamental design choices?"

Foundation decisions that define the system's structure and approach:

ADR Decision Impact
001 Three-Branch Strategy Critical
002 GitHub Actions Automation Critical
003 Template Repository Pattern Critical

Repository Initialization & Setup

"How do I create and configure a new fork?"

Decisions governing repository initialization, configuration, and security setup:

ADR Decision Impact
006 Two-Workflow Initialization High
007 Workflow Bootstrap Pattern Medium
008 Centralized Label Management Medium
016 Initialization Security Handling Medium

Upstream Synchronization & Integration

"How do I keep my fork in sync with upstream?"

Decisions for synchronizing with upstream repositories and integrating changes:

ADR Decision Impact
005 Conflict Management Strategy Critical
009 Asymmetric Cascade Review Medium
019 Cascade Monitor Pattern High
021 Pull Request Target Pattern Medium
023 Meta Commit Strategy High
024 Duplicate Prevention Architecture Medium
038 Upstream Filter Transform Critical
039 Customer-Tier Mirror Sync High

State Management & Tracking

"How do I track progress and workflow state?"

Decisions for managing workflow state and tracking lifecycle:

ADR Decision Impact
020 Human-Required Label Strategy High
022 Issue Lifecycle Tracking Medium

Build, Test & Dependencies

"How do I build, test, and maintain dependencies?"

Build architecture, dependency management, and documentation:

ADR Decision Impact
025 Java/Maven Build Architecture High
026 Dependabot Security Updates Medium
027 Documentation Generation Medium

CI/CD & Deployment

"How do services get built and published per PR?"

Decisions for the container image build, the image registry, the acceptance-test contract, and the deploy lane designed in Borrow, Prove, Restore:

ADR Decision Impact
033 GHCR as Service Image Registry Medium
035 Azure-Only Maven Profile Restriction Medium
036 Workflow Trust Boundaries for CI/CD High
037 Engineering System Owns the Canonical Service Dockerfile High
040 Descriptor-Owned Acceptance Contract High
041 Borrow, Prove, Restore Lane High
042 Paired Loader Image from the Service Fork Medium

Release Management

"How do releases get created and published?"

Version management and release automation:

ADR Decision Impact
004 Release Please Versioning High

Template Maintenance & Evolution

"How do fork repositories stay updated with template improvements?"

Decisions for propagating template updates to fork repositories:

ADR Decision Impact
011 Configuration-Driven Sync High
012 Template Update Propagation High
018 Fork-Resources Staging Medium
031 Template Sync Duplicate Prevention Medium

Workflow Infrastructure & Patterns

"What are the reusable building blocks?"

Technical patterns and infrastructure for workflow implementation:

ADR Decision Impact
010 YAML-Safe Shell Scripting Medium
013 Reusable GitHub Actions Medium
014 AI-Enhanced Workflows (superseded) None
015 Template-Workflows Separation Medium
028 Workflow Script Extraction Medium
029 GitHub App Authentication High
030 CodeQL Summary Job Pattern High

Lessons drawn from these decisions are collected in Learnings.