Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@ preferred-citation:
given-names: "James Siyuan"
alias: "Silentpartnercoding"
year: 2026
version: "1.1.0"
doi: "10.5281/zenodo.21965713"
url: "https://doi.org/10.5281/zenodo.21965713"
version: "1.2.0"
doi: "10.5281/zenodo.21997434"
url: "https://doi.org/10.5281/zenodo.21997434"
Binary file modified output/pdf/minority-prophet-peer-review-v1.2.0.pdf
Binary file not shown.
83 changes: 83 additions & 0 deletions papers/peer-review/ARCHIVAL-INTEGRITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,3 +94,86 @@ This was left as-is rather than repaired, because both available repairs are
owner decisions with archival consequences: restoring the deposited bytes as the
tracked file, or removing the tracked v1.1.0 PDF now that v1.2.0 exists.
Overwriting or retagging the deposit is not among them.

## v1.2.0 is deposited — and Zenodo auto-published rather than drafting

```text
DOI 10.5281/zenodo.21997434 (version DOI, v1.2.0)
concept 10.5281/zenodo.21965712 (resolves to latest)
files Silentpartnercoding/minority-prophet-paper-v1.2.0.zip
relation isNewVersionOf 10.5281/zenodo.21965713
```

**The manuscript source is NOT being edited to carry this DOI.** Doing so is
exactly what produced the v1.1.0 drift closed above: the deposited artifact was
built from the source as it stood, and changing that source afterwards makes the
repository's v1.2.0 differ from the deposited v1.2.0. The DOI is recorded in
`metadata.json`, `CITATION.cff` and here, which is where a post-publication fact
belongs. If a future version wants the DOI in the manuscript text, it is v1.3.0's
header that carries it, never v1.2.0's.

### Process defect, demonstrated rather than hypothesised

`SUBMISSION-CHECKLIST.md` describes the archival step as *"inspect the draft
deposit, and publish it only after metadata approval"*, and the v1.2.0 checklist
line said publishing was an owner action.

**The GitHub–Zenodo integration does not work that way for this repository.** It
published automatically, five seconds after the release was created. There was no
draft and no approval step. The documented gate does not exist in the mechanism.

This is worth stating plainly because it is the same failure class the repository
studies: a control believed to be in place, described in writing, and absent in
the system it describes. The correct reading is that **creating a GitHub release
here IS publishing a DOI**, and the approval gate must move earlier — to the
release, or to disabling the integration — because there is no later gate.

The deposit itself is correct: right version, right relation to v1.1.0, open
access. Nothing needs retracting. A Zenodo record cannot be unpublished in any
case, which is why the gate mattered.

### One difference from the v1.1.0 deposit

The v1.1.0 record carries both the source zip and the standalone PDF; the v1.2.0
record carries the zip only, because the integration archives the repository
tarball and the v1.1.0 PDF had been attached by hand. The PDF is inside the zip
at `output/pdf/`, and is attached to the GitHub release
`paper-v1.2.0`. Adding a file to a published Zenodo record is an owner action and
was not attempted.

### The structural cause, and the fix that ends it

Twice now the repository source has drifted from a deposit, for the same reason:
**a version DOI is minted FROM the document, so a document cannot contain its own
version DOI.** Requiring it forces a choice between a false statement and an
artifact that differs from what was deposited. v1.1.0 took the second horn;
v1.2.0's transitional text took the first.

`check_peer_review_package.py` previously *enforced* the impossible version by
requiring the version DOI to appear in the manuscript. It now enforces the
opposite:

- the manuscript must cite the **concept DOI** `10.5281/zenodo.21965712`, which
is assigned once, never changes, and always resolves to the latest version;
- the manuscript must **not** cite its own version DOI;
- the **version DOI** is recorded in `metadata.json`, `CITATION.cff` and here.

From v1.3.0 onward the manuscript needs no post-deposit edit, so repository and
deposit cannot diverge again.

### One-time discrepancy in the v1.2.0 deposit, recorded not repaired

The v1.2.0 deposit `10.5281/zenodo.21997434` archives the tree as it stood at tag
`paper-v1.2.0`, whose manuscript header read *"Archival DOI (v1.1.0 deposit) …
a v1.2.0 deposit has not been created"* — true when built, false five seconds
later. The repository's v1.2.0 manuscript now cites the concept DOI instead.

```text
deposited v1.2.0 PDF sha256 487dfe143b4db3102e2e9e97c2830b3f48f5378cdff12866fcda3bbd142cf38b
repository v1.2.0 PDF sha256 e1cee6b3abee5b6d1b5f0aac232ce276a6fff58b58a663b6e1035b9050d2c599
```

**No new version is cut to close this gap**, because doing so would mint another
DOI, which would date another header, which would require another version. That
regress is the thing the concept-DOI rule exists to stop. The discrepancy is one
transitional sentence, it is recorded here, and it terminates with v1.2.0.
5 changes: 3 additions & 2 deletions papers/peer-review/SUBMISSION-CHECKLIST.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,9 @@ The focused preprint is publicly archived. The record below separates completed
- [x] Record version DOI `10.5281/zenodo.21965713` in the manuscript source, repository paper metadata, and `CITATION.cff`.
- [x] Prepare the arXiv upload artifact, form metadata, category recommendation, and endorsement instructions in `papers/peer-review/arxiv/`.
- [x] ~~Publish the DOI-bearing PDF as a metadata-only `v1.1.1` archival version~~ — superseded by `v1.2.0`, a content revision adding the CE-14 scope limitation. See `ARCHIVAL-INTEGRITY.md`.
- [ ] Create a Zenodo version for `v1.2.0` and record its version DOI. **Not done by any agent**: publishing to an external archive is an owner action.
- [ ] Decide the open item in `ARCHIVAL-INTEGRITY.md`: the tracked `v1.1.0` PDF is not byte-identical to the deposited one.
- [x] Create a Zenodo version for `v1.2.0` and record its version DOI `10.5281/zenodo.21997434`. **Published automatically by the GitHub integration on release creation — there was no draft and no approval step.** See the process defect recorded in `ARCHIVAL-INTEGRITY.md`.
- [ ] Decide where the approval gate now lives, given that creating a GitHub release here publishes a DOI immediately: gate the release itself, or disable auto-publication in the Zenodo integration.
- [x] ~~Decide the open item: the tracked `v1.1.0` PDF is not byte-identical to the deposited one.~~ Resolved: both v1.1.0 artifacts restored to the deposited bytes, verified by a byte-identical rebuild.
- [ ] Submit the single PDF to arXiv from the author's own account.
- [ ] Record venue, submission identifier, date, and manuscript status without describing the preprint as peer reviewed.

Expand Down
4 changes: 2 additions & 2 deletions papers/peer-review/metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
"Sybil resistance"
],
"repository": "https://github.com/Silentpartnercoding/minority-prophet",
"doi": "10.5281/zenodo.21965713",
"doi": "10.5281/zenodo.21997434",
"abstract": "When claims can be copied at negligible cost, a large apparent majority may contain only one underlying observation. This paper defines a root-counting aggregator over finite binary claim graphs and proves that, under side consistency, its verdict is invariant to lineage changes preserving assertions and the root set and to copies with recorded parents. Tight root-margin bounds expose decision sensitivity. The Lean-checked results concern correct counting of declared provenance, not truth, authenticity, causal independence, discovery completeness, or authority.",
"doiNote": "Version DOI of the immutable v1.1.0 deposit. v1.2.0 has not been deposited; cite the v1.1.0 DOI for that exact artifact, or the concept DOI 10.5281/zenodo.21965712 for the version family."
"doiNote": "Version DOI of the v1.2.0 deposit. The immutable v1.1.0 deposit remains 10.5281/zenodo.21965713; the concept DOI 10.5281/zenodo.21965712 resolves to the latest version."
}
4 changes: 2 additions & 2 deletions papers/peer-review/minority-prophet-peer-review-v1.2.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
**James Siyuan He**
Preprint v1.2.0; not peer reviewed, 18 August 2026
Correspondence: https://github.com/Silentpartnercoding
Archival DOI (v1.1.0 deposit): https://doi.org/10.5281/zenodo.21965713a v1.2.0 deposit has not been created
Archival DOI (all versions): https://doi.org/10.5281/zenodo.21965712resolves to the latest deposited version

## Abstract

Expand Down Expand Up @@ -223,7 +223,7 @@ In a finite binary rooted-claim graph, counting declared roots rather than claim

**v1.2.0 (18 August 2026)** — adds one limitation to Section 7: the aggregator answers a symmetric question and does not decide universal or existential claims. No result, proof, validation number, or claim of v1.1.0 is retracted or changed. This is a **content revision**, not the metadata-only `v1.1.1` correction described in `ARCHIVAL-INTEGRITY.md`; that correction is superseded by this version rather than published separately, because a version that changes what the paper claims about its own scope must not be labelled metadata-only.

**v1.1.0 (16 August 2026)** — archived at `10.5281/zenodo.21965713`. That deposit is immutable and is not replaced.
**v1.1.0 (16 August 2026)** — archived; that deposit is immutable and is not replaced. Per-version DOIs are recorded in `papers/peer-review/ARCHIVAL-INTEGRITY.md` rather than in this manuscript, so that the deposited artifact and the repository source cannot diverge.

## Data and code availability

Expand Down
18 changes: 15 additions & 3 deletions scripts/check_peer_review_package.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,14 @@
PDF = ROOT / f"output/pdf/minority-prophet-peer-review-v{PAPER_VERSION}.pdf"
ARXIV_METADATA = ROOT / "papers/peer-review/arxiv/metadata.json"
CITATION = ROOT / "CITATION.cff"
DOI = "10.5281/zenodo.21965713"
# The VERSION doi identifies one deposit; the CONCEPT doi identifies the family
# and resolves to the latest. Only the concept doi may be required inside the
# manuscript: a version doi is minted FROM the document, so demanding the
# document contain it forces either a false statement or an artifact that
# differs from the deposit. Both happened before this split existed --
# see papers/peer-review/ARCHIVAL-INTEGRITY.md.
CONCEPT_DOI = "10.5281/zenodo.21965712"
DOI = "10.5281/zenodo.21997434"

REQUIRED_SECTIONS = [
"## Abstract", "## 1. Introduction", "## 2. Related work", "## 3. Model",
Expand Down Expand Up @@ -54,8 +61,13 @@ def main() -> None:
title = text.splitlines()[0].removeprefix("# ")
if meta["title"] != title or meta["version"] != PAPER_VERSION:
fail("metadata title or version disagrees with manuscript")
if meta.get("doi") != DOI or DOI not in text:
fail("assigned DOI is missing or inconsistent")
if meta.get("doi") != DOI:
fail("metadata does not record the assigned version DOI")
if CONCEPT_DOI not in text:
fail("manuscript does not cite the concept DOI")
if DOI in text:
fail("manuscript cites its own version DOI; use the concept DOI so the "
"deposited artifact and the repository source cannot diverge")
citation = CITATION.read_text(encoding="utf-8")
if f'doi: "{DOI}"' not in citation or meta["title"] not in citation:
fail("CITATION.cff is missing the preferred paper title or DOI")
Expand Down
Loading