Evidence panel
The evidence panel is the docked panel that opens beside a thread or beside your evidence board on the role
home when you choose a citation marker ([n]) or “Show me the source” (opening it beside a record page is
designed). It shows the source behind a claim, and how much of
that source it may show is decided by the source’s licence code, never by who is asking or by the wording of
a licence statement. The rule set of phase 4 is the one the console already applies: the same three
rendering groups, unchanged, decided in ADR 0028
and mapped for every new source in ADR 0029.
Everything on this page is designed until the R4 gates pass; the gate set
includes one screenshot per rendering below, captured with zero browser console errors. The panel is docked,
never an overlay: it opens on the right at 1024 px and wider, becomes a full-width stacked view with a back
control at 390 px, closes with Escape, never traps focus, never covers the composer or the decision buttons,
and its target lives in the address (?source=<id>) so back, forward and shared links work.
What you see, by licence code
| Licence code | Chip | What the panel shows |
|---|---|---|
cc0 | “public domain” or “open access (CC0)” | the full cited passage in context; figures and tables inline from the article’s own files; a page viewer for the article PDF |
cc_by | “open access (CC BY)”; “reproduced with acknowledgement” for guidance and registry sources whose terms ask for acknowledgement rather than a Creative Commons licence | as cc0, plus an attribution line (title, authors, source, licence link) on every figure card, pin, table and export; guidance clauses carry “excerpt; see full document” |
cc_by_sa | “share-alike” | as cc_by; a share-alike line on every derived table and every skill output that mixes share-alike rows |
cc_by_nd | “open access, no derivatives” (chip class no_derivatives) | the cited quote in context with an attribution line (title, authors, source, licence link) on the quote and on every pin of it, the metadata and “Open at publisher”; no figure capture, no thumbnail, no PDF viewer, no export of derived text (a resized thumbnail is a derivative) |
cc_by_nc, publisher_copyright, unknown | “metadata and link” | title, authors, journal, year, DOI and “Open at publisher”; a locator for the cited passage, never its text; the abstract only when the abstract’s own licence code allows a passage, or as a quote capped at 400 characters when it allows a quote, otherwise nothing |
customer_internal | “internal”, or “Uploaded by your organisation. Your organisation’s licence applies.” when third-party content is suspected | R4: the notebook entry from its canonical record and SOP text with search inside the viewer (no page claim); R5: the rendition PDF with page anchors |
Three things never change the rendering: the licence statement printed beside the chip (it is display text), the persona of the reader, and the wording of the claim. Author manuscripts stay excluded from full text. When a figure’s file cannot be mirrored under its licence the card keeps the caption and reads “image not available under this licence”.
Chips
The chip is derived from a closed set of eight statement classes: public_domain, cc_by, cc_by_sa,
acknowledgement, internal, third_party_suspected, locator and no_derivatives (the quote-only chip of
cc_by_nd, added 2026-09-16). The licence codes page lists which sources
map to which class and records that the API and web renderers agree on all eight. In the panel a scientist reads the chip text, never the class or
the code: “Source: Smith 2024, Figure 3” with its attribution line; “Internal: notebook entry TRV-101-0042”;
“Metadata and link”; “Agent-generated, unsigned” on an agent’s draft.
The attribution line
Every cc_by, cc_by_sa and cc_by_nd source carries one line, title, authors, source and licence link, on
every figure card, table, pin and export that shows it; on a no-derivatives source the line sits on the quote and
on every pin of it, because CC BY-ND requires attribution (contract 12.3, 2026-09-16). Fact (verified in
api/app/services/workbench.py:402-408 and api/app/services/documents.py:634-648): the API’s
attribution_line_for keys on rendering_decision(code).attribution_line, and the quote-only decision for
cc_by_nd sets that flag true, so the line covers cc_by, cc_by_sa and cc_by_nd on the quote and on every pin
of it | Consequence: this page states the contract and the licence codes page
records the same three codes. Share-alike sources add a second line on any derived table or skill
output that mixes their rows, so a comparison table built partly from a share-alike database says so. Guidance
documents reproduced with acknowledgement label each clause “excerpt; see full document” and link to the full
text at the publisher.
Figures, tables and pages from open-access articles
For articles whose licence allows full text, the worker captures the article’s own files into cards the panel can show: figures, tables (each row becomes a citable line with its column header and unit, so a citation to a value carries what the value means), supplementary files and PDF pages. Capture never changes a document you are already reading: it runs on a successor copy, so the position of every passage you have cited stays where it was. Files come from the article’s open-access prefix or its supplementary archive, are copied once into the program’s own storage and served only through a signed, expiring link that is written to the audit trail on every open. Publisher-copyright, non-commercial, no-derivatives and unknown sources skip capture; uploaded internal PDFs skip figure capture.
Third-party content inside uploads
An uploaded or synced PDF is often a publisher’s paper held under your organisation’s subscription, and an SOP
often embeds pharmacopoeia excerpts. On ingest the worker looks for a DOI or publisher metadata and, when it
finds one, marks the document as third-party suspected. Such a document renders inline only to members of
the program and never appears in exports, shared boards, lens briefs, shared memory or full-text fetch
successors. Its chip reads “Uploaded by your organisation. Your organisation’s licence applies.” A person with
program.documents.manage can set or clear the flag with a reason from the document row (the control expands
inline in the row); the change is audited as document.third_party_flag.
Retraction and correction flag
A weekly watch reads correction and retraction notices for every cited article. When one is found the document
is marked corrected or retracted with the notice reference, and the flag renders on every citation marker,
pin, scorecard cell and skill output that cites the source. A new version of an open-access article re-runs
capture as a new successor copy.
Pins and your evidence board
A pin points at a passage, a figure or table, or a record, and is rendered on your board exactly as the panel
renders it, with the same chip, attribution line and flags. A record pin carries record_type and href in
PinOut so the board can open the record (contract 12.3, recorded 2026-09-16). Fact (verified in
api/app/schemas/workbench.py:92-93 and web/components/workbench/pin-card.tsx:40-41, 91-92): PinOut carries
both fields and a record pin on the board offers Open the record, which follows href | Consequence: opening a
record pin is built. A note on a pin is entered through Add a note beside Pin in the panel (verified in
web/components/console/evidence-panel.tsx:93-96, 116-123); no record page carries a Pin control yet, so
pinning a record from its page is designed. Personal pins need only membership; “Share to
board” copies the pin to the program board, re-checks the licence and the third-party flag in place, and
refuses third-party-suspected content (422 third_party_content). Pin, unpin and share are single controls
with an inline confirmation line; nothing opens away from the card. See
How to pin evidence to your board.
“Show me the source”
The citation marker is the entry point. Under any claim, an inline strip offers Show me the source (opens
the panel), Gather (fetches the open-access files for a source you already have; needs
program.documents.manage; offered only for cc0, cc_by and cc_by_sa, and the API refuses every other code,
customer_internal included, with 422 licence_locator_only and a third-party-suspected document with
422 third_party_content, checked first. Fact (verified in api/app/services/documents_assets.py:441-446):
request_gather refuses the third-party flag first, then any code outside the redistributable set, then a document
that is not ready | Consequence: both refusals are built) and Find the source (a bounded search that proposes one Source). The proposal’s sentence “best of N
results; N-1 not shown” and its link to the search render only from two input fields of evidence.propose_source
carried in the interrupt payload, candidates_count and search_href; when either is absent the card shows the
honest line “<n> searches run; the number of results was not recorded with this proposal” 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. Accepting a proposed source records a
human-origin suggestion, never an observation, and the Accept control stays focusable but cannot act until you
have opened the panel for the proposed passage; the line under it says why (verified in
web/components/console/approval-card.tsx:183, 461). A claim by an agent that
has no citation renders hollow and can only be an assumption. See
How to show me the source.
Related
- Licence codes and About licences.
- Workbench roles for the board’s place on the role home.
Source: PRODUCT-CONTRACT.md sections 12.1, 12.3 and 12.10; PRODUCT-PLAN.md Part 9 sections 3.4 to 3.7; api/app/services/documents.py (the three rendering groups, unchanged); web/components/console/evidence-panel.tsx (the renamed viewer); decisions/0028-abstract-excerpt-and-manuscript-display.md; decisions/0029-licence-mapping-attribution-and-third-party-flag.md; decisions/0034-inline-interaction-no-popups.md