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¶
- Copy
template.mdto{number}-{short-name}.md - Use the next available number (currently: 012)
- Fill in Status, Context, Decision, Consequences, and Risks
- Update this README with the new entry
- 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.