CEO / Founder
8
open tasks of 8
4 critical open
Developer
12
open tasks of 12
3 critical open
Tester / QA
6
open tasks of 6
All critical tasks done ✓
Legal / Compliance
7
open tasks of 7
2 critical open
Secretary / Operations
11
open tasks of 11
2 critical open
Comms / BD
7
open tasks of 7
2 critical open
🎯 Weekly Goals at a Glance
RoleGoal
👑 CEO
Confirm pilot municipality target (Curridabat or Escazú) + secure at least 1 institutional meeting request.
💻 Developer
Smoke test exits 0 headless + `env` package skeleton running with Grecia network.
🧪 Tester
All Phase 1–5 verification steps documented with pass/fail evidence committed to repo.
⚖️ Legal
MOPT DGIT petition filed via SQDC + IP ownership clause drafted and reviewed by CEO.
📋 Secretary
Field visit to Calle Blancos scheduled + PYME registration initiated + data template folders created.
📡 Comms
Curridabat intro email sent (CEO-approved) + SmartLights CR one-pager drafted in Spanish.
📊 Project TRL Status
CEO / Founder
Strategy, fundraising, partnerships, team direction & unblocking
🎯 Week Goal
Confirm pilot municipality target (Curridabat or Escazú) + secure at least 1 institutional meeting request.
0 of 8 tasks done0%
Tasks — 8 total · 8 open · 0 done
Confirm Grecia as primary network
Grecia has 3 working TLS and is closer to trainable than Calle Blancos (which has 0 signals in net.xml). Decide and write into `docs/training-roadmap.md`.
#C1
Define MVP milestone
Write one paragraph: "RL agent on Grecia, single TLS, beats the default 39s/6s plan by any margin, with a KPI plot." Document in `docs/training-roadmap.md`.
#C2
Make go/no-go call on Curridabat as pilot municipality
Curridabat has a "Laboratorio de Innovación" aligned with mobility. Decision unblocks the Comms team from sending the first formal outreach email. Cannot wait.
#C3
File MOPT DGIT petition (or delegate to Legal)
Email rony.rodriguez@mopt.go.cr + register in SQDC portal (serviciosweb.mopt.go.cr/SQDC/). Request: signal timing plan + vehicle counts at Calle Blancos. 10-day legal clock starts on submission.
#C4
Brief Legal on IP ownership structure
Algorithm stays proprietary, State gets usage license. Pre-condition for any CPI filing or external demo. Brief before any municipality pitch.
#C5
Confirm v2 setup (pip-only) as canonical — deprecate v1 (macOS/Homebrew)
Two conflicting setup docs exist (`docs/setup-v1-vs-v2.md`). v2 is OS-agnostic and Docker-portable. Decision unblocks developer and Secretary.
#C6
Choose funding path
CPI (Iniciativa Privada) route vs. MEIC grant vs. angel. Each has different company formation requirements. Pick one to pursue this quarter.
#C7
Align on Estadística Multivariada paper status
Paper was due April 8, 2026. If approved, it is a reusable asset for the MOPT pitch (statistical validation via MANOVA). Confirm if pending corrections exist.
#C8
Developer
SUMO digital twin · RL agent · Infrastructure code
🎯 Week Goal
Smoke test exits 0 headless + `env` package skeleton running with Grecia network.
0 of 12 tasks done0%
Tasks — 12 total · 12 open · 0 done
`src/smartlights/env/single_intersection.py` — thin sumo-rl wrapper driven by YAML config
Builds a `sumo_rl.SumoEnvironment` from the merged YAML config (net/route files, step_length, min/max green, gui flags). Config drives the env instead of hardcoded paths.
#D1
`src/smartlights/train/run.py` — replace config-printer with real PPO loop
Use SB3 `PPO` + `SubprocVecEnv` per `train.num_envs`. Write checkpoints + TensorBoard logs to `outputs/<run_id>/`.
#D2
Smoke run on `networks/_smoketest/` with `total_timesteps: 5000`
Confirm: env resets, PPO trains, checkpoints land in `outputs/`, TensorBoard logs are readable. This is Stage 1 complete.
#D3
Generate placeholder demand for Grecia: `randomTrips.py` + `duarouter` → `networks/grecia/routes.rou.xml`
Waits on CEO confirming Grecia-first (C1). Placeholder demand to be replaced by calibrated counts from `data/raw/grecia/`.
#D4
Wire Grecia net + routes into config so a full headless episode runs
Verify with `scripts/smoke_sumorl.py` pointed at Grecia that `env.ts_ids` is non-empty and an episode completes.
#D5
Identify `terminal_edge` for TUAN bus terminal (Calle 6) in netedit
Fill the blank `terminal_edge` field in `data/raw/grecia/bus_schedules/tuan_routes.csv`. Requires XQuartz on macOS.
#D6
`src/smartlights/env/rewards.py` — `weighted_wait` motorcycle-weighted reward
Implement the person-flow waiting-time reward per `configs/base.yaml`'s `env.reward` spec.
#D7
`src/smartlights/baseline/fixed_time.py` — fixed-time plan replica
Runnable through the same env interface so it produces directly comparable episode metrics to the RL agent.
#D8
`src/smartlights/eval/kpis.py` + `eval/plots.py`
Compute `mean_wait_s`, `mean_queue_len`, `throughput_veh`, `co2_proxy` over `eval.episodes`. Plot agent-vs-baseline comparisons into `outputs/`.
#D9
Add traffic light to Calle Blancos net (netedit or XML edit)
After Grecia path works. Calle Blancos currently has 0 TLS in net.xml — not usable by sumo-rl until this is fixed.
#D10
Turn counts CSV → SUMO `.rou.xml` demand generation script
Waits on field data in `data/raw/`. Use jtrrouter or duarouter with turn ratios.
#D11
Dockerfile: ubuntu:24.04, SUMO from PyPI, headless only, uv.lock frozen
Entrypoint: `scripts/run_training.sh --config cloud`. Build for linux/amd64. No XQuartz or GUI deps.
#D12
Tester / QA
Validate every phase before developer advances · own the Definition of Done
🎯 Week Goal
All Phase 1–5 verification steps documented with pass/fail evidence committed to repo.
0 of 6 tasks done0%
Tasks — 6 total · 6 open · 0 done
Add `tests/test_env.py` — assert env instantiates, step returns (obs, reward, done, info), reset works
Two passing tests minimum. This is the gate for D1.
#T1
Verify headless episode with Grecia net runs without error
Waits on D4 + D5. Test: env instantiates with Grecia net, 1 episode completes, `env.ts_ids` is non-empty.
#T2
Document Phase 1–5 verification gates with terminal output evidence
Commit a `docs/test-log-W25.md` with pass/fail + output for each gate (imports, binaries, SUMO_HOME resolver, config merge, smoke scripts).
#T3
Mark SUMO-spawning tests with `@pytest.mark.slow` — confirm `pytest -m "not slow"` stays under 5 seconds
Already in CLAUDE.md conventions; verify it's actually enforced.
#T4
Add `tests/test_kpis.py` — unit test KPI functions on synthetic episode data (no SUMO needed)
Waits on D9. Synthetic data means this runs in CI without SUMO installed.
#T5
Confirm `uv run ruff check` + `uv run pytest -m "not slow"` pass cleanly on a fresh checkout
Simulate CI: clone to a temp dir, `uv sync`, run checks. Catches any missing deps or import errors.
#T6
Legal / Compliance
Regulatory filings · IP protection · Government procurement compliance
🎯 Week Goal
MOPT DGIT petition filed via SQDC + IP ownership clause drafted and reviewed by CEO.
0 of 7 tasks done0%
Tasks — 7 total · 7 open · 0 done
File public information petition — MOPT DGIT (Ley 9097)
Email Ing. Rony Rodríguez Vargas (rony.rodriguez@mopt.go.cr / 2226-5411 ext. 238). Request: signal timing plan + vehicle counts at Calle Blancos. Register in SQDC portal simultaneously for tracking number. Also send to Municipalidad de Goicoechea if intersection is cantonal. 10-day legal response clock.
#L1
Draft IP ownership clause — company retains algorithm, State gets usage + modification rights
Pre-condition for any CPI filing or external demo. Reference: Compra Pública Innovadora rules (Ministerio de Hacienda). KPI-linked payment structure permitted under CPI — document this for future contracts.
#L2
Add ODbL attribution to both network READMEs
OSM-derived `net.net.xml` files require Open Database License attribution. Add notice to `networks/calle_blancos/README.md` and `networks/grecia/README.md`.
#L3
Research Iniciativa Privada route under CNC (Consejo Nacional de Concesiones)
Recommended entry path to avoid full SICOP competition. Map the "Modernización Inteligente de Corredor" proposal requirements and identify the receiving municipality or MOPT department.
#L4
Check CCSS + Hacienda + INS status — prerequisites for PYME registration
MEIC PYME registration requires: (1) up-to-date CCSS, (2) current Hacienda tax filing, (3) riesgos del trabajo insurance (INS). Confirm all three before Secretary submits registration.
#L5
Create `LICENSES.md` at repo root
Document dependency license chain: SUMO (EPL-2.0), sumo-rl (EPL), SB3 (MIT), Gymnasium (MIT), OSM data (ODbL). Needed if repo goes public or results are published.
#L6
Review drone operation requirements (DGAC) for potential aerial video collection
Budget: exam ~$122, license ~$94, operator course variable. Not a blocker for current SUMO phase — flag for Hito 2 (video dataset collection).
#L7
Secretary / Operations
Admin, coordination, tracking, document management, meeting logistics
🎯 Week Goal
Field visit to Calle Blancos scheduled + PYME registration initiated + data template folders created.
0 of 11 tasks done0%
Tasks — 11 total · 11 open · 0 done
Schedule field visit to Calle Blancos intersection this week
Purpose: (1) confirm semáforo is MOPT-operated and active; (2) identify optimal camera placement for AM/PM peak video capture (6–8am, 4–6pm); (3) photograph cabinet type (NEMA TS2 / Semex). Book at least 2 people.
#S1
Initiate PYME registration at MEIC (meic.go.cr)
Coordinate with Legal to confirm CCSS + Hacienda + INS are clear (L5) before submitting. Required to participate in public procurement under SICOP.
#S2
Track MOPT SQDC petition once filed
Log: (1) SQDC tracking number, (2) submission date, (3) legal deadline (10 business days per Ley 9097). Set calendar reminder for day 8. Escalation: Contraloría de Servicios (2523-2774) if no response by day 10.
#S3
Create `networks/calle_blancos/README.md`
Mirror the Grecia one. Document the 0-TLS situation explicitly (why it can't be used by sumo-rl yet) and the planned fix (D10).
#S4
Create `data/raw/grecia/turning_counts/TEMPLATE.csv` + `SOURCE.md` placeholder
Field collection template so the data collector knows the exact format expected. Include SUMO TLS ids from `networks/grecia/README.md` as the reference.
#S5
Create `data/raw/grecia/signal_plans/TEMPLATE.yaml` + `SOURCE.md` placeholder
Template for recording the real fixed-time plans that will replace the netconvert 39s/6s guessed programs.
#S6
Download MOPT Anuario de Tránsito — check TPDA portal for Calle Blancos / Radial de Guadalupe data
Free public data. Useful for SUMO route calibration while waiting for official DGIT response (L1). Archive in `data/raw/calle_blancos/`.
#S7
Manual visit to yoviajocr.com — capture local TUAN routes missing from `tuan_routes.csv`
Sarchí, Tacares, Poás routes out of the Grecia terminal. These affect total bus volume at the Calle 6 signal (TLS 2395356612).
#S8
Update `docs/training-roadmap.md` to reflect Grecia as active primary network
Waits on CEO decision C1. Change all references from Calle Blancos to Grecia as the primary training target.
#S9
Deprecate v1 section of `docs/setup-v1-vs-v2.md`
Add DEPRECATED header once CEO confirms C6. Prevents developer confusion from two conflicting setup approaches.
#S10
Set up project tracker (GitHub Projects) — import this weekly board as initial backlog
Single source of truth across roles. Link SQDC petition numbers, MEIC application, and Git commit hashes as they are created.
#S11
Comms / BD
Municipality outreach · Narrative · Press · Partner pipeline
🎯 Week Goal
Curridabat intro email sent (CEO-approved) + SmartLights CR one-pager drafted in Spanish.
0 of 7 tasks done0%
Tasks — 7 total · 7 open · 0 done
Draft + send intro email to Municipalidad de Curridabat (Laboratorio de Innovación)
Angle: "reduce wait times 15%, aligns with clean mobility plan, zero infrastructure replacement." Request an exploratory meeting. Do NOT mention SUMO or technical stack — focus on citizen benefit and KPIs. CEO must approve (C3) before sending.
#BD1
Draft SmartLights CR one-pager in Spanish (PDF, 1 page, for municipal officials)
Content: Problem (GAM congestion crisis) / Solution (retrofit + Edge AI, 10x cheaper than NoTraffic/Miovision) / KPI promise (≥15% wait time reduction) / Proof point (digital twin in progress) / Ask (pilot intersection). No jargon.
#BD2
Prepare Escazú pitch angle (security-dual-use value proposition)
Escazú already has a camera security system. Pitch: "edge AI nodes do double duty — traffic control AND feed your existing security monitoring center. Maximize ROI on cameras you already paid for." Prepare separately — audience differs from Curridabat.
#BD3
Contact UCR SIMOVI lab (Dr. Fabián Abarca, github.com/fabianabarca)
Explore GTFS tooling coverage for TUAN routes + possible research collaboration on Costa Rica transit data.
#BD4
Contact CTP (Consejo de Transporte Público) for official TUAN route data
Request whether any GTFS program exists for 2026 and if official headway/stop data is available for the Grecia corridor.
#BD5
Research TomTom Move free 30-day trial for Calle Blancos calibration data
TomTom Move provides directional speed and volume data. Evaluate before committing to a commercial license. Report to CEO: useful or skip?
#BD6
Initiate contact with MOPT Waze for Cities / CONAVI alliance
CONAVI has a Waze bidirectional data partnership. Position SmartLights CR as a complementary local layer (Waze gives macro flow, we give intersection-level real-time control).
#BD7
Weekly Goals — Jun 15–21, 2026
One measurable goal per area. End of Friday: each owner reports 🟢 / 🟡 / 🔴.
RoleGoalOpen / TotalOwner
👑 CEO / Founder
Confirm pilot municipality target (Curridabat or Escazú) + secure at least 1 institutional meeting request.
8 open / 8 total
CEO
💻 Developer
Smoke test exits 0 headless + `env` package skeleton running with Grecia network.
12 open / 12 total
Developer
🧪 Tester / QA
All Phase 1–5 verification steps documented with pass/fail evidence committed to repo.
6 open / 6 total
Tester
⚖️ Legal / Compliance
MOPT DGIT petition filed via SQDC + IP ownership clause drafted and reviewed by CEO.
7 open / 7 total
Legal
📋 Secretary / Operations
Field visit to Calle Blancos scheduled + PYME registration initiated + data template folders created.
11 open / 11 total
Secretary
📡 Comms / BD
Curridabat intro email sent (CEO-approved) + SmartLights CR one-pager drafted in Spanish.
7 open / 7 total
Comms
📁 Source of Truth
This dashboard was generated from docs/weekly/2026-W25_jun15-21.md
Sprint 1 · W25 · Jun 15–21, 2026
To update: edit the markdown file, then run:
uv run python scripts/sprint_dashboard.py --week <md-file>
To start next sprint:
uv run python scripts/sprint_dashboard.py --week <md-file> --carry-forward --next-dates "Jun 22–28, 2026"
Sprint 1 · W25 · Jun 15–21, 2026
To update: edit the markdown file, then run:
uv run python scripts/sprint_dashboard.py --week <md-file>
To start next sprint:
uv run python scripts/sprint_dashboard.py --week <md-file> --carry-forward --next-dates "Jun 22–28, 2026"