Skip to content
Internals — research note: investigation or findings, not a description of shipped behaviour.
Unverified: This page has not yet been anchored to automated code tests.

SCIENTIA Automated Research — agent handoff

SCIENTIA Automated Research — agent handoff (2026-06-16)

Section titled “SCIENTIA Automated Research — agent handoff (2026-06-16)”

Purpose: Give a new coding agent everything needed to continue SCIENTIA automated-research work without reading prior chat transcripts.

Prior session transcript (optional): SCIENTIA implementation thread (conversation ID: e7d7e3cc-75f3-48d0-857e-3565aa958bfe) — use only for dispute resolution; this doc is the SSOT for remaining work.


Upgrade Vox SCIENTIA from human-driven publication tooling to a serious, human-gated research pipeline:

PillarIntent
Correct noveltyNo false Novel on failed/empty retrieval; real embeddings when online; contradicted when conflicts exist; golden harness for regression
Unified research loopvox research run → finding candidates / mesh → SCIENTIA discovery inbox (not parallel silos)
Retrieval depthTavily extract/research tiers, citation diversity, Graphify P1 lexical leg in prior-art bundle
Archive runZenodo autofill, dual human approval, non-zero exit on blockers, Software Heritage + nanopub test-server path
GUI surfacingNovelty evidence panel, discovery inbox, archive status — extend ScientiaDashboard, do not fork a parallel surface

Human approval is the hard gate everywhere. Nothing reaches a production network without ApprovalToken-backed dual publication approval. Do not bypass has_dual_publication_approval_for_digest on archive paths.

Explicitly out of scope (standing decisions):

  • Production nanopub network publish
  • Live arXiv API submission (handoff bundle only)
  • New .ps1 / .sh / .py glue scripts (VoxScript-first policy)

Authoritative references (read before large changes)

Section titled “Authoritative references (read before large changes)”
DocRole
scientia-automated-research-historical-extension-research-2026.mdHistorical context, §4 code-review findings with June 2026 status
2026-06-12-scientia-research-pipeline-upgrade.mdTracks A–E task-level plan (checkboxes may lag code)
scientia-self-publication-gap-map-2026.mdEnd-to-end user journey gaps (IMRaD, replay writeback, scout, etc.)
search-retrieval-ssot-2026.mdCRAG, Tavily, Tantivy, retrieval bundle
graphify-integration-research-2026-06-16.mdGraphify P0–P3; MCP query tool still open

Do not edit .cursor/plans/scientia_research_full_plan*.plan.md if present — it is a session plan artifact; use this handoff + the superpowers plan instead.


Git / branch state (as of 2026-06-16 handoff)

Section titled “Git / branch state (as of 2026-06-16 handoff)”
ItemValue
Branchfeat/vault-decryption-recovery
HEAD commit (unrelated vault doc)da9c8afc50 — docs(secrets): add Clavis vault decryption recovery runbook
SCIENTIA workLarge uncommitted working tree (~295 files, +20k/−8k lines in full diff; SCIENTIA is a major subset)
Merge-base noteSCIENTIA implementation was developed against main; review base was 908c8c7fbe in prior session

Next human-facing milestone: Run verification gate (below) → commit SCIENTIA diff (only when human asks) → open focused PR (consider splitting vault vs SCIENTIA if diff is mixed).


What shipped (Waves 0–6 — in working tree)

Section titled “What shipped (Waves 0–6 — in working tree)”

Treat code + tests as source of truth; plan checkboxes were not bulk-updated.

Wave 1 — Track A remainder (novelty correctness)

Section titled “Wave 1 — Track A remainder (novelty correctness)”
DeliverablePrimary paths
InsufficientEvidence verdictcrates/vox-scientia/src/inspect_bridge/novelty.rs
Embedder guardcrates/vox-publisher/src/scientia_semantic.rs — require_embedder_for_online_novelty; env VOX_SCIENTIA_REQUIRE_EMBEDDER in contracts/config/env-vars.v1.yaml
Bundle SSOT unificationNoveltyEvidenceBundleV1 + contract parity
assess_novelty pipelinecrates/vox-publisher/src/scientia_novelty_assess.rs — chrono + conflicts; conflicts → contradicted
Golden harnesscrates/vox-publisher/tests/novelty_golden_harness.rs, fixture tests/fixtures/novelty_golden/cases.jsonl (13 cases incl. contradicted conflict_pair)
Embedder callsite guard testcrates/vox-cli/tests/publication_embedder_guard.rs

Wave 2 — Track F (unified research loop)

Section titled “Wave 2 — Track F (unified research loop)”
DeliverablePrimary paths
Discovery bridgecrates/vox-research-shim/src/research/discovery_bridge.rs
planner_degraded UXcrates/vox-research-shim/src/research/planner.rs + session metadata
Provider → vox-searchcrates/vox-research-shim/src/research/provider.rs
Pipeline cache fixcrates/vox-research-shim/src/research/orchestrator/pipeline_cache.rs — upsert_knowledge_node
Integration testscrates/vox-research-shim/tests/scientia_research_discovery_bridge.rs
WAL on :memory: fixvox-db — apply_pragmas_for_memory (discovery-bridge DB tests)
DeliverablePrimary paths
Tavily extract / researchcrates/vox-search/src/tavily_extract.rs, tavily_research.rs
Graphify P1 lexical legcrates/vox-publisher/src/scientia_prior_art.rs
Citation diversity gateresearch pipeline stages (see prior-art / research stage modules)
DeliverablePrimary paths
Replay writeback to worthinessworthiness / replay integration
MENS training run producercrates/vox-scientia/src/producers/mens_training_run.rs
Findings Astro routedocs-astro/src/pages/findings/[uri].astro (shells out to vox-dev.ps1 / vox-dev.sh — docs-build coupling)
Venue / critic contractscontracts/scientia/finding-class-defaults.v1.yaml, allows_llm_critic
DeliverablePrimary paths
Zenodo autofillcrates/vox-publisher/src/scientia_autofill.rs
Archive orchestratorcrates/vox-cli/src/commands/db/publication/archive_run.rs
Code-uniqueness KNNcrates/vox-publisher/src/scientia_producers/code_uniqueness.rs
Dual approval + blocker exitarchive_run.rs — has_dual_publication_approval_for_digest, archive_run_blocker_result → bail!, unit test archive_run_blocker_returns_error_not_ok
Autofill before completion reportcompose_autofill_for_archive ordering in archive run
ComponentPath
Novelty evidence panelcrates/vox-gui/ui/src/components/surfaces/Scientia/NoveltyEvidencePanel.tsx
Discovery inboxDiscoveryInbox.tsx
Archive statusArchiveStatusSummary.tsx
API typesnoveltyApi.ts — includes contradicted
Tests*.test.tsx for above + ScientiaDashboard.test.tsx
Gamify kudoswired when gamify enabled (research session complete)

Post-implementation code review (June 2026)

Section titled “Post-implementation code review (June 2026)”

A /requesting-code-review pass flagged Important items. All were already fixed in the working tree when re-inspected after interrupted parallel-agent runs:

FindingResolution
Archive dual approvalhas_dual_publication_approval_for_digest in archive path
Blocked archive exits 0archive_run_blocker_result bails; unit test present
Autofill before archive completioncompose_autofill_for_archive runs before completion report
contradicted in assess pathConflicts override in scientia_novelty_assess.rs
GUI contradictedTypes + panel + vitest
discovery_watch embedder guardIn publication_embedder_guard.rs callsite list + source

No net-new implementation was required for those items; the remaining gate is fresh verification, not more feature work.


  1. Run Rust verification sequentially (see commands below). Do not dispatch parallel cargo test on the same workspace — Windows + shared target/ causes lock contention (observed repeatedly in prior session).
  2. Confirm green on all targeted tests before commit/PR.
  3. Commit the SCIENTIA diff when the human asks — split from unrelated vault work if the diff is mixed on feat/vault-decryption-recovery.

P1 — Known open items (not blocking Wave 0–6 claim)

Section titled “P1 — Known open items (not blocking Wave 0–6 claim)”
ItemNotes
Graphify P1 → P2Lexical leg shipped; full MCP vox_graphify_search + semantic leg still open per graphify-integration-research-2026-06-16.md
graphify-out/ collisionCI artifacts vs Graphify graphs — blocks trustworthy ingest (§4.3 finding 13)
GUI CLI coverage ~10%vox-gui-scientia-coverage-audit-2026.md — many CLI commands still lack GUI
Prereg doc driftGap map cites vox-prereg crate; reality is vox-orchestrator/src/preregistration/ — dedicated doc-hygiene PR (§8 of historical extension doc)
Findings Astro routeDepends on dev launcher shell scripts for build-time vox invocation
Pre-existing vox-search failuressemcov_wave21_tests, ingest_markdown_tree — unrelated to SCIENTIA; do not conflate with this handoff gate
IMRaD scaffold, full collated dashboard, Provider Atlas → registryPhase 4 backlog in historical extension §9
  • OpenRouter spend HUD tile (contract exists; GUI incomplete — finding 16)
  • Expand golden harness if scorer thresholds change (maintain 1.0 precision/recall on deterministic fixtures)
  • vox ci pre-push --complete before push (clippy + scoped gates)

Run one at a time from repo root. Use full cargo path on Windows if PATH is minimal:

Terminal window
& "$env:USERPROFILE\.cargo\bin\cargo.exe" test -p vox-scientia inspect_bridge::novelty
& "$env:USERPROFILE\.cargo\bin\cargo.exe" test -p vox-publisher --test novelty_golden_harness
& "$env:USERPROFILE\.cargo\bin\cargo.exe" test -p vox-research-shim --test scientia_research_discovery_bridge
& "$env:USERPROFILE\.cargo\bin\cargo.exe" test -p vox-cli --test publication_embedder_guard --test publication_archive_run_plan
& "$env:USERPROFILE\.cargo\bin\cargo.exe" test -p vox-search --test tavily_extract_test
cd crates/vox-gui/ui; pnpm test --run NoveltyEvidencePanel DiscoveryInbox ScientiaDashboard ArchiveStatusSummary
& "$env:USERPROFILE\.cargo\bin\cargo.exe" check -p vox-scientia -p vox-publisher -p vox-research-shim -p vox-search -p vox-cli

GUI status at handoff: vitest 10/10 passed (NoveltyEvidencePanel 4, DiscoveryInbox 3, ScientiaDashboard 2, ArchiveStatusSummary 1).

Rust status at handoff: Prior session reported green; fresh run blocked by concurrent cargo builds on default target/ (parallel agent dispatch + other background jobs). Retry when Get-Process cargo is empty or use isolated worktree target per .cargo/config.toml policy.

Fast pre-push (after targeted tests): vox ci pre-push or pwsh -File scripts/windows/vox-dev.ps1 ci pre-push


  • Resolve secrets via vox_secrets::resolve_secret(...) — never raw env::var for tokens
  • All LLM/embed calls via vox_actor_runtime::llm (llm_embed, llm_chat, …) — no vendor hostnames at callsites
  • Contract changes: bump x-vox-version, regenerate with vox schema generate, run vox ci data-storage-guard
  • New VOX_* env vars → contracts/config/env-vars.v1.yaml
  • Do not hand-edit @generated-hash files
  • Online novelty with VOX_SCIENTIA_REQUIRE_EMBEDDER=1 must call require_embedder_for_online_novelty at every online prior-art callsite (enforced by publication_embedder_guard.rs)
  • Route novelty UX through assess_novelty, not raw AtomicNoveltyScorer::score alone
  • Archive run must enforce dual approval and fail closed on blockers
  • Format: vox run scripts/fmt.vox — never cargo fmt --all
  • Bootstrap without global vox: pwsh -File scripts/windows/vox-dev.ps1 <cmd>
  • TDD for new pub fn (see AGENTS.md)
  • Parallel subagents: one agent per independent domain; never parallel cargo build/test on same checkout
  • Commits / PRs only when human explicitly asks
  • Local CI first — do not push to GitHub for iteration feedback

Novelty scorer (raw) crates/vox-scientia/src/inspect_bridge/novelty.rs
Novelty assess (full) crates/vox-publisher/src/scientia_novelty_assess.rs
Prior art fetch crates/vox-publisher/src/scientia_prior_art.rs
Embedder guard crates/vox-publisher/src/scientia_semantic.rs
Golden fixture crates/vox-publisher/tests/fixtures/novelty_golden/cases.jsonl
Research orchestrator crates/vox-research-shim/src/research/
Discovery bridge crates/vox-research-shim/src/research/discovery_bridge.rs
Archive CLI crates/vox-cli/src/commands/db/publication/archive_run.rs
Publication guards crates/vox-cli/tests/publication_embedder_guard.rs
crates/vox-cli/tests/publication_archive_run_plan.rs
Tavily tiers crates/vox-search/src/tavily_{extract,research}.rs
GUI Scientia surfaces crates/vox-gui/ui/src/components/surfaces/Scientia/
Review / approval crates/vox-scientia/src/review_flow.rs
Claim extractor crates/vox-scientia/src/claim_extractor/
Contracts contracts/scientia/

Parallel-agent dispatch lessons (from prior session)

Section titled “Parallel-agent dispatch lessons (from prior session)”

When using /dispatching-parallel-agents:

✅ Good parallel domains❌ Bad parallel domains
GUI vitest vs Rust tests after build existsMultiple cargo test on same target/
Archive_run.rs vs novelty_golden vs discovery_bridge if agents don’t share filesTwo agents editing scientia_novelty_assess.rs
Code review verification (read-only) per crateFull workspace cargo build × N

Review-fix dispatch was interrupted twice (~14–30 min) with no agent output; parent inspection showed fixes already landed. Prefer sequential verification over re-dispatch for merge gates.


Suggested commit message (when human requests commit)

Section titled “Suggested commit message (when human requests commit)”

Use conventional commits; scope to SCIENTIA only if diff is split:

feat(scientia): automated research Waves 0–6 — novelty, unified loop, archive, GUI
Implements embedder guard, assess_novelty contradicted path, discovery bridge,
Tavily extract/research, archive autofill with dual approval, and Scientia GUI
panels. Golden harness + integration tests included.


  • Read this doc + §4 of scientia-automated-research-historical-extension-research-2026.md
  • Ensure no other cargo processes hold target/ lock
  • Run P0 verification commands sequentially; record pass/fail
  • If Rust fails, fix only the failing domain; do not refactor unrelated SCIENTIA code
  • Ask human before commit/PR; consider branch split if vault + SCIENTIA are mixed
  • Update §4 status in historical extension doc if verification reveals new gaps