Skip to content

ERP Plus Governance & System Evolution

This document defines how ERP Plus evolves over time in a controlled, predictable, and scalable way.

It ensures the system does NOT degrade as features and teams grow.


Core Principle

ERP Plus is NOT static.

It is:

a continuously evolving modular system with strict architectural governance


Governance Model

ERP Plus evolves under 4 governance rules:


1. Architectural Consistency

Any change MUST respect:

  • engine isolation
  • data flow rules
  • account boundaries
  • public API contracts

2. Controlled Evolution

Changes are introduced through the official ERP Plus delivery workflow.

Every change must be traceable from planning to deployment.

The platform uses:

  • Taiga for product management
  • GitHub for source control
  • GitHub Actions for CI/CD
  • ADRs for architectural decisions

No feature should appear directly in source code without a corresponding planning artifact.

Accepted planning artifacts:

  • Epic
  • User Story
  • Issue

User Stories are the preferred implementation unit.

Issues are used for:

  • bug reports
  • support requests
  • operational incidents
  • customer feedback

Epics are optional and are used when multiple User Stories belong to a larger initiative.


3. No Hidden Coupling

The system MUST prevent:

  • cross-engine dependencies
  • implicit shared logic
  • undocumented behavior
  • direct model access across engines

4. Backward Compatibility First

Breaking changes are allowed ONLY if:

  • versioning strategy is applied
  • migration path is defined
  • ADR is documented

Evolution Flow

ERP Plus evolves through a controlled product delivery process.

The complete planning, execution, validation, and release workflow is documented in:

Product & Delivery Management

Taiga Workflow

Release Management

System governance defines the rules under which changes may occur, while Product & Delivery Management defines how work moves from planning to production.


Product Delivery Governance

ERP Plus uses a dedicated product management process based on:

  • Taiga
  • Sprint Planning
  • User Stories
  • Tasks
  • Release Management

The complete delivery workflow is maintained in:

Product & Delivery Management

Taiga Workflow

Sprint Process

Issue Management

Release Management

This document focuses on governance rules and system evolution, not on execution workflows.


Versioning Strategy

ERP Plus uses semantic versioning per engine conceptually:

MAJOR  breaking architectural or API changes
MINOR  new features (backward compatible)
PATCH  fixes and internal improvements

Contributor Governance

ERP Plus supports two contributor models.

Internal Contributors

Internal contributors work directly from Taiga User Stories.

Branch naming:

feature/TG-123-user-invitations
bugfix/TG-456-fix-stock-calculation
docs/TG-789-update-workflow

Every implementation branch must reference a Taiga User Story.

Community Contributors

External contributors do not require access to Taiga.

Branch naming:

feature/user-invitations
bugfix/fix-stock-calculation
docs/update-workflow

Community contributions enter the planning process only after maintainers review and accept them.


Engine Evolution Rules

Each engine evolves independently but under system constraints:

Allowed:

  • adding new services
  • extending public APIs
  • internal refactoring
  • improving performance

Forbidden:

  • breaking public contracts without versioning
  • accessing other engine internals
  • bypassing account or auth rules
  • silent behavioral changes

Deprecation Strategy

When removing or changing behavior:

Step 1 — Mark as Deprecated

Feature marked as deprecated in docs + code comments

Step 2 — Migration Path

Provide:

  • alternative implementation
  • migration guide
  • timeline

Step 3 — Removal (Later Release)

Only after:

  • usage is eliminated
  • migration window is complete
  • ADR is updated

ADR Governance

Architecture Decisions MUST be documented when:

  • introducing new engines
  • changing data flow
  • modifying account system
  • altering authentication model

ADR Format

ADR-XXXX: Title
Context
Decision
Consequences

Pull Request Governance

Pull Requests are the primary validation mechanism between planning and delivery.

Internal Workflow

User Story
↓
Branch
↓
Pull Request
↓
Review
↓
develop

When a Pull Request is opened against:

develop

the corresponding User Story should be moved to:

Ready For Test

When changes reach:

main

the corresponding User Story may be moved to:

Done

according to the team's release policy.

Community Workflow

Community contributors submit Pull Requests without Taiga integration.

Maintainers are responsible for mapping accepted contributions into the planning process when necessary.


CI/CD as Governance Layer

CI is NOT just testing.

It enforces governance:

  • Rubocop → style consistency
  • RSpec → behavior validation
  • Brakeman → security rules
  • GitHub Actions → pipeline enforcement

Security Governance

Security changes must:

  • be reviewed by maintainers
  • pass CI security scans
  • respect account isolation
  • avoid privilege escalation risks

System Stability Rules

ERP Plus prioritizes:

1. Stability over speed

No architectural shortcuts in production.

2. Explicit over implicit

All behavior must be documented or visible in code.

3. Isolation over convenience

Engines remain independent even if it costs complexity.


Scaling Governance

As teams grow:

  • engines become team-owned modules
  • boundaries prevent merge conflicts
  • CI ensures consistency
  • docs become onboarding authority

Anti-Patterns (CRITICAL)

Avoid:

  • “quick fixes” that bypass engines
  • hidden cross-engine calls
  • undocumented feature behavior
  • skipping ADRs for structural changes

Mental Model

ERP Plus evolves like:

Controlled ecosystem where every change is validated, documented, and bounded by architecture rules.

Final System Vision

ERP Plus is:

a living modular monolith with enforced architectural governance and controlled evolution over time


What This Enables

  • ✔ long-term scalability
  • ✔ multi-team development
  • ✔ predictable architecture growth
  • ✔ safe feature evolution
  • ✔ enterprise-level maintainability