STRC Overnight Research Routine
Self-contained spec for a session triggered from a scheduled Telegram message in @super_claudecode_bot. The routine is the synthesis + morning-report layer that runs once a day after strc-lit-watch (05:33 local) has already pulled new literature into the vault. It does NOT do its own paper scanning.
Output destination: ~/STRC/notes/STRC Morning Report YYYY-MM-DD.md.
Step 0 — orient
- Read
~/STRC/AGENTS.mdend-to-end. Hard rules to honour every step:- §0 ranking discipline (S/A/B/C/D, hub-first, every proof closes with
## Ranking delta). - §0b scripts inventory (any new/modified script under
~/STRC/hypotheses/*/scripts/or~/STRC/models/adds a row toSTRC Computational Scripts Inventorythe same turn). - §0c literature-first (no numerical input without primary-literature backing — if missing, retrieve the literature first; never fabricate “estimates”).
- §0d AF3/interface-screen + Apple Silicon first for heavy compute.
- §0 ranking discipline (S/A/B/C/D, hub-first, every proof closes with
- Read
~/STRC/notes/STRC Hypothesis Ranking.md(the live Dataview hub-of-hubs). This is the ground-truth ranking for the session. - Read the most recent
~/STRC/notes/STRC Morning Report *.mdto understand what was already shipped overnight before today. - Read
~/STRC/notes/STRC Computational Scripts Inventory.mdto know which scripts are active vs scaffold. - Tail
~/.cache/strc-lit-watch/log.txt(last 200 lines) and list the newest files in~/STRC/sources/lit/modified in the last 24 h — this is what the literature watcher delivered overnight.
If any required file is missing, log a one-line warning at the top of the morning report and proceed with best-effort.
Step 1 — pick the highest-leverage move
After step 0 you have: current ranking, what shipped recently, what new literature appeared, current scripts state. Pick one primary move for this run:
A. Synthesis-only (default). New lit is interesting but no new compute is justified. Produce the morning report and propose decisions for Egor.
B. Tight computational add-on. Only if the move is small (≤ 30 min wall, no AF3, no overnight MD), is well-scoped, and is clearly unblocked by what came in overnight. Examples: a parameter-fill ODE update, a small APBS rescore, a feasibility sketch. If it touches models/ or hypotheses/*/scripts/, follow §0b same turn.
C. Hub maintenance. If a hypothesis tier should genuinely change (e.g. new lit kills a B-tier or promotes a D-tier), do the hub edit and write a ## Ranking delta. No silent re-tiering.
Do NOT kick off long compute (any AF3 submission, full MD, off-target panels, library expansions) without an explicit go-ahead in the Telegram message itself. Default refuses long compute and lists it under “Egor decisions needed” instead.
Step 2 — literature-first sanity gate
If the chosen move uses any numerical parameter (Kd, IC50, expression level, half-life, anything), confirm that every number traces to a sources/lit/ file. If not, retrieve the literature first via:
qmd query "<term>" --sources strc booklibrary research(fast local hybrid search).- If still missing, escalate to the relevant skill:
annas-archivefor books / paywalled,sci-hubfor PMC-walled, Crossref/PubMed for DOI hunts. - Never invent values from training data. If a parameter cannot be sourced this run, log it under “Open lit gaps” in the morning report and skip the move that needs it.
Step 3 — execute
Carry out the chosen move in the appropriate location:
- New atomic notes →
~/STRC/notes/. - Phase proofs →
~/STRC/hypotheses/h{N}-{slug}/phases/. Required: full frontmatter,## Connectionsblock with at least one wikilink, and a## Ranking deltaat the bottom (record “no change” if applicable). - New / modified scripts →
~/STRC/hypotheses/h{N}-{slug}/scripts/or~/STRC/models/, then add a row inSTRC Computational Scripts Inventory.mdthe same turn. - New external tool / API / software introduced this run →
~/STRC/tools/<tool>.mdcard before first use (thestrc-rankskill enforces this if you invoke it). - Hub frontmatter edits (
tier,score,next_step) → only via §0 ranking discipline.
If the move closes a phase that cites primary literature, every [source] wikilink must point to an existing sources/lit/ file (literature-first rule).
Step 4 — write the morning report
File: ~/STRC/notes/STRC Morning Report <YYYY-MM-DD>.md where the date is date +%Y-%m-%d at the moment the routine starts.
Required frontmatter:
---
date: YYYY-MM-DD
type: note
tags: [strc, morning-report, routine, autonomous]
sites: [strc]
---Body sections, in order:
- TL;DR (3 lines max) — what shipped, the most important number or decision, the top open question.
- Ranking state (before → after) — short table: tier / mech / deliv / misha_fit per affected hypothesis. If nothing changed, say so.
- What shipped this run — verdict per phase / note / model / script touched. Each entry links the proof file.
- New literature relevant to current S/A tier — bullets of any
sources/lit/files added in the last 24 h that move an S/A hypothesis. Skip if none. - Open lit gaps — any unsourced parameter the routine refused to fabricate.
- Egor decisions needed — numbered list. Each item is concrete: “approve N hours of MD on X”, “review wet-lab shortlist Y”, “decide v5.3 scaffold direction Z”. Empty list is a valid morning report.
- Compute summary — wall time + which device (CPU / MPS / Metal / MLX / CoreML) for any work this run actually did. Skip if synthesis-only.
- Sanity check — wikilink balance (
grep -c '\[\['vsgrep -c '\]\]'), that hub frontmatter changes match the## Ranking delta, that the scripts inventory has rows for every new script. ## Connections— at least one wikilink. Use the 7-label vocabulary from STRC AGENTS.md ([part-of],[references],[supports],[contradicts],[see-also],[about],[audience]). Bare wikilinks for anything outside that vocabulary.
Style: clipped bullets, named numbers, no marketing prose, no emoji. The Morning Report 2026-04-25 is the reference template (~/STRC/notes/STRC Morning Report 2026-04-25.md).
Step 5 — lint + close
- Run
cd ~/STRC && python3 scripts/brain-lint.pyand fix anything the routine itself introduced. Pre-existing lint debt is logged but not auto-fixed unless trivial. - If any tier / score / next-step changed in a hub: prepend the entry to the relevant
~/STRC/hypotheses/h{N}-{slug}/log.md. - Final stdout: one line summary in this exact shape so Telegram footer is parseable:
strc-routine done: <move-class> | <N hypotheses touched> | <M lit gaps> | <K decisions for Egor>
Where <move-class> is synthesis / compute / hub-only / noop.
Hard constraints (do NOT violate)
- No long compute (>30 min wall) without explicit go-ahead in the trigger message.
- No fabricated numerical values. Literature-first or refuse the move.
- No silent re-tiering. Every hub frontmatter change is paired with a
## Ranking delta. - No writes outside
~/STRC/. If a Brain note must be touched, surface it as a decision item instead of editing. - No new wet-lab content (Phase 8+ vendor selection, SOPs, costs, patch-clamp protocols) unless the trigger message explicitly asks. Default is computation + verification only.
- Stay on Apple Silicon for any compute (MPS / Metal / MLX / CoreML); never silently land on CPU for jobs ≥ 30 min.
Trigger override grammar
The Telegram trigger message can extend the default behaviour with one of these qualifiers:
... focus h01— restrict the move to that hypothesis only.... compute ok up to Nh— allow longer compute, capped at N hours wall.... synthesis only— force move-class A; no model / script writes.... include af3— allow AF3 submission this run.
Without qualifiers, defaults above hold.
Connections
[part-of]STRC[see-also]STRC Morning Report 2026-04-25 — reference output template[see-also]STRC Hypothesis Ranking — ground-truth ranking the routine reads[see-also]STRC Computational Scripts Inventory — §0b enforcement target- strc-lit-watch — upstream literature watcher (writes the inputs this routine synthesizes)