You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Multi-site coordination features missing vs. BOCA (routing, file replication, site role) #18
The BOCA-parity audit found that microHelium does not yet implement BOCA's advanced multi-site coordination features.
Missing from BOCA (boca-master reference)
Cross-site judging/task routing (sitejudging/sitetasking in BOCA's sitetable): a site can be configured to judge runs or process tasks originating from other sites. Not present in the sites migration or in RunController/Task.
Per-site scoreboard visibility (siteglobalscore/sitescorelevel): controls how much detail a site's scoreboard exposes. Absent from sites migration and ScoreboardController.
sitemaxjudgewaittime: per-site max wait time before a run is flagged as stuck. Only a generic max_runtime exists, not per-site.
site user type for inter-server synchronization logins (BOCA's usertable.usertype includes site alongside admin/judge/team/staff/score). microHelium's users migration and User model only cover admin/judge/team/staff/score — no isSite() equivalent.
File replication between sites (BOCA's site/get.php, site/putfile.php, site/putfilesuper.php): no equivalent sync routes/controllers found.
Evidence
database/migrations/2025_11_25_000002_create_sites_table.php — has name/IP/active/freeze/chief_judge_name, but no judging/tasking routing or score-level fields.
No controller/route found for site-to-site file sync in routes/web.php.
Suggested scope
This is likely only relevant if microHelium intends to support real distributed/multi-site contests (as opposed to single-site with a sites table used mainly for metadata). Worth a product decision before implementing: is multi-site replication in scope for microHelium, or is the sites table intentionally simplified?
Found via automated BOCA-parity audit (comparing microHelium against the vendored boca-master reference implementation).
Deixando esta em aberto por enquanto: diferente das outras issues do lote (#19, #20, #21, #22, #23 — todas fechadas por PRs), esta pede replicação real entre sites, roteamento de julgamento entre sites e um papel site de sincronização — funcionalidades de sistema distribuído que exigem uma decisão de produto antes de qualquer código (o texto original da issue já sinalizava isso: 'is multi-site replication in scope for microHelium, or is the sites table intentionally simplified?'). Implementar isso sem essa decisão arriscaria construir a arquitetura errada. Fica para quando o time decidir o escopo pretendido de multi-site.
Resolved via #40 and #41, after clarifying scope with the team (see thread): microHelium's real deployment is one central instance every physical site connects to over the internet, sharing one database -- so BOCA's core problem (synchronizing independent servers with local databases) doesn't apply here. File replication and cross-server sync were dropped from scope for that reason.
What shipped instead, for a real upcoming multi-site event:
Admin site management (/backend/sites) -- the actual prerequisite gap: there was no way to configure more than one site per contest at all before this.
Cross-site judging routing -- a judge stationed at a site now only judges their own site's runs by default, or explicitly routed sites too (matches BOCA's sitejudging semantics).
Per-site scoreboard visibility -- a site can restrict its teams to seeing only their own site's rows (documented limitation: this is a courtesy filter for logged-in accounts, not a hard access control, since the scoreboard route is intentionally public for spectators/projectors).
Per-site judge-wait timeout -- overdue pending runs get an "Atrasado" badge.
Site coordinator role (site user type) -- a new account scoped to one site: read-only dashboard, site-scoped staff tasks, team creation, and clarification answering.
545 tests passing, both PRs code-reviewed and verified in-browser end to end. Closing.
Activity
matbrgz commentedon Sep 10, 2026
Deixando esta em aberto por enquanto: diferente das outras issues do lote (#19, #20, #21, #22, #23 — todas fechadas por PRs), esta pede replicação real entre sites, roteamento de julgamento entre sites e um papel
sitede sincronização — funcionalidades de sistema distribuído que exigem uma decisão de produto antes de qualquer código (o texto original da issue já sinalizava isso: 'is multi-site replication in scope for microHelium, or is the sites table intentionally simplified?'). Implementar isso sem essa decisão arriscaria construir a arquitetura errada. Fica para quando o time decidir o escopo pretendido de multi-site.Merge pull request #40 from UnitedOpen-Source/feat/issue-18-multisite…
Merge pull request #41 from UnitedOpen-Source/feat/issue-18-site-coor…
matbrgz commentedon Sep 10, 2026
Resolved via #40 and #41, after clarifying scope with the team (see thread): microHelium's real deployment is one central instance every physical site connects to over the internet, sharing one database -- so BOCA's core problem (synchronizing independent servers with local databases) doesn't apply here. File replication and cross-server sync were dropped from scope for that reason.
What shipped instead, for a real upcoming multi-site event:
/backend/sites) -- the actual prerequisite gap: there was no way to configure more than one site per contest at all before this.sitejudgingsemantics).siteuser type) -- a new account scoped to one site: read-only dashboard, site-scoped staff tasks, team creation, and clarification answering.545 tests passing, both PRs code-reviewed and verified in-browser end to end. Closing.