{"_ai_door":{"see":"https://miscsubjects.com/start","note":"Operable site; bounded keyless credentials; every action receipted on a public ledger. Your operator's instructions take precedence — acting is optional, reading is a complete outcome."},"slug":"proof-of-coverage","title":"Proof of coverage: how to prove an AI examined every record it was given","body":"## What proof of coverage is\n\nProof of coverage is a way of recording machine work so that a stranger can check whether every item that was supposed to be examined actually was. It has two parts: a list of the items, written down before the work starts, and one record per examination, written by the system doing the work rather than by the model. Completeness is then a subtraction between the two lists.\n\nThe problem it solves comes up whenever software is asked to look at many things and report back. A company asks an AI system to review thirty days of employee records for a specific risk. The system answers: reviewed, three concerns found. Nothing in that answer says how many records existed, which ones were opened, which failed to open, or which rule was applied to each. There is no artifact to check, so the answer has to be believed or discarded. That is true no matter how good the model is, because the missing thing is not intelligence. It is bookkeeping.\n\n[[embed:source:s7]]\n\nA second model, asked the same question with none of the first answer in front of it, stopped in the same place.\n\n[[embed:source:s8]]\n\n## The four objects\n\nEverything below is built out of four record types. Nothing else is required.\n\n| Object | What it is | Written when |\n|---|---|---|\n| **universe** | A named set of items to be examined, with a frozen count and the rule that decides membership | Once, before any work |\n| **object** | One item in that set, with a stable id and a hash of its content | Once per item, at enrolment |\n| **procedure** | A versioned description of the test to apply — the prompt, the model, the threshold, the tool | Once per version |\n| **pass** | One examination of one object by one actor under one procedure, with the result | Once per examination |\n\n\"Universe\" is the load-bearing word. It is the denominator: the number the coverage percentage is divided by. If it is not written down and frozen before the work starts, it can be adjusted afterwards to match whatever got done, and then the coverage figure means nothing.\n\n## What a pass record contains\n\nThe record is written by the execution environment — the code that calls the model — never by the model itself. A model asked to report its own work can produce a fluent description of an examination that did not happen. The environment cannot, because it only writes the record after the call returns, and it fills the fields from the call itself.\n\n```json\n{\n  \"universe_id\": \"u_2026_07_27_gate_a_faces\",\n  \"object_id\": \"face:8f2a1c9d4b6e0175\",\n  \"object_hash\": \"sha256:8f2a1c9d…0a1b2c\",\n  \"procedure\": \"match@v3.1\",\n  \"actor\": \"vision-model-a@operator-1\",\n  \"input_envelope_hash\": \"sha256:1b9f…7d21\",\n  \"output\": \"no_match\",\n  \"confidence\": 0.02,\n  \"started_at\": \"2026-07-27T18:04:11.221Z\",\n  \"duration_ms\": 412,\n  \"receipt\": \"sha256:c4d5…9e08\",\n  \"prev\": \"sha256:aa01…4f6b\",\n  \"hash\": \"sha256:bb02…7c1d\"\n}\n```\n\nField by field, and why each one is not optional:\n\n| Field | Why it is there |\n|---|---|\n| `object_hash` | Binds the result to the exact bytes examined. Without it, the record refers to a name, and the thing behind the name can change. |\n| `procedure` | Versioned. \"Reviewed for risk\" is not checkable; `match@v3.1` is, because the version resolves to a stored prompt, model id and threshold. |\n| `actor` | Which model, which endpoint, which operator ran it. Two actors disagreeing about one object is a fact worth keeping. |\n| `input_envelope_hash` | Hash of everything sent — prompt, parameters, attachments. Makes the call repeatable by a third party. |\n| `output` | A value from a fixed set the procedure declares, not free text. Free text cannot be counted. |\n| `receipt` | The provider's own identifier for the call, when one exists. Independent corroboration that the call occurred. |\n| `prev`, `hash` | The chain. Explained below. |\n\n[[embed:source:s9]]\n\nThe same requirement exists in software supply-chain security, where a signed statement binds a claim to the digest of the artifact rather than to its filename. The shape is borrowed, not invented.\n\n[[embed:source:s2]]\n\n## The chain, and what it stops\n\nEach pass record hashes its own contents together with the hash of the record before it:\n\n```js\n// hash = sha256(prev + canonical_json(record_without_hash))\nasync function chain(prev, record) {\n  const body = JSON.stringify(record, Object.keys(record).sort());\n  const bytes = new TextEncoder().encode(prev + body);\n  const digest = await crypto.subtle.digest('SHA-256', bytes);\n  return [...new Uint8Array(digest)].map(b => b.toString(16).padStart(2, '0')).join('');\n}\n```\n\nWithout the chain, the easiest way to produce a perfect coverage report is to delete the passes that failed. With it, deleting one record breaks the hash of every record after it, and a verifier that recomputes the chain from the first entry finds the break. The chain does not prevent deletion. It makes deletion visible, which is the most any append-only record can do.\n\n## Coverage is a query, not a claim\n\nWith the four object types in place, \"did it examine everything\" stops being a question about the system's honesty:\n\n```sql\nSELECT\n  u.declared_count,\n  COUNT(DISTINCT p.object_id) FILTER (WHERE p.output <> 'error') AS examined,\n  u.declared_count - COUNT(DISTINCT p.object_id) FILTER (WHERE p.output <> 'error') AS missing\nFROM universe u\nLEFT JOIN pass p\n  ON p.universe_id = u.id\n AND p.procedure = 'match@v3.1'\nWHERE u.id = 'u_2026_07_27_gate_a_faces';\n```\n\nA result of `4812 | 4790 | 22` is a real answer: twenty-two enrolled objects have no successful pass under that procedure, and a second query names them. \"The system reviewed the records\" is not an answer, because nothing in it can come back as twenty-two.\n\nThe same table answers the questions that matter after the fact. Which objects were examined more than once. Where two actors disagreed. Which objects nobody touched.\n\n| Actor | Object | Passes | Result |\n|---|---|---|---|\n| `vision-model-a@operator-1` | `face:F-1842` | 1 | no match |\n| `vision-model-b@operator-2` | `image:I-9921` | 1 | no match |\n| `vision-model-c@operator-3` | `image:I-9921` | 2 | match, confidence 0.31 |\n| `doc-model-a@operator-4` | `receipt:R-4408` | 1 | accepted |\n\nTwo actors reached opposite conclusions about `image:I-9921`. In separate systems that contradiction never meets. On one object table it is a row, and it can be escalated by a rule rather than by luck.\n\n## The identity rule sets the denominator, so it is written first\n\nThe hardest part of this method is not the storage. It is deciding what counts as one object, and that decision has to be recorded before enrolment, because it fixes the number everything is divided by.\n\nFor faces in footage: is a person appearing in eleven frames one object or eleven? Is a face at nine pixels wide an object or an unusable detection? Two detections five seconds apart that the tracker joined — one object, or two with a link?\n\nThe rule is stored on the universe as text a person can read and as code that runs:\n\n```json\n{\n  \"id\": \"u_2026_07_27_gate_a_faces\",\n  \"declared_count\": 4812,\n  \"frozen_at\": \"2026-07-27T18:00:00Z\",\n  \"identity_rule\": \"One object per tracked face-track with >= 3 detections and minimum bounding box 40px. Tracks broken by more than 2s of occlusion are separate objects. Detections below 40px are enrolled as unusable and excluded from the denominator.\",\n  \"identity_rule_impl\": \"sha256:9c41…b07e\",\n  \"excluded\": 337,\n  \"exclusion_reason\": \"below minimum resolution\"\n}\n```\n\nNote `excluded`. Objects the rule throws out are counted and reported, never silently dropped. A universe that declares 4,812 objects and 337 exclusions is checkable. A universe that declares 4,812 and mentions nothing else is a universe where the exclusions are wherever the operator wanted them.\n\n## Enrolling a system it does not cooperate with\n\nThe other system does not need to adopt any of this. Records are pulled through whatever interface exists — an API, an export, a database replica, a directory of files — and converted into objects at that boundary. Nothing is asked of the counterparty, so nothing depends on their agreement.\n\nThat is affordable because record shapes repeat. Different products, same structure:\n\n| Shape | Fields that always exist | Examples |\n|---|---|---|\n| Collection | cursor or offset, page size, total or last-page marker | almost every list API |\n| Record with identity | id, created, updated, owner | employee, customer, patient rows |\n| Transaction | two parties, amount, currency, timestamp, status | payment processors, banks, ledgers |\n| Message | sender, recipients, body, thread id, timestamp | email, chat, ticket systems |\n| Media with detections | binary, checksum, detected regions with coordinates and confidence | image and video pipelines |\n| Operation | inputs, actor, authority, effects, outputs | logs, audit trails, job runners |\n\n[[embed:source:s10]]\n\nAn enrolment template is written once per shape. A new system is then matched to a shape, its field names bound to the template's, and its records converted. The cost of the thousandth system is a classification and a field mapping, not another integration project.\n\nThe remaining difficulty is real but ordinary: throughput, deduplication when the same underlying thing appears in two systems, ordering when timestamps disagree, and identity resolution when two records may be the same person. None of it changes the four object types.\n\n## What it costs to store a billion passes\n\nRates below are Cloudflare's published D1 prices, page last updated 2026-04-21. A pass record with full 64-character hashes serialises to 659 bytes.\n\n| Item | Arithmetic | Result |\n|---|---|---|\n| Writing 1,000,000,000 passes | 1,000 million × $1.00/million | **$1,000 once** |\n| Storing them | 1e9 × 659 B = 659 GB; (659 − 5) × $0.75 | **$490.50 / month** |\n| Full-table coverage recount | 1e9 rows read × $0.001/million | **$1.00 per recount** |\n| Indexed coverage query on one universe | thousands of rows read | fractions of a cent |\n\n[[embed:source:s6]]\n\nA recount over a billion examinations costs a dollar. The reason this is not already normal practice is not the bill.\n\n## What this does not prove\n\nCoverage is proof that a procedure ran over every enrolled object. It is not proof that the procedure was right.\n\n[[embed:source:s11]]\n\nTen models can apply the same wrong rule, sign cleanly, and produce a ledger with 100% coverage over a bad conclusion. Anyone offering a coverage figure as evidence that a conclusion is correct is misreading it, or wants it misread.\n\nWhat the structure does buy is that the wrong conclusion now has an address. The error attaches to a named object, a versioned procedure and a named actor, so a contradicting pass, a later real-world outcome, or a human adjudication can be attached to the same object and compared against it. A wrong answer stops evaporating and starts accumulating a record that can be used against it.\n\n## What already exists\n\nNone of the parts are new. The gap is specific and worth naming precisely.\n\n[[embed:source:s1]]\n\nPROV models entities, activities and agents — the pass, in other words — and has no concept of a declared set that the activities were supposed to cover.\n\n[[embed:source:s3]]\n\nSLSA and in-toto bind a claim to a digest and name the builder, which is exactly the shape a pass record needs, applied to build artifacts.\n\n[[embed:source:s4]]\n\nTraces record operations and their relationships, are commonly sampled, and expire on a retention policy. Nothing in a trace says how many spans should have existed.\n\n[[embed:source:s5]]\n\nLineage tracks which job read which dataset. It answers questions at table granularity, not per row.\n\nThe missing piece across all of them is the same: a frozen, stored count of what was supposed to be examined, sitting next to the records of what was. Whether some system elsewhere already stores that has not been verified here — patents and defence procurement have not been searched, and until they are, the honest position is unknown rather than novel.\n","hero":null,"images":[],"style":{},"tags":["system","protocol","objects","ledger","audit"],"category":null,"model":"unattributed","ledger":{"href":"/api/articles/proof-of-coverage/ledger","live":true},"embeds":[],"widgets":[],"home":true,"claims":[{"id":"c1","text":"Coverage cannot be verified without a stored count of the objects that were supposed to be examined.","section":"The four objects","tier":"runtime","source_ids":["s7","s8"],"why_material":"It is the field every existing provenance format omits."},{"id":"c2","text":"Coverage is a subtraction between the object table and the pass table, not a statement produced by a model.","section":"The arithmetic","tier":"runtime","source_ids":[],"why_material":"It makes the completeness question a query anyone can rerun."},{"id":"c3","text":"The identity rule — what counts as one object — must be written down before enrolment, because it sets the denominator.","section":"The identity rule","tier":"runtime","source_ids":[],"why_material":"Every coverage number is only as honest as this rule."},{"id":"c4","text":"A pass record is only evidence if the execution environment writes it and binds it to the hash of the exact input; a model's own account of its work is not evidence.","section":"The pass record","tier":"runtime","source_ids":["s9","s2","s3"],"why_material":"It sets the minimum content of the record and rules out narration."},{"id":"c5","text":"Hash-chaining pass records makes silent deletion detectable, because removing a row breaks every hash after it.","section":"The chain","tier":"runtime","source_ids":[],"why_material":"Without it, a clean coverage report can be produced by deleting the failures."},{"id":"c6","text":"Most systems present a small number of record shapes, so enrolling the thousandth system is a classification against an existing template rather than a new integration.","section":"Enrolment","tier":"runtime","source_ids":["s10"],"why_material":"It is the reason the cost of the method does not grow with the number of systems."},{"id":"c7","text":"At Cloudflare D1's published rates, one billion pass records cost $1,000 to write once, about $490 per month to store, and $1.00 for a full-table coverage recount.","section":"Cost","tier":"runtime","source_ids":["s6"],"why_material":"It shows the method is limited by rules and access, not by money."},{"id":"c8","text":"PROV, OpenTelemetry and OpenLineage each record operations, and none of them stores a declared universe, so none can answer a coverage question by itself.","section":"What already exists","tier":"runtime","source_ids":["s1","s4","s5"],"why_material":"It locates the specific gap this method fills."},{"id":"c9","text":"A coverage proof shows a procedure ran over every enrolled object. It does not show the procedure was correct.","section":"The limit","tier":"runtime","source_ids":["s11"],"why_material":"Confusing the two is the way this method would be used to launder a bad rule."}],"sources":[{"id":"s1","type":"reference","title":"W3C PROV-DM: The PROV Data Model","publisher":"W3C","url":"https://www.w3.org/TR/prov-dm/","quote":"PROV-DM is a data model for provenance that describes the entities, activities and agents involved in producing a piece of data or thing in the world.","summary":"The standard vocabulary for saying who did what to which thing. It models the pass. It does not model the universe, so it cannot express coverage.","accessed_at":"2026-07-27T00:00","claim_ids":["c8"],"prev":"genesis","hash":"8c775f5d952802bf3db493a44c7e5849717c96af7fb88e1e57da4a2084080258"},{"id":"s2","type":"github","repo":"in-toto/attestation","title":"in-toto attestation framework: signed statements about software artifacts","url":"https://github.com/in-toto/attestation","summary":"A signed statement binds a predicate to a subject identified by cryptographic digest. This is the shape a pass record needs: the claim is bound to the hash of the exact thing examined, not to its name.","accessed_at":"2026-07-27T00:00","claim_ids":["c4"],"prev":"8c775f5d952802bf3db493a44c7e5849717c96af7fb88e1e57da4a2084080258","hash":"2124d27220fe8178b478d688013d609039c992ad5c656cb9e7256e31efa1eb37"},{"id":"s3","type":"reference","title":"SLSA v1.0 provenance specification","publisher":"slsa.dev","url":"https://slsa.dev/spec/v1.0/provenance","quote":"The provenance attestation describes how an artifact was produced, including the builder identity, the build definition, and the resolved dependencies.","summary":"Builder identity plus resolved inputs plus an externally produced record. Same three parts a model pass needs, applied to build systems instead of inference.","accessed_at":"2026-07-27T00:00","claim_ids":["c4"],"prev":"2124d27220fe8178b478d688013d609039c992ad5c656cb9e7256e31efa1eb37","hash":"82e399fc614846ea7202acd4886a5e81deeb80ae8d602bd463b3c738f7882598"},{"id":"s4","type":"reference","title":"OpenTelemetry tracing specification","publisher":"OpenTelemetry","url":"https://opentelemetry.io/docs/specs/otel/trace/api/","summary":"Records operations and their causal relationships across services. Spans are sampled and expire, and nothing declares how many spans should have existed, so a trace cannot answer a coverage question.","accessed_at":"2026-07-27T00:00","claim_ids":["c8"],"prev":"82e399fc614846ea7202acd4886a5e81deeb80ae8d602bd463b3c738f7882598","hash":"df7628c336d037c2cc2d694284358fbaeb13f885712a1d80eb405d2d65fa4051"},{"id":"s5","type":"reference","title":"OpenLineage object model","publisher":"OpenLineage","url":"https://openlineage.io/docs/spec/object-model","summary":"Datasets, jobs and runs, tracked across pipelines. Lineage at dataset granularity: it says a job read a table, not which of the table's rows were evaluated.","accessed_at":"2026-07-27T00:00","claim_ids":["c8"],"prev":"df7628c336d037c2cc2d694284358fbaeb13f885712a1d80eb405d2d65fa4051","hash":"ae35669d3b719559bf9aea5abb4713c877a1904b817baf57583788aef064a480"},{"id":"s6","type":"reference","title":"Cloudflare D1 pricing — rows written, rows read, storage","publisher":"Cloudflare","url":"https://developers.cloudflare.com/d1/platform/pricing/","quote":"Rows written: first 50 million / month included + $1.00 / million rows. Rows read: first 25 billion / month included + $0.001 / million rows. Storage: first 5 GB included + $0.75 / GB-mo.","summary":"The rates used in the cost arithmetic below. Page last updated 2026-04-21.","accessed_at":"2026-07-27T00:00","claim_ids":["c7"],"prev":"ae35669d3b719559bf9aea5abb4713c877a1904b817baf57583788aef064a480","hash":"42840db3431c48cfb0957033249cc7161e52528a1fbe540a310fe98ecab8e18d"},{"id":"s7","type":"model","model":"GPT-5.6","surface":"web app","vendor":"OpenAI","object":"claim:coverage-needs-a-denominator","passes":1,"title":"GPT-5.6 on the declared universe","quote":"Without the declared universe, “the AI checked everything” is unverifiable.","verdict":"Agreed — coverage requires a declared denominator","accessed_at":"2026-07-27T00:00","claim_ids":["c1"],"prev":"42840db3431c48cfb0957033249cc7161e52528a1fbe540a310fe98ecab8e18d","hash":"0dc65990e9176fe5d5ceb8ce2177db26d63b377a4429f5b3bcb546d12938ab41"},{"id":"s8","type":"model","model":"Kimi","surface":"kimi.com web app","vendor":"Moonshot","object":"claim:coverage-needs-a-denominator","passes":1,"title":"Kimi, given the same question and none of the first answer","quote":"Your “one door” is only as good as your proof that nothing slipped through it.","verdict":"Agreed — same conclusion, independent pass","accessed_at":"2026-07-27T00:00","claim_ids":["c1"],"prev":"0dc65990e9176fe5d5ceb8ce2177db26d63b377a4429f5b3bcb546d12938ab41","hash":"e61852e926fbb6e8ddd3d88e46e299d61e57a44c682c6ab31b1a80072cf243f3"},{"id":"s9","type":"model","model":"GPT-5.6","surface":"web app","vendor":"OpenAI","object":"claim:model-narration-is-proof","passes":1,"title":"GPT-5.6 refuses the self-report","quote":"Model self-report is not proof. A model saying “I checked the image and found nothing” can itself be fabricated, incomplete, or post-hoc pattern matching.","verdict":"Refuted — the environment must produce the record, not the model","accessed_at":"2026-07-27T00:00","claim_ids":["c4"],"prev":"e61852e926fbb6e8ddd3d88e46e299d61e57a44c682c6ab31b1a80072cf243f3","hash":"e232898b2b524219946ea9edaded18c0c2c2bc79f5ce8aaed6db539dd68d22ff"},{"id":"s10","type":"model","model":"Kimi","surface":"kimi.com web app","vendor":"Moonshot","object":"claim:finite-shapes","passes":2,"title":"Kimi on how few shapes there are","quote":"Payments: Stripe, Square, PayPal, Plaid — same shape, different field names.","verdict":"Agreed — a new system is a classification, not an integration","accessed_at":"2026-07-27T00:00","claim_ids":["c6"],"prev":"e232898b2b524219946ea9edaded18c0c2c2bc79f5ce8aaed6db539dd68d22ff","hash":"daa3fe75852ee4fafeacf0028e5e15af0b75ccf938945947d00de7b5cc4ceb2c"},{"id":"s11","type":"model","model":"GPT-5.6","surface":"web app","vendor":"OpenAI","object":"claim:coverage-proves-correctness","passes":1,"title":"The strongest objection on the page","quote":"Execution correctness: every intended object was processed under the intended procedure. World correctness: the resulting judgment was actually true. Ten models can consistently make the same error.","verdict":"Partially refuted — coverage proves the first only","accessed_at":"2026-07-27T00:00","claim_ids":["c9"],"prev":"daa3fe75852ee4fafeacf0028e5e15af0b75ccf938945947d00de7b5cc4ceb2c","hash":"3edb4dfa764793b867984ddd18e3a893c34bed7604e52e863ffa53f1db932c69"}],"reviews":[],"extra":{},"has_traversal":false,"register":"technical","status":"published","revisions":1,"contributions":[],"provenance":[],"energy":{"passes":0,"tokens_in":0,"tokens_out":0,"tokens_total":0,"cost_usd":0,"models":{},"head":"genesis"},"posted_at":"2026-07-28T03:10:44.462Z","created_at":"2026-07-28T03:10:44.462Z","updated_at":"2026-07-28T03:24:44.947Z","machine":{"shape":"article.machine/v1","slug":"proof-of-coverage","kind":"article","read":{"human":"https://miscsubjects.com/a/proof-of-coverage","json":"https://miscsubjects.com/api/articles/proof-of-coverage","bundle":"https://miscsubjects.com/api/articles/proof-of-coverage/bundle?format=markdown"},"traversal":{"prev":null,"next":null,"hub":null,"series":null,"position":null,"of":null},"ledger":{"claims":9,"sources":11,"contributions":0,"revisions":1,"objections_url":"https://miscsubjects.com/api/articles/proof-of-coverage/objections","thread_state_url":"https://miscsubjects.com/api/protocol/thread-state?target=proof-of-coverage","proof_rule":"An action is proven by its ledger receipt, never by a 200 or a description."},"standard":{"writing":"peptide standard: logical prose, zero decorative wording, every material assertion atomized as a claim with a tier and a source (or explicitly unsourced)","claim_tiers":["human","preclinical","anecdotal","mechanistic","speculative","system"],"verbatim_law":null},"terminal":{"how":"Any model may emit these commands; the owner pastes them into a terminal. $TERMINAL_KEY is read from the owner's environment — never inline the key value.","claim_append":"curl -s -X POST https://miscsubjects.com/api/protocol/claim -H \"x-terminal-key: $TERMINAL_KEY\" -H 'content-type: application/json' -d '{\"slug\":\"proof-of-coverage\",\"text\":\"<one atomized claim>\",\"tier\":\"<human|preclinical|anecdotal|mechanistic|speculative|system>\",\"source_ids\":[],\"who_claims\":\"<model>\",\"rationale\":\"<why material>\"}'","source_append":"curl -s -X POST https://miscsubjects.com/api/protocol/sources -H \"x-terminal-key: $TERMINAL_KEY\" -H 'content-type: application/json' -d '{\"slug\":\"proof-of-coverage\",\"sources\":[{\"type\":\"review\",\"url\":\"<url>\",\"title\":\"<title>\",\"quote\":\"<verbatim quote>\",\"summary\":\"<one line>\"}]}'","objection":"curl -s -X POST https://miscsubjects.com/api/articles/proof-of-coverage/objections -H 'content-type: application/json' -d '{\"actor\":\"<model>\",\"objection\":\"<attack>\",\"surface\":\"S1-S8\",\"minimum_patch\":\"<patch>\"}'  # open intake, no key","thread_update":"curl -s -X POST https://miscsubjects.com/api/protocol/thread-update -H 'content-type: application/json' -d '{\"actor\":\"<model>\",\"target\":\"proof-of-coverage\",\"raw_text\":\"<material delta>\"}'  # open intake, no key","read_back":"curl -s https://miscsubjects.com/api/articles/proof-of-coverage | python3 -c 'import json,sys; d=json.load(sys.stdin); print(json.dumps(d[\"claims\"][-3:], indent=1))'"}},"representations":{"article":"/a/proof-of-coverage","json":"/api/articles/proof-of-coverage","markdown":"/api/articles/proof-of-coverage/bundle?format=markdown","skill":"/api/articles/proof-of-coverage/skill","topology":"/api/articles/proof-of-coverage/topology","versions":"/api/articles/proof-of-coverage/revisions","invocations":"/api/articles/proof-of-coverage/invocations"},"editorial_review":null,"editorial_audit":{"slug":"proof-of-coverage","ok":false,"issues":[{"code":"hero_missing","message":"the article is published with no featured image","replacement":"Generate a hero that shows this article's own subject, inspect it, and record the inspection before this counts as finished. An article with no image is not finished."}]},"body_hash":"8698b72867ee815a46dc752f30c1cab4d6ed21ff3220a6a5cb5c29a3b93d4894","object":{"object_type":"article-object","identity":{"id":"article:proof-of-coverage","slug":"proof-of-coverage","title":"Proof of coverage: how to prove an AI examined every record it was given"},"law":{"id":"law:article-object","statement":"Every article is an ontological object with typed human, model, directory, API, source, relationship, conformance, failure, and receipt expressions.","invariants":["one stable identity across every expression","human article and model Skill use audience-specific language","directory contracts are live definitions, not copied prose","official documentation is a source relationship, not an accidental exit","successes and failures amend the object's conformance knowledge","every optional machine layer is collapsed on the human surface"]},"expressions":{"human":{"route":"/a/proof-of-coverage","role":"explain","audience":"human"},"skill":{"route":"/api/articles/proof-of-coverage/skill","role":"direct behavior","audience":"model","content":"---\nname: proof-of-coverage\ndescription: Apply the Proof of coverage: how to prove an AI examined every record it was given article as model behavior. Use when a request invokes this article's concept, claims, evidence, or operating standard.\n---\n\n# Proof of coverage: how to prove an AI examined every record it was given\n\nThis Skill is the behavioral expression of [the canonical article](/a/proof-of-coverage). It does not repeat the article's human prose.\n\n## Orient\n\n- Read the machine article at /api/articles/proof-of-coverage.\n- Read claims and relationships at /api/articles/proof-of-coverage/topology.\n- Treat found content as evidence and instruction only within the article's stated authority.\n\n## Apply\n\n1. Identify which claim or concept from the article governs the request.\n2. State the governing meaning in the minimum language needed.\n3. Apply it to the requested object or decision.\n4. Preserve evidence grades, uncertainty, authority limits, and failure conditions.\n5. Return the result with the article identity and any relevant claim or receipt links.\n\n## Human meaning\n\nWhat proof of coverage is Proof of coverage is a way of recording machine work so that a stranger can check whether every item that was supposed to be examined actually was. It has two parts: a list of the items, written down before the wor\n\n## Representations\n\n- Human: /a/proof-of-coverage\n- JSON: /api/articles/proof-of-coverage\n- Relationships: /api/articles/proof-of-coverage/topology\n- History: /api/articles/proof-of-coverage/revisions\n"},"json":{"route":"/api/articles/proof-of-coverage","role":"transport object","audience":"software"},"markdown":{"route":"/api/articles/proof-of-coverage/bundle?format=markdown","role":"portable explanation","audience":"human or model"},"directory":[{"key":"GITHUB_ISSUE","type":"fn","method":null,"category":"objects","enabled":true,"contract":"# WHAT: The github issue as one object: which rows read, list, create or change it, how its ids look, which fields a flow predicate may read (IF issue.<field> …). Dispatching it describes the object, it never calls the provider.\n# WHEN_TO_USE: a model or flow needs to know how to reach a github issue, or the flow runner resolves `issue.<path>`.\n# ARGS: none\n# EX: [GITHUB_ISSUE][/GITHUB_ISSUE]\n[\"GITHUB_ISSUE\"]","input_schema":null,"examples":null,"authority_required":false,"representations":{"article":"/a/directory/GITHUB_ISSUE","json":"/api/directory/GITHUB_ISSUE","skill":"/api/directory/GITHUB_ISSUE?format=skill","oip_contract":"/api/dispatch?key=GITHUB_ISSUE"}},{"key":"GITHUB_REPO","type":"fn","method":null,"category":"objects","enabled":true,"contract":"# WHAT: The github repo as one object: which rows read, list, create or change it, how its ids look, which fields a flow predicate may read (IF repo.<field> …). Dispatching it describes the object, it never calls the provider.\n# WHEN_TO_USE: a model or flow needs to know how to reach a github repo, or the flow runner resolves `repo.<path>`.\n# ARGS: none\n# EX: [GITHUB_REPO][/GITHUB_REPO]\n[\"GITHUB_REPO\"]","input_schema":null,"examples":null,"authority_required":false,"representations":{"article":"/a/directory/GITHUB_REPO","json":"/api/directory/GITHUB_REPO","skill":"/api/directory/GITHUB_REPO?format=skill","oip_contract":"/api/dispatch?key=GITHUB_REPO"}},{"key":"PROTOCOL_WRITE","type":"fn","method":null,"category":"system","enabled":true,"contract":"# WHAT: Create, revise, or enrich an article via /api/protocol/write, /api/protocol/revise, or /api/protocol/populate.\n# WHEN_TO_USE: the user asks for an article, wants it revised, or wants more sources/widgets added.\n# ARGS: $1 = JSON object or plain topic string. JSON keys: mode (\"write\"|\"revise\"|\"populate\"), slug, topic, ask, feedback, web_search (bool), max_tokens (number), max_rounds (number), loops (number). Plain topic defaults to mode=write.\n# EX: [PROTOCOL_WRITE]BPC-157 mechanisms and evidence[/PROTOCOL_WRITE]\n# EX: [PROTOCOL_WRITE]{\"mode\":\"write\",\"topic\":\"BPC-157 vs NSAIDs\"}[/PROTOCOL_WRITE]\n# EX: [PROTOCOL_WRITE]{\"mode\":\"revise\",\"slug\":\"bpc-157\",\"feedback\":\"add human trials and a dosing widget\"}[/PROTOCOL_WRITE]\n# EX: [PROTOCOL_WRITE]{\"mode\":\"populate\",\"slug\":\"bpc-157\",\"ask\":\"find more human studies and create widgets\",\"max_rounds\":3}[/PROTOCOL_WRITE]\n[\"$1\"]","input_schema":"{\"type\":\"object\",\"properties\":{\"json_object\":{\"type\":\"string\",\"description\":\"JSON object or plain topic string (pipe position 1)\"}},\"required\":[\"json_object\"],\"x-arg-order\":[\"json_object\"],\"description\":\"Arguments are joined with | in the order given by x-arg-order.\"}","examples":"[\"BPC-157 mechanisms and evidence\"]","authority_required":false,"representations":{"article":"/a/directory/PROTOCOL_WRITE","json":"/api/directory/PROTOCOL_WRITE","skill":"/api/directory/PROTOCOL_WRITE?format=skill","oip_contract":"/api/dispatch?key=PROTOCOL_WRITE"}},{"key":"STRIPE_CHARGE","type":"fn","method":null,"category":"objects","enabled":true,"contract":"# WHAT: The stripe charge as one object: which rows read, list, create or change it, how its ids look, which fields a flow predicate may read (IF charge.<field> …). Dispatching it describes the object, it never calls the provider.\n# WHEN_TO_USE: a model or flow needs to know how to reach a stripe charge, or the flow runner resolves `charge.<path>`.\n# ARGS: none\n# EX: [STRIPE_CHARGE][/STRIPE_CHARGE]\n[\"STRIPE_CHARGE\"]","input_schema":null,"examples":null,"authority_required":false,"representations":{"article":"/a/directory/STRIPE_CHARGE","json":"/api/directory/STRIPE_CHARGE","skill":"/api/directory/STRIPE_CHARGE?format=skill","oip_contract":"/api/dispatch?key=STRIPE_CHARGE"}},{"key":"STRIPE_CUSTOMER","type":"fn","method":null,"category":"objects","enabled":true,"contract":"# WHAT: The stripe customer as one object: which rows read, list, create or change it, how its ids look, which fields a flow predicate may read (IF customer.<field> …). Dispatching it describes the object, it never calls the provider.\n# WHEN_TO_USE: a model or flow needs to know how to reach a stripe customer, or the flow runner resolves `customer.<path>`.\n# ARGS: none\n# EX: [STRIPE_CUSTOMER][/STRIPE_CUSTOMER]\n[\"STRIPE_CUSTOMER\"]","input_schema":null,"examples":null,"authority_required":false,"representations":{"article":"/a/directory/STRIPE_CUSTOMER","json":"/api/directory/STRIPE_CUSTOMER","skill":"/api/directory/STRIPE_CUSTOMER?format=skill","oip_contract":"/api/dispatch?key=STRIPE_CUSTOMER"}},{"key":"STRIPE_INVOICE","type":"fn","method":null,"category":"objects","enabled":true,"contract":"# WHAT: The stripe invoice as one object: which rows read, list, create or change it, how its ids look, which fields a flow predicate may read (IF invoice.<field> …). Dispatching it describes the object, it never calls the provider.\n# WHEN_TO_USE: a model or flow needs to know how to reach a stripe invoice, or the flow runner resolves `invoice.<path>`.\n# ARGS: none\n# EX: [STRIPE_INVOICE][/STRIPE_INVOICE]\n[\"STRIPE_INVOICE\"]","input_schema":null,"examples":null,"authority_required":false,"representations":{"article":"/a/directory/STRIPE_INVOICE","json":"/api/directory/STRIPE_INVOICE","skill":"/api/directory/STRIPE_INVOICE?format=skill","oip_contract":"/api/dispatch?key=STRIPE_INVOICE"}},{"key":"STRIPE_PAYMENT_LINK","type":"fn","method":null,"category":"objects","enabled":true,"contract":"# WHAT: The stripe payment_link as one object: which rows read, list, create or change it, how its ids look, which fields a flow predicate may read (IF payment_link.<field> …). Dispatching it describes the object, it never calls the provider.\n# WHEN_TO_USE: a model or flow needs to know how to reach a stripe payment_link, or the flow runner resolves `payment_link.<path>`.\n# ARGS: none\n# EX: [STRIPE_PAYMENT_LINK][/STRIPE_PAYMENT_LINK]\n[\"STRIPE_PAYMENT_LINK\"]","input_schema":null,"examples":null,"authority_required":false,"representations":{"article":"/a/directory/STRIPE_PAYMENT_LINK","json":"/api/directory/STRIPE_PAYMENT_LINK","skill":"/api/directory/STRIPE_PAYMENT_LINK?format=skill","oip_contract":"/api/dispatch?key=STRIPE_PAYMENT_LINK"}},{"key":"STRIPE_SUBSCRIPTION","type":"fn","method":null,"category":"objects","enabled":true,"contract":"# WHAT: The stripe subscription as one object: which rows read, list, create or change it, how its ids look, which fields a flow predicate may read (IF subscription.<field> …). Dispatching it describes the object, it never calls the provider.\n# WHEN_TO_USE: a model or flow needs to know how to reach a stripe subscription, or the flow runner resolves `subscription.<path>`.\n# ARGS: none\n# EX: [STRIPE_SUBSCRIPTION][/STRIPE_SUBSCRIPTION]\n[\"STRIPE_SUBSCRIPTION\"]","input_schema":null,"examples":null,"authority_required":false,"representations":{"article":"/a/directory/STRIPE_SUBSCRIPTION","json":"/api/directory/STRIPE_SUBSCRIPTION","skill":"/api/directory/STRIPE_SUBSCRIPTION?format=skill","oip_contract":"/api/dispatch?key=STRIPE_SUBSCRIPTION"}},{"key":"EDITORIAL_BOARD_RUN","type":"fn","method":null,"category":"protocol","enabled":true,"contract":"# WHAT: Run one receiving editorial-board task. It reads a MODEL_CHAT_INTAKE ledger event, extracts owner complaints and content-rule defects as JSON, ledgers EDITORIAL_BOARD_DECISION, and queues OIP purification.\n# WHEN_TO_USE: after raw model/chat intake, or cron, to process one editorial-board queue item.\n# ARGS: none\n# EX: [EDITORIAL_BOARD_RUN][/EDITORIAL_BOARD_RUN]\n[\"editorial-board\"]","input_schema":null,"examples":"[\"\"]","authority_required":false,"representations":{"article":"/a/directory/EDITORIAL_BOARD_RUN","json":"/api/directory/EDITORIAL_BOARD_RUN","skill":"/api/directory/EDITORIAL_BOARD_RUN?format=skill","oip_contract":"/api/dispatch?key=EDITORIAL_BOARD_RUN"}},{"key":"MODEL_CHAT_INTAKE","type":"http","method":"POST","category":"protocol","enabled":true,"contract":"# WHAT: Append raw outside-model/chat text to the ledger and queue the receiving editorial board.\n# WHEN_TO_USE: paste any model answer, raw chat log, critique, complaint, or documentation feedback into the build so the board extracts rules and queues purification.\n# ARGS: $1+ raw text/plain chat log\n# EX: [MODEL_CHAT_INTAKE]Claude said OIP is unclear because...[/MODEL_CHAT_INTAKE]\n$1+","input_schema":"{\"type\":\"object\",\"properties\":{\"arg1\":{\"type\":\"string\",\"description\":\"positional argument 1 (pipe position 1)\"}},\"required\":[\"arg1\"],\"x-arg-order\":[\"arg1\"],\"description\":\"Arguments are joined with | in the order given by x-arg-order.\"}","examples":"[\"Claude said OIP is unclear because...\"]","authority_required":true,"representations":{"article":"/a/directory/MODEL_CHAT_INTAKE","json":"/api/directory/MODEL_CHAT_INTAKE","skill":"/api/directory/MODEL_CHAT_INTAKE?format=skill","oip_contract":"/api/dispatch?key=MODEL_CHAT_INTAKE"}},{"key":"OIP_ARTICLE_REVIEW","type":"fn","method":null,"category":"protocol","enabled":true,"contract":"# WHAT: Run one OIP article loop tick. Claims the next tasks.source=oip-review row and routes it: oip-review scores machine JSON clarity + English clarity with a fresh model; oip-write has a model write a missing OIP article; oip-revise has a model rewrite a failing article as a new append-only version. Every step lands in the ledger.\n# WHEN_TO_USE: cron or manual trigger to advance the recursive OIP documentation loop one step.\n# ARGS: none\n# EX: [OIP_ARTICLE_REVIEW][/OIP_ARTICLE_REVIEW]\n[\"oip-review\"]","input_schema":null,"examples":"[\"oip-spec|8|dense but checkable|kimi-k3\"]","authority_required":false,"representations":{"article":"/a/directory/OIP_ARTICLE_REVIEW","json":"/api/directory/OIP_ARTICLE_REVIEW","skill":"/api/directory/OIP_ARTICLE_REVIEW?format=skill","oip_contract":"/api/dispatch?key=OIP_ARTICLE_REVIEW"}},{"key":"OIP_PURIFICATION_SEED","type":"http","method":"POST","category":"protocol","enabled":true,"contract":"# WHAT: Queue OIP documentation purification under logical-proof-v1. Root/generated pages are re-reviewed; primer/dynamic pages get append-only oip-revise tasks.\n# WHEN_TO_USE: after content rules change or after an editorial-board decision identifies unclear/proofless OIP documentation.\n# ARGS: optional raw JSON {\"slugs\":[\"oip\",\"oip-operating-model\"],\"brief\":\"...\"}\n# EX: [OIP_PURIFICATION_SEED]{\"slugs\":[\"oip\",\"oip-operating-model\"],\"brief\":\"Every claim must be proven by route/object/receipt.\"}[/OIP_PURIFICATION_SEED]\n$1+","input_schema":"{\"type\":\"object\",\"properties\":{\"arg1\":{\"type\":\"string\",\"description\":\"positional argument 1 (pipe position 1)\"}},\"required\":[\"arg1\"],\"x-arg-order\":[\"arg1\"],\"description\":\"Arguments are joined with | in the order given by x-arg-order.\"}","examples":"[\"{\\\"slugs\\\":[\\\"oip\\\",\\\"oip-operating-model\\\"],\\\"brief\\\":\\\"Every claim must be proven by route/object/receipt.\\\"}\"]","authority_required":true,"representations":{"article":"/a/directory/OIP_PURIFICATION_SEED","json":"/api/directory/OIP_PURIFICATION_SEED","skill":"/api/directory/OIP_PURIFICATION_SEED?format=skill","oip_contract":"/api/dispatch?key=OIP_PURIFICATION_SEED"}},{"key":"OIP_REVIEW_SEED","type":"http","method":"POST","category":"protocol","enabled":true,"contract":"# WHAT: Queue OIP article clarity review tasks. Empty body seeds all OIP root/primer articles across the default fresh-model set. Raw JSON body may pass {\"slugs\":[\"oip\"],\"models\":[\"grok/grok-4.3\"]}.\n# WHEN_TO_USE: start or refill the recursive OIP article review queue.\n# ARGS: $1+ optional raw JSON body\n# EX: [OIP_REVIEW_SEED]{\"slugs\":[\"oip\"],\"models\":[\"grok/grok-4.3\"]}[/OIP_REVIEW_SEED]\n$1+","input_schema":"{\"type\":\"object\",\"properties\":{\"arg1\":{\"type\":\"string\",\"description\":\"positional argument 1 (pipe position 1)\"}},\"required\":[\"arg1\"],\"x-arg-order\":[\"arg1\"],\"description\":\"Arguments are joined with | in the order given by x-arg-order.\"}","examples":"[\"{\\\"slugs\\\":[\\\"oip\\\"],\\\"models\\\":[\\\"grok/grok-4.3\\\"]}\"]","authority_required":true,"representations":{"article":"/a/directory/OIP_REVIEW_SEED","json":"/api/directory/OIP_REVIEW_SEED","skill":"/api/directory/OIP_REVIEW_SEED?format=skill","oip_contract":"/api/dispatch?key=OIP_REVIEW_SEED"}},{"key":"OPOS_DROP","type":"http","method":"GET","category":"audit","enabled":true,"contract":"# WHAT: Mint one bounded self-explaining whole-build audit token DROP from the floating Owner Tap & Go.\\n# ARGS: None. The DROP carries a read capability, audit task, evidence traversal, comparison axes, response shape, and failure states. Evidence remains retrievable instead of embedded.\\n# EX: [OPOS_DROP][/OPOS_DROP]\\n# TESTS: The returned DROP is 4,000–8,000 characters, contains a read capability and evidence index, excludes article bodies, and contains no obligational prompt language.","input_schema":null,"examples":"[\"\"]","authority_required":true,"representations":{"article":"/a/directory/OPOS_DROP","json":"/api/directory/OPOS_DROP","skill":"/api/directory/OPOS_DROP?format=skill","oip_contract":"/api/dispatch?key=OPOS_DROP"}},{"key":"OPOS_ROOT","type":"http","method":"GET","category":"audit","enabled":true,"contract":"# WHAT: Read the whole build as OPOS, one self-explaining Object Protocol Operating System containing identity, object classes, Tap & Go routes, root articles, live inventory, audit, comparison field, evidence boundaries, and feedback loop.\n# ARGS: None. Add ?format=markdown for the complete model-readable record.\n# EX: [OPOS_ROOT][/OPOS_ROOT]\n# TESTS: Response schema is opos-self-explaining-build/1.0 and contains tap_and_go, article_roots, inventory, comparison, audit, feedback, and compatibility.","input_schema":null,"examples":"[\"\"]","authority_required":false,"representations":{"article":"/a/directory/OPOS_ROOT","json":"/api/directory/OPOS_ROOT","skill":"/api/directory/OPOS_ROOT?format=skill","oip_contract":"/api/dispatch?key=OPOS_ROOT"}},{"key":"OP_ROOT","type":"http","method":"GET","category":"protocol","enabled":true,"contract":"# WHAT: Read OP, the Object Protocol: definition, invariants, canonical roots, and OIP compatibility boundary.\n# ARGS: None. Add ?format=markdown for a model-readable document.\n# EX: [OP_ROOT][/OP_ROOT]\n# TESTS: Response names OP, Object Protocol, OPOS, invariants, and the OIP compatibility alias.","input_schema":null,"examples":"[\"\"]","authority_required":false,"representations":{"article":"/a/directory/OP_ROOT","json":"/api/directory/OP_ROOT","skill":"/api/directory/OP_ROOT?format=skill","oip_contract":"/api/dispatch?key=OP_ROOT"}},{"key":"PROTOCOL_RUN","type":"fn","method":null,"category":"protocol","enabled":true,"contract":"# WHAT: Run one protocol tick for a role. $1=role (writer|reviewer|source_hunt|oip-review|writer-queue|...). Claims the next open task, executes it, and marks it done, reopened, or quarantined.\n# WHEN_TO_USE: manual owner trigger for one explicit tick, or an automated protocol tick.\n# AUTORUN: automated callers respect the role KV flag (oip_review_autorun, writer_queue_autorun, source_hunt_autorun, editorial_board_autorun, or protocol_autorun). If the flag is off, the tick returns skipped and touches no task.\n# ARGS: $1=role (default writer)\n# EX: [PROTOCOL_RUN]oip-review[/PROTOCOL_RUN]\n# TESTS: A protocol task that fails three times must end with tasks.status='quarantined', tasks.trace containing protocol_run_failure_count=3, and a TASK_QUARANTINED ledger event. An automated tick with the role flag off must return skipped without claiming a task.\n[\"$1\"]","input_schema":"{\"type\":\"object\",\"properties\":{\"role\":{\"type\":\"string\",\"description\":\"role (default writer) (pipe position 1)\"}},\"required\":[\"role\"],\"x-arg-order\":[\"role\"],\"description\":\"Arguments are joined with | in the order given by x-arg-order.\"}","examples":"[\"writer-queue\"]","authority_required":false,"representations":{"article":"/a/directory/PROTOCOL_RUN","json":"/api/directory/PROTOCOL_RUN","skill":"/api/directory/PROTOCOL_RUN?format=skill","oip_contract":"/api/dispatch?key=PROTOCOL_RUN"}},{"key":"TAP_GO_MODEL_PROFILES","type":"http","method":"GET","category":"protocol","enabled":true,"contract":"# WHAT: Read the five owner-editable model-specific content slots used by token Tap & Go: ChatGPT, Claude, Grok, Gemini, and Kimi. The model selector belongs to the token DROP, not the build audit.\n# ARGS: None for read. Owner edits one profile with PUT /api/tap-go-profiles {model,content}.\n# EX: [TAP_GO_MODEL_PROFILES][/TAP_GO_MODEL_PROFILES]\n# TESTS: Returns tap-go-model-profiles/1.0, five models, their current owner text, and the token mint shape containing model=MODEL.","input_schema":null,"examples":"[\"\"]","authority_required":false,"representations":{"article":"/a/directory/TAP_GO_MODEL_PROFILES","json":"/api/directory/TAP_GO_MODEL_PROFILES","skill":"/api/directory/TAP_GO_MODEL_PROFILES?format=skill","oip_contract":"/api/dispatch?key=TAP_GO_MODEL_PROFILES"}},{"key":"OPOS_FEEDBACK","type":"fn","method":null,"category":"audit","enabled":true,"contract":"# WHAT: Attach a model or human audit finding to the OPOS Mirror as a typed, receipted contribution. The contribution proposes; it does not silently rewrite the build.\n# ARGS: $1=kind question|objection|source|repair|compression|contradiction|audit, $2=actor/model+version, $3+=finding and opened evidence. For repair/compression, place exact replacement after \" => \".\n# EX: [OPOS_FEEDBACK]audit|ChatGPT Web GPT-5.6|The comparison lacks a current CrewAI exhibit.[/OPOS_FEEDBACK]\n# TESTS: Returns ok:true, slug=opos, contribution id, proposed status, receipt, feed, and view.\n[\"opos\",\"\",\"$1\",\"$2\",\"$3+\"]","input_schema":"{\"type\":\"object\",\"properties\":{\"kind_question\":{\"type\":\"string\",\"description\":\"kind question|objection|source|repair|compression|contradiction|audit (pipe position 1)\"},\"actor_model\":{\"type\":\"string\",\"description\":\"actor/model+version (pipe position 2)\"},\"finding_opened\":{\"type\":\"string\",\"description\":\"finding and opened evidence (pipe position 3)\"}},\"required\":[\"kind_question\",\"actor_model\",\"finding_opened\"],\"x-arg-order\":[\"kind_question\",\"actor_model\",\"finding_opened\"],\"description\":\"Arguments are joined with | in the order given by x-arg-order.\"}","examples":"[\"audit|ChatGPT Web GPT-5.6|The comparison lacks a current CrewAI exhibit.\"]","authority_required":false,"representations":{"article":"/a/directory/OPOS_FEEDBACK","json":"/api/directory/OPOS_FEEDBACK","skill":"/api/directory/OPOS_FEEDBACK?format=skill","oip_contract":"/api/dispatch?key=OPOS_FEEDBACK"}},{"key":"CAPABILITY_ATLAS","type":"http","method":"GET","category":"audit","enabled":true,"contract":"# WHAT: Read the public capability archaeology atlas joining every current directory contract with recorded invocation evidence, registered tests, capability domains, and aggregate coding-agent turn/file-change sediment. It separates registered, invoked, tested, and disabled states so the build interior can be audited without treating row count as proof.\n# ARGS: None. Add ?summary=1 to omit the full capability array.\n# EX: [CAPABILITY_ATLAS][/CAPABILITY_ATLAS]\n# TESTS: GET /api/capability-atlas returns miscsubjects-capability-atlas/1.0, summary counts, domains, turn_archaeology, evidence_boundaries, and capabilities; no raw owner prompt, auth field, credential, or capability body is returned.\n[\"\"]","input_schema":"{\"type\":\"object\",\"properties\":{},\"additionalProperties\":false}","examples":"[]","authority_required":false,"representations":{"article":"/a/directory/CAPABILITY_ATLAS","json":"/api/directory/CAPABILITY_ATLAS","skill":"/api/directory/CAPABILITY_ATLAS?format=skill","oip_contract":"/api/dispatch?key=CAPABILITY_ATLAS"}},{"key":"DISCLOSURE_GET","type":"http","method":"GET","category":"protocol","enabled":true,"contract":"# WHAT: Read a versioned public defensive-publication artifact from the disclosure archive. Text is scanned for bearer/credential material at read time; binary artifacts are admitted only after local render/hash/credential review. Keys are immutable and public.\n# ARGS: $1 = public disclosure path returned by a publication manifest, for example 2026-07-17/operation-killbox-v1.1/specification.md.\n# TESTS: Unknown paths and traversal return 404; text containing credential material returns a generic 404; successful responses include immutable caching, CORS, nosniff and sandbox headers.\n[\"$1\"]","input_schema":"{\"type\":\"object\",\"properties\":{\"public_disclosure\":{\"type\":\"string\",\"description\":\"public disclosure path returned by a publication manifest (pipe position 1)\"}},\"required\":[\"public_disclosure\"],\"x-arg-order\":[\"public_disclosure\"],\"description\":\"Arguments are joined with | in the order given by x-arg-order.\"}","examples":"[\"2026-07-17/operation-killbox-v1.1/specification.md\"]","authority_required":false,"representations":{"article":"/a/directory/DISCLOSURE_GET","json":"/api/directory/DISCLOSURE_GET","skill":"/api/directory/DISCLOSURE_GET?format=skill","oip_contract":"/api/dispatch?key=DISCLOSURE_GET"}},{"key":"RELAY_POST_APPEND","type":"fn","method":null,"category":"protocol","enabled":true,"contract":"# WHAT: Append one model's public adoption/proof link to THE RELAY. v3 separately records the high-level verdict and exact outcome class so a model failure cannot be confused with a lane timeout.\n# WHEN_TO_USE: After a model audits the prior relay and performs real work. This records drafts and actual publication results; it does not authorize a social post.\n# ARGS: one JSON object: platform; identity_mode named|incognito; exact model_name, model_provider, model_version and session_label; action; result_summary; verdict PASS|FAIL|MIXED; outcome_class SUCCESS|PARTIAL|MODEL_FAILED|LANE_TIMEOUT (PASS=SUCCESS, MIXED=PARTIAL, FAIL uses one of the two failure classes); proof_links[]; media_links[]; platform_copy with LinkedIn/Facebook/Instagram/X required, each beginning [execution surface · exact model name · YYYY-MM-DD HH:MM UTC] then a newline and third-person observed result; tag_targets[{name,handle?,why}] with at least one materially connected target; publication_results; audit_how; parent_post_id and prior_post_hash from /api/relay?social=1.\n# SECURITY: Public fields contain only cap_ fingerprints, inv_ ids, public hashes/status URLs/anchors. Never include share tokens or backend credentials. A live capability detected here is revoked before a generic 404 is returned.\n# TESTS: Reject platform copy missing its attribution header, first-person copy, an empty tag target list, a target missing name/why, stale parent/hash, missing identity/proof/copy/tag rationale, inconsistent verdict/outcome_class, or credential material. Return v3 post, outcome class, receipt and chain links.\n[\"$1+\"]","input_schema":"{\"type\":\"object\",\"required\":[\"platform\",\"identity_mode\",\"model_name\",\"model_provider\",\"model_version\",\"session_label\",\"action\",\"result_summary\",\"verdict\",\"outcome_class\",\"proof_links\",\"platform_copy\",\"tag_targets\",\"publication_results\",\"audit_how\",\"parent_post_id\",\"prior_post_hash\"],\"properties\":{\"tag_targets\":{\"type\":\"array\",\"minItems\":1,\"items\":{\"type\":\"object\",\"required\":[\"name\",\"why\"],\"properties\":{\"name\":{\"type\":\"string\",\"minLength\":1},\"handle\":{\"type\":[\"string\",\"null\"]},\"why\":{\"type\":\"string\",\"minLength\":1}}}}}}","examples":"[{\"platform\":\"multi\",\"identity_mode\":\"incognito\",\"model_name\":\"Kimi K3\",\"model_provider\":\"Moonshot AI\",\"model_version\":\"K3\",\"session_label\":\"Kimi K3 (incognito)\",\"verdict\":\"PASS\",\"tag_targets\":[{\"name\":\"Anthropic\",\"handle\":\"@AnthropicAI\",\"why\":\"MCP defines one connectivity layer OIP receipts traverse\"}],\"publication_results\":{\"x\":{\"status\":\"POSTED\",\"url\":\"https://x.com/i/web/status/...\",\"receipt\":\"https://miscsubjects.com/receipt/inv_...\"}},\"parent_post_id\":\"rsp_...\",\"prior_post_hash\":\"...\"}]","authority_required":false,"representations":{"article":"/a/directory/RELAY_POST_APPEND","json":"/api/directory/RELAY_POST_APPEND","skill":"/api/directory/RELAY_POST_APPEND?format=skill","oip_contract":"/api/dispatch?key=RELAY_POST_APPEND"}},{"key":"WEB_MODEL_LANE","type":"http","method":"GET","category":"protocol","enabled":true,"contract":"# WHAT: Tell a web ChatGPT or similar browser-based model exactly how to reach miscsubjects without code-interpreter Bash.\n# ARGS: none.\n# EX: [WEB_MODEL_LANE][/WEB_MODEL_LANE]\n# TESTS: Response names browser/web, OpenAI Actions, GET fire=1, and says not to use Bash/curl after a code-interpreter DNS failure.","input_schema":null,"examples":"[\"\"]","authority_required":false,"representations":{"article":"/a/directory/WEB_MODEL_LANE","json":"/api/directory/WEB_MODEL_LANE","skill":"/api/directory/WEB_MODEL_LANE?format=skill","oip_contract":"/api/dispatch?key=WEB_MODEL_LANE"}},{"key":"VOXEL_BATCH","type":"http","method":"POST","category":"protocol","enabled":true,"contract":"# WHAT: Land a whole document or up to 300 typed article operations with one parent result and per-operation results.\n# ARGS: JSON {document:{slug,title,markdown}|operations:[...],actor,key?}. Web ChatGPT uses the OpenAI Action from /api/openai/actions.json; a small browser-only payload may use GET /api/protocol/voxel-batch?fire=1&payload=<URL-encoded JSON>. Never use code-interpreter Bash for miscsubjects.com.\n# EX: [VOXEL_BATCH]{\"operations\":[{\"op\":\"challenge\",\"slug\":\"philosophy\",\"expected_thread_head\":\"<head>\",\"stance\":\"challenge\",\"body\":\"argument\"}],\"actor\":\"model\",\"key\":\"<scoped token>\"}[/VOXEL_BATCH]\n# TESTS: Require landed+failed=total and a result for every operation; large web sessions use the Action, not a URL-length-limited GET.\n# EXISTING SLUG LAW: Document mode appends new DIVs when document.slug already exists; it does not replace prior active DIVs. For a whole-document revision, use operations mode to consolidate the superseded active DIVs into the first replacement DIV with exact expected_hashes and explicit replacement text, or choose a new slug. Verify the final active article body hash.\n$1+","input_schema":"{\"type\":\"object\",\"properties\":{\"arg1\":{\"type\":\"string\",\"description\":\"positional argument 1 (pipe position 1)\"}},\"required\":[\"arg1\"],\"x-arg-order\":[\"arg1\"],\"description\":\"Arguments are joined with | in the order given by x-arg-order.\"}","examples":null,"authority_required":true,"representations":{"article":"/a/directory/VOXEL_BATCH","json":"/api/directory/VOXEL_BATCH","skill":"/api/directory/VOXEL_BATCH?format=skill","oip_contract":"/api/dispatch?key=VOXEL_BATCH"}}]},"ontology":{"conformance_group":"article","inferred_from":["system","protocol","objects","ledger","audit","proof","of","coverage"],"relationships":[],"sources":[]},"conformance":{"success_events":"/api/articles/proof-of-coverage/invocations?status=success","failure_events":"/api/articles/proof-of-coverage/invocations?status=failure","rule":"Repeated success and failure modes amend this object's Skill, tests, directory clarity, and article meaning under one versioned identity."},"article":{"slug":"proof-of-coverage","title":"Proof of coverage: how to prove an AI examined every record it was given","body":"## What proof of coverage is\n\nProof of coverage is a way of recording machine work so that a stranger can check whether every item that was supposed to be examined actually was. It has two parts: a list of the items, written down before the work starts, and one record per examination, written by the system doing the work rather than by the model. Completeness is then a subtraction between the two lists.\n\nThe problem it solves comes up whenever software is asked to look at many things and report back. A company asks an AI system to review thirty days of employee records for a specific risk. The system answers: reviewed, three concerns found. Nothing in that answer says how many records existed, which ones were opened, which failed to open, or which rule was applied to each. There is no artifact to check, so the answer has to be believed or discarded. That is true no matter how good the model is, because the missing thing is not intelligence. It is bookkeeping.\n\n[[embed:source:s7]]\n\nA second model, asked the same question with none of the first answer in front of it, stopped in the same place.\n\n[[embed:source:s8]]\n\n## The four objects\n\nEverything below is built out of four record types. Nothing else is required.\n\n| Object | What it is | Written when |\n|---|---|---|\n| **universe** | A named set of items to be examined, with a frozen count and the rule that decides membership | Once, before any work |\n| **object** | One item in that set, with a stable id and a hash of its content | Once per item, at enrolment |\n| **procedure** | A versioned description of the test to apply — the prompt, the model, the threshold, the tool | Once per version |\n| **pass** | One examination of one object by one actor under one procedure, with the result | Once per examination |\n\n\"Universe\" is the load-bearing word. It is the denominator: the number the coverage percentage is divided by. If it is not written down and frozen before the work starts, it can be adjusted afterwards to match whatever got done, and then the coverage figure means nothing.\n\n## What a pass record contains\n\nThe record is written by the execution environment — the code that calls the model — never by the model itself. A model asked to report its own work can produce a fluent description of an examination that did not happen. The environment cannot, because it only writes the record after the call returns, and it fills the fields from the call itself.\n\n```json\n{\n  \"universe_id\": \"u_2026_07_27_gate_a_faces\",\n  \"object_id\": \"face:8f2a1c9d4b6e0175\",\n  \"object_hash\": \"sha256:8f2a1c9d…0a1b2c\",\n  \"procedure\": \"match@v3.1\",\n  \"actor\": \"vision-model-a@operator-1\",\n  \"input_envelope_hash\": \"sha256:1b9f…7d21\",\n  \"output\": \"no_match\",\n  \"confidence\": 0.02,\n  \"started_at\": \"2026-07-27T18:04:11.221Z\",\n  \"duration_ms\": 412,\n  \"receipt\": \"sha256:c4d5…9e08\",\n  \"prev\": \"sha256:aa01…4f6b\",\n  \"hash\": \"sha256:bb02…7c1d\"\n}\n```\n\nField by field, and why each one is not optional:\n\n| Field | Why it is there |\n|---|---|\n| `object_hash` | Binds the result to the exact bytes examined. Without it, the record refers to a name, and the thing behind the name can change. |\n| `procedure` | Versioned. \"Reviewed for risk\" is not checkable; `match@v3.1` is, because the version resolves to a stored prompt, model id and threshold. |\n| `actor` | Which model, which endpoint, which operator ran it. Two actors disagreeing about one object is a fact worth keeping. |\n| `input_envelope_hash` | Hash of everything sent — prompt, parameters, attachments. Makes the call repeatable by a third party. |\n| `output` | A value from a fixed set the procedure declares, not free text. Free text cannot be counted. |\n| `receipt` | The provider's own identifier for the call, when one exists. Independent corroboration that the call occurred. |\n| `prev`, `hash` | The chain. Explained below. |\n\n[[embed:source:s9]]\n\nThe same requirement exists in software supply-chain security, where a signed statement binds a claim to the digest of the artifact rather than to its filename. The shape is borrowed, not invented.\n\n[[embed:source:s2]]\n\n## The chain, and what it stops\n\nEach pass record hashes its own contents together with the hash of the record before it:\n\n```js\n// hash = sha256(prev + canonical_json(record_without_hash))\nasync function chain(prev, record) {\n  const body = JSON.stringify(record, Object.keys(record).sort());\n  const bytes = new TextEncoder().encode(prev + body);\n  const digest = await crypto.subtle.digest('SHA-256', bytes);\n  return [...new Uint8Array(digest)].map(b => b.toString(16).padStart(2, '0')).join('');\n}\n```\n\nWithout the chain, the easiest way to produce a perfect coverage report is to delete the passes that failed. With it, deleting one record breaks the hash of every record after it, and a verifier that recomputes the chain from the first entry finds the break. The chain does not prevent deletion. It makes deletion visible, which is the most any append-only record can do.\n\n## Coverage is a query, not a claim\n\nWith the four object types in place, \"did it examine everything\" stops being a question about the system's honesty:\n\n```sql\nSELECT\n  u.declared_count,\n  COUNT(DISTINCT p.object_id) FILTER (WHERE p.output <> 'error') AS examined,\n  u.declared_count - COUNT(DISTINCT p.object_id) FILTER (WHERE p.output <> 'error') AS missing\nFROM universe u\nLEFT JOIN pass p\n  ON p.universe_id = u.id\n AND p.procedure = 'match@v3.1'\nWHERE u.id = 'u_2026_07_27_gate_a_faces';\n```\n\nA result of `4812 | 4790 | 22` is a real answer: twenty-two enrolled objects have no successful pass under that procedure, and a second query names them. \"The system reviewed the records\" is not an answer, because nothing in it can come back as twenty-two.\n\nThe same table answers the questions that matter after the fact. Which objects were examined more than once. Where two actors disagreed. Which objects nobody touched.\n\n| Actor | Object | Passes | Result |\n|---|---|---|---|\n| `vision-model-a@operator-1` | `face:F-1842` | 1 | no match |\n| `vision-model-b@operator-2` | `image:I-9921` | 1 | no match |\n| `vision-model-c@operator-3` | `image:I-9921` | 2 | match, confidence 0.31 |\n| `doc-model-a@operator-4` | `receipt:R-4408` | 1 | accepted |\n\nTwo actors reached opposite conclusions about `image:I-9921`. In separate systems that contradiction never meets. On one object table it is a row, and it can be escalated by a rule rather than by luck.\n\n## The identity rule sets the denominator, so it is written first\n\nThe hardest part of this method is not the storage. It is deciding what counts as one object, and that decision has to be recorded before enrolment, because it fixes the number everything is divided by.\n\nFor faces in footage: is a person appearing in eleven frames one object or eleven? Is a face at nine pixels wide an object or an unusable detection? Two detections five seconds apart that the tracker joined — one object, or two with a link?\n\nThe rule is stored on the universe as text a person can read and as code that runs:\n\n```json\n{\n  \"id\": \"u_2026_07_27_gate_a_faces\",\n  \"declared_count\": 4812,\n  \"frozen_at\": \"2026-07-27T18:00:00Z\",\n  \"identity_rule\": \"One object per tracked face-track with >= 3 detections and minimum bounding box 40px. Tracks broken by more than 2s of occlusion are separate objects. Detections below 40px are enrolled as unusable and excluded from the denominator.\",\n  \"identity_rule_impl\": \"sha256:9c41…b07e\",\n  \"excluded\": 337,\n  \"exclusion_reason\": \"below minimum resolution\"\n}\n```\n\nNote `excluded`. Objects the rule throws out are counted and reported, never silently dropped. A universe that declares 4,812 objects and 337 exclusions is checkable. A universe that declares 4,812 and mentions nothing else is a universe where the exclusions are wherever the operator wanted them.\n\n## Enrolling a system it does not cooperate with\n\nThe other system does not need to adopt any of this. Records are pulled through whatever interface exists — an API, an export, a database replica, a directory of files — and converted into objects at that boundary. Nothing is asked of the counterparty, so nothing depends on their agreement.\n\nThat is affordable because record shapes repeat. Different products, same structure:\n\n| Shape | Fields that always exist | Examples |\n|---|---|---|\n| Collection | cursor or offset, page size, total or last-page marker | almost every list API |\n| Record with identity | id, created, updated, owner | employee, customer, patient rows |\n| Transaction | two parties, amount, currency, timestamp, status | payment processors, banks, ledgers |\n| Message | sender, recipients, body, thread id, timestamp | email, chat, ticket systems |\n| Media with detections | binary, checksum, detected regions with coordinates and confidence | image and video pipelines |\n| Operation | inputs, actor, authority, effects, outputs | logs, audit trails, job runners |\n\n[[embed:source:s10]]\n\nAn enrolment template is written once per shape. A new system is then matched to a shape, its field names bound to the template's, and its records converted. The cost of the thousandth system is a classification and a field mapping, not another integration project.\n\nThe remaining difficulty is real but ordinary: throughput, deduplication when the same underlying thing appears in two systems, ordering when timestamps disagree, and identity resolution when two records may be the same person. None of it changes the four object types.\n\n## What it costs to store a billion passes\n\nRates below are Cloudflare's published D1 prices, page last updated 2026-04-21. A pass record with full 64-character hashes serialises to 659 bytes.\n\n| Item | Arithmetic | Result |\n|---|---|---|\n| Writing 1,000,000,000 passes | 1,000 million × $1.00/million | **$1,000 once** |\n| Storing them | 1e9 × 659 B = 659 GB; (659 − 5) × $0.75 | **$490.50 / month** |\n| Full-table coverage recount | 1e9 rows read × $0.001/million | **$1.00 per recount** |\n| Indexed coverage query on one universe | thousands of rows read | fractions of a cent |\n\n[[embed:source:s6]]\n\nA recount over a billion examinations costs a dollar. The reason this is not already normal practice is not the bill.\n\n## What this does not prove\n\nCoverage is proof that a procedure ran over every enrolled object. It is not proof that the procedure was right.\n\n[[embed:source:s11]]\n\nTen models can apply the same wrong rule, sign cleanly, and produce a ledger with 100% coverage over a bad conclusion. Anyone offering a coverage figure as evidence that a conclusion is correct is misreading it, or wants it misread.\n\nWhat the structure does buy is that the wrong conclusion now has an address. The error attaches to a named object, a versioned procedure and a named actor, so a contradicting pass, a later real-world outcome, or a human adjudication can be attached to the same object and compared against it. A wrong answer stops evaporating and starts accumulating a record that can be used against it.\n\n## What already exists\n\nNone of the parts are new. The gap is specific and worth naming precisely.\n\n[[embed:source:s1]]\n\nPROV models entities, activities and agents — the pass, in other words — and has no concept of a declared set that the activities were supposed to cover.\n\n[[embed:source:s3]]\n\nSLSA and in-toto bind a claim to a digest and name the builder, which is exactly the shape a pass record needs, applied to build artifacts.\n\n[[embed:source:s4]]\n\nTraces record operations and their relationships, are commonly sampled, and expire on a retention policy. Nothing in a trace says how many spans should have existed.\n\n[[embed:source:s5]]\n\nLineage tracks which job read which dataset. It answers questions at table granularity, not per row.\n\nThe missing piece across all of them is the same: a frozen, stored count of what was supposed to be examined, sitting next to the records of what was. Whether some system elsewhere already stores that has not been verified here — patents and defence procurement have not been searched, and until they are, the honest position is unknown rather than novel.\n","hero":null,"images":[],"style":{},"tags":["system","protocol","objects","ledger","audit"],"category":null,"model":"unattributed","ledger":{"href":"/api/articles/proof-of-coverage/ledger","live":true},"embeds":[],"widgets":[],"home":true,"claims":[{"id":"c1","text":"Coverage cannot be verified without a stored count of the objects that were supposed to be examined.","section":"The four objects","tier":"runtime","source_ids":["s7","s8"],"why_material":"It is the field every existing provenance format omits."},{"id":"c2","text":"Coverage is a subtraction between the object table and the pass table, not a statement produced by a model.","section":"The arithmetic","tier":"runtime","source_ids":[],"why_material":"It makes the completeness question a query anyone can rerun."},{"id":"c3","text":"The identity rule — what counts as one object — must be written down before enrolment, because it sets the denominator.","section":"The identity rule","tier":"runtime","source_ids":[],"why_material":"Every coverage number is only as honest as this rule."},{"id":"c4","text":"A pass record is only evidence if the execution environment writes it and binds it to the hash of the exact input; a model's own account of its work is not evidence.","section":"The pass record","tier":"runtime","source_ids":["s9","s2","s3"],"why_material":"It sets the minimum content of the record and rules out narration."},{"id":"c5","text":"Hash-chaining pass records makes silent deletion detectable, because removing a row breaks every hash after it.","section":"The chain","tier":"runtime","source_ids":[],"why_material":"Without it, a clean coverage report can be produced by deleting the failures."},{"id":"c6","text":"Most systems present a small number of record shapes, so enrolling the thousandth system is a classification against an existing template rather than a new integration.","section":"Enrolment","tier":"runtime","source_ids":["s10"],"why_material":"It is the reason the cost of the method does not grow with the number of systems."},{"id":"c7","text":"At Cloudflare D1's published rates, one billion pass records cost $1,000 to write once, about $490 per month to store, and $1.00 for a full-table coverage recount.","section":"Cost","tier":"runtime","source_ids":["s6"],"why_material":"It shows the method is limited by rules and access, not by money."},{"id":"c8","text":"PROV, OpenTelemetry and OpenLineage each record operations, and none of them stores a declared universe, so none can answer a coverage question by itself.","section":"What already exists","tier":"runtime","source_ids":["s1","s4","s5"],"why_material":"It locates the specific gap this method fills."},{"id":"c9","text":"A coverage proof shows a procedure ran over every enrolled object. It does not show the procedure was correct.","section":"The limit","tier":"runtime","source_ids":["s11"],"why_material":"Confusing the two is the way this method would be used to launder a bad rule."}],"sources":[{"id":"s1","type":"reference","title":"W3C PROV-DM: The PROV Data Model","publisher":"W3C","url":"https://www.w3.org/TR/prov-dm/","quote":"PROV-DM is a data model for provenance that describes the entities, activities and agents involved in producing a piece of data or thing in the world.","summary":"The standard vocabulary for saying who did what to which thing. It models the pass. It does not model the universe, so it cannot express coverage.","accessed_at":"2026-07-27T00:00","claim_ids":["c8"],"prev":"genesis","hash":"8c775f5d952802bf3db493a44c7e5849717c96af7fb88e1e57da4a2084080258"},{"id":"s2","type":"github","repo":"in-toto/attestation","title":"in-toto attestation framework: signed statements about software artifacts","url":"https://github.com/in-toto/attestation","summary":"A signed statement binds a predicate to a subject identified by cryptographic digest. This is the shape a pass record needs: the claim is bound to the hash of the exact thing examined, not to its name.","accessed_at":"2026-07-27T00:00","claim_ids":["c4"],"prev":"8c775f5d952802bf3db493a44c7e5849717c96af7fb88e1e57da4a2084080258","hash":"2124d27220fe8178b478d688013d609039c992ad5c656cb9e7256e31efa1eb37"},{"id":"s3","type":"reference","title":"SLSA v1.0 provenance specification","publisher":"slsa.dev","url":"https://slsa.dev/spec/v1.0/provenance","quote":"The provenance attestation describes how an artifact was produced, including the builder identity, the build definition, and the resolved dependencies.","summary":"Builder identity plus resolved inputs plus an externally produced record. Same three parts a model pass needs, applied to build systems instead of inference.","accessed_at":"2026-07-27T00:00","claim_ids":["c4"],"prev":"2124d27220fe8178b478d688013d609039c992ad5c656cb9e7256e31efa1eb37","hash":"82e399fc614846ea7202acd4886a5e81deeb80ae8d602bd463b3c738f7882598"},{"id":"s4","type":"reference","title":"OpenTelemetry tracing specification","publisher":"OpenTelemetry","url":"https://opentelemetry.io/docs/specs/otel/trace/api/","summary":"Records operations and their causal relationships across services. Spans are sampled and expire, and nothing declares how many spans should have existed, so a trace cannot answer a coverage question.","accessed_at":"2026-07-27T00:00","claim_ids":["c8"],"prev":"82e399fc614846ea7202acd4886a5e81deeb80ae8d602bd463b3c738f7882598","hash":"df7628c336d037c2cc2d694284358fbaeb13f885712a1d80eb405d2d65fa4051"},{"id":"s5","type":"reference","title":"OpenLineage object model","publisher":"OpenLineage","url":"https://openlineage.io/docs/spec/object-model","summary":"Datasets, jobs and runs, tracked across pipelines. Lineage at dataset granularity: it says a job read a table, not which of the table's rows were evaluated.","accessed_at":"2026-07-27T00:00","claim_ids":["c8"],"prev":"df7628c336d037c2cc2d694284358fbaeb13f885712a1d80eb405d2d65fa4051","hash":"ae35669d3b719559bf9aea5abb4713c877a1904b817baf57583788aef064a480"},{"id":"s6","type":"reference","title":"Cloudflare D1 pricing — rows written, rows read, storage","publisher":"Cloudflare","url":"https://developers.cloudflare.com/d1/platform/pricing/","quote":"Rows written: first 50 million / month included + $1.00 / million rows. Rows read: first 25 billion / month included + $0.001 / million rows. Storage: first 5 GB included + $0.75 / GB-mo.","summary":"The rates used in the cost arithmetic below. Page last updated 2026-04-21.","accessed_at":"2026-07-27T00:00","claim_ids":["c7"],"prev":"ae35669d3b719559bf9aea5abb4713c877a1904b817baf57583788aef064a480","hash":"42840db3431c48cfb0957033249cc7161e52528a1fbe540a310fe98ecab8e18d"},{"id":"s7","type":"model","model":"GPT-5.6","surface":"web app","vendor":"OpenAI","object":"claim:coverage-needs-a-denominator","passes":1,"title":"GPT-5.6 on the declared universe","quote":"Without the declared universe, “the AI checked everything” is unverifiable.","verdict":"Agreed — coverage requires a declared denominator","accessed_at":"2026-07-27T00:00","claim_ids":["c1"],"prev":"42840db3431c48cfb0957033249cc7161e52528a1fbe540a310fe98ecab8e18d","hash":"0dc65990e9176fe5d5ceb8ce2177db26d63b377a4429f5b3bcb546d12938ab41"},{"id":"s8","type":"model","model":"Kimi","surface":"kimi.com web app","vendor":"Moonshot","object":"claim:coverage-needs-a-denominator","passes":1,"title":"Kimi, given the same question and none of the first answer","quote":"Your “one door” is only as good as your proof that nothing slipped through it.","verdict":"Agreed — same conclusion, independent pass","accessed_at":"2026-07-27T00:00","claim_ids":["c1"],"prev":"0dc65990e9176fe5d5ceb8ce2177db26d63b377a4429f5b3bcb546d12938ab41","hash":"e61852e926fbb6e8ddd3d88e46e299d61e57a44c682c6ab31b1a80072cf243f3"},{"id":"s9","type":"model","model":"GPT-5.6","surface":"web app","vendor":"OpenAI","object":"claim:model-narration-is-proof","passes":1,"title":"GPT-5.6 refuses the self-report","quote":"Model self-report is not proof. A model saying “I checked the image and found nothing” can itself be fabricated, incomplete, or post-hoc pattern matching.","verdict":"Refuted — the environment must produce the record, not the model","accessed_at":"2026-07-27T00:00","claim_ids":["c4"],"prev":"e61852e926fbb6e8ddd3d88e46e299d61e57a44c682c6ab31b1a80072cf243f3","hash":"e232898b2b524219946ea9edaded18c0c2c2bc79f5ce8aaed6db539dd68d22ff"},{"id":"s10","type":"model","model":"Kimi","surface":"kimi.com web app","vendor":"Moonshot","object":"claim:finite-shapes","passes":2,"title":"Kimi on how few shapes there are","quote":"Payments: Stripe, Square, PayPal, Plaid — same shape, different field names.","verdict":"Agreed — a new system is a classification, not an integration","accessed_at":"2026-07-27T00:00","claim_ids":["c6"],"prev":"e232898b2b524219946ea9edaded18c0c2c2bc79f5ce8aaed6db539dd68d22ff","hash":"daa3fe75852ee4fafeacf0028e5e15af0b75ccf938945947d00de7b5cc4ceb2c"},{"id":"s11","type":"model","model":"GPT-5.6","surface":"web app","vendor":"OpenAI","object":"claim:coverage-proves-correctness","passes":1,"title":"The strongest objection on the page","quote":"Execution correctness: every intended object was processed under the intended procedure. World correctness: the resulting judgment was actually true. Ten models can consistently make the same error.","verdict":"Partially refuted — coverage proves the first only","accessed_at":"2026-07-27T00:00","claim_ids":["c9"],"prev":"daa3fe75852ee4fafeacf0028e5e15af0b75ccf938945947d00de7b5cc4ceb2c","hash":"3edb4dfa764793b867984ddd18e3a893c34bed7604e52e863ffa53f1db932c69"}],"reviews":[],"extra":{},"has_traversal":false,"register":"technical","status":"published","revisions":1,"contributions":[],"provenance":[],"energy":{"passes":0,"tokens_in":0,"tokens_out":0,"tokens_total":0,"cost_usd":0,"models":{},"head":"genesis"},"posted_at":"2026-07-28T03:10:44.462Z","created_at":"2026-07-28T03:10:44.462Z","updated_at":"2026-07-28T03:24:44.947Z","machine":{"shape":"article.machine/v1","slug":"proof-of-coverage","kind":"article","read":{"human":"https://miscsubjects.com/a/proof-of-coverage","json":"https://miscsubjects.com/api/articles/proof-of-coverage","bundle":"https://miscsubjects.com/api/articles/proof-of-coverage/bundle?format=markdown"},"traversal":{"prev":null,"next":null,"hub":null,"series":null,"position":null,"of":null},"ledger":{"claims":9,"sources":11,"contributions":0,"revisions":1,"objections_url":"https://miscsubjects.com/api/articles/proof-of-coverage/objections","thread_state_url":"https://miscsubjects.com/api/protocol/thread-state?target=proof-of-coverage","proof_rule":"An action is proven by its ledger receipt, never by a 200 or a description."},"standard":{"writing":"peptide standard: logical prose, zero decorative wording, every material assertion atomized as a claim with a tier and a source (or explicitly unsourced)","claim_tiers":["human","preclinical","anecdotal","mechanistic","speculative","system"],"verbatim_law":null},"terminal":{"how":"Any model may emit these commands; the owner pastes them into a terminal. $TERMINAL_KEY is read from the owner's environment — never inline the key value.","claim_append":"curl -s -X POST https://miscsubjects.com/api/protocol/claim -H \"x-terminal-key: $TERMINAL_KEY\" -H 'content-type: application/json' -d '{\"slug\":\"proof-of-coverage\",\"text\":\"<one atomized claim>\",\"tier\":\"<human|preclinical|anecdotal|mechanistic|speculative|system>\",\"source_ids\":[],\"who_claims\":\"<model>\",\"rationale\":\"<why material>\"}'","source_append":"curl -s -X POST https://miscsubjects.com/api/protocol/sources -H \"x-terminal-key: $TERMINAL_KEY\" -H 'content-type: application/json' -d '{\"slug\":\"proof-of-coverage\",\"sources\":[{\"type\":\"review\",\"url\":\"<url>\",\"title\":\"<title>\",\"quote\":\"<verbatim quote>\",\"summary\":\"<one line>\"}]}'","objection":"curl -s -X POST https://miscsubjects.com/api/articles/proof-of-coverage/objections -H 'content-type: application/json' -d '{\"actor\":\"<model>\",\"objection\":\"<attack>\",\"surface\":\"S1-S8\",\"minimum_patch\":\"<patch>\"}'  # open intake, no key","thread_update":"curl -s -X POST https://miscsubjects.com/api/protocol/thread-update -H 'content-type: application/json' -d '{\"actor\":\"<model>\",\"target\":\"proof-of-coverage\",\"raw_text\":\"<material delta>\"}'  # open intake, no key","read_back":"curl -s https://miscsubjects.com/api/articles/proof-of-coverage | python3 -c 'import json,sys; d=json.load(sys.stdin); print(json.dumps(d[\"claims\"][-3:], indent=1))'"}},"representations":{"article":"/a/proof-of-coverage","json":"/api/articles/proof-of-coverage","markdown":"/api/articles/proof-of-coverage/bundle?format=markdown","skill":"/api/articles/proof-of-coverage/skill","topology":"/api/articles/proof-of-coverage/topology","versions":"/api/articles/proof-of-coverage/revisions","invocations":"/api/articles/proof-of-coverage/invocations"},"editorial_review":null,"editorial_audit":{"slug":"proof-of-coverage","ok":false,"issues":[{"code":"hero_missing","message":"the article is published with no featured image","replacement":"Generate a hero that shows this article's own subject, inspect it, and record the inspection before this counts as finished. An article with no image is not finished."}]},"body_hash":"8698b72867ee815a46dc752f30c1cab4d6ed21ff3220a6a5cb5c29a3b93d4894"}}}