Files
MOPC-Portal/docs/codex-architecture-redesign-docs/10-monaco-reference-configuration.md
Matt 6ca39c976b
All checks were successful
Build and Push Docker Image / build (push) Successful in 7m45s
Competition/Round architecture: full platform rewrite (Phases 1-9)
Replace Pipeline/Stage system with Competition/Round architecture.
New schema: Competition, Round (7 types), JuryGroup, AssignmentPolicy,
ProjectRoundState, DeliberationSession, ResultLock, SubmissionWindow.
New services: round-engine, round-assignment, deliberation, result-lock,
submission-manager, competition-context, ai-prompt-guard.
Full admin/jury/applicant/mentor UI rewrite. AI prompt hardening with
structured prompts, retry logic, and injection detection. All legacy
pipeline/stage code removed. 4 new migrations + seed aligned.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 23:04:15 +01:00

163 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 10. Monaco Reference Configuration (Example)
This is an example of how a Monaco 2026 competition would be configured in the redesigned system.
## 1) Program Profile
- Program: Monaco Ocean Protection Challenge 2026
- Categories: `STARTUP`, `BUSINESS_CONCEPT`
- Main pipeline: `mopc-2026-main`
- Award tracks: configurable per award
## 2) Stage Purpose Layout (Main Track)
1. `submission_r1_intake`
- type: `INTAKE`
- open: 2026-02-01
- close: 2026-05-31
- late policy: `flag`
2. `eligibility_filter`
- type: `FILTER`
- trigger: admin or auto-on-close
3. `jury1_evaluation`
- type: `EVALUATION`
- open: 2026-06-05
- close: 2026-06-25
- jury binding: `MAIN_SEMIFINAL`
4. `submission_r2_intake`
- type: `INTAKE`
- open: 2026-06-28
- close: 2026-07-20
5. `jury2_evaluation`
- type: `EVALUATION`
- open: 2026-07-24
- close: 2026-08-10
- jury binding: `MAIN_FINALIST`
6. `jury3_live_finals`
- type: `LIVE_FINAL`
- event date window: 2026-09-01
- jury binding: `MAIN_LIVE_FINALS`
7. `final_confirmation`
- type: `SELECTION`
- rule: unanimous active quorum + one admin approval
- absent juror handling: replace juror or mark as excused (admin-audited)
- admin override: enabled for both category and award scopes (mandatory reason/audit)
- unlock policy: super-admin only
8. `results_publication`
- type: `RESULTS`
- publication mode: manual
## 3) Jury Definitions
- `MAIN_SEMIFINAL` (display label example: `Jury 1 - Technical Panel`)
- Purpose: semi-final selection
- members: list of judges
- `MAIN_FINALIST` (display label example: `Jury 2 - Selection Panel`)
- Purpose: finalist selection
- members: list of judges (overlap allowed)
- `MAIN_LIVE_FINALS` (display label example: `Jury 3 - Live Finals Panel`)
- Purpose: live final voting + deliberation
- members: list of judges (overlap allowed)
## 4) Assignment Policy Example
### Jury1 policy
- required reviews: 3
- default cap mode: `SOFT`
- default cap: 25
- buffer: 10
- startup/concept bias target per judge: 50/50 (suggestive, not deterministic)
### Per-judge override example
- judge A: hard cap 18
- judge B: soft cap 22 buffer 8
- judge C: startup-biased preference (100/0 suggestion, not hard rule)
## 5) Submission Round Requirements
### Round 1 (`submission_r1_intake`)
Slots:
- `r1_exec_summary` (required)
- `r1_pitch_deck` (required)
- `r1_video_pitch` (optional)
### Round 2 (`submission_r2_intake`)
Slots:
- `r2_business_plan` (required)
- `r2_financials` (required)
- `r2_impact_metrics` (optional)
Behavior:
- applicants edit current round only
- previous round read-only
- admin can replace with provenance
## 6) Award Mode Examples
### Example A: Separate Pool, Pull-Out
- award: “Blue Innovation Prize”
- participationMode: `SEPARATE_POOL`
- routingBehavior: `PULL_FROM_MAIN`
- pull-out confirmation: admin-confirmed before removal from main pool
### Example B: Dual Track
- award: “Community Impact Award”
- participationMode: `DUAL_TRACK`
- routingBehavior: `KEEP_IN_MAIN`
### Example C: Single-Judge Award
- award: “Chairs Special Recognition”
- winnerDecisionMode: `SINGLE_JUDGE_DECIDES`
- singleJudgeUserId: configured award judge
- candidate set: only projects remaining eligible after award filtering
## 7) Mentoring Layer Example
Eligibility:
- finalist projects with `wantsMentorship=true`
Permissions:
- mentor and team can upload/comment private files
- team lead + admin can promote file to official submission
Promotion artifact:
- records source file, target slot, actor, timestamp, resulting official file id
## 8) Live Finals Example
- voting mode: criteria
- audience voting: enabled for end-of-category only
- audience totals visible to Jury3 during deliberation: true
- tie-break order:
1. highest Jury3 weighted score
2. admin-declared tie-break (if still tied)
## 9) Final Confirmation Example
- decision rule: unanimous (categories + jury-based awards)
- active quorum must submit confirmation vote (absent juror can be replaced or marked excused)
- admin approval required after quorum unanimity
- admin override allowed for category or award outcomes with mandatory reason code and audit snapshot
- result lock snapshot generated immediately on finalize
- unlock available only to super admins with mandatory reason + unlock event audit
## 10) Invite Flow Example
### Admin invite (jury)
- create user with role `JURY_MEMBER`
- attach `JuryMembership: MAIN_FINALIST` (custom display label in UI)
- create optional `AssignmentIntent` for stage `jury2_evaluation` and/or direct policy-validated assignments
- send invitation
- on accept: jury onboarding -> cap/bias preference override if allowed (disclosure shown that bias is suggestive only)
### Team invite
- create/attach `TeamMember`
- send invitation
- on accept: applicant context landing