Skip to Content
PlatformHow-to guidesShow me the source

How to show me the source

Use this guide when a finding, a score, a draft sentence or an agent’s message carries a citation marker ([n]) and you want the page behind it, or when it carries none and you want one. You start at the claim; you end with the evidence panel open on the passage, figure or table, or with a Source proposed for the program and accepted by you. Reading needs program.documents.read (every program persona); gathering needs program.documents.manage. Every surface here carries the status word designed until the R4 gates pass.

An agent’s claim without a citation renders hollow and can only be recorded as an assumption. Nothing the agent writes becomes an observation because it was accepted; accepting a proposed source records a human-origin suggestion in your name.

Prerequisites

  • A claim with a citation marker, in a thread, a finding, a hypothesis, a draft or a skill output; or a claim without one that you want sourced.
  • program.documents.manage for Gather, and evidence.agents.use for Find the source (both held by the scientist, the lead and the owner).

Choose the marker

Choose [n] or Show me the source in the inline strip under the claim. The evidence panel opens docked on the right (a full-width stacked view with a back control on a phone) and scrolls to the cited passage, with ?source=<id> in the address. The panel never covers the composer or the decision buttons; Escape closes it and returns focus to the marker or strip control you opened it from. Fact (verified in web/components/console/thread-view.tsx:96, 147, 384): the thread records the activating control when the panel opens and passes it to the docked panel as returnFocusTo | Consequence: the focus return is built.

Read what the licence allows

The chip tells you what you are looking at (reference):

  • “public domain” or “open access (CC BY)”: the passage in context, figures and tables from the article’s own files, a page viewer for the PDF, and an attribution line on every figure and table;
  • “share-alike”: the same, with a share-alike line on derived tables;
  • “open access, no derivatives”: the cited quote in context, the metadata and Open at publisher; no figure, no thumbnail, no PDF;
  • “metadata and link”: title, authors, journal, year, DOI and Open at publisher, with a locator for the cited passage but never its text;
  • “internal”: the notebook entry or SOP text, to program members only.

A flag “corrected” or “retracted” on the marker means the weekly watch found a notice; the flag links to it.

Gather the files of a source you already have

For an open-access article that shows no figures yet, choose Gather in the strip. The web app calls POST /programs/{program_id}/documents/{document_id}/gather under program.documents.manage; the API answers 202 with the pending successor copy of the document and audits document.gather. The worker normalises the full text, extracts figures, tables and supplementary files as assets, mirrors the files into the program’s storage and re-chunks tables one row per line with the header and unit. Nothing you have already cited moves: capture runs on the successor, and the panel switches to it when it is ready. Gather is offered only for cc0, cc_by and cc_by_sa: publisher-copyright, non-commercial, no-derivatives, unknown and internal sources skip capture, the strip says so instead of offering it, and the API refuses a direct call for any other code with 422 licence_locator_only and a third-party-suspected document with 422 third_party_content (contract 12.3, 2026-09-16). Fact (verified in api/app/services/documents_assets.py:441-446): request_gather refuses a third-party-suspected document first, then any code outside the redistributable set, then a document that is not ready | Consequence: both refusals are built and hold against direct calls.

Find a source for a claim that has none

Choose Find the source. A bounded reader run (search, then one fetch) looks for the passage and proposes one Source inline under the claim. The sentence “best of N results; N-1 not shown” and the link to the search render only from two fields the proposal carries, candidates_count (N, the number of results the search returned) and search_href (the link to the search), both input fields of evidence.propose_source; when either is missing the card reads “<n> searches run; the number of results was not recorded with this proposal”, counted from the run’s search calls, and never derives N from anything else. Fact (verified in api/app/tools/catalogue.py:463, api/app/tools/handlers.py:998-1000, api/app/services/interrupts.py:62 and agent/trovensa_agent/fake_console.py:606): the tool accepts both fields, the handler checks candidates_count, the interrupt payload carries them and the reader run writes them from its search | Consequence: the fixed sentence is built and renders whenever a proposal carries the two fields; the honest line remains for a proposal without them. Read the proposed passage first: Accept stays focusable but cannot act until you have opened the evidence panel for it, and the line under it reads “Open the evidence panel for the proposed passage before accepting.” (verified in web/components/console/approval-card.tsx:183, 461). Accepting registers the Source under evidence.sources.manage and records a human-origin suggestion assertion linking the claim to it. Declining needs a reason.

What the panel shows for an agent’s own claim

When the claim was written by an agent a minute ago, the same strip applies. A cited claim opens on the passage the agent read; an uncited one renders hollow, is tagged assumption, and offers Find the source. Skill outputs show “Method: <name> (<guidance>, retrieved <date>), version n” and a “How this was computed” section; each cited input opens in the panel like any other citation.

Troubleshooting

SymptomCauseFix
The panel shows only metadata and a linkthe licence code is cc_by_nc, publisher_copyright or unknownthat is what the licence allows; Find the source may propose an open-access copy of the same work
Gather is missingthe source’s licence does not allow capture, or you lack program.documents.managefor a quote-only or locator-only licence the strip says so in place of the control; without the key the control is not shown (verified in web/components/console/citation-marker.tsx:41-42, 56-60)
“image not available under this licence” on a figure cardthe file could not be mirrored from the article’s open-access filesthe caption stays; open the article at the publisher
Accept is disabled on a proposed sourceyou have not opened the panel on the proposed passage yetchoose the proposal’s marker, read it, then accept or decline with a reason
A claim shows a hollow markerthe agent gave no citationit can only be an assumption; use Find the source or supply one yourself

Source: PRODUCT-CONTRACT.md sections 12.3, 12.7 and 12.10; PRODUCT-PLAN.md Part 9 sections 3.4 to 3.7; api/app/services/documents.py (the three rendering groups); api/app/auth/permissions.py (program.documents.read | manage, evidence.agents.use, evidence.sources.manage); decisions/0028-abstract-excerpt-and-manuscript-display.md; decisions/0034-inline-interaction-no-popups.md