How to pin evidence to your board
Use this guide when a passage, a figure or a table is one you will come back to before a decision. You start
with the evidence panel open beside a claim; you end with the item on My evidence board on your role home,
rendered under its licence with its attribution line, and, if you choose, shared to the program board. Personal
pins need only membership in the program; sharing needs program.documents.manage. Every surface here carries
the status word designed until the R4 gates pass. A note on a pin has its
control (Add a note beside Pin); a Pin control on a record page has none yet and is designed (see
“Pin it”).
A pin never shows more than the evidence panel shows. A no-derivatives article stays a quote in context, a publisher-copyright paper stays metadata and link, and an open-access figure keeps its attribution line wherever the pin appears, including exports.
Prerequisites
- Membership in the program (
program.settings.read, held by every program persona) for your own pins. program.documents.manage(scientist, quality reviewer, lead, owner) to share a pin to the program board.
Open the source
Choose the citation marker ([n]) under a claim, or Show me the source in the inline strip below it (in a
thread), or Show me the source on a pin (on your role home). The evidence panel opens docked beside the
thread or the role home (reference); the address gains ?source=<id> so
the view can be shared and revisited.
Pin it
Choose Pin on the passage, figure or table card in the panel. Pin is a single control: it reads
“Pinning” while the call runs and the card shows the inline line “Pinned to your board” (or “Not pinned.”) at
once. The web
app calls POST /programs/{program_id}/pins with PinIn {target_type: chunk | asset, target_id}; the API
answers 201 with PinOut {id, program_id, user_id, board, target_type, target_id, document_id?, licence_code, chip_class, attribution_line?, third_party_suspected, integrity_status, note, created_at, updated_at} and audits
pin.create. One pin per target per person: pinning the same item again returns the existing pin.
To pin with a note, choose Add a note beside Pin: a one-line inline form expands under the card with the
field “Note (optional, up to 300 characters)” and a live count; Enter pins with the note, Escape collapses the
form and returns focus to Add a note. Fact (verified in web/components/console/evidence-panel.tsx:93-96, 116-123 and web/lib/content.ts:290-291): the control, the form and the 300-character check exist |
Consequence: the note is built, and a board card shows it under the pin. The API also accepts
target_type: record in PinIn, and PinOut carries record_type and href for a record pin so the board can
open it (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): both fields exist and a record pin on the board carries
Open the record | Consequence: opening a record pin is built. Fact (verified by grep: PinControl is
rendered only in web/components/console/evidence-panel.tsx): no record page carries a Pin control |
Consequence: pinning a record from its page stays designed.
Read your board
My evidence board is the third region of your role home. Each pin renders as the panel would: the chip in
the reader’s words (“open access (CC BY)”, “share-alike”, “open access, no derivatives”, “metadata and link”,
“internal”), the attribution line on every open-access figure, table and passage, the share-alike line where it
applies, and the correction or retraction flag when the watch has found a notice. A pinned table row carries its
column header and unit. A record pin shows “Record: <type>” and Open the record, which follows PinOut.href
to the record page. GET /programs/{program_id}/pins returns your pins plus the program board.
Share to the program board
Choose Share to board on a pin. The control confirms inline, the API copies the pin as a board pin (board: true, shared_from_pin_id set), re-checks the licence code and the third-party flag, and shows the result in
place. A target suspected of being third-party content inside an upload is refused with
422 third_party_content and the pin stays personal; the line under the control says why. Sharing needs
program.documents.manage and audits pin.share. Board pins appear on every member’s board and in the program
board view.
Unpin
Unpin is a single control with an inline confirmation line; it calls DELETE /programs/{program_id}/pins/{id}
(your own pin, or a board pin under program.documents.manage) and audits pin.delete. Unpinning a personal
pin leaves a board copy in place; removing the board copy needs the manage key.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| The pin shows “metadata and link” and no text | the source is cc_by_nc, publisher_copyright or unknown | that is the rendering the licence allows; use Gather or Find the source to look for an open-access copy (how to show me the source) |
| No figure on a pinned open-access article | the article has not been gathered yet, or the file could not be mirrored (“image not available under this licence”) | choose Gather under the claim (program.documents.manage); the successor copy carries the figures |
422 third_party_content on Share to board | the upload was flagged as a publisher’s paper or an embedded excerpt | keep the pin personal; a holder of program.documents.manage may clear the flag with a reason if it is wrong |
| Share to board is not on the card | you lack program.documents.manage, or the card is already a board pin | the control is shown only to holders of the key and only on personal pins; ask an owner or lead if sharing is part of your work |
| Share to board is disabled | the pin’s source is marked as suspected third-party content | the control stays focusable and the line under it says why (verified in web/components/workbench/pin-card.tsx:101-106); keep the pin personal, or ask a holder of program.documents.manage to clear the mark with a reason |
| A flag “retracted” or “corrected” appeared on a pin | the weekly watch found a notice for the article | open the notice from the flag and decide whether the claim still stands |
Related
- Evidence panel and Licence codes.
- How to show me the source.
- How to choose your workbench role for where the board sits.
Source: PRODUCT-CONTRACT.md sections 12.3, 12.7, 12.8 and 12.10; PRODUCT-PLAN.md Part 9 sections 3.1 and 3.4; api/app/auth/permissions.py (program.settings.read, program.documents.manage); api/app/services/documents.py (the three rendering groups); decisions/0029-licence-mapping-attribution-and-third-party-flag.md; decisions/0034-inline-interaction-no-popups.md