Skip to content

Literature Review domain vertical (v0.3.1)#41

Open
FuZhiyu wants to merge 67 commits into
mainfrom
literature-review
Open

Literature Review domain vertical (v0.3.1)#41
FuZhiyu wants to merge 67 commits into
mainfrom
literature-review

Conversation

@FuZhiyu

@FuZhiyu FuZhiyu commented Jul 2, 2026

Copy link
Copy Markdown
Owner

Literature Review Domain Vertical (v0.3.1)

Adds a literature-review skill vertical that teaches the search → screen → snowball → classify discipline for economics/finance literature reviews, composing existing skills rather than restating them. The deliverable a review produces is a curated, provenance-tracked, classified collection — not drafted prose.

What's in it

  • Citation-graph & metadata client (skills/literature-review/scripts/citation_client.py) — keyless, stdlib-only PEP 723 tool with six JSON subcommands (search, references, citations, metadata, dedup, health) over Semantic Scholar / Crossref / arXiv. S2 optional with graceful degradation; keys read from env/Notes/.env, never printed. 42 offline tests (no network, no keys) + a pinned command-surface reference doc.
  • Skill core (SKILL.md) — discovery trigger + a two-part execution model: a main-agent interactive setup (criteria, schema, seed set, Zotero policy) and a loop-until-dry fan-out that screens/classifies one paper per agent. Dual-mode ledger schema (subtree-as-ledger inside a superRA tree; folder ledger standalone) and a Workflow executor template.
  • Discipline references — four stage-scoped references: search & screening + convergence, econ/finance corpus discipline (WP-first, version-of-record metadata, JEL/tier weighting), anti-hallucination grounding + concept matrix, and synthesis + matrix-sparsity gap detection.
  • Zotero add path (skills/zotero-paper-reader) — new add/attach/selected subcommands with a verbatim Crossref→Zotero mapper (journalArticle/preprint/report), a local-connector-default write path (no Docker, no key) with cloud Web-API fallback, DOI dedup-before-save, and the PDF version-divergence flag. 21 offline tests.
  • Discovery wiring — registered as a Utility skill across CATEGORIES.md, README.md, the .agents symlink invariant, and a skill-triggering test prompt.

Design notes

  • Web-first, multi-modal discovery. Front-line search leads with the agent's web search (S2/Crossref lag on new working papers); the citation graph is for snowballing, not sole search. No OpenAlex, no Docker/translation-server.
  • Keyless by default. Only Mistral (OCR) and an optional cloud Zotero write key are ever needed; the local connector needs none.
  • Metadata is never agent-authored — always queried verbatim from the published version of record.

Verification

All tasks implemented and independently reviewed (implementer + adversarial reviewer per task). Test suites green: citation_client 42, zotero_tool 21. Public-repo hygiene enforced — a reviewer caught and scrubbed a leaked personal item key before approval; tests use only synthetic/placeholder data.

🤖 Generated with Claude Code

FuZhiyu and others added 30 commits July 2, 2026 16:13
New top-level vertical to build skills/literature-review/ — the search →
screen → synthesize discipline for econ/finance reviews, shipping an
interactive-setup + fan-out (screen/summarize/classify) loop-until-dry
workflow over a subtree/folder paper ledger.

Five children: citation-metadata-client (S2 + Crossref + arXiv, no OpenAlex,
no Docker) → skill-core + zotero-add (local-connector-default add) →
skill-references → discovery-wiring-and-tests. Metadata is always the
published version of record, queried verbatim; PDF best-effort with a
WP-vs-published divergence flag.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Discovery now leads with web search (site-scoped SSRN/NBER/RePEc/arXiv +
author pages) because S2/citation-graph indexes lag the newest working
papers; S2's role narrows to the citation graph + indexed semantic search.
Un-indexed papers get verbatim metadata from page citation_* / Dublin Core
meta tags (client gains a metadata --url fallback), never agent-authored.

Zotero add: library/collection targeting is a setup-survey question the
main agent asks before the loop; Web API targets any library/group +
collection cleanly, local connector follows the desktop UI selection, and
the requested target selects the add path.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
No API keys required — S2/Crossref/arXiv are keyless and S2 is optional
(web search + Crossref carry the loop; S2 only accelerates citation
snowballing). Local-connector save has no target param, so the agent must
report the currently-selected library/collection and let the user switch
it in the Zotero UI before saving.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
… citation/metadata client + reference doc + offline tests

New skills/literature-review/ directory (no SKILL.md yet — skill-core's deliverable):

- scripts/citation_client.py: stdlib-only PEP 723 client. Six JSON subcommands
  (search, references, citations, metadata, dedup, health) over keyless S2 /
  Crossref / arXiv, modeled on zotero_tool.py. Injectable transport; S2 optional
  with graceful degradation; keys read from env/Notes/.env, never printed.
- references/citation-client.md: pins the command surface + normalized record
  shape that skill-core and zotero-add depend on.
- scripts/test_citation_client.py: 42 offline tests (FakeTransport, no network,
  no keys) — dedup cascade bands, mappers, handlers, S2-outage, secret hygiene.

Abstract policy prefers S2->arXiv then retains a Crossref abstract as last resort
rather than blanking it (guidance deviation noted in Results). Parent task.md
status is the hook's ancestor cascade.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
… suite/no-key path, dedup flag-for-review, secret hygiene verified; abstract-retention deviation accepted

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…orkflow, ledger schema, loop-until-dry executor

Author skills/literature-review/SKILL.md: pushy discovery trigger frontmatter
with a single-paper negative boundary; concise procedural body routing depth to
the four skill-references files (by name) plus the bundled citation-client
surface. Body owns the execution shape — two-part interactive-setup + fan-out
workflow, dual-mode ledger schema with the version-divergence flag, and the
loop-until-dry executor template with the superimplement-style dispatch loop as
the alternative. Composes zotero-paper-reader / mistral-pdf-to-markdown / writing
by pointer, not restatement.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…es trigger, reference contract, ledger schema, and loop-until-dry executor

Verified frontmatter trigger + negative boundary to zotero-paper-reader; the four skill-references filenames form a clean downstream contract; composed skills pointed to not restated; ledger captures metadata-is-published + PDF-version-divergence; executor cites real client subcommands. Markdown self-check clean, frontmatter matches domain-skill convention.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…ge/domain references

Author the four references under skills/literature-review/references/ at the
filenames and load conditions fixed by the approved SKILL.md References table:
search-and-screening, econ-corpus, grounding-and-extraction, synthesis-and-
classification. Each states its load condition, a principle, the mechanism, and
a line-by-line identification protocol (tells to flag), one level deep and
standalone. Prose self-contained: no repo-internal or cross-skill pattern
citations, no AI-flavored prose. All four pass the markdown renderer check.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…te path

Extend skills/zotero-paper-reader with a write path defaulting to the local,
no-key connector, cloud Web API as fallback.

- add / attach / selected subcommands + Crossref->Zotero mapper covering
  journalArticle / preprint / report (report DOI -> extra; crossref JATS
  abstract dropped; single vs two-field creators verbatim).
- stdlib direct-HTTP connector helper (uuid+urllib): non-Mozilla UA +
  allowed-request header, API-version 3, fresh sessionID, 409-retry;
  getSelectedCollection/updateSession targeting; auto path selection; DOI dedup.
- 21 offline tests (fake connector + fake pyzotero); 63 passed with the
  existing citation-client suite. Live local smoke test landed a placeholder
  item with verbatim metadata and confirmed live dedup.
- SKILL.md + access-modes.md document the read-only local /api vs connector/
  Web-API write paths.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
… verified against SKILL.md table and shipped skill-core interface

Load conditions match the References table; each teaches principle + line-by-line
identification protocol; standalone, one level deep, no repo-internal or cross-skill
pattern citations; ledger fields/dedup thresholds/subcommands consistent with skill-core;
all render clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…ommitted to public repo

CRITICAL: task.md Results caveat quotes a real personal My Library item key;
public repo forbids any real library data. All code, tests, and docs otherwise
verified — verbatim mapper, connector wire, path selection, dedup, divergence
flag, no secret leakage, offline suite green with no keys.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
… item key

Resolve the CRITICAL public-repo finding: the Results caveat quoted a real
Zotero item key from the user's personal My Library. Refer to the stray
smoke-test item by its synthetic title only; keep the manual-delete ask.
Review Notes cleared; status -> approved.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…ter vertical + trigger test

Register literature-review as a user-invocable Utility skill (not a
Domain-manifest skill): confirmed against the current Skill-Load Manifest
stage model — its main-agent setup + self-driven fan-out do not auto-load
at a workflow stage, matching zotero-paper-reader.

- CATEGORIES.md: Utility-table row; drop stale lit-review Domain roadmap bullet.
- README.md: drop "literature review on the roadmap"; add to utility-skills line.
- tests/skill-triggering: new naive prompt + run-all.sh SKILLS entry.
- .agents/skills/literature-review symlink (harness-compat invariant; was the
  only skill missing one).

using-superra inventory table and superplan Phase 2 verticals table (named in
the objective) no longer exist in source — consolidated/removed since the
slide-design precedent; a Utility skill gets no entry in either regardless.

Trigger verified: live claude -p run invoked Skill with
"skill":"superRA:literature-review"; run-test.sh pass predicate returns PASS.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…cal registered, categorization/consistency/wiring verified

Verified both claimed-absent surfaces (using-superra inventory table, superplan
Phase 2 verticals table) genuinely do not exist; Utility categorization matches
the stage model and zotero-paper-reader precedent; CATEGORIES/README consistent
with no dangling roadmap entry; .agents symlink matches harness invariant and
slide-design precedent; trigger prompt exists and wired into run-all.sh SKILLS.
run-all.sh env limitation is a pre-existing toolchain gap affecting all trigger
tests equally, out of this task's scope.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Harvest the zotero-add implementation (Zotero local-connector save path +
Crossref->Zotero mapper) from its isolated worktree branch. Disjoint files
(skills/zotero-paper-reader/) from the main-worktree vertical work.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
The skill is registered as a Utility skill (not auto-loaded at a stage via
the Skill-Load Manifest Domain table), so labeling its own body 'Domain
skill' collided with the superRA taxonomy term. Reword to 'Discipline'.
Resolves the MINOR flagged in discovery-wiring review.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Release the literature-review domain vertical (citation/metadata client,
skill core + references, Zotero add path, discovery wiring).

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…der-partition discipline

The literature-review skill is loaded by two roles (main-agent orchestrator
and per-paper implementer), but SKILL.md carries the full Workflow + executor,
forcing every dispatched implementer to load orchestration it never runs.

- CLAUDE.md: add two disciplines under Minimal, Targeted Instructions —
  "write for the loading agent, not the developer" (sharpens the old
  skip-design-essays bullet toward audience) and "partition a multi-role skill
  by loader".
- New child task layout-and-coherence-refactor: migrate Workflow -> a
  main-agent-only references/workflow.md, drop the bespoke
  synthesis-and-classification reference, shorten the too-long frontmatter
  description, and apply the design rubric line by line. States the rubric
  and the post-refactor load surface explicitly.
- Vertical objective: deliverable is the screened+extracted+convergence-judged
  collection; synthesis/classification/gap-analysis are bespoke, out of scope.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
… skill by loader, drop synthesis, apply rubric

The skill is loaded by two roles but SKILL.md carried the full orchestration,
forcing every per-paper implementer to load the loop-until-dry executor it
never runs.

- Migrate Workflow + Executor -> new references/workflow.md (main-agent-only).
  SKILL.md 101 -> 45 lines: shared core only (framing, discovery principle,
  role-annotated references map, composed skills, ledger schema).
- Delete references/synthesis-and-classification.md; synthesis/classification/
  gap analysis are bespoke per review. Sweep its cross-ref in grounding;
  deliverable reframed as screened + extracted + convergence-judged.
- Shorten frontmatter description (5 -> 3 sentences), drop the inline comment.
- Full rubric trim on surviving references: Principle essays -> instruction
  leads, justification tails cut; identification protocols kept.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…le CATEGORIES classification line, missing diff self-check, incomplete Loaded-by annotation

Partition/synthesis-drop/rubric-trim all verified clean. Blocking: CATEGORIES.md:49 still promises per-paper classification (contradicts reframe + diverges from updated description); Results lacks the [BLOCKING] Final Diff Self-Check trail. Minor: search-and-screening Loaded-by omits the main agent that workflow.md routes to it.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
… resolve 3 review consistency findings

Adjudicated the REVISE round inline (all trivial, directly verified):
- CATEGORIES.md one-liner: "classification/extraction" -> "quote-grounded
  extraction", restoring CATEGORIES/description consistency.
- SKILL.md references map: search-and-screening.md annotated "(+ main)" — the
  main agent loads it for the dedup cascade + saturation test via workflow.md.
- Results: added the Final Diff Self-Check trail (refactor-and-integrate gate).

Task approved; vertical rolls up to approved.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Bring the branch up to date with main before finishing PR #41. Main added:
- #40 self-contained OCR conversion outputs (mistral-pdf-to-markdown)
- a using-superra docs line on hook-derived non-leaf status

No file or semantic overlap with the literature-review vertical (disjoint file
sets); literature-review composes mistral-pdf-to-markdown by routing, not by
depending on its output layout, so the OCR change needs no follow-up here.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…e + OpenCitations fallback

Real-world fan-out rate-limits S2's anonymous pool: each screening agent
shells out its own citation_client.py, and the per-process backoff can't
see sibling processes, so N agents collide even at low per-agent volume.

New subtask under literature-review keeps the fan-out unbounded and instead
coordinates the client through shared on-disk state:
- filesystem "next-allowed-time" rate gate per backend (fcntl.flock; lock
  held only to reserve a slot, never during the sleep) — bounds request
  rate per IP/filesystem, the granularity S2 actually measures;
- shared on-disk response cache (snowballing re-hits hub papers);
- adaptive 429/503 backoff that widens the shared interval for all procs;
- keyless OpenCitations backend as the forward-citation fallback when S2
  throttles (DOI->DOI edges from Crossref open references, distinct from
  the rejected OpenAlex), per-DOI with version-DOI union at the workflow.

Reconciled the parent conventions: forward citations are no longer
"S2-only", and OpenCitations is called out as distinct from OpenAlex.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…-process rate coordination + OpenCitations fallback

Add a CoordinatedTransport in front of UrllibTransport with three shared-state
layers for safe concurrent fan-out: an atomic on-disk response cache
(CITATION_CLIENT_CACHE_DIR, self-gitignored, TTL by mutability), a cross-process
next-allowed-time rate gate (one fcntl-locked file per backend host, lock never
held during the wait, per-backend intervals), and adaptive 429/503 backoff that
widens the shared interval for the whole fan-out. Degrades to per-process-only
when fcntl is absent.

Add a keyless OpenCitations backend (Index v2 DOI->DOI edges) as the forward
citations fallback: `citations --source {auto,s2,opencitations}` (auto = S2 ->
OpenCitations -> web-sweep note) and `references --source opencitations`. Client
stays per-DOI; version-DOI union documented as a workflow step. Existing JSON
shapes and flags unchanged; TOOL_VERSION 1.0.0 -> 1.1.0.

Extend the offline suite 42 -> 64 tests (injectable FakeClock + tmp coord dir,
no network/keys) and update citation-client.md / workflow.md /
search-and-screening.md. Verified with a real 5-process concurrency smoke:
requests spaced at the interval, not serialized.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…ersal, centralize admission

Rebalances the literature-review screen/snowball division of labor along one
principle: push per-paper judgment to the agent on the spot, keep global
coordination (dedup, frontier admission, stopping) central. Three coupled
discipline changes to the shipped skill, composing with the citation-client
cache + normalized-record handles:

- Screening depth: reframe screen-first from "abstract/intro only" into a
  default economy with an escalation trigger — the agent reads a central
  included paper's related-work when it steers frontier priority, recorded
  as read_depth; narrow the "over-read" tell to flag only real waste.
- Retrieval provenance: split the ledger's provenance into discovery lineage
  (discovered_via/bfs_depth) and a retrieval trace (ids, urls, access,
  paths, fetched_at); carry the handle across rounds so the next agent
  starts warm instead of cold-searching.
- Local traversal + priority frontier: agents surface ranked, annotated,
  handle-bearing candidates (plus a bounded read-only, non-recursive metadata
  peek); the orchestrator keeps the single seen index, admission, dedup, and
  stop, growing a priority frontier.

Reconciled the parent conventions (Screen-first, Snowball + convergence, and
a new retrieval-trace provenance line) to this design.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…-process rate coordination + OpenCitations fallback

Verified backward compat (health additive, citations/references JSON shapes
unchanged, new flags/values only), rate-gate lock-not-held-during-sleep +
fcntl-absent degradation, atomic per-pid cache writes, OC token secret hygiene,
and the 64-test offline suite (network-free, key-free). One minor non-blocking
gap noted in return (--no-cache leaves coord dir without .gitignore).

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…trieval provenance

pdf_path/md_path now back an idempotent store, not just records: check the
store before downloading a PDF and before OCR'ing (Mistral OCR is billed —
never re-convert a saved paper). Store location follows the setup survey's
Zotero-add policy — a Zotero attachment when saving to Zotero, else a local
Notes/papers/<key>/ store. Reconciled the parent PDF-policy convention.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
The RateGate writes gate-<backend>.json into the coordination dir even when
--no-cache is set, but the self-ignoring .gitignore was created only inside
the cache-enabled branch, so those gate files could enter VCS in a host
project. Call _ensure_cache_gitignored(coord_dir) unconditionally in
build_default_transport. Resolves the MINOR from the citation-client-resilience
review. Offline suite still 64 passing.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…legate depth/traversal, centralize admission, retrieval trace

Three coupled discipline changes to the literature-review skill (prose only):
- Screen-first reframed as a default economy with a selective, recorded (read_depth) escalation; narrowed the over-read tell.
- Ledger provenance split into discovery lineage + a retrieval-trace block; added the navigable trace link cluster (Zotero/Web/PDF/Markdown deeplinks, absolute paths, composing with report-in-markdown); handle carried across rounds; idempotent PDF fetch + OCR.
- Executor made ranking-aware (priority-queue frontier, handle-seeded dispatch) with one-writer / global-dedup / global-stop invariants explicit; agents traverse + judge locally with a bounded read-only, non-recursive peek.

Cache/handle prose written against citation_client v1.1.0 as shipped.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…task

Trace-link cluster must use dashboard-resolved RELATIVE paths, not absolute:
the dashboard rewrites a relative link by file type (.pdf -> /files/ browser
viewer, .md -> vscode://file/), and would double-rewrite an absolute or
file://vscode:// path. Corrected agent-judgment-and-provenance D2 to the
relative-path + zotero:// scheme contract and added a validation criterion.

Added task-tree/dashboard-link-resolution (sibling of the approved dashboard
task, not a child — nesting demotes the completed leaf to a grouping): teach
the dashboard's renderMarkdown to pass external schemes (zotero:) through
DOMPurify + the relative-link rewriter, and route relative .pdf links to
/files/ for direct browser open.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
FuZhiyu and others added 30 commits July 2, 2026 21:09
…entions

Add the ledger paper-link pecking order, initialize seeds into the global seen index, and record the resolved review finding and validation evidence.
…ink rule

Move the paper-link pecking order out of the ledger schema into a Markdown results and summaries section, explicitly composing with report-in-markdown.
… fan-out

Approved the final literature-review batch-screen fan-out implementation after confirming the seed pre-admission fix, task-scoped workflow changes, Markdown link-rule placement, and task-tree validation. Included the hook-derived parent rollup status.
Record the researcher-approved redesign: the review root is the live dashboard page, pre-screen candidates live as non-git task-shaped records, included/escalated papers are promoted as paper cards, and ordinary dedup is mechanism-owned. Add a focused implementation task to update stale skill workflow instructions.
Record the researcher-approved refinements: dispatch depth bounds can be citation hops or reading depth, discovery agents return local maps and stop on local dry conditions, screening agents route new leads without launching broad searches, citation provenance includes quoted context, and review gates are batched by packet.
…plit discovery screening workflow

Rewrite the literature-review workflow as task-tree-native orchestration, split discovery and screening into role-specific references, add the candidate materializer CLI with tests, clarify paper-link rules, update the skill inventory, and record validation evidence on the task.
…irect review

Approve the task-tree-native literature-review orchestration implementation after direct review, focused tests, markdown checks, task-tree diagnostics, and stale-term sweep. Parent status rollup returned literature-review to approved.
Make candidate materialization pipe-first and generate full paper-card placeholders, including Zotero item and attachment links, artifact paths, screening decision, quality, provenance, and extraction fields for agents to supplement in place.
…ible extraction, safe parallel dispatch

Researcher-surfaced efficiency critique of the shipped orchestration: multi-lens
discovery has no parallel-dispatch path and the materializer isn't concurrency-safe,
promotion copies (rather than moves) candidate folders leaving orphaned duplicates
and unrepointed links, version-DOI union is manual per-dispatch logic, the
screening-lead and Zotero-dedup trigger points are unspecified, a paper's
abstract/intro/related-work gets re-read by discovery then screening with no
reuse of what was already found, and extraction forces a concept-matrix shape
regardless of the review's actual goal.

Adds two child tasks: client-and-materializer-mechanisms (concurrency-safe
materialize, move-based promote with link repoint, version-DOI union) and
progressive-reading-and-orchestration-efficiency (Reading Notes reuse across
stages, researcher-elicited matrix+narrative hybrid extraction shape, stated
parallel-dispatch/lead-sweep/Zotero-dedup cadence), depended in that order.
Removes the stale ## Revision Notes section per validate_plan's approved-task rule.
…es replace the stage pipeline

Researcher critique of the shipped design: one paper is visited by three agents
(discovery reads abstract/intro, screening reopens the same text, extraction
reopens everything again) — three dispatches and three read sessions per paper.
The prior revision pair patched the symptom (Reading Notes as cross-stage glue)
while keeping the three-visit pipeline, and was committed with status: approved
despite never being implemented.

Cleared both stale tasks and replanned afresh. Roles now split by cost class,
not pipeline stage: survey agents do metadata-only breadth work and write
candidate stubs into the shared store; paper agents take disjoint pending
batches and complete everything a paper needs in one reading session — screening
decision, in-session extraction when included + central + dispatch-authorized
(researcher-confirmed default: pre-authorized for seed expansions and
high-priority candidates), and lead harvest written as stubs. Reading Notes
demote from stage glue to a resume log for deferred extraction and escalations.
Dedup that makes this safe is the shared candidate store + concurrency-safe
materializer + disjoint batch assignment.

New tasks: shared-store-and-client-mechanisms (carries forward the three tool
mechanisms unchanged: concurrency-safe materialize, move-based promote with
link repoint, version-DOI union) and read-once-paper-processing (depends on it;
rewrites workflow/survey/paper-processing/grounding references). Root task
conventions and Planner Guidance synced to the new role architecture.

Co-Authored-By: Claude Fable 5 <[email protected]>
…tation-graph edges

The task implied edge triage ('relevance judged from the metadata/abstract in
hand') but never said how a survey agent decides which of a paper's hundreds of
cited/citing edges become stubs. Now explicit: hydrate DOI-only edges, judge
scope fit from title/abstract/venue/year against the review criteria, stub the
in-scope-plausible with priority, record the filtered remainder in the local
map; citation-context judgment stays with the paper role's lead harvest.

Co-Authored-By: Claude Fable 5 <[email protected]>
…eview agent

Researcher follow-up on the two-role split: judging whether a cited or citing
paper is worth pursuing needs the citation context in the text — the survey
role would have to open the seed anyway, and once any agent has a paper open,
read-once logic says it should finish everything that read enables. The split
was protecting against context exhaustion and duplicate reads, and neither
needs a role boundary.

One review-agent role now does the full per-paper work. A dispatch assigns a
frontier (seed expansion, pending cluster, or web lens) plus loose bounds —
recommended hops (typically 2), extraction authorization, soft paper budget —
and the agent's on-the-ground judgment decides what to open; beyond bounds it
stubs and reports. Safety mechanisms replace the role boundary: claim-on-open
(atomic, covers papers discovered mid-flight — added as a fourth mechanism to
shared-store-and-client-mechanisms) and write-as-you-go (complete each paper's
record before opening the next, so an exhausted context loses nothing).
Renamed read-once-paper-processing -> read-once-review-agent; discovery.md and
screening.md now merge into a single review-agent.md. Root conventions synced.

Co-Authored-By: Claude Fable 5 <[email protected]>
Reviewed the shared-store/client mechanisms and read-once review-agent rewrite. Marked both assigned tasks revise with blocking notes for lost materialized handles, overbroad promote link rewriting, missing parallel-dispatch exception, and missing stub-and-report bounds guidance.
Resolve reviewer findings from 7e0f411: merge newly surfaced candidate handles into existing cards, constrain promote rewrites to provable links/fields while reporting ambiguous mentions, state the literature-review parallel-dispatch exception, and require out-of-bounds lead stubs when metadata exists.
Confirmed the four prior MAJOR findings are fixed: materialize merges blank handles/retrieval fields without overwriting, promote rewrites only provable links/path fields and reports bare mentions, workflow documents the parallel Agent exception, and review-agent stubs beyond-bounds leads. Removed resolved review notes and approved both tasks.
…ispatch workflow

Rewrite the main-agent literature-review workflow around written state, paper state, and flexible dispatch shapes: recon, claimed-read, mixed, and synthesis passes. Clarify that extraction is the same review-agent claimed-read job when authorized, with grounding-and-extraction as the extraction-depth checklist.
…traction authorization default

Marked the task revise after finding that the workflow rewrite no longer states the task-required dispatch-time extraction authorization default. Included hook-driven parent rollup status updates.
…read/extract states

Replace the separate extraction-authorization concept with two loose dispatch types: recon and claimed read. Recon may inspect source text for citation context while leaving papers not-started; claimed reads claim the paper and extract included or escalated papers in the same session. Keep grounding-and-extraction as the claimed-read checklist, not a separate role.
…o dispatch types

Re-reviewed the clarified read-once contract and found remaining stale workflow/extraction wording: Mixed Dispatch is still presented as a separate shape, and the extraction checklist still says claimed included paper only. Included hook-driven parent rollup status updates.
…wo-type review findings

Address reviewer findings by removing Mixed Dispatch as a first-class workflow shape and scoping grounding-and-extraction to claimed included or escalated papers. Keep lead materialization during reading as a claimed-read side effect, preserving the two loose dispatch types: recon and claimed read.
…tch types fixed

Confirmed the prior findings are fixed: workflow now exposes only recon and claimed-read dispatch types with lead materialization as a claimed-read side effect, and grounding extraction covers claimed included or escalated papers. Removed resolved review notes and included hook-driven parent rollup approval.
Document connector URL attachment support separately from Web API uploads of local files, and correct the access-mode matrix and recovery guidance.
Merge origin/main into literature-review.\n\nCurrent branch intent: literature-review skill and Zotero workflow refinements. Incoming intent: clarify task objective/guidance roles and improve worktree-data sync. The ranges have no overlapping files or renamed paths reaching literature-review code, so both intents are preserved unchanged.\n\nChecks: diff --check and incoming worktree-data-sync tests follow this merge.
Merge origin/main at 2d4c855 into the literature-review branch, preserving main’s 0.3.2 manifest alignment, legacy-surface retirement, and dashboard hardening architecture.

Port the branch’s Zotero-scheme passthrough and relative-PDF browser routing from the former monolithic base.html into dashboard.js, add Node-backed behavioral coverage for both live and standalone resolution, and reconcile task records with the extracted client template and retired model-call trigger suite.

Checks: task-tree suite 725 passed, 4 skipped; literature-review/Zotero suites 93 passed; cross-harness compatibility passed; version audit passed at 0.3.2; superra task check passed; changed-task Markdown checks passed; git diff --check passed.
Merge local main at 84d451d into literature-review. Preserve main's 0.3.3 dashboard worktree-state, watcher reconnect, release metadata, and release-workflow safeguards alongside this branch's Zotero URI and relative-PDF routing.\n\nThe overlapping dashboard template and test changes synthesize cleanly: relative image URLs now retain the active worktree selector without changing the branch's external-scheme or PDF behavior.\n\nChecks: dashboard test suite passed (312 collected; 4 skipped); git diff --check passed; no conflict markers or stale route references found in the overlapping dashboard files.
Carry the active worktree selector through live relative-PDF /files URLs, matching the scoped image path. Add collision-safe selected-byte coverage and refresh the durable dashboard task record.\n\nChecks: focused PDF/link dashboard tests 5 passed; complete dashboard suite 313 passed; Markdown and diff checks passed.
Refresh the durable dashboard integration and final-diff summaries to cover the reviewed collision-safe PDF protection alongside images.\n\nChecks: Markdown and diff checks passed.
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.

1 participant