Skip to content

Implemented specs

Specs whose feature is built and in use. What each one describes exists today; where the built thing departs from the text, the spec's own Divergences or As built section records it — read that before trusting a cell reference or a line number.

These are the specs to read when you need to understand something that is already running. For what a tool does rather than why it is shaped that way, start at Usage, Features or Technical.

Index and status-change procedure: ../README.md.

Spec Feature
Site engine The shared modules at sage-match-control.github.io/lib/v1/ (domain/, data/, views/, apps/, css/), every event template as a shell, Control Center on the same views, and the _tests/ comparison harness. Merged 2026-10-06
Team tournament event-site template _templates/team-tournament-template/: a Hub and a schedule board as shells on the engine, the scorer and desk pages on team data, the team checks in the dry-run runbook, pair labels per event (display.pairs), and the interim workbook rule until the Team Tournament Master exists
Runtime-fetched sync config SyncConfigStore fetching event-data/config/events.json at runtime
Sync script configuration sheets-sync.gs's SAGE → Set up live sync and Script Properties
Immediate sync sheets-sync.gs's lock-based sync from the edit, SyncService's commit-conflict retry, X-Edit-At / lastEditAt timing, and Control Center's edit→sync figure
Match Control console tools/control-center.html
Awards tab The console's podium tab and PNG export
Schedule screen events/<key>/schedule.html, since backported into both templates
Scoresheet event picker tools/scoresheet-generator.html's snapshot picker
Calculator dual-meet fixes "Pairs per club" and the dual bracket default
Bracket Generator keep-apart groups tools/bracket-generator.html's keep-apart groups: chosen pairs dealt into different brackets, still verifiable from the seed
Calculator PWA tools/sw.js + tournament-calculator.webmanifest
Bracket Generator tools/bracket-generator.html
Verifiable draw Its seed, SHA-256 fingerprint draw, and How it works dialog
Bracket draw name import SAGE → Import bracket draws, the Open Bracket Generator menu route, and a dual meet's Shuffle roster codes
Sheet generator (Phase 1) dual-meet-generator.gs — category tabs, Variables, Title, Reference for Players
Schedule generator (Phase 2) Its SCHEDULE tab
Readouts generator (Phase 3) Its Court Control, Timeline, CSV, STANDINGSCSV
Standard Tournament Master standard-tournament-generator.gs and the SAGE Standard Tournament Master workbook
Event site templates _templates/dual-meet-template/ and _templates/standard-tournament-template/
PNF × BUP dual meet The first real run of the dual-meet template
Facility progress Live Matches' per-facility progress cards and Mission Control's progress line
Event attendance attendance.gs and events/pickle-for-sight-2026/attendance.html
Attendance for every event sage-tools-api/src/attendance/, Control Center's Attendance tab, _templates/attendance/ and each event's attendance.html
CLSO Pickle for Sight events/pickle-for-sight-2026/, the first real run of the standard template, held 27 September 2026
Team tournament events/pickledrive-anniversary-2026/ (the hand-built prototype), Control Center's team type and the team rules. Ran 3 October 2026. The template and the workbook generator are separate specs
Team workbook recalculation The PickleDrive workbook's hidden StackCache tab, the five primitive named functions reading it, MatchLookup!K:L, the rewritten matchup family and the 15 unused functions removed. Done by hand in the Sheets UI on 2026-10-05; no repo code
Piggleball Chairman's Cup events/piggleball-2026/, a standard-template event re-skinned from its pubmat, held 3 October 2026
sage-tools-api test suite sage-tools-api/test/: unit and integration tests for every module and route, the sync pipeline against an in-memory GitHub/Sheets/Worker, an opt-in PDF end-to-end, guard tests and the pre-push hook
Live push delivery sage-tools-api/live-worker/ (the sage-live Worker and its DayChannel Durable Object), LivePublisher and the publish-then-archive flow, and the LIVE CHANNEL block in Control Center, the templates and every current event's pages. In use since 3 October 2026
Live push delivery — explainer The same, in plain language
Score entry and scorer links sage-tools-api/src/scores/, Match Finder's score dialog and Mission Control's Scorer links in Control Center, and _templates/scorer/scorer.html
sage-tools-api architecture hardening The service's layout (src/clients/, src/registry/, one composition root, ports), one retry loop and the delivery strategies, the dependency-rules guard, and the /v3 API with its conventions guard. Its fresh-master check, production acceptance and Cloud Build filter were not run
Usage guide and docs restructure These docs' Usage tab and Features as a per-tool reference (docs 2.0.0), and the site repo's dry-run checklist template. The newcomer read-through was not done
Link attribution The Issued to and Note of a desk or scorer link (signed into the token as to and note), ATTENDANCE's markedBy column, and the note on both score cells of a saved match. sage-tools-api 3.1.0
Push for attendance The live Worker's /attendance and /nudge routes on a separate attendance:<event>/<day> object, AttendanceService's data-free nudge after every write that changes an ATTENDANCE tab (LivePublisher.nudge), and lib/v1/data/attendance-signal.js: desk pages and Control Center's Attendance tab re-read on a nudge instead of polling, and say when live updates are off. sage-tools-api 3.4.0, merged 2026-10-13, Worker deployed 2026-10-18. The owner's checks P1–P7 were not run