MOPC-App/docs/codex-architecture-redesign.../02-monaco-flow-target-archi...

286 lines
9.8 KiB
Markdown
Raw Permalink Normal View History

# 02. Monaco Flow Target Architecture
## 1) Target Architecture Intent
Design the competition as a **typed, policy-driven stage machine** where each step in your Monaco flow maps to an explicit stage purpose and policy contract.
Core idea:
- Keep existing `Pipeline/Track/Stage` spine
- Add explicit purpose codes and policy entities
- Drive every major feature (invite, docs, assignment, review, mentoring, finals, confirmation) from the same stage context
## 2) Canonical Stage Purpose Map
For the main track, define explicit purpose keys (not just generic stage type):
1. `submission_r1_intake`
2. `eligibility_filter`
3. `jury1_evaluation`
4. `submission_r2_intake`
5. `jury2_evaluation`
6. `finals_prep_collaboration` (mentoring layer; may be non-blocking stage or overlay policy)
7. `jury3_live_finals`
8. `final_confirmation`
9. `results_publication`
`StageType` remains useful (`INTAKE`, `FILTER`, `EVALUATION`, `LIVE_FINAL`, `RESULTS`) but **stage purpose key is authoritative** for business behavior.
## 3) Actor Spaces (Target)
### 3.1 Applicants / Teams
- Apply during open submission windows
- Upload required documents for active submission stage
- Access prior round docs read-only
- Request mentoring (if enabled)
- Collaborate with mentor in private file/chat workspace
- Mark eligible mentoring file as official submission (when allowed)
### 3.2 Admins
- Configure stages, deadlines, rubrics, file requirements, assignment policies
- Trigger/monitor AI filtering and assignment
- Override eligibility, assignments, advancement, finalist/winner outcomes
- Run live finals controls (stage manager)
- Perform final confirmation and official result lock
### 3.3 Judges
- Belong to explicit juries (`Jury 1`, `Jury 2`, `Jury 3`, award juries)
- Review assigned projects in active windows
- Access prior + current docs as policy allows
- Submit scores, feedback, notes
- Participate in deliberation/final confirmation where required
### 3.4 Mentors
- Assigned to eligible finalist teams that requested mentoring
- Use mentor-team private workspace (chat, files, threaded comments)
- Help refine docs; optionally approve/promote files if policy permits
### 3.5 Audience (Optional)
- Votes during configured live finals windows
- Only when enabled for stage/category/session
## 4) End-To-End Flow Blueprint (Mapped To Monaco)
## 4.1 Stage A: Submission Round 1 (`submission_r1_intake`)
### Inputs
- Program application settings
- Stage deadline and late policy
- Required document set for round 1
### Runtime Rules
- Applicant can edit/upload only while submission window policy allows
- Late behavior from policy:
- strict cutoff
- accepted as late with flag
- accepted in grace window only
- Admin can always inspect and intervene
### Outputs
- Project classified as `STARTUP` or `BUSINESS_CONCEPT`
- Round 1 submission bundle + metadata + late flag
## 4.2 Stage B: AI Eligibility Filter (`eligibility_filter`)
### Inputs
- Eligible candidate pool from Stage A
- Deterministic rules + AI criteria text + confidence thresholds
### Runtime Rules
- Deterministic checks first, then AI evaluation (if enabled)
- Outcome buckets:
- `eligible`
- `ineligible`
- `manual_review`
- Admin override always allowed with reason code + audit
### Outputs
- Eligible pool for Jury 1
- Ineligible pool retained and visible to admins with evidence
## 4.3 Stage C: Jury 1 Evaluation (`jury1_evaluation`)
### Inputs
- Jury 1 membership
- Assignment policy per juror (cap mode, cap value, soft buffer, category-bias preference)
- Rubric/version and deadline window
### Runtime Rules
- Assignment engine obeys per-judge policies:
- hard cap: never exceed cap
- soft cap: target cap, may go to cap+buffer
- Startup/concept ratio is treated as a **soft bias** for fair distribution, not a deterministic constraint
- Jury onboarding must clearly state that ratio preference is a suggestion, not a hard rule
- After all soft-cap judges reach cap+buffer:
- unassigned projects move to manual assignment queue
- Judges see countdown, project list, round 1 documents
- Submit score, feedback, notes
### Outputs
- Ranking and distribution views per category
- AI recommended shortlist per category
- Admin final advancement decision -> Semi-finalists
## 4.4 Stage D: Submission Round 2 (`submission_r2_intake`)
### Inputs
- Semi-finalists selected from Stage C
- New round 2 document requirements
### Runtime Rules
- Applicant edits only round 2 requirements
- Round 1 docs are read-only for applicants
- Judges/admin can see both bundles (with clear labeling)
- Admin retains full document management authority across rounds
### Outputs
- Round 1 locked bundle + Round 2 final bundle per semi-finalist
## 4.5 Stage E: Jury 2 Evaluation (`jury2_evaluation`)
### Inputs
- Jury 2 membership + assignment policies
- Access to round 1 + round 2 docs
- Special award governance configuration
### Runtime Rules
- Same assignment controls as Jury 1
- Judges score and annotate
- Special awards run in configured mode:
- mode A: separate pool (optional pull-out, admin-confirmed)
- mode B: dual eligibility while staying in main pool
- Award juries can overlap with main juries
- Some awards can run in single-judge decision mode (award master / designated judge)
- Admin can override finalist recommendations
### Outputs
- Finalists per category
- Award shortlist/winners progression state per award policy
## 4.6 Stage F: Mentoring Collaboration Layer (`finals_prep_collaboration` overlay)
This is a collaboration layer, not a judging gate.
### Inputs
- Finalists requesting mentoring
- Mentor assignments
### Runtime Rules
- Private mentor-team workspace:
- messaging/chat
- file upload by mentor/team
- threaded file comments
- Promotion to official submission supported where policy allows:
- promotion authority: team lead and admin
- create provenance record (who, when, source file, target requirement)
- keep immutable audit trail
### Outputs
- Improved finalist submissions
- Complete mentoring collaboration + promotion history
## 4.7 Stage G: Live Finals Jury 3 (`jury3_live_finals`)
### Inputs
- Finalist list/order
- Jury 3 members
- Live voting settings and optional audience voting config
### Runtime Rules
- Admin stage manager can set active presenter, open/close vote windows
- Jury 3 sees:
- all finalist info and historical context allowed by policy
- prior jury summaries (if permitted)
- real-time note-taking and live voting controls
- Audience vote optional; if enabled, shown during deliberation as configured
### Outputs
- Live vote records + deliberation notes + optional audience totals
## 4.8 Stage H: Final Confirmation (`final_confirmation`)
### Inputs
- Jury 3 voting outcomes
- Deliberation notes
- Award outcomes
### Runtime Rules
- Explicit confirmation workflow:
- all required jury confirmations captured (default unanimous for both category winners and award winners, based on active quorum)
- if a required juror is absent, admin can either replace the juror or mark absence so they do not count toward required confirmations (fully audited)
- exception: awards configured for single-judge mode follow single-judge confirmation flow
- one admin approval required to finalize
- Admin override path is supported for both category and award outcomes with mandatory reason/audit evidence
- On finalize:
- winner rankings locked
- result set immutable (unlock allowed only through super-admin workflow with explicit audit reason)
### Outputs
- Official winners per category
- Official award winners
- Immutable final decision audit package
## 4.9 Stage I: Results Publication (`results_publication`)
- Controlled publication policy (manual or policy-based)
- Public/private output controls
- Report export snapshot references final lock version
## 5) Cross-Cutting Target Behaviors
### 5.1 Deadlines And Reminder Contracts
Every stage with time windows must have:
- user-visible countdown in role dashboards
- reminder policy (3-day, 24h, 1h defaults; configurable)
- reliable dedupe via reminder logs
### 5.2 Manual Override Everywhere (With Structured Reasoning)
Admins can override:
- filtering outcomes
- assignment decisions
- advancement and finalist picks
- award eligibility and winner selection
- final winner confirmation
Each override requires:
- reason code
- optional reason text
- before/after snapshot
- actor and timestamp
### 5.3 Multi-Jury Explicitness
Juries become explicit objects with memberships and stage bindings:
- main juries and award juries use purpose bindings with custom labels per program
- overlap allowed
- assignments and dashboards are jury-context-aware
### 5.4 Multi-Round Document Visibility
- Applicants edit current stage only
- Applicants read-only previous stage docs
- Judges view current + previous by policy
- Admin full control
### 5.5 Platform-Wide Integration Rule
No function may bypass stage context:
- invite + onboarding
- assignment generation
- document submission/locking
- live voting
- status timeline
- notifications
All are resolved through a central `competition context resolver` (program + pipeline + stage purpose + jury context + user role).
## 6) Simplicity + Customizability Strategy
### 6.1 Simplicity
- Fixed Monaco-compatible stage purpose skeleton (minimal mandatory stages)
- Strong defaults and pre-built templates for most competitions
- Role-specific UX views that only expose relevant controls
### 6.2 Customizability
- Policy overrides per stage, jury, award, and user
- Configurable late policies, cap buffers, top-N finalists, audience voting behavior
- Award mode per award (`separate_pool` vs `dual_track`)
- Final confirmation rules configurable (unanimous, supermajority, quorum fallback handling, etc.)
## 7) Target Outcome
The redesigned architecture should let admins run Monaco OPC end-to-end **without ad hoc interpretation** and with full traceability, while still allowing controlled per-program policy customization.