Add business-plane schema draft and ingest Rally Albania 2025 regs
Substantial design artifact + canonical-source ingest for the TRM business plane. Schema draft (synthesis): - wiki/synthesis/directus-schema-draft.md — working agreement for the multi-tenant schema. Pseudo multi-tenant under organizations; entries as the unit of timing; course definition (stages/segments/geofences/ waypoints/SLZs); penalty system "numbers in DB, math in code" with an evaluator registry and progressive bracket math; per-entry timing tables; per-stage start-order strategies (manual / previous_stage_clean_result / inverse_top_n_then_natural / inverse_of_overall) covering both Tirana 24h and Rally Albania patterns. Two role surfaces (org role vs racing role) called out explicitly. Decisions captured; Open questions reduced to one (geometry retroactivity engine, deferred to Phase 2.5). Source ingest: - raw/Regulations_2025.pdf + wiki/sources/rally-albania-regulations- 2025.md — formal ingest of the canonical Rally Albania 2025 rulebook. Section numbers preserved as §X.Y so the schema draft and future SPA work can cite precisely. Flagged follow-ups: the SLZ formula lives in the Supplementary Regulations (don't hardcode); M-7 numbering bug; unmodeled neutralization zones. Faulty-position flag (cross-plane operator workflow): - entities/postgres-timescaledb.md, entities/processor.md, concepts/position-record.md — operator-controlled boolean on the positions hypertable; processor filters WHERE faulty = false on every read; flagging triggers windowed recompute via the recompute:requests stream. Implementation strategy on entity pages: - entities/directus.md — Schema management section documenting the snapshots/ + db-init/ convention, container-startup apply pipeline. - entities/processor.md — Phase 2 long-lived branch model with PROCESSOR_PHASE_2_ENABLED flag-gating for incremental main merges; Phase 2.5 deferral note. Index and log updated.
This commit is contained in:
@@ -0,0 +1,194 @@
|
||||
---
|
||||
title: Rally Albania 2025 — Race Rules and Regulations
|
||||
type: source
|
||||
created: 2026-05-01
|
||||
updated: 2026-05-01
|
||||
source_path: raw/Regulations_2025.pdf
|
||||
source_date: 2024-10
|
||||
source_kind: other
|
||||
sources: []
|
||||
tags: [rally, regulations, albania, federation-rules, classes, start-order, penalties]
|
||||
---
|
||||
|
||||
# Rally Albania 2025 — Race Rules and Regulations
|
||||
|
||||
> Authoritative rulebook for Rally Albania 2025 (07–14 June 2025). Issued October 2024 by Motorsport Club Albania, technical organizer; legal entity is the Albanian Motorcycle Federation. Section numbers below reference the doc directly (§X.Y) so the rest of the wiki can cite precisely.
|
||||
|
||||
## TL;DR
|
||||
|
||||
A multi-day International Cross Country Rally Raid with a prologue, multiple regular stages, and an epilogue, running across four vehicle categories (MOTO/QUAD/CAR/SSV) further split into 17 classes. Timing is RFID + GPS. Each vehicle carries **two** independent GPS trackers; no tracker = no start. Start order is **dynamic per stage** with several distinct seeding rules (§5.5–§5.10). Penalties are time-additive only, never affect next-stage seeding. The Supplementary Regulation (SR), published 60 days before the event, overrides the general regs where in conflict (§1.8–§1.9).
|
||||
|
||||
This is the canonical real-world reference for the TRM business-plane schema and the React SPA's user-facing semantics.
|
||||
|
||||
## Categories and classes (§2.2–§2.5)
|
||||
|
||||
Four categories, 17 classes total. The class catalog is the concrete fixture for [[directus-schema-draft]] `classes`.
|
||||
|
||||
| Category | Class | Description |
|
||||
|---|---|---|
|
||||
| MOTO | M-1 | Under 450cc |
|
||||
| | M-2 | 450–600cc |
|
||||
| | M-3 | over 600cc, single cylinder |
|
||||
| | M-4 | over 600cc, bi-cylinder |
|
||||
| | M-5 | Senior, under 450cc (born 1.1.1967–31.12.1975) |
|
||||
| | M-6 | Senior, over 450cc (born 1.1.1967–31.12.1975) |
|
||||
| | M-7 | Veteran (born before 1.1.1967) **and** Female driver — both reuse code M-7 in the doc; likely a numbering bug. |
|
||||
| QUAD | Q-1 | Any engine, 2WD |
|
||||
| | Q-2 | Any engine, 4WD |
|
||||
| | Q-3 | Any quad, female pilot |
|
||||
| CAR | C-1 | Offroad, heavily modified |
|
||||
| | C-2 | Offroad, lightly modified |
|
||||
| | C-A | Standard passenger automobiles, any modifications |
|
||||
| | C-3 | Offroad, all-female pilot+copilot |
|
||||
| SSV | S-1 | Sport UTV, single pilot |
|
||||
| | S-2 | Sport UTV, two-driver team |
|
||||
| | S-3 | Sport UTV, all-female team |
|
||||
|
||||
Classifications: per-class within each category, plus **three independent general standings** (§2.7–§2.8): G1 = MOTO/QUAD together (all classes), G2 = CAR all classes, G3 = SSV all classes.
|
||||
|
||||
## Race numbers (§5.1–§5.4)
|
||||
|
||||
Numbers assigned by inscription order; previous-year category winners get 1 / 200 / 300 / 400; first three of each category are reserved.
|
||||
|
||||
| Group | Range | Plate background |
|
||||
|---|---|---|
|
||||
| Moto | 1–199 | white |
|
||||
| Quad | 2xx | white |
|
||||
| Car | 3xx | white |
|
||||
| SSV | 4xx | white |
|
||||
| Assistance vehicles | 6xx | yellow |
|
||||
| Media | 7xx | green |
|
||||
| Organization | 9xx | red |
|
||||
|
||||
Plate background color is a load-bearing visual signal — relevant to the SPA's vehicle marker styling.
|
||||
|
||||
## Start order — strategies per stage (§5.5–§5.10)
|
||||
|
||||
This is the single most schema-relevant section. Start order is **dynamic** and rule-driven; the rule varies by stage role and category.
|
||||
|
||||
| Stage role | Bikes / Quads | Cars / SSV |
|
||||
|---|---|---|
|
||||
| Prologue (§5.5) | Arbitrary by org based on history | Arbitrary by org based on history |
|
||||
| Stage 1 (§5.6, §5.7) | Top 20 of prologue **inverted**; positions 21+ in prologue order | Pure prologue result order |
|
||||
| Stages 2 → last (§5.8) | Previous stage's **clean** SS time | Previous stage's clean SS time |
|
||||
| Epilogue (§5.9) | **Inverse** of overall standings after the last stage | Inverse of overall standings |
|
||||
|
||||
**Penalties never feed seeding** — §5.8 is explicit: "possible penalties will not count on the starting order but will be added on overall time." Seeding is on clean SS time; penalties roll into the overall total only.
|
||||
|
||||
**Time between starts is set per stage**, the day before each one (§5.10). It is not an event-level constant.
|
||||
|
||||
Bikes/quads start as a combined grid; cars and SSVs each have their own grid (§5.10 + §2.8). Categories seed independently.
|
||||
|
||||
## Tracking system (§7.1–§7.5)
|
||||
|
||||
- **Every vehicle gets a GPS/GPRS tracker provided by the organization** (§7.1).
|
||||
- **Two independent devices per vehicle** — Rally Albania 2025 specifically mandates a dual-device tracking system (§7.2). The TRM schema's "many devices per vehicle" m2m is operationally required, not just supported.
|
||||
- **Tracker malfunction blocks the start**: "Competitors that have malfunctions on the tracker before the start, will not be allowed to start before repairing it" (§7.3, restated in §13.15 / §13.34).
|
||||
- Trackers are used for **route reconstruction, passage controls, hidden waypoint detection, speed in SLZs, and SOS** (§7.4).
|
||||
- Trackers are **rented from a partner company, paid by the participant** (§7.5). The org provides them; the competitor doesn't.
|
||||
- Competitor self-use of tracker data is **prohibited** (§7.2) — the tracker is data-recorder + SOS, not a navigation aid for the racer.
|
||||
|
||||
## Timekeeping (§9.1–§9.20)
|
||||
|
||||
- Timing run by the "Time and Race Management" company (§9.1).
|
||||
- **RFID transponder** for time keeping (§9.2). Paper Time Card for back-up and passage controls (§9.3).
|
||||
- **Late at the start of a stage** (§9.5–§9.6): one-minute-per-minute penalty up to a cutoff = 5 minutes before the first vehicle of the next category. Past that cutoff = disqualification from that stage day.
|
||||
- **Late at the start of first SS** (§9.7): one-second-per-second penalty.
|
||||
- **Late vehicles' exact start time** is at Race Marshal discretion, "when finding an open window to start" (§9.8). This is the operational basis for `entry_segment_starts.manual_override`.
|
||||
- **CP closing time = 60 minutes after the last competitor's ideal time** (§9.19). After this, the CP signpost closes.
|
||||
- **Late past CP closing** (§9.9): cannot enter the SS, takes a penalty per formula.
|
||||
- **Liaison sections** (§9.11–§9.13): target time given; one-minute-per-minute penalty for late or early arrival; exception is arriving early at the finish after the last SS of a stage.
|
||||
- **Special sections** (§9.14): fastest possible, but within a maximum time allowed; checking in past max time → fixed daily penalty.
|
||||
- **Waypoints** are numbered and verified by the Tracking System (§9.18) — pure GPS detection, no marshal.
|
||||
- **Late or early is equally penalised** (§9.10) — symmetric in time penalties for liaisons.
|
||||
|
||||
## Penalty taxonomy (§12)
|
||||
|
||||
The doc classifies penalties as Sportive / Speed / Disciplinary / Special.
|
||||
|
||||
### Sportive
|
||||
|
||||
| Type | Trigger | Penalty |
|
||||
|---|---|---|
|
||||
| Late/early at CP-1 / CP-2 / CP-4 / CP-6 / CP-8 (§12.2) | Liaison-style time controls | 1 minute per minute |
|
||||
| Last LS no-early-penalty (§12.3) | Stage finish | exempt from early-arrival rule |
|
||||
| **Missing CP** (§12.4) | No crossing detected within stage window | Worst valid time of day in your category + **120 min** per CP missed |
|
||||
| **Late than Maximum Time Allowed** (§12.5) | Stage MTA exceeded | Worst valid + **60 min** |
|
||||
| **Arrived at CP after closing hour** (§12.6) | Crossing after `time_control_closed_at` | Worst valid + 120 min per CP missed (same formula as §12.4 but distinct trigger) |
|
||||
| **Missing WP** (§12.7) | No GPS pass-through detected | **60 min** per WP |
|
||||
| Course cut, no CP/WP missed, gain (§12.8) | Track deviation | Best time of day in that sector × 3 |
|
||||
| Transported to next bivouac by org (§12.9) | Recovery | Fixed |
|
||||
|
||||
### Speed
|
||||
|
||||
- **Overspeed in Speed Limit Zones** (§12.11): time penalty per formula. Formula itself is in the **Supplementary Regulation**, not the general regs. The Tirana 24h regs publish a five-bracket table; Rally Albania defers it to SR. The TRM penalty system is data-driven, so this fits naturally.
|
||||
|
||||
### Disciplinary
|
||||
|
||||
| Type | Penalty |
|
||||
|---|---|
|
||||
| Not present at start without notice (§12.13) | Disqualification |
|
||||
| Not able to start (§12.14) | Fixed time penalty |
|
||||
| Withdraw from race (§12.15) | Maximum Time Allowed for remaining stages |
|
||||
| **Not wearing protection in SS** (§12.16) | **60 min** per SS spotted — marshal-observed event, not GPS-derivable |
|
||||
|
||||
### Special
|
||||
|
||||
- **Force majeure / fair play stops** (§12.18): manual time adjustment by Race Direction, can be positive or negative. SR carries detail.
|
||||
|
||||
§12.16 ("not wearing protection") and §12.13 are the only penalty types in the doc that are **not** GPS-derivable — they require marshal observation. The schema must allow `entry_penalties` rows to be created manually (operator path), not only by the processor.
|
||||
|
||||
## Liaison vs Special — formal distinctions (§6.8–§6.13)
|
||||
|
||||
- **Liaison**: defined average speed, exact target time. Time penalty for both early and late arrival.
|
||||
- **Special section**: fastest possible, sum of all SS times across all stages decides the winner.
|
||||
- Stage time = sum of SS times + penalties (§6.15).
|
||||
- Rally winner = sum of all stage times + penalties (§6.17).
|
||||
- **Tiebreaker** (§6.19): best time in the **last stage** wins; if still tied, walk back stage-by-stage in reverse calendar order.
|
||||
|
||||
## Roadbook (§6.1–§6.5)
|
||||
|
||||
- Per-stage roadbook distributed at 20:00 the day before each stage (§6.2).
|
||||
- A5 format for cars; 135 mm roll for bikes/quads; PDF for those who use it (§6.3).
|
||||
- Minimum unit distance 10 m; rally computer calibrated to exactly 1 km the day before, satellite-measured (§6.4).
|
||||
- Roadbook describes every PC, TC, WP, and SLZ (§6.5).
|
||||
|
||||
## Protests and live timing (§11.1–§11.8)
|
||||
|
||||
- Protests must be lodged within **60 minutes** after results publication (§11.2).
|
||||
- Decision before the next stage start, or before final results for last-stage protests (§11.4).
|
||||
- **Live timing is NOT official and CANNOT be subject to protests** (§11.8). This is a hard policy — the SPA must surface live data with appropriate "unofficial" framing; only published stage results are protestable.
|
||||
- Fair-play time deductions (§11.5–§11.7): stop for medical help can be deducted from SS time at Race Direction discretion, claimed within 60 minutes of day's results.
|
||||
- **Official bulletin channel = WhatsApp Broadcast** (§6.20). All participants must install WhatsApp with broadcast enabled. Not a TRM responsibility, but worth knowing.
|
||||
|
||||
## Supplementary Regulations (§1.8–§1.9)
|
||||
|
||||
- SR published 60 days before event.
|
||||
- SR carries: timing details, sportive penalties (specifics including the SLZ formula), and bivouac details.
|
||||
- **SR overrides general regs where in conflict** (§1.9). Implies the TRM event model needs to allow per-event overrides of rule data — practically, this is already what `penalty_formulas` scoped per event/stage achieves, but it deserves a note in the schema draft.
|
||||
- **Extraordinary rules**: applied by the Clerk of the Course on the spot (§1.9 second). Operationally these become manual `entry_penalties` rows or marshal-driven schedule adjustments.
|
||||
|
||||
## Refueling and assistance (§8.1–§8.13)
|
||||
|
||||
- Assistance only at designated points (§8.1), provided to assistance teams pre-stage (§8.2).
|
||||
- On-track assistance vehicles start 10 min after last race vehicle, in route direction only (§8.3).
|
||||
- **In-SS refueling**: only at declared passage controls; if refueling is on track, the point becomes a **neutralization zone equal for all competitors** (§8.12). Worth flagging — neutralization implies a per-segment "stopwatch pause" that the processor would need to subtract from SS time. Probably warrants a future segment subtype or a neutralization geofence kind. Not blocking.
|
||||
- Minimum fuel autonomy 140 km, recommended 160 km (§8.13).
|
||||
|
||||
## Notable quotes (verbatim)
|
||||
|
||||
> "Second stage up to the last stage will be defined by the result of the previous stage and NOT the overall standings. (possible penalties will not count on the starting order but will be added on overall time)." — §5.8
|
||||
|
||||
> "Live Timing it is not official and can not be subject to protests." — §11.8
|
||||
|
||||
> "No vehicle can take race numbers start without Tracking System mounted." — §13.15 / §13.34
|
||||
|
||||
> "Differing from the road book can lead to the entry of prohibited and/or dangerous areas." — Closing remarks
|
||||
|
||||
## Open questions / follow-ups
|
||||
|
||||
- **§12.11 SLZ formula** lives in the SR, not in the general regs. We have the Tirana 24h SLZ formula (5 brackets ×2/×5/×15/×40/×120 sec/km/h) as a reference, and a separate organizer-supplied version for the same rally (×5/×10/×30/×90/×240 — slice-by-slice progressive). For Rally Albania 2025, the actual brackets must come from the SR — we shouldn't hardcode either Tirana variant as the default.
|
||||
- **M-7 numbering bug** — both "Veteran" and "Female driver" use code M-7 in §2.2. Probably a typo for M-8. When seeding the `classes` table for Rally Albania, treat as two distinct classes; flag for organizer confirmation.
|
||||
- **Neutralization zones** (§8.12) — not yet modeled in the schema. Would require either a `neutralization` segment subtype or a `geofence.kind = neutralization-zone` with processor-side stopwatch handling. Defer until a real event uses one.
|
||||
- **Class M-5 / M-6 senior age window** — defined as "born before 1 January 1976 and after 31 December 1966." Birthdate-derived class assignment may shift year-over-year; the `classes` table should treat eligibility rules as data, not derive them.
|
||||
- **WhatsApp Broadcast** as official bulletin (§6.20) — not in scope for TRM, but a reminder that final/official data flow happens outside the system.
|
||||
Reference in New Issue
Block a user