[feat] speed-review: add Biosecurity rounds, show rounds until first discussion#2640
Conversation
…discussion Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThe pull request updates rounds filtering across two components. The RoundPicker component's Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Greptile SummaryThis PR makes two small, targeted changes to the speed-review app: it adds Biosecurity to the client-side course allowlist, and it tightens the round-visibility window so rounds remain visible until their first discussion date has passed (rather than disappearing 5 days early).
Confidence Score: 4/5Safe to merge; both changes are small and well-scoped with no impact on write paths. The cutoff logic now compares an Airtable UTC-midnight date string against a local-midnight Date, which works correctly when the server runs in UTC but could silently hide a same-day round on servers in negative-offset timezones. The course list remains hardcoded and will need another code change if the set of reviewable courses changes again. apps/speed-review/src/lib/api/airtable.ts — the cutoff / firstDiscussion date comparison. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[fetchRounds called] --> B[Fetch Active/Future rounds from Airtable]
B --> C[Map records to id, name, course, firstDiscussion]
C --> D{name empty?}
D -- yes --> E[Filter out]
D -- no --> F{firstDiscussion set?}
F -- no --> E
F -- yes --> G{firstDiscussion >= cutoff start of today?}
G -- no --> E
G -- yes --> H[Include round]
H --> I[Sort by firstDiscussion asc]
I --> J[Return Round array]
J --> K[RoundPicker client-side filter]
K --> L{courseFromRoundName in ALLOWED_COURSES?}
L -- no --> M[Skip]
L -- yes --> N[Show in grouped section]
|
| const DIRECTION_STORAGE_KEY = 'speed-review:direction'; | ||
| const ROUNDS_PER_COURSE = 3; | ||
| const ALLOWED_COURSES = ['AGI Strategy', 'Technical AI Safety', 'Technical AI Safety Project']; | ||
| const ALLOWED_COURSES = ['AGI Strategy', 'Biosecurity', 'Technical AI Safety', 'Technical AI Safety Project']; |
There was a problem hiding this comment.
Hardcoded course list requires code change to add/remove courses
ALLOWED_COURSES is a hardcoded string array that must be edited and redeployed every time the set of reviewable courses changes. Consider driving this list from a configurable source (environment variable, config file, or a field in the Airtable rounds table) so the list can be updated without a code change.
Rule Used: Consider making course selection logic configurabl... (source)
Learned From
bluedotimpact/bluedot#967
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
Summary
ALLOWED_COURSESinRoundPicker.tsxpreviously listed only AGI Strategy / Technical AI Safety / Technical AI Safety Project, so Biosecurity rounds returned by/api/roundswere filtered out client-side. The June rounds already have AI summaries + Commitment/Impressiveness scores in Airtable, so they're ready to review (Jun W25 Intensive: 61 scored undecided applications; Jun W26 Part-time: 79).Test plan
🤖 Generated with Claude Code