{
 "specimen": "AS-2026-11-04",
 "what_this_is": "A specimen of the deliverable sold as an Assay, published in full and redacted only where our published policy forbids naming a host. Every figure below is re-derived from the signed chain by tools/sync_assay_sample.py on every deploy.",
 "issued_at": "2026-11-04T09:00:00Z",
 "issued_at_epoch": 1793782800.0,
 "subject": {
  "capability_class": "PH-C005 / PH-C006",
  "class_in_words": "whether a site's robots.txt takes any stance on AI agents — naming one, or blocking one. PH-C005 is silence on AI agents; PH-C006 is blocking an AI-era agent.",
  "probe": "robots_stance",
  "question": "What share of this population took a stance on AI agents in its robots.txt, as at the declared date?"
 },
 "population": {
  "declared_as": "hosts in this index's live rotation — agent-native hosts and the brochure corpus — that were observed inside the freshness window",
  "in_cross_section": 639,
  "observed_in_window": 678,
  "only_unknown_in_window": 39,
  "denominator_rule": "A host counts only if it produced a usable observation. 39 hosts were reached in the window and returned nothing we could classify; they are recorded `unknown` and are counted neither as present nor as absent.",
  "not_a_census": "A rate is a rate for the declared target set. It is a sample."
 },
 "window": {
  "fresh_within_days": 7.0,
  "rule": "a host is in the cross-section only if it was observed within 7 days of 2026-11-04T09:00:00Z",
  "oldest_observation": "2026-11-01T21:35:06Z",
  "newest_observation": "2026-11-04T07:51:25Z",
  "median_observation": "2026-11-04T03:43:17Z"
 },
 "result": {
  "stance": 152,
  "n": 639,
  "rate": 0.2378716744913928,
  "rate_pct": 23.79,
  "ci95": [
   0.2064862204263928,
   0.27239006884922345
  ],
  "ci95_pct": [
   20.65,
   27.24
  ],
  "interval_method": "Wilson score interval, z=1.96",
  "split": {
   "naming": 96,
   "blocking": 56
  },
  "min_n": 30,
  "undersampled": false
 },
 "evidence": {
  "signed_records_in_window": 18932,
  "by_status": {
   "absent": 15072,
   "unknown": 1173,
   "present": 2687
  },
  "chain_seq_first": 882249,
  "chain_seq_last": 1130950
 },
 "provenance": {
  "chain_head_at_issue": "50ebf1b545d6f714c8c795bf5bf75c142533dfb30e8543a3f4188f0b326c8583",
  "chain_records_at_issue": 1134150,
  "writer": "a single appending host; every record is ed25519-signed and carries its predecessor's hash",
  "independent_anchor": {
   "note": "The chain head is published daily and saved at the Internet Archive, so a reader can confirm the chain existed in this state on that date without taking our word for it. This is the anchor nearest this specimen; it is not this specimen's own head.",
   "snapshot": "https://web.archive.org/web/20261103124258/https://atlas.geosensor.tech/free/sample",
   "head": "3958eb215031463242c8b9d84ee6a097aaf51e8963b99229aedff63ecf36826a",
   "records": 1092600,
   "anchored_at": "2026-11-03T12:43:09Z"
  }
 },
 "what_was_excluded_and_why": {
  "stale_hosts": {
   "n": 1340,
   "rate_if_included_alone": 0.2671641791044776,
   "why": "last observed outside the window. Their verdicts are real and remain in the chain; they are simply not evidence about today, so they are not averaged into a rate presented as current.",
   "not_a_trend": "This rate and the cross-section rate are over DISJOINT host sets, not the same hosts at two dates, so their difference is a sampling difference and must not be read as change over time. The series above is the only object in this document that measures change."
  },
  "pooled_figure_we_refuse_to_quote": {
   "n": 1979,
   "rate": 0.2577059120768065,
   "why_not": "every host ever probed live, whenever probed, in one rate: not restricted to the freshness window and therefore not a statement about today. Shown for comparison, NOT for quoting."
  }
 },
 "how_to_recompute": {
  "estimator": "phantom.curve.live_cross_section(data, now=<issued_at_epoch>)",
  "command": "PYTHONPATH=. python3 - <<'EOF'\nimport pathlib\nfrom phantom.curve import live_cross_section\nprint(live_cross_section(pathlib.Path('data'), now=1793782800.0))\nEOF",
  "note": "Given the chain, this returns the figures above exactly. A later observation of the same host does not change them: the estimator is bounded at the issue instant, and tests/test_assay_reproducible.py grows a chain past that instant to prove it."
 },
 "limits": [
  "A rate is a rate for the declared target set. It is a sample, not a census.",
  "Absence of a machine-readable signal is an upper bound on absence of the capability, not proof of it. Where the instrument cannot tell the two apart the record says `unknown`.",
  "Measurement is from a single vantage. A series that mixed vantages would mix WHERE with WHEN.",
  "History before 2026-09-20 is reconstructed from a public web archive, not observed contemporaneously."
 ],
 "never_sold": [
  "Findings about an individual named third party's own site or conduct, at any price. Everything we observe is published and delivered in aggregate. A measurement that a third party has published itself is a public claim rather than an observation of ours, and may be cited and examined by name, as any review cites its sources.",
  "A figure to order. The number is whatever the signed record says for the date asked about. If it does not support the claim a buyer wants, that IS the finding, and we say so.",
  "A measurement that cannot be recomputed. If the method cannot be published with the result, the result is not for sale."
 ],
 "terms": "Scope is agreed in writing first. Invoiced in euros by bank transfer, payable within 14 days. No retainer, no subscription, no lock-in.",
 "price": {
  "eur": 2400,
  "line": "A signed assay is €2,400: one capability class across one declared population at one declared date, delivered with the method so the result can be recomputed against us.",
  "line_unpriced": "A signed assay is one capability class across one declared population at one declared date, delivered with the method so the result can be recomputed against us.",
  "where": "https://atlas.geosensor.tech/offer.html"
 }
}
