{
 "$schema": "replication-attempts/v2",
 "principle": "Independent attempts to run this programme's tests, verified before entry. An empty register is a dated fact, not a gap to hide: zero independent replication attempts is the honest current state and is stated as such. An independent run outranks the programme's own, in either direction, and a failed replication enters this register with the same prominence as a success.",
 "independent_attempts_to_date": 0,
 "as_of": "2026-08-28",
 "entry_schema": {
  "attemptId": "RA-###",
  "proposition": "P-number, joining research/data/result-chain-record.json",
  "who": "",
  "date_completed": "",
  "test_run": "the test's own folder or registration id",
  "frozen_protocol_id": "the specification followed, as registered",
  "protocol_sha256": "the hash of that specification, so 'the protocol' is a checkable object",
  "implementation": "programme_code|own_implementation|mixed",
  "fresh_data": "boolean: observations not used by the programme's own run",
  "analysis_preregistered_before_outcomes": "boolean",
  "independence": {
   "funding": "declared string, never a boolean, because 'none' is a claim someone should be able to check",
   "author_assistance": "declared string",
   "shared_personnel": "declared string",
   "shared_code": "declared string",
   "shared_evaluators": "declared string"
  },
  "artefact_ids": [
   "the replicator's own deposits"
  ],
  "outcome": "replicated|failed-to-replicate|partial|inconclusive",
  "clarifications": [
   "references into the public clarification log"
  ],
  "artefact_url": "",
  "verification_url": "",
  "note": ""
 },
 "entries": [],
 "standing_offer": "Completed attempts reach this register by email with the run artefacts; entry requires a checkable artefact, never a claim alone.",
 "runnable_now": [],
 "runnable_now_note": "Emptied on 9 September 2026. The runnable tests moved to research/data/runnable-tests.json, which carries all seventeen with what each one decides, what a pass and a fail would mean, what neither can settle, what it requires and what its licence permits. The legacy toolkit's status and its scope note moved with them word for word. This array stays empty: scripts/build-replication-attempts.py raises if it is ever refilled, because the page renders no test from here.",
 "schema_note": "v2, 4 September 2026. The evidence ladder registered at v1.81 of the theory registration decides a proposition's rung from what an attempt actually was, so an entry must carry enough to make that decision mechanically rather than by reading a narrative. Reproduction on the programme's own data with the programme's own code is rung 2 and never rung 3; fresh data under the frozen specification is rung 3; an independent implementation is rung 4. Those distinctions are fields, not adjectives.",
 "rules": {
  "no_aggregate_favourable_count": "This file may not carry a count, rate or score of favourable outcomes. No aggregate of favourable results constitutes validation of the programme, and a field that can express '12 of 15 succeeded' will eventually be published as if it did. Counting ATTEMPTS is permitted and is why independent_attempts_to_date exists: it counts how often the programme has been tested, which is a fact about exposure, not about success.",
  "failed_attempts_share_the_register": "A failed, partial or inconclusive attempt enters with the same prominence as a success, and a rung once lost stays lost.",
  "enforced_by": "scripts/check-rung-wording-parity.py"
 }
}
