Skip to content

Architecture Decision Records

Index

ADR Decision Status
001 Use SNS for all inter-module communication Accepted
002 Event modules in shared AWS account, not independent services Accepted
003 Each case gets own MySQL schema on shared Aurora Accepted
004 Gradual Rails JSX migration (Webpacker + React 18) Proposed
005 New NGE module for bulk tagging, status, metadata updates Proposed
006 New NGE module for Bates stamp rendering and PDF assembly Proposed
007 New NGE module for custom report generation Proposed
008 Upgrade ES 7.4 → 8.x, migrate query DSL Proposed
009 Modernize video/deposition processing (Litigation suite) Proposed
010 Modernize deposition transcript handling Proposed
011 Store custom fields in S3 + ES instead of MySQL tags In Progress

Cross-ADR Dependency Map

Some ADRs have implicit execution dependencies. This map makes them explicit to aid sequencing and planning.

ADR-001 (SNS)  ─────────────────────────────────────────────────────┐
ADR-002 (Modules) ──────────────────────────────────────────────────┤ Foundation
ADR-003 (Multi-tenant DB) ──────────────────────────────────────────┘
    │  All proposed ADRs build on the accepted foundation
    ├── ADR-004 (Frontend Modernization)
    │       No dependencies on other proposed ADRs.
    │       Can proceed independently.
    ├── ADR-005 (Bulk Operations)
    │       No dependencies on other proposed ADRs.
    │       Prerequisite for: ADR-008 Phase 3 (no fork-based parallelism in Lambda)
    ├── ADR-006 (Bates Stamps)
    │       Phase 1 (NGE path) → independent
    │       Phase 2 (Legacy path) → requires Nutrient API access from Lambda VPC
    ├── ADR-007 (Custom Reports)
    │       Wraps existing search-hit-report-backend Lambda.
    │       No hard dependencies on other proposed ADRs.
    ├── ADR-008 (ES Upgrade + Search Service)
    │   │   Phase 1 (QLE integration) → independent, high value
    │   │   Phase 2 (ES 7.4 → 8.x upgrade) → independent
    │   │   Phase 3 (search-time indexing) → depends on ADR-005 (bulk ops in Lambda)
    │   │
    │   └── Prerequisite for: ADR-011 Phase 2 (FilterSearch → ES migration)
    ├── ADR-009 (Video Processing)
    │       Independent — Litigation suite, separate domain from Discovery.
    │       No dependencies on other proposed ADRs.
    ├── ADR-010 (Deposition Processing)
    │       Independent — Litigation suite, separate domain from Discovery.
    │       No dependencies on other proposed ADRs.
    │       Theater/treatment recommendation: stay in Rails.
    └── ADR-011 (Custom Field Storage)
            Phase 1 (S3 storage + dual read) → independent
            Phase 2 (FilterSearch migration) → depends on ADR-008 Phase 1 (QLE/ES integration)
            Phase 3 (MySQL tag table removal) → depends on Phase 2 completion

Critical Path

The longest dependency chain is:

ADR-008 Phase 1 (QLE integration)
    → ADR-011 Phase 2 (FilterSearch → ES)
        → ADR-011 Phase 3 (MySQL tag removal)

Independent Tracks

These ADRs can proceed in parallel with no cross-dependencies:

  • Track A (Discovery): ADR-005 → ADR-008 → ADR-011
  • Track B (Litigation): ADR-009, ADR-010 (independent of each other)
  • Track C (Frontend): ADR-004
  • Track D (Services): ADR-006, ADR-007 (independent of each other)

Adding a New ADR

  1. Copy template.md to {number}-{short-name}.md
  2. Use the next available number (currently: 012)
  3. Fill in Status, Context, Decision, Consequences, and Risks
  4. Update this README with the new entry
  5. If the ADR depends on or is a prerequisite for other ADRs, update the dependency map
Ask the Architecture ×

Ask questions about Nextpoint architecture, patterns, rules, or any module. Powered by Claude Opus 4.6.