Development record
A Paper Is Reconstructed From the Provenance Ledger
Press Release
A paper whose claims trace to decisions, and whose decisions trace to sources, is reconstructable rather than rewritten from memory. The provenance ledger (itd-76, which this intent
refines) already records which source influenced which decision with what claim. Paper reconstruction walks that trail: claims grouped by decision, citations resolved from the bibliography, rendered to PDF and HTML from one markdown source. The public render is proven clean twice, independently: structurally — it renders from a generated bibliography that omits confidential entries, so an unpermitted key fails the build — and by a deterministic post-render check of the output's citations against both gates (permission_statuson the source,cited_publiclyon the ledger line)."When the paper behind a decision is finally published, I flip one flag and the citation appears in the next render," said Alice, "with the whole influence trail already written."
Why This Matters
The ledger's value compounds only if something reads it back. Reconstruction turns the eager, cheap capture of influence into the expensive artefact — a publishable paper — without a second bookkeeping pass, and the double-proof render is where the adr-41 two-gate rule pays off at publication time: the build cannot cite what the human has not deliberately released.
Acceptance Criteria
Seeded by the itd-76 planning session, unconfirmed — the planning interview must walk these with the maintainer.
- Given ledger lines across decisions, when reconstruction runs, then claims are grouped by decision and every resolvable citation comes from the generated public bibliography.
- Given a citation whose source fails either gate, when the render runs, then the build fails structurally, and a passing render also passes the independent post-render citation check.
SOTA
Surveyed on 2026-10-23; sources, evidence tiers and the local fit risks are in the sources-provenance SOTA note.
- The structural firewall still exists. Quarto profiles merge a profile's config over
_quarto.ymland show or hide content with.content-visibleandwhen-profile, but "metadata-filesare not resolved in profiles", so the public profile must name its filtered bibliography in the profile config itself (Quarto profiles documentation). - Pandoc reads CSL-JSON directly (
.json), supportsnociteand the all-entries wildcard, and--fail-if-warningsturns any warning into a non-zero exit (Pandoc manual). Whether a missing citation key warns is not stated and the design does not rely on it. - Typst is not a drop-in. It accepts only BibLaTeX and Hayagriva, not CSL-JSON (Typst bibliography documentation), so a Typst chain needs a
.bib(or Hayagriva) export of the already-filtered bibliography; the gates run before that export, so its cost is a second export format, not a lost gate. - PROV-O names the relations the ledger implies (
wasDerivedFrom,wasQuotedFrom,hadPrimarySource,wasAttributedTo); the 2026-07-08 ruling to borrow the vocabulary and not the format stands. - No Go-native CSL processor (citeproc) was found. Go PDF libraries exist (go-pdf/fpdf, "a PDF document generator") but would leave citation formatting to abcd, so a citation-correct render is an external program (Pandoc or Quarto), which answers the open question: the renderer cannot be a bundled dependency.
- Path 2: the binary does the deterministic work with no dependency (walk the ledger, group claims by decision, emit one markdown source and the filtered public CSL-JSON, run the post-render check over keys and prose), and the render is an opt-in adapter that finds
quarto, thenpandoc, on PATH, passes a local bibliography path with--fail-if-warnings, and refuses with the install instruction when neither is present. The markdown plus bibliography is the basic form; the seam is that pair, so a Typst move is a.bibexporter. No Go dependency. The independent fit-challenge runs at plan time.
Open Questions
- Render toolchain and its dependency posture (the repo's no-hard-deps stance vs PDF generation) — unexamined; gates planning.
- (SOTA 2026-10-23) Does the post-render check read rendered prose for confidential titles and aliases (the banlist), or only the citation keys, given that a confidential source can enter a sentence without a citation?
- (SOTA 2026-10-23) Where does the generated public bibliography live between generation and render: the local tier only, or may a repository commit it once it is proven clean?
Audit Notes
Empty. Populated by intent-fidelity-reviewer when intent moves to shipped/.
Frontmatter
| id | itd-127 |
|---|---|
| type | intent |
| lifecycle | drafts |
| kind | standalone |
| severity | minor |
.abcd/development/intents/drafts/itd-127-a-paper-is-reconstructed-from-the.md
open on GitHub ↗ · commit history ↗
References1
- itd-76abcd Lets You Consult Sources You Cannot Cite — and Remembers Every Debtbuilds on
Referenced by2
- adr-41Documents and ledgers never leave the user tier; a public citation requires both gatesrelated
- iss-2610262040442493itd-127 calls the source-to-decision trail 'the provenance ledger'; the ledger glossary calls that trail 'the sources ledger'.related
mentions3
- consult-freely-cite-deliberatelyConsult Freely, Cite Deliberately
- dcn-26081600000000072026-08-16 — itd-76 planned at the live interview (spc-31 minted, `intent ready` exit 0). The itd-84 hand-run rendered SPLIT, confirmed: itd-76 narrows to the personal core (source add / ledger / sync-banlist / cite-check + guards); team share/ingest files as itd-126 and paper reconstruction as itd-127 (both `refines` itd-76, seeded criteria marked unconfirmed); the trust rule extracts to adr-41 (proposed) + brief invariant 9 — documents and ledgers never leave the user tier, a public citation requires both gates — which the intents cite rather than declare; the stance files as the consult-freely-cite-deliberately principle. Interview rulings: the share surface is the existing `.abcd/development/research/references.csl.json` research store, not a second `.abcd/work/references.json` exchange file (one committed bibliography — resolves the store clash the sources-plan adversarial review flagged); the draft's "Dogfood (already running)" claim was stale and is rewritten as target (no corpus on the development machine); multi-machine ledger ownership explicitly deferred until a second machine exists; persona Maya corrected to Alice. Seven Given-When-Then criteria authored and accepted in full. Rejected: planning the monolith (both remaining open questions gated only the share/ingest part), and holding for itd-77 (the corpus default path works without relocation). Hand-run graded into the decomposition-calibration note.
- spc-31source-provenance-ledger