# MDA Catalog & Content Domain Model

**Status:** Approved domain model (conceptual — no database tables, no application code)
**Scope:** Academic Courses, Professional Courses, Education Boards, Grades, Subjects, Categories, Sub-Categories, Courses, Topics, Lessons, and learning content.
**Sources:** `Documents/super_admin/curriculum_organization/`, `Documents/super_admin/course_management/`, `Documents/super_admin/content_management/`, `Documents/super_admin/content_approval_workflow/`, `Documents/super_admin/resource_library_management/`, `Documents/super_admin/membership_plan_management/`, `Documents/student/course_access_learning/`, `Documents/student/subscription_management/`, `Documents/training_institute/custom_learning_paths/`, `Documents/project.md`.

> This document maps the domain only. It deliberately does **not** define database tables, migrations, or API endpoints.

---

## 1. Academic Structure Map

```
Education Board (CAPS, Cambridge, IB, CBSE, …)
└── Grade (Grade R … Grade 12+, per-board set, ordered)
    └── Subject (core/elective, per-grade set)
        ├── Learning Objectives (per grade / per subject)
        └── Chapter (ordered)
            └── Topic (ordered; importance: high/medium/low; difficulty mark)
                ├── Content items (videos, podcasts, documents)
                ├── Assessments (learning domain)
                ├── Resources (notes, worksheets, mind maps, flashcards, FAQs)
                └── Progress attachment point (learning domain)
```

Key properties (from `curriculum_organization/` and `course_management/academic_course_management.md`):

- **Board** is the top of the academic hierarchy. Boards are **board-specific trees**: the same grade/subject name under different boards are *distinct nodes* with distinct mappings. Boards can be archived (never deleted while mapped).
- **Grade** belongs to a board; each board owns its own grade set. Grades carry level, age band, description, order, and status.
- **Subject** belongs to a grade (within a board's context); each grade owns its subject set. Subjects carry name, code, type (core/elective), status.
- **Chapter → Topic** is the finest level of the academic tree. The **topic is the unit of attachment** for content, assessments, and progress. Topics carry importance (high/medium/low), difficulty, prerequisite links (directional, within or across subjects), and cross-subject links (prerequisite / related / applied-in).
- **Courses** are placed at a **Board → Grade → Subject** node (exactly one placement per course).
- **Board-wise certification** is configured per board (completion criteria per grade/subjects) and is a separate mechanism from course-completion certificates.

> **Note on "Province":** the requested map includes `Province` between Board and Grade, but **no requirement document places Province in the curriculum hierarchy**. "Province" appears only as a student profile field (registration onboarding, personal information — city/province). See Open Decision OD-1.

---

## 2. Professional Structure Map

```
Category (IT, Business, Languages, Creative, …)
├── Description + Objectives (learner-facing, measurable)
├── Skill Tags (from a shared platform skill-tag vocabulary)
└── Sub Category (Web Development, Data Science, Finance, …)
    ├── Career Path Suggestions (roles the domain leads to)
    ├── Skill Progression Mapping (foundational → advanced; cross-sub-category links)
    └── Course (professional)
        ├── Overview, Learning Outcomes
        ├── Instructor Profile (name, credentials, bio)
        ├── Duration & Effort Estimate
        ├── Prerequisites (recommended or enforced) + Recommendations (before/after)
        ├── Industry Certification Alignment
        └── Real-World Projects
```

Key properties (from `curriculum_organization/category_management.md`, `sub_category_management.md`, `course_management/professional_course_management.md`):

- **Category** is the top of the professional tree and is **explicitly a separate organizing tree from the academic board/grade/subject hierarchy**. A course is organized under one context or the other, "not both ambiguously".
- **Sub Category** belongs to **exactly one** major category (clear parentage).
- Professional courses carry richer attributes than academic ones: outcomes, instructor, duration/effort, prerequisites, certification alignment, projects.
- **Skill tags** come from a consistent platform-wide vocabulary (a shared tag catalog), enabling browse/filter by skill.
- **Career tracks / certification tracks / all-access plans** (membership plans) reference sets of professional courses — a catalog dependency from the subscription domain.

---

## 3. Content Hierarchy

There are **two parallel structures** that content hangs off:

### 3.1 The Course Tree (internal to a course)

```
Course
└── Module (major section, ordered)
    └── Unit (lesson / topic / activity, ordered)
        ├── Content items (video, podcast, document)
        ├── Assignments & Projects (hands-on)
        ├── Downloadable Resources & Templates
        └── Completion requirement (per unit)
```

- The **module-wise breakdown** is the course's internal map; the **unit is the unit of content and progress**.
- **Sequential learning path**: progression rule per course or per module — complete-in-order (locked) vs. free navigation.
- **Certificate upon completion** is configured per course and issued automatically.

### 3.2 The Curriculum Tree (academic)

```
Subject (grade, board) → Chapter → Topic → Content items
```

- Content units assigned to a course **can map to curriculum topics** (mapping, not identity — see OD-4).

### 3.3 Content Items and Media

```
Content Item (video tutorial | podcast/audio lesson | document)
├── Metadata: title, description, topic, subject, difficulty
│            (beginner/intermediate/advanced), estimated completion time, tags
├── Media:
│   ├── Video file (HD, processed for streaming)
│   ├── Subtitle tracks (multiple languages)
│   ├── Audio file (podcast)
│   └── (images/audio on flashcards)
├── Lifecycle status: published | unpublished | archived | deleted
├── Review status: pending | in review | approved | rejected
├── Versions (append-only; current version is what learners see)
└── Attachments:
    ├── Resources (PDF notes, key-concepts summary, worksheets, solved examples,
    │             external links, formula sheets, case studies, infographics, templates)
    ├── Flashcards (AI-generated drafts → human-approved decks; community decks)
    ├── Mind Map (per topic; interactive nodes linking to videos/resources)
    └── FAQs (per video; searchable database; teacher-verified responses)
```

- **Assignment is multi-level**: a content item is assigned to a **course, subject, and topic** as appropriate; a resource is assigned to a **video, topic, and subject**.
- **Age-appropriateness tagging** (grade/age band) is a surfacing control on content, separate from structural placement.
- **Effectiveness tracking** (completion rates, drop-off points, feedback scores) is measured per content item — data lives in the learning/analytics domains, keyed to the content item.

---

## 4. Entity Definitions (what exactly is what)

| Term | Definition |
|---|---|
| **Education Board** | Top-level academic context (CAPS, Cambridge, IB, …). Owns its own grade/subject/topic tree. Archivable, not deletable while mapped. |
| **Grade** | A level within a board's tree (Grade R … 12+), ordered, with age band and learning objectives. Board-specific. |
| **Subject** | A discipline offered at a grade within a board (Mathematics, …). Owns a chapter/topic breakdown, difficulty progression, and a subject resource library. |
| **Chapter** | A major unit of a subject's breakdown for a grade, ordered. |
| **Topic** | The finest node of the academic tree (inside a chapter). **The unit of attachment** for content, assessments, progress, mind maps, and importance/difficulty/prerequisite marks. |
| **Category** | Top-level professional domain (IT, Business, …). Separate tree from the academic hierarchy. |
| **Sub Category** | A specialized domain inside exactly one category (Web Development, …). Carries career path suggestions and skill progression. |
| **Course** | A teachable, enrollable unit. Two kinds: **Academic** (placed at Board→Grade→Subject) and **Professional** (placed at Category→Sub Category). Has status (draft/published/archived), visibility, availability, and an internal module/unit structure. |
| **Module** | A major section inside a course, ordered. |
| **Unit / Lesson** | A learning unit inside a module — the docs use "units (lessons, topics, activities)". The unit is where content attaches and where per-unit completion is tracked. (See OD-2 on whether "lesson" is a distinct type.) |
| **Content Item** | A piece of learning material: video tutorial, podcast (audio lesson), or document. Has metadata, media, lifecycle status, review status, and versions. |
| **Media** | The binary payload of a content item: video file, audio file, subtitle tracks, images. Stored in object storage; only metadata lives in the catalog. |
| **Resource** | Supporting material attached to content or structure: PDF notes, key-concepts summaries, practice worksheets, solved examples, external links, formula/cheat sheets, reference guides, case studies, research papers, infographics/diagrams, templates. Has its own lifecycle, versions, and multi-level assignment (video/topic/subject). |
| **Flashcard / Deck** | Recall cards (concept front / definition back), optionally with image/audio, categorized by topic and difficulty. Sources: AI-generated (from a video, human-approved), curated, or community-created (moderated public library). |
| **Mind Map** | A per-topic interactive visual map of concepts; nodes link to related videos/resources; color-coded by importance. |
| **FAQ** | A question/answer pair, per video or in the searchable database; student-submitted questions are moderated; responses are teacher-verified. |
| **Skill Tag** | A vocabulary term from the platform's shared skill-tag catalog; tags categories and courses; enables skill-based browsing. |
| **Learning Path (custom)** | A curated, sequenced set of courses/units for a goal, assigned to a learner or group (super admin and institute). Distinct from a catalog track. |
| **Career Track / Certification Track** | A subscription bundle defined over a set of professional courses (+ assessment for certification tracks). |

---

## 5. Multi-Placement: What Can Belong to Multiple Places

Allowed by the requirements:

| Item | Can belong to multiple… | Evidence |
|---|---|---|
| **Content item** | Multiple nodes at multiple levels — "assigned to courses, subjects, and topics"; multi-level assignment is explicit | `content_organization.md` 3.1 |
| **Resource** | Multiple videos, topics, and subjects | `resource_lifecycle.md` 6.2 |
| **Course** | Multiple **groups** (a course can be assigned to multiple groups; a group can have multiple courses) | `course_assignment.md` 5.1 |
| **Course** | Multiple **custom learning paths** (paths select courses/units) | `course_assignment.md` 5.2, institute `custom_learning_paths/` |
| **Course** | Multiple **subscription bundles** (career tracks, certification tracks, all-access) | `skill_path_subscriptions.md` |
| **Topic** | Multiple **prerequisite/cross-subject links** (a topic can be prerequisite of many; have many prerequisites) | `topic_chapter_organization.md` 6.2, `subject_management.md` 3.3 |
| **Flashcard deck** | Public library + topic/difficulty categorization | `flashcard_management.md` |
| **Skill tag** | Multiple categories and courses (shared vocabulary) | `category_management.md` 4.3 |

**Single-placement (explicitly enforced):**

- A **course has exactly one structure placement** (one board→grade→subject node, or one category→sub-category node) — "no ambiguous context".
- A **sub-category belongs to exactly one category**.
- **Grades/subjects are board-specific**: same name under different boards = distinct nodes.
- A **video is organized under a chapter/topic** as its learning context (its primary placement), while still being assignable to courses/subjects/topics.

**Not explicitly allowed (open):** whether one content item can be assigned to *multiple different courses* simultaneously — multi-level assignment is documented, but multi-course assignment is not stated. See OD-5.

---

## 6. Content Ownership & Workflow

### 6.1 Roles

| Role | Responsibility |
|---|---|
| **Creator / Content Owner** | Produces and uploads content (videos, podcasts, resources, flashcards, mind maps). The docs describe "the Super Administrator (or the content owners they coordinate)" — a distinct *creator* user role is **not** defined in the user-type list (see OD-6). Community creators: learners/teachers (flashcards, forum posts, Q&A). |
| **Reviewer** | Assigned per content item by subject/type/expertise; performs quality, accuracy, and curriculum-standards checks. Can be a subject reviewer or senior reviewer depending on workflow step. |
| **Moderator** | Handles community content (flashcards, forums, Q&A) and learner reports. |
| **Teacher** | Verifies Q&A responses (attribution recorded). |
| **Super Administrator** | Configures the workflow (steps, reviewers, variants), works the queue, approves/rejects/flags, manages versions, publishes, and owns all catalog structure. |
| **Instructor** | Profile (name, credentials, bio) assigned to a professional course. Whether an instructor is a platform user account is not specified (see OD-7). |

### 6.2 Workflow (platform content)

```
Upload (creator)
  → Review Queue (status: pending; ordered, aging visible; filter by type/subject/creator)
  → Assignment to reviewer (by subject/type/expertise; workload visible)
  → In Review (quality check + accuracy check + curriculum-standards check)
  → Approved  → live in its assigned context (publication)
  → Rejected (specific reasons; creator notified; resubmission re-enters queue)
  → Flagged (inappropriate / incorrect / outdated / other; can apply to LIVE content;
             triggers review, takedown, or correction; resolved when cleared)
```

- **Workflow is configurable**: steps, step order, step requirements, reviewers, and **variants per content type/risk** (single-step for low-risk, multi-step for high-risk).
- **Review status per item**: pending → in review → approved / rejected; transitions recorded; creator notified on change.
- **Feedback to creators** is a first-class channel (specific issue + fix + suggestion; per-creator history).

### 6.3 Versioning

- A **version** is recorded on every significant change (new media, metadata revision, re-upload).
- Version record: change, actor, timestamp. **Append-only** — a restore is itself a new version.
- Learners always see the **current (latest) version**; retention per platform policy.
- **Replacement** (new media) is validated before going live; learner impact (mid-consumption progress) is handled explicitly (carry over or reset); rollback supported.
- **Resources** have the same version-control model.

### 6.4 Publication (lifecycle)

- **Content**: published → unpublished (offline, data preserved) → archived (retired, preserved); reversible; **deletion** is permanent, guarded by a dependency check (no references, no learner progress), and a last resort.
- **Courses**: draft → published (gated by readiness check: content complete, structure sound, profile set) → archived (existing learners keep access); reversible (re-publish, re-draft).
- **Visibility vs. availability** are separate course controls: public / restricted / hidden × public / by-assignment / by-audience; academic courses are scoped to their board/grade context.
- **Community content** (flashcards, forums, Q&A): moderation queue → approve / reject / remove; reporting system (learner reports → review → takedown/correction/dismissal); age-appropriate filtering by age rating.

---

## 7. Domain Dependencies

### 7.1 On Users (identity domain)

- **Student profile** carries board, grade, and (optionally) school — the keys for board-appropriate surfacing and age-appropriate filtering.
- **Reviewers, moderators, teachers, content owners** must be identifiable users (attribution on every review/version/audit event).
- **Instructor profiles** on professional courses (account status open — OD-7).
- **Training institutes** build custom learning paths from catalog courses and assign them to their students; **super admin** assigns courses to groups and builds custom paths.
- **Parents** monitor child progress that is keyed to courses/units (indirect dependency).
- **Groups/cohorts/segments** are the assignment targets for courses and batch assessments.

### 7.2 On Subscriptions & Billing (identity_billing domain)

- **Academic plans** are priced **grade-wise and subject-wise** → plans reference grade/subject catalog nodes; a subscription grants access to *subjects* (and their content).
- **Professional access** is **course-wise** → individual course purchase, career-track bundles, certification tracks, and all-access (whole professional catalog) all reference courses.
- **Enrollment is gated by subscription**; locked content requires upgrade/purchase; access restores on renewal.
- **Download permissions** (offline learning) are tiered by subscription plan and apply to content items and resources.
- **Pricing/discounts** attach to plans and to individual professional courses.
- **Certificates** (course completion, board-wise) are issued on completion — completion is a learning event, certificate records are identity/billing-adjacent.

### 7.3 On Learning (learning domain)

- **Progress attaches to topics and units** (the catalog defines the attachment points; learning stores the state).
- **Watch progress / resume position** is per content item (video/podcast).
- **Prerequisite enforcement** (topic-level and course-level) drives learning-order warnings/locks.
- **Per-unit completion requirements** (watch lesson, do activity, pass check) gate sequential progression.
- **Assessments** (quizzes, exams, batch assessments, video-wise assessments) attach to courses/topics; question banks and attempts live in the learning domain.
- **SRS / flashcard recall practice** consumes decks categorized by topic/difficulty.
- **Effectiveness tracking** (completion rates, drop-off points, feedback scores) is measured per content item.
- **Custom learning paths** (super admin + institute) are sequenced sets of courses/units with tracked progress.
- **Board-wise certification** evaluates learner progress against board-configured requirements.
- **Live sessions** (live classes, doubt clearing, webinars) are scheduled against courses; recordings re-enter the content pipeline (see OD-8).

### 7.4 On Engagement / Analytics

- Notifications on review-status changes, rejections, batch-assessment reminders, and certificate issuance.
- Browsing/enrollment/purchase event logging feeds analytics.
- Content effectiveness metrics are analytics reads keyed to catalog items.

---

## 8. Glossary

| Term | Meaning |
|---|---|
| **Academic course** | A course placed under Board → Grade → Subject; part of the academic curriculum tree. |
| **Professional course** | A course placed under Category → Sub Category; carries outcomes, instructor, duration, certification alignment. |
| **Board** | An education board (CAPS, Cambridge, IB, CBSE); top of the academic tree; owns a distinct curriculum tree. |
| **Board-wise certification** | A credential issued when a learner meets a board's configured completion requirements for a grade/program. |
| **Category** | Top-level professional domain (IT, Business, Languages, Creative). |
| **Sub Category** | Specialized domain within one category (Web Development, Data Science, …). |
| **Grade** | A level in a board's tree (Grade R … 12+), with age band and learning objectives. |
| **Subject** | A discipline at a grade within a board; owns chapters/topics and a resource library. |
| **Chapter** | Ordered major unit of a subject's breakdown. |
| **Topic** | Finest academic node; unit of attachment for content, assessments, progress; carries importance, difficulty, prerequisites. |
| **Course** | Enrollable teachable unit with status, visibility, availability, and module/unit structure. |
| **Module** | Ordered major section inside a course. |
| **Unit / Lesson** | Learning unit inside a module (lesson, topic, or activity); unit of content attachment and completion. |
| **Content item** | A video tutorial, podcast, or document with metadata, media, lifecycle, review status, and versions. |
| **Media** | Binary payload (video, audio, subtitle tracks, images) in object storage. |
| **Resource** | Supporting material (notes, worksheets, formula sheets, case studies, infographics, templates, external links) with its own lifecycle and multi-level assignment. |
| **Flashcard / Deck** | Recall cards; AI-generated (approved), curated, or community-created (moderated). |
| **Mind Map** | Per-topic interactive concept map linking to videos/resources, color-coded by importance. |
| **FAQ** | Curated question/answer per video or in the searchable database; teacher-verified responses. |
| **Skill Tag** | Shared-vocabulary tag on categories/courses enabling skill-based discovery. |
| **Career Path Suggestion** | Roles a sub-category's skills lead to. |
| **Skill Progression** | Foundational→advanced sequencing of skills within/across sub-categories. |
| **Learning Path (custom)** | Curated, sequenced set of courses/units assigned to a learner/group. |
| **Career Track / Certification Track** | Subscription bundle over a set of professional courses (certification tracks add an assessment). |
| **All-access plan** | Monthly subscription covering the entire professional catalog. |
| **Review Queue** | The pending-review list; content enters on upload, leaves on approve/reject/flag. |
| **Reviewer** | Person assigned to review content by subject/type/expertise. |
| **Flag** | A marker (inappropriate/incorrect/outdated/other) on content, including live content; distinct from rejection. |
| **Rejection** | Definitive non-approval with specific reasons; resubmission allowed. |
| **Version** | Append-only record of a significant content change; restore creates a new version. |
| **Publication** | Making content/course live (published); unpublish takes offline; archive retires; delete removes (guarded). |
| **Readiness check** | Gate before course publish: content complete, structure sound, profile set. |
| **Visibility / Availability** | Separate course controls: where shown (public/restricted/hidden) vs. who can enroll (public/assignment/audience). |
| **Age-appropriateness tag** | Grade/age-band tag controlling content surfacing (not a hard access block). |
| **Prerequisite link** | Directional dependency between topics (or courses); recommended (warn) or enforced (block). |
| **Cross-subject link** | Typed connection between topics of different subjects (prerequisite / related / applied-in). |
| **Importance mark** | High/medium/low weight of a topic; drives assessment weighting and study guidance. |
| **Difficulty tag** | Beginner/intermediate/advanced level of a content item; topic difficulty marks form the subject's progression ramp. |
| **Drop-off point** | The moment in a video where learner retention falls sharply. |
| **Batch assessment** | An assessment scheduled for a group at a defined time window. |
| **Download policy** | Platform rules (entitlement, cap, retention, tier) governing offline downloads of content/resources. |
| **Moderation** | Review of community-created content (flashcards, forums, Q&A) before/after publication. |

---

## 9. Open Decisions

These are gaps or ambiguities in the requirements. **No answer has been invented** — each needs an explicit decision before the catalog schema is designed.

| ID | Open Decision |
|---|---|
| **OD-1** | **Province in the academic hierarchy.** The requested map is `Board → Province → Grade → Subject`, but no requirement places Province in the curriculum tree — "province" exists only as a student profile field (city/province at registration). Decide: (a) Province is a catalog node (e.g., boards offered per province, or province-scoped grade/subject sets), (b) Province is profile-only and the academic map is `Board → Grade → Subject`, or (c) Province is a board attribute (region/context — boards already have a "region/context" field). |
| **OD-2** | **Is "Lesson" a first-class type?** Course structure docs say units are "lessons, topics, activities" — a single Unit concept with a kind, or distinct Lesson/Activity types with different completion rules? Student docs speak of "lessons done" as progress units. |
| **OD-3** | **Chapter vs. Module relationship.** Academic tree has Subject → Chapter → Topic; course tree has Course → Module → Unit. Are a course's modules expected to mirror the subject's chapters, or are they independent structures linked only by topic mapping? |
| **OD-4** | **Course units ↔ curriculum topics: mapping or identity?** "Content units can map to the subject's topics" implies a many-to-many mapping. Decide the cardinality (one unit → one topic? one unit → many topics?) and whether a unit can exist with no topic mapping. |
| **OD-5** | **Multi-course content assignment.** Content is assignable to "courses, subjects, and topics" (multi-level). Is one content item assignable to *multiple different courses*? Not stated explicitly. |
| **OD-6** | **Creator role.** The platform's six user types (Super Admin, Sub Admin, Student, Parent, Affiliate, Institute) do not include a "Content Creator" role, yet the workflow repeatedly references "content owners" and "creators". Decide: is there a creator role/panel, or do super admins/sub admins act as creators? |
| **OD-7** | **Instructor identity.** Professional courses have instructor profiles (name, credentials, bio). Is an instructor a platform user account (with login) or a catalog-only profile record? |
| **OD-8** | **Live session recordings.** Live classes/webinars have "recording management". Do recordings automatically become catalog content items (entering the review queue), or are they a separate content type? |
| **OD-9** | **Dual-context courses.** Docs say a course is organized under the professional tree *or* the academic tree, "not both ambiguously". Confirm: strictly one context per course (no dual placement ever)? |
| **OD-10** | **Geographic scope of boards.** Examples mix South African (CAPS) and Indian (CBSE) boards plus Cambridge/IB. Which boards/regions are in scope for launch, and does that affect the Province question (OD-1)? |
| **OD-11** | **Assessment ownership boundary.** Assessments attach to courses/topics but live in the learning domain. Decide the exact boundary: does the catalog store "this topic has an assessment configured" (a flag/reference), or is all assessment structure purely in learning? |
| **OD-12** | **Versioning of curriculum nodes.** Content and resources have explicit versioning. Do curriculum nodes (topics, chapters, subjects) have versioned history, or only audit-logged changes? |
| **OD-13** | **Community flashcard ownership.** Public-library decks are community-created and moderated. Decide: are they catalog content items (full lifecycle/versioning) or a lighter community-content type in the engagement domain? |
| **OD-14** | **Certificate record ownership.** Course-completion certificates and board-wise certificates are issued on learning events. Decide which domain owns the certificate record (identity_billing vs. learning) and whether re-issue/revocation is catalog-adjacent. |
| **OD-15** | **Skill tag catalog scope.** Skill tags are a shared vocabulary used by categories and courses. Decide: one global tag catalog, or per-category tag sets? |
| **OD-16** | **Plan ↔ catalog reference granularity.** Academic plans are "grade-wise and subject-wise" — does a plan reference specific subject nodes (board+grade+subject), grade levels only, or subject names? This determines how tightly identity_billing couples to catalog nodes. |

---

## 10. Summary of Domain Boundaries (per the 5-database architecture)

- **Catalog domain owns:** boards, grades, subjects, chapters, topics, categories, sub-categories, courses (both kinds), modules/units, content items + media metadata, resources, flashcards (curated), mind maps, FAQs, skill tags, career path suggestions, skill progression, learning objectives, importance/difficulty/prerequisite/cross-subject links, review workflow state, versions, and plan-referenced catalog nodes.
- **Identity/billing owns:** users (all roles), subscriptions, plans (which *reference* catalog nodes), invoices/payments, certificates (per OD-14 decision).
- **Learning owns:** progress (per topic/unit/content item), attempts, SRS state, assessments (per OD-11 decision), study plans, target exams.
- **Engagement owns:** notifications, community content (forums, Q&A, community flashcards per OD-13), live sessions, groups.
- **Analytics owns:** effectiveness aggregates (completion rates, drop-off, feedback) — queue-fed, never read by transactional domains.

Cross-domain references are plain indexed columns (no cross-DB joins, no cross-domain FKs), per the enforced multi-DB rules.
