CounterpediaKnowledge you can trace back to the source.

/research/capture-wave1/capture-wave1-contract

Research artifactnot admittedcontract

CAPTURE WAVE1 CONTRACT

Repository: thelaplage/counterpedia-acquisition

source: COUNTERPEDIA_DEMO_CORPUS_CAPTURE_WAVE1_v0_1/CAPTURE_WAVE1_CONTRACT.md
sha256: 60d5cc6f9ff2f6616f05653db568bf6dfbb1a06ee5246679222a53492ece22b4

Explore this research record →

Presentation-only rendering. Counterpedia preserves this document’s source Markdown bytes exactly and formats them for reading here. This does not admit the document, verify its claims, or convert it into a governed Counterpedia entry.

Repository: thelaplage/counterpedia-acquisition
Bound main SHA: eac638def41922fdaacfa04d1b0302de9d2ed5e7
Target branch: feat/demo-corpus-capture-wave1-v0-1
P0 manifest entries: 112
Subjects: 12
State: acquisition / pre-adjudication only

Purpose

Convert the research dossiers' P0 web-reconnaissance sources into durable acquisition evidence:

requested locatorHTTP attemptexact captured bytessha256 content addressCaptureReceiptattempt/run logdeterministic passage anchorsresearch edition-lineage observation

This wave does not decide what any source proves.

Constitutional boundary

The existing counterpedia-acquisition boundary remains binding:

  • agents may discover, capture, observe, and propose;

  • source identity remains acquisition-local and URL-derived under the existing code;

  • exact bytes remain content addressed;

  • each capture attempt retains its own receipt/outcome;

  • redirects do not rewrite source identity;

  • failures do not create fake receipts;

  • there is no admission, approval, publication, or standing authority here.

This wave MUST NOT:

  • redesign SourceRecord, SourceEdition, Artifact identity, or Counterpedia namespace rules;

  • mint canonical cp:* IDs;

  • write ClaimGraph/admission state;

  • assign epistemic confidence;

  • generate article prose;

  • treat source class/priority as truth weight;

  • silently replace origin bytes with a mirror;

  • infer equality of two artifacts from title/URL similarity.

P0 manifest semantics

The manifest is research/run input, not canonical source identity.

dossier_source_id such as TIT-S02 is an inventory key only.

capture_mode values:

  • FETCH_DIRECT — attempt the requested locator directly.

  • DISCOVERY_PAGE / DISCOVERY_INDEX — capture the page itself; child artifacts remain separate.

  • MULTI_ARTIFACT_SOURCE — one research source ID requires multiple exact child artifacts; runner records the landing capture and a child-resolution queue, but MUST NOT recursively crawl without explicit bounded resolver rules.

  • DISCOVERY_REQUIRED — the dossier identifies an exact source object but current direct origin locator is unresolved. Do not invent one.

  • ORIGIN_REQUIRED — a mirror/recon copy exists, but governed capture must locate or explicitly distinguish the origin.

  • EXPAND_LINKED_PACKAGE — capture landing page, then operator-approved exact linked documents individually.

  • SAME_ARTIFACT_SECTION — no second fetch; passage anchor is against another already captured artifact.

  • BLOCKED_PRIMARY_BYTES — STOP for that source until acceptable institutional/court/origin bytes are found.

Run output contract

A run directory must be self-contained and immutable after closure:

run.json
program.json
manifest.snapshot.json
attempts.jsonl
receipts.jsonl
lineage_hints.jsonl
anchors.jsonl
failures.jsonl
objects/

run.json

Must include:

  • run UUID

  • start/end UTC

  • git repo + exact commit

  • manifest sha256

  • Python version

  • acquisition package version/commit

  • extractor names + versions

  • configured max bytes / timeout

  • final counts by disposition

exact bytes

Use the existing FilesystemObjectStore.

Never write partial response bodies.

Never trust Content-Length as byte count.

passage anchors

Anchors are derived extraction artifacts, not claims.

Every anchor must bind to:

  • exact artifact sha256;

  • capture ID;

  • source inventory key;

  • extractor ID/version;

  • locator type (html_text_span, pdf_page_text, pdf_page_figure, etc.);

  • page/index/span;

  • extracted passage text hash;

  • extraction timestamp UTC.

PDF extraction:

  • deterministic text extraction only;

  • no OCR in v0.1;

  • if page text is empty/image-only, emit ANCHOR_UNAVAILABLE_IMAGE_ONLY, then permit figure/page anchors without inventing OCR text.

HTML extraction:

  • anchor against exact HTTP bytes, not browser-rendered text.

  • normalized visible-text extraction may be emitted only with extractor/version metadata.

edition lineage

The acquisition lane may record research lineage hints only:

  • corrects

  • amends

  • updated_version_of

  • same_artifact_section

  • candidate_same_document

A lineage hint becomes useful only after the exact artifact digests on both sides are known.

It MUST NOT mint or assert canonical SourceEdition identity.

STOP conditions

For an individual entry:

  • no acceptable origin locator where origin is required;

  • HTTP non-200 under current fetch contract;

  • byte limit exceeded;

  • timeout;

  • malformed transport metadata;

  • redirect to a non-http(s) target;

  • content cannot be extracted without OCR where OCR is not allowed;

  • mirror found but origin equivalence not byte-proven.

Record the disposition and continue other entries.

For the entire run:

  • manifest validation failure;

  • duplicate capture_key;

  • non-http(s) fetch locator;

  • repo main mismatch during implementation preflight;

  • any code path that creates admission/standing/publication state;

  • any attempt to fabricate a receipt for a failed capture.

Acceptance target

The wave is successful even if some sources remain blocked.

Success means:

  1. every one of the 112 P0 manifest entries has a deterministic final disposition;

  2. every successful fetch has exact bytes + verified sha256 + real CaptureReceipt;

  3. every failed/blocked item remains visible;

  4. no mirror is silently promoted;

  5. passage anchors exist where deterministic extraction permits them;

  6. image-only pages are page/figure anchored or explicitly marked unavailable;

  7. edition/correction relationships remain typed research hints;

  8. no adjudication occurred.