Skip to content

[feat] speed-review: add Biosecurity rounds, show rounds until first discussion#2640

Merged
WillSaunter merged 1 commit into
masterfrom
will/speed-review-biosec
Jun 10, 2026
Merged

[feat] speed-review: add Biosecurity rounds, show rounds until first discussion#2640
WillSaunter merged 1 commit into
masterfrom
will/speed-review-biosec

Conversation

@WillSaunter

Copy link
Copy Markdown
Contributor

Summary

  • Biosecurity added to the round picker. ALLOWED_COURSES in RoundPicker.tsx previously listed only AGI Strategy / Technical AI Safety / Technical AI Safety Project, so Biosecurity rounds returned by /api/rounds were 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).
  • Rounds now show until their first discussion has happened. Previously rounds were hidden once the first discussion was within 5 days (i.e. from the application deadline, which is 4 days before first discussion). Will sometimes needs to review applications later than that at a push, so the cutoff is now start-of-today: a round disappears only once its first discussion date has passed.

Test plan

  • Round picker shows a Biosecurity section with the Jun W25 Intensive and Jun W26 Part-time rounds
  • Biosecurity rounds load applications sorted by Total score; summary card shows Commitment + Impressiveness pills and no Technical skill pill
  • A round with first discussion today or later still appears; rounds with a past first discussion don't

🤖 Generated with Claude Code

…discussion

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Will-Howard Will-Howard temporarily deployed to will/speed-review-biosec - bluedot-preview PR #2640 June 10, 2026 11:06 — with Render Destroyed
@Will-Howard Will-Howard temporarily deployed to will/speed-review-biosec - bluedot-storybook-preview PR #2640 June 10, 2026 11:06 — with Render Destroyed
@coderabbitai

coderabbitai Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 1b420e53-50f7-483c-8d34-3a1580ed41f9

📥 Commits

Reviewing files that changed from the base of the PR and between 61d438f and 8c9bf8e.

📒 Files selected for processing (2)
  • apps/speed-review/src/components/RoundPicker.tsx
  • apps/speed-review/src/lib/api/airtable.ts

📝 Walkthrough

Walkthrough

The pull request updates rounds filtering across two components. The RoundPicker component's ALLOWED_COURSES allowlist is expanded to include Biosecurity, widening which course rounds are available in the UI. The API's fetchRounds function modifies its date-based filtering logic, removing the 5-day lookahead window and instead excluding any rounds whose first discussion has already occurred, using today's date normalised to midnight as the comparison point.

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the two main changes: adding Biosecurity rounds and adjusting round visibility logic based on first discussion date.
Description check ✅ Passed The description is comprehensive, covering motivation, changes, and test plan. However, the Issue section (Fixes #) is missing, and the Developer checklist is not properly completed.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch will/speed-review-biosec

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@greptile-apps

greptile-apps Bot commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This 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).

  • RoundPicker.tsx: Adds 'Biosecurity' to ALLOWED_COURSES so Biosecurity rounds returned by /api/rounds are no longer filtered out on the client.
  • airtable.ts: Removes the cutoff.setDate(cutoff.getDate() + 5) offset so cutoff is set to the start of today; rounds whose firstDiscussion is today or later continue to appear.

Confidence Score: 4/5

Safe 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

Filename Overview
apps/speed-review/src/lib/api/airtable.ts Removes the +5-day buffer so rounds are shown until the first discussion date passes; the date comparison works correctly in UTC but has a theoretical mismatch for servers in negative-offset timezones.
apps/speed-review/src/components/RoundPicker.tsx Adds 'Biosecurity' to ALLOWED_COURSES; straightforward one-line change with no logic impact.

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]
Loading

Comments Outside Diff (1)

  1. apps/speed-review/src/lib/api/airtable.ts, line 159-173 (link)

    P2 Date-string vs local-midnight timezone mismatch

    Airtable date-only fields are returned as "YYYY-MM-DD" strings, and new Date("2026-06-10") parses them as UTC midnight. Meanwhile cutoff is set to local midnight via setHours(0, 0, 0, 0). In any timezone west of UTC (negative offset), the UTC midnight of a date is earlier than local midnight, so a round whose firstDiscussion falls on today's date will be < cutoff and incorrectly filtered out for the rest of that local day. Replacing setHours with setUTCHours(0, 0, 0, 0) makes both sides of the comparison UTC and removes the ambiguity.

Reviews (1): Last reviewed commit: "[feat] speed-review: add Biosecurity rou..." | Re-trigger Greptile

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'];

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 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!

@WillSaunter WillSaunter merged commit d714d5d into master Jun 10, 2026
9 checks passed
@WillSaunter WillSaunter deleted the will/speed-review-biosec branch June 10, 2026 11:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants