Skip to main content

0021: Contribution and Proposal Management Strategy

Date: 2025-08-13

Status: Proposed

Context

As the Citadel project grows, it will receive feature requests, bug reports, and architectural suggestions from a wide range of contributors, including the open-source community and stakeholders representing paying customers. We need a clear, transparent, and structured process for managing these contributions to ensure that all ideas are evaluated fairly and that development efforts align with the project's strategic goals and architectural principles.

Decision

We will adopt a formal, structured process for managing all contributions. This process makes a clear distinction between bug reports and new feature proposals.

  1. Bug Reports (GitLab Issues)

    • The GitLab issue tracker is to be used exclusively for reporting verifiable bugs in the existing software.
    • Feature requests or general discussions submitted as issues will be closed with a request to follow the formal proposal process.
  2. Feature Proposals (Citadel Enhancement Proposal - CEP)

    • Entry Point: The sole entry point for any new feature or significant change is a Citadel Enhancement Proposal (CEP).
    • Process:
      1. A contributor creates a new CEP document from a template in a dedicated feature branch (e.g., cep/add-saml-support).
      2. The CEP must be detailed enough for a human or AI to begin implementation. It must clearly define the problem, the proposed solution, user stories, and technical requirements.
      3. The contributor opens a Merge Request (MR) to merge the CEP into the main branch.
    • Discussion & Review: The MR itself serves as the formal forum for discussion and review. This keeps the discussion tied directly to the proposed change.
    • Decision:
      • Acceptance: Merging the MR into main signifies that the CEP is Accepted. The proposal is now part of the official project documentation.
      • Rejection/Deferral: Closing the MR without merging signifies that the proposal is Rejected or Deferred. The history remains in the closed MR for future reference.
  3. Architectural Design (ADR)

    • Trigger: An Accepted CEP that requires a significant architectural change, introduces a new service, or modifies a core cross-cutting concern must be accompanied by a new ADR.
    • Relationship: The CEP defines the problem, while the ADR defines the architectural solution ("how").
  4. Implementation (Checklist)

    • Trigger: Once a CEP is Accepted and any required ADRs are approved, the work is broken down into a detailed implementation checklist.
    • Process: The checklist is added to the project backlog and development can begin, following the project's TDD and layered architecture principles.

Consequences

Positive

  • Clarity & Focus: The main branch contains only accepted proposals and working code, providing a clean context for developers and AI assistants.
  • Quality: Ensures that ideas are thoroughly vetted and designed before implementation begins.
  • Prioritization: Creates a formal mechanism for prioritizing work based on both community interest and business needs.
  • Traceability: The MR serves as a permanent, auditable record of the discussion and decision-making process for each proposal.

Negative

  • Process Overhead: This formal process introduces more steps than an informal "just do it" approach. This is a deliberate trade-off in favor of long-term quality and maintainability.

This ADR formalizes the governance model for how ideas become reality within the Citadel project. It prioritizes a clean development history and rigorous, transparent decision-making.