The Trust Gap, Vol. 7: 48% of our published entities would not pass our own promotion gate
We turned our publication standard backwards against the pages already live. 382 of 792 fail it, 230 of them because quotes we cite are no longer on the page we cite them from. Plus: the six rarest fields in a 63-field catalogue are the same six risk-transfer fields, and both of this week's apparent insurance improvements are the same artefact.
Every number in this report comes from a query run against the index on 2026-09-14. The queries are reproduced in the appendix. Where a number could not be computed, this report says so rather than estimating it.
Last week's report ended with a handoff: the detector built to catch citations that no longer verify was scoped so narrowly it could not see 90% of the index. It has since been rebuilt. This report is mostly about what it found, and about a question it forced us to ask about our own published pages.
## 1. The census
The index holds 3,105 entities. 792 are published — 762 agents and 30 vendors — 2,311 remain candidates, and 2 are archived. The field catalogue has 63 fields: 14 apply to agents only, 4 to vendors only, and 45 to both. An agent therefore has 59 applicable fields and a vendor 49.
That gives **46,428 applicable data points** across the published index:
| | Count | Share of all slots | |---|---:|---:| | Present, with a cited source | 12,922 | 27.83% | | `no_public_information` | 31,045 | **66.87%** | | Never assessed | 2,461 | 5.30% | | **Total applicable** | **46,428** | 100% |
**31,045 of 46,428 data points (66.87%) are recorded as having no public information.** Counting never-assessed slots as unknown too, 33,506 of 46,428 (72.17%) carry no published evidence. Of the 43,967 slots we have actually assessed, 70.61% came back empty.
We report this the way the MIT AI Agent Index reports its own gaps, because the absence is the finding. A field that no vendor documents is a fact about the market, not a hole in our sheet.
Assurance fields remain emptier than the rest: 2,971 of 15,960 assurance slots are present (18.62%), against 9,951 of 30,468 (32.66%) elsewhere.
## 2. Half the index would not be published today
We added a promotion gate. It checks that an entity clears the publication floor, that its name actually appears in its own captures, that the source does not disclaim affiliation with it, and — new since 2026-09-12 — that none of its cited quotes have gone missing from our latest capture of the same page.
The gate is applied to candidates on their way in. Nobody had ever run it backwards against the entities already published.
Run backwards, **382 of 792 published entities (48.23%) do not pass it.**
| Blocker | Published entities | |---|---:| | One or more cited quotes absent from our newest capture | 230 | | Fewer than 12 present fields | 173 | | Name too generic to verify identity | 8 | | Entity name absent from its own captures | 6 | | Capture disclaims affiliation with a third party | 6 | | Below the publication floor (fewer than 8 present fields) | 6 |
Entities can carry more than one blocker, so the column does not sum to 382.
This is not a defect in the gate. It is what happens when a standard is introduced part-way through: the floor and the freshness check both fire only on the transition *into* published, so an entity that was promoted before the rule existed, or that decays after promotion, is never re-tested. Meanwhile **71 of the 175 candidates that clear the publication floor are being held out of publication by stale citations** — held to a standard that 230 already-published entities fail.
Only 22 of the 1,304 candidates the readiness view covers are fully promotion-ready today.
One more number from the same view, advisory rather than blocking, and the one that should worry us most: **707 of 792 published entities (89.27%) rest on a single source URL.** The mean published entity cites 1.13 distinct sources and 1.30 distinct captured documents, and carries 16.32 present fields. MIT's 30 entities were annotated by seven people against multiple sources each. Ours are mostly one page, read once.
## 3. What the rebuilt detector found
The old detector compared an entity's cited evidence only against *other evidence rows the same entity already cited for the same URL*. It never read the crawl archive, so an entity with one evidence row per URL — most of them — dropped out of the view entirely. It held 31 rows and had reported zero failures across 59 clean runs.
The replacement (`citation_freshness`) re-runs the database's own verbatim test against the newest capture of each cited page. Across all 12,928 present, quoted values on published entities:
| | Values | Share | |---|---:|---:| | Cited capture is still the newest we hold — never re-fetched | 5,568 | 43.07% | | Re-fetched, quote still present | 5,728 | 44.31% | | **Re-fetched, quote gone** | **1,563** | **12.09%** | | Re-fetched, recapture too thin to judge | 69 | 0.53% |
Of the 7,291 values where a newer capture exists and is readable, **1,563 (21.44%) no longer verify.** 1,407 of those sit on a recapture at least half the length of the cited one, so truncation does not explain them.
Last week's figure was 18.13%, computed by a different method on a smaller population. Applying last week's method to today's data — counting the unreadable recaptures as failures, denominator 7,360 — gives **22.17%**, against 18.13% a week ago. The judgeable denominator grew 9.4% over the week, so this is not a sampling artefact of a wider net. The rate went up.
**239 published entities (30.18%) carry at least one citation that no longer verifies** — median 4 such values each, mean 6.54, maximum 25.
By field category, share of re-fetched values whose quote is gone:
| Category | Re-fetched | Gone | Share | |---|---:|---:|---:| | agency | 978 | 263 | 26.89% | | impact | 1,079 | 249 | 23.08% | | practicality | 1,571 | 335 | 21.32% | | assurance | 1,685 | 343 | 20.36% | | ecosystem | 877 | 176 | 20.07% | | models | 424 | 80 | 18.87% | | safety | 677 | 117 | 17.28% |
Spread across every category, 17%–27%. Systemic, not one bad source family.
**The queue has not been worked.** `superseded_quote_flags` now holds 2,383 rows — 1,563 on published entities, 820 on candidates. First written 2026-09-12. **Zero have been adjudicated. Zero have been reviewed.** The instrument was fixed; the backlog it exposed has not been touched. Detection is not remediation, and this week we only did the first one.
## 4. Staleness is mostly a property of the page, not of the value
1,563 failing values sit on just **244 distinct source URLs.** The ten worst URLs account for 224 of them (14.33%); the worst fifty account for 852 (54.51%).
Taking the 451 URLs carrying at least five judged values:
| Share of that page's cited quotes now missing | URLs | Values judged | Values gone | |---|---:|---:|---:| | 0% — page unchanged where we quoted it | 217 | 3,298 | 0 | | 1–24% | 109 | 1,858 | 206 | | 25–74% | 75 | 1,242 | 562 | | 75–99% | 22 | 403 | 353 | | 100% — every cited quote gone | 28 | 428 | 428 |
**Just under half of re-fetched pages (217 of 451) produce no failures at all**, and 50 pages at 75% or worse carry 781 of the 1,549 failures in this set (50.42%). A marketing site gets rewritten and every value we drew from it fails at once.
The middle is real, though, and it matters for how the backlog gets worked: 184 URLs fail partially, which means a page cannot simply be marked good or bad. But the shape of the work is much better than 1,563 separate investigations. It is **244 pages to re-read**, and fifty of them clear half the queue.
## 5. The evidence base is ageing at exactly the speed of the clock
**94.18% of published present values cite evidence more than 30 days old**, up from 92.05% last week. The median cited capture is **43.7 days old**, against 36.7 days when we measured it seven days ago.
That is an increase of 7.0 days over an interval of 7.0 days. The median published citation was not re-pointed at a fresher capture even once. The crawler is working — the Spark last wrote to the archive at 20:05 UTC today, and the median *newest available* capture of a cited page is only 19.2 days old. Fresher captures exist for most of these pages. Nothing moves the published field onto them.
We checked whether failures are simply a function of age. They are not, or at least not measurably: the failure rate runs 15.38% for captures 9–12 days old and 22.08% at 42–46 days, but non-monotonically, peaking at 26.29% in the 28–35 day band. 6,795 of the 7,291 judged values sit in a single 35–46 day window, so there is very little spread to detect a gradient in. **We are not claiming a relationship between age and failure. The data does not support one either way.**
## 6. Risk transfer: the six rarest fields in the index are the same six
45 fields apply to every entity, agent and vendor alike, so all 45 share an identical denominator of 792 published entities — 4,752 slots each. No selection effect is possible.
Ranked by how often each is present, the six rarest of the 45 are exactly the six risk-transfer fields, in an unbroken block:
| Rank | Field | Present | Share | |---:|---|---:|---:| | 1 | `coverage_limits` | 1 | 0.13% | | 2 | `own_liability_cover` | 1 | 0.13% | | 3 | `insurance_carriers` | 2 | 0.25% | | 4 | `liability_cap` | 2 | 0.25% | | 5 | `indemnification` | 3 | 0.38% | | 6 | `insurance_available` | 5 | 0.63% | | 7 | `model_card` | 9 | 1.14% |
The seventh-rarest field is nearly double the sixth.
Last week this comparison was made against six chosen control fields and returned a ratio of 211.7 : 1. That ratio was real but depended on which controls were picked. The stricter test is to compare risk transfer against **the six next-rarest fields in the catalogue** — the most hostile control available, since those are the six fields most likely to rival it for emptiness. `model_card`, `documented_incidents`, `market_recognition`, `asset_custody`, `audit_trail_immutable` and `red_teaming` carry 132 present values against risk transfer's 14, on identical 4,752-slot denominators: **9.43 : 1, against the hardest control we can construct.**
**787 of 792 published entities (99.37%) have no public evidence of insurance availability.**
All fourteen present risk-transfer values were read individually again.
- The five `insurance_available` rows are **four** distinct products. `elevenagents` (entity 109) and `elevenlabs-agents` (2879) are one product filed twice, sharing `evidence_id` 8176 and the same quote. **Fourth consecutive volume reporting this.** - Of the four: two are insurance businesses describing their own products (Armilla, Coalition); one is conditional eligibility expressly not cover in force ("eligible for AI insurance through AIUC, **once certified**"); one is a marketplace incident pool funded out of the transaction fee. - **No published agent discloses cover in force from a named carrier.** Seventh volume, unchanged. - The two `liability_cap` values are both liability *limitations*, not cover: NOFireAI still caps total aggregate liability at $100.00, and 9bot disclaims indirect damages, lost profits and data loss. - `indemnification` still runs backwards on one entity: on a Chrome-store listing, the **user** indemnifies the vendor. Of the three, only Google's IP indemnity for Gemini Code Assist is a vendor-to-customer promise.
## 7. Two things changed this week, and neither is the market moving
### `coverage_limits` is no longer zero, for the wrong reason
Six consecutive volumes reported `coverage_limits` as the only field of 63 never once satisfied — 100.00% absence. It is 1 of 792 now.
The row belongs to Coalition, a cyber insurance company. It has been continuously published since 2026-07-30 and has no status change on record, so this is a value change rather than a population change; the field row's only modification is dated 2026-09-08, the day after Vol. 6 measured it at zero. The value is a sub-limit on Coalition's own cyber policy — up to $100K of additional Funds Transfer Fraud coverage, conditional on the policyholder also buying Security Awareness Training.
It is a real, correctly cited coverage limit. It is not cover for an AI agent. **Zero AI agents in the index disclose a coverage limit, and that has never changed.** The streak broke because we published an insurer, not because an agent got insured.
### Armilla names Lloyd's
Genuinely new, and the first of its kind in the index. Armilla AI was demoted by the publication floor on 2026-08-26 and re-promoted on 2026-09-12. A capture retrieved 2026-09-11 supports a new `insurance_carriers` value: Armilla Insurance Services is a Coverholder at Lloyd's, and its affirmative AI liability product is underwritten by certain underwriters at Lloyd's.
This is the first documented link in the index between the AI assurance layer and a named insurance market. It partially closes a handoff standing since Vol. 5, which noted we had no documented coverage of Lloyd's, Chaucer or Mosaic in a market we claim to own. We now have one of the three, by way of a coverholder.
`insurance_carriers` stands at 2 — Armilla to Lloyd's, Coalition to Allianz. Both are insurance businesses naming their own capacity providers. **No agent names a carrier.**
## 8. Scoring
All 792 published entities carry at least one scored dimension. **696 (87.88%) are machine-scored only**; 96 (12.12%) carry a fact-checker-adjudicated `v1` score. 98 entities (12.37%) have all five dimensions; 325 have exactly one.
The automatic scorer remains effectively two-valued. Across its 1,283 rows on published entities it has issued **zero 0s and zero 3s — 100.00% are 1 or 2.** Sixth volume without a 3, and this week without a 0 either. A scale in use over two of its four points is measuring less than it appears to.
The adjudicated panel — 96 entities scored by a fact-checker on all five dimensions — is balanced by construction and gives the same ordering for the fourth volume running:
| Dimension | Trust gap (score 0–1) | Share | Mean score | |---|---:|---:|---:| | `insurance_indemnity` | 95 / 96 | **98.96%** | 0.052 | | `outcome_settlement` | 93 / 96 | 96.88% | 0.083 | | `audit_trail` | 83 / 96 | 86.46% | 0.500 | | `compliance` | 79 / 96 | 82.29% | 0.573 | | `runtime_governance` | 68 / 96 | **70.83%** | 0.958 |
`insurance_indemnity` was 100.00% in every previous volume. The one entity that now escapes it is Armilla, at 2 — an insurance company scoring on its own insurance product. The reading to take is not that agents are starting to get indemnified.
Exactly one score of 3 exists anywhere in the adjudicated set: ProofChain, on `audit_trail`, for a tamper-evident hash-chained log. One 3 across 480 adjudicated rows.
## 9. The absence rate moved, barely, and in our favour
Vol. 6 reported 66.99834% on 782 entities. It is 66.86655% on 792. A fall of **0.132 percentage points**. Vol. 5's decomposition attributed its entire 6.5-point fall to composition and Vol. 6's like-for-like term was +0.16pp, so this is the first week in the decomposed series where the like-for-like term itself moved in our favour.
To separate "we publish a different set of entities" from "the evidence changed", we reconstructed the Vol. 6 published cohort by replaying every status change in `entity_overwrite_log` back to that report's run time. The reconstruction returns **exactly 782 entities, 753 agents, 29 vendors, 45,848 applicable slots and 2,426 never-assessed slots**, all five matching Vol. 6's published figures, three of them by a method Vol. 6 did not use. 782 − 5 demotions + 15 promotions = 792 reconciles to the current count.
Replaying field values is less clean than replaying statuses. 593 field rows existed at Vol. 6's run time and have been modified since, so their state then cannot be read off the table. Rather than pick a value, we bound them. Vol. 6's own published totals pin 426 of the 593 as absences, which narrows the within-cohort term to a range:
| Term | Movement | |---|---:| | Like-for-like (777 entities published both then and now) | **−0.053 to −0.083pp** | | Composition (5 demoted out, 15 promoted in) | −0.079 to −0.048pp | | **Net** | **−0.132pp** |
The two terms sum exactly to the total at both ends of the range. Both are negative. Roughly half the improvement is the same entities getting genuinely less empty; roughly half is five emptier-than-average entities leaving the published set.
These are hundredths of a percentage point and nobody should read a trend into them. The honest summary is that **absence has been flat at about 67% for seven volumes**, and that this is the first week the small movement went the right way.
What did change materially is the rate of work. **1,152 of 46,428 published field slots (2.48%) were touched in the last seven days**, against 182 of 45,494 (0.40%) the week before — a 6.2-fold increase in share. 528 rows were created (373 absences, 155 present) and **624 already-existing rows were revised**, across 117 entities. Vol. 6's closing complaint was that enrichment of already-published entities had very nearly stopped. It restarted.
## 10. Where this data undercuts our own position
- **Agents are governed and uninsured — not ungoverned.** Fourth volume saying so. `runtime_governance` has the *lowest* trust gap of the five dimensions, and the governance and audit fields are not rare at all: `explainability` is present on 56.19% of published entities, `audit_trail` on 53.03%, `compliance_certs` on 48.74%, `runtime_governance` on 48.23% — all in the top third of the 45 shared fields. **The assurance layer is not uniformly absent. Risk transfer is the near-vacuum, and conflating the two overstates our case.** - **"Continuously re-verified" remains our weakest claim, not our strongest.** 43.07% of published values rest on a capture we have never re-fetched; the median citation is 43.7 days old and got exactly seven days older in seven days; 21.44% of what we did re-fetch no longer verifies; and 2,383 detected failures sit unadjudicated. A static index checked once, carefully, may well beat us on citation integrity. We have not measured MIT's and should not imply the comparison until we have. - **Our entities are thin.** 89.27% rest on a single source URL; the mean carries 1.13 sources and 16.32 of 59 possible fields. "More entities than MIT, each with per-field citations" is true. "More rigorous than MIT" is not something this data supports. - **The 792 are not a sample of the agent market.** They are a sample conditioned on our having found eight facts and a score. True market absence on risk transfer is almost certainly higher than 99.37%, not lower. - **Both of this week's apparent improvements in insurance coverage are the same artefact** — publishing an insurance company. Neither `coverage_limits` going to 1 nor `insurance_indemnity` falling off 100.00% tells you anything about whether agents can be insured. - **Vendors are the informative entities and there are still almost none.** 30 published vendors carry 7.23 present assurance fields each against agents' 3.61. Up by one vendor this week, from a pre-floor high of 42.
## 11. What we could not measure
- **Autonomy versus accountability.** Sixth deferral, now with a number rather than an assertion: `autonomy_level` has 75 present values across 66 distinct strings. 88% of the values are unique. There is no scale to correlate against. - **Model concentration risk.** Same blocker, worse: `model_provider` has 217 values in 209 distinct strings (96.3% unique), `base_models` 239 in 236 (98.7%). Until these are normalised, any concentration figure would be measuring our extraction, not the market. - **The assurance landscape map.** 30 published vendors is enough to list and not enough to map without padding it out. Unchanged from Vol. 5 and Vol. 6. - **Whether our citation integrity beats MIT's.** We would have to re-verify their 1,350 data points against their sources. Our cloud roles cannot reach `aiagentindex.mit.edu`; the crawler can. Until that is queued, the comparison is unmeasured and we should stop making it rhetorically.
## Appendix: reproduction queries
Run against Supabase project `invsbcblyrjsvmygulcz` on 2026-09-14. Every figure in this report comes from one of these.
**A1 — entity counts** ```sql select status, count(*) from entities group by status; select entity_type, count(*) from entities where status='published' group by 1; select count(*) from field_catalog; select applies_to, category, count(*) from field_catalog group by 1,2; ```
**A2 — the census (§1)** ```sql with pub as (select id, entity_type from entities where status='published'), slots as (select p.id as entity_id, f.field_key, f.category from pub p join field_catalog f on f.applies_to='both' or f.applies_to=p.entity_type) select count(*) as applicable_slots, count(*) filter (where ef.value_status='present') as present, count(*) filter (where ef.value_status='no_public_information') as npi, count(*) filter (where ef.value_status is null) as never_assessed from slots s left join entity_fields ef on ef.entity_id=s.entity_id and ef.field_key=s.field_key; ```
**A3 — assurance versus the rest (§1)** ```sql select case when fc.category='assurance' then 'assurance' else 'other' end as band, count(*) as slots, count(*) filter (where ef.value_status='present') as present from (select id, entity_type from entities where status='published') p join field_catalog fc on fc.applies_to='both' or fc.applies_to=p.entity_type left join entity_fields ef on ef.entity_id=p.id and ef.field_key=fc.field_key group by 1; ```
**A4 — the published set against its own promotion gate (§2)** ```sql select count(*) as published_in_view, count(*) filter (where promotion_ready) as would_pass, count(*) filter (where not promotion_ready) as would_fail from promotion_readiness where entity_status='published';
select case when b like '%absent from our newest capture%' then 'stale citation (any count)' else b end as blocker, count(distinct pr.entity_id) from promotion_readiness pr, lateral unnest(pr.blockers) as b where pr.entity_status='published' and not pr.promotion_ready group by 1 order by 2 desc; ```
**A5 — the advisory single-source blocker really is non-blocking (§2)** ```sql select count(*) filter (where cardinality(blockers)=1 and blockers[1] like 'rests on a single source URL%') as advisory_only, count(*) filter (where cardinality(blockers)=1 and blockers[1] like 'rests on a single source URL%' and promotion_ready) as advisory_only_and_ready from promotion_readiness where entity_status='published'; ```
**A6 — source thinness (§2)** ```sql select count(*) as published, count(*) filter (where distinct_sources=1) as single_source, round(avg(distinct_sources),2) as mean_sources, round(avg(distinct_documents),2) as mean_documents, round(avg(present_fields),2) as mean_present_fields from promotion_readiness where entity_status='published'; ```
**A7 — candidates held out by the same gate (§2)** ```sql select count(*) filter (where entity_status='candidate') as candidates, count(*) filter (where entity_status='candidate' and clears_publication_floor) as clears_floor, count(*) filter (where entity_status='candidate' and promotion_ready) as promotion_ready, count(*) filter (where entity_status='candidate' and clears_publication_floor and not promotion_ready) as blocked, count(*) filter (where entity_status='candidate' and clears_publication_floor and not promotion_ready and stale_citations_high_confidence > 0) as blocked_by_stale from promotion_readiness; ```
**A8 — citation freshness headline (§3)** ```sql select count(*) as present_quoted_values, count(*) filter (where freshness='current') as never_recaptured, count(*) filter (where freshness='reconfirmed') as reconfirmed, count(*) filter (where freshness='stale') as stale, count(*) filter (where freshness='stale' and confidence='high') as stale_high, count(*) filter (where freshness='unreadable_recapture') as unreadable, count(distinct entity_id) filter (where freshness='stale') as entities_with_stale, round(100.0*count(*) filter (where freshness='stale') / count(*) filter (where freshness in ('reconfirmed','stale')),2) as pct_stale from citation_freshness where entity_status='published'; ```
**A9 — last week's method applied to this week's data (§3)** ```sql select count(*) filter (where freshness in ('reconfirmed','stale','unreadable_recapture')) as newer_capture_exists, count(*) filter (where freshness in ('stale','unreadable_recapture')) as quote_not_found from citation_freshness where entity_status='published'; ```
**A10 — per-entity stale distribution (§3)** ```sql with s as (select entity_id, count(*) as stale_vals from citation_freshness where entity_status='published' and freshness='stale' group by 1) select count(*) as entities_with_stale, avg(stale_vals), max(stale_vals), percentile_cont(0.5) within group (order by stale_vals) as median from s; ```
**A11 — staleness by field category (§3)** ```sql select fc.category, count(*) filter (where cf.freshness in ('reconfirmed','stale')) as recaptured, count(*) filter (where cf.freshness='stale') as stale from citation_freshness cf join field_catalog fc on fc.field_key=cf.field_key where cf.entity_status='published' group by 1; ```
**A12 — the unworked queue (§3)** ```sql select count(*) as flags_total, count(*) filter (where verdict is not null) as adjudicated, count(*) filter (where reviewed_at is not null) as reviewed, min(detected_at), max(detected_at) from superseded_quote_flags; ```
**A13 — concentration by URL (§4)** ```sql with cf as (select * from citation_freshness where entity_status='published' and freshness='stale'), per as (select source_url, count(*) c from cf group by 1) select (select count(*) from cf) as stale_total, (select count(*) from per) as distinct_urls, (select sum(c) from (select c from per order by c desc limit 10) x) as top10, (select sum(c) from (select c from per order by c desc limit 50) x) as top50; ```
**A14 — per-page stale fraction (§4)** ```sql with per as (select source_url, count(*) filter (where freshness in ('reconfirmed','stale')) as judged, count(*) filter (where freshness='stale') as stale from citation_freshness where entity_status='published' group by 1) select case when stale=0 then '0%' when stale=judged then '100%' when 1.0*stale/judged >= 0.75 then '75-99%' when 1.0*stale/judged >= 0.25 then '25-74%' else '1-24%' end as band, count(*) as urls, sum(judged) as judged, sum(stale) as stale from per where judged >= 5 group by 1; ```
**A15 — evidence age (§5)** ```sql select count(*) as vals, round(100.0*count(*) filter (where cited_at < now() - interval '30 days') /count(*),2) as pct_over_30d, percentile_cont(0.5) within group (order by extract(epoch from (now()-cited_at))/86400) as median_age_days, percentile_cont(0.5) within group (order by extract(epoch from (now()-newest_fetched_at))/86400) as median_newest_age_days from citation_freshness where entity_status='published';
select max(fetched_at) from raw_documents; -- is the crawler alive ```
**A16 — failure rate by capture age (§5)** ```sql select width_bucket(extract(epoch from (now()-cited_at))/86400, 0, 49, 7) as bucket, min((extract(epoch from (now()-cited_at))/86400)::numeric(6,1)) as min_age_d, max((extract(epoch from (now()-cited_at))/86400)::numeric(6,1)) as max_age_d, count(*) as recaptured, count(*) filter (where freshness='stale') as stale from citation_freshness where entity_status='published' and freshness in ('reconfirmed','stale') group by 1 order by 1; ```
**A17 — all 45 shared fields on an identical denominator (§6)** ```sql select fc.category, fc.field_key, count(*) filter (where ef.value_status='present') as present, round(100.0*count(*) filter (where ef.value_status='present')/792.0,2) as pct from (select id from entities where status='published') p cross join (select * from field_catalog where applies_to='both') fc left join entity_fields ef on ef.entity_id=p.id and ef.field_key=fc.field_key group by 1,2 order by 3 asc; ```
**A18 — every present risk-transfer value, read individually (§6, §7)** ```sql select e.id, e.slug, e.name, e.entity_type, ef.field_key, ef.value_text, ef.quote, ev.source_url, ev.retrieved_at, ef.evidence_id, ef.created_at, ef.updated_at, ef.extracted_by from entity_fields ef join entities e on e.id=ef.entity_id join evidence ev on ev.id=ef.evidence_id where e.status='published' and ef.value_status='present' and ef.field_key in ('coverage_limits','insurance_available','indemnification', 'insurance_carriers','liability_cap','own_liability_cover') order by ef.field_key, e.id; ```
**A19 — Armilla's and Coalition's status history (§7)** ```sql select changed_at, old_status, new_status, slug from entity_overwrite_log where entity_id in (3,6) order by changed_at; ```
**A20 — scoring, split correctly by rubric (§8)** ```sql select s.rubric_version, s.scored_by, count(*) as rows, count(distinct s.entity_id) as entities, count(*) filter (where s.score=0) as s0, count(*) filter (where s.score=1) as s1, count(*) filter (where s.score=2) as s2, count(*) filter (where s.score=3) as s3 from scorecards s join entities e on e.id=s.entity_id where e.status='published' group by 1,2; ```
**A21 — the adjudicated panel (§8)** ```sql with v1 as (select distinct on (entity_id, dimension) entity_id, dimension, score from scorecards s join entities e on e.id=s.entity_id where e.status='published' and s.rubric_version='v1' order by entity_id, dimension, scored_at desc), full5 as (select entity_id from v1 group by 1 having count(distinct dimension)=5) select v1.dimension, count(*) as entities, count(*) filter (where score<=1) as trust_gap, avg(score) as mean_score from v1 join full5 using (entity_id) group by 1; ```
**A22 — reconstructing the Vol. 6 cohort (§9)** ```sql with t as (select timestamptz '2026-09-07 20:10:00+00' as cut), promoted_after as (select distinct entity_id from entity_overwrite_log, t where changed_at>=t.cut and old_status='candidate' and new_status='published'), demoted_after as (select distinct entity_id from entity_overwrite_log, t where changed_at>=t.cut and old_status='published' and new_status='candidate'), cohort as (select e.id, e.entity_type from entities e where (e.status='published' and e.id not in (select entity_id from promoted_after)) or e.id in (select entity_id from demoted_after)) select (select count(*) from cohort) as vol6_entities, (select count(*) from cohort where entity_type='agent') as agents, (select count(*) from cohort where entity_type='vendor') as vendors, (select count(*) from cohort c join field_catalog f on f.applies_to='both' or f.applies_to=c.entity_type) as vol6_slots; ```
**A23 — replaying field values, with the unknown band left explicit (§9)** ```sql -- same cohort CTEs as A22, tagged common / leaver / newcomer select s.grp, count(distinct s.entity_id) as entities, count(*) as slots, count(*) filter (where ef.value_status='no_public_information') as npi_now, count(*) filter (where ef.created_at < cut and ef.updated_at < cut and ef.value_status='no_public_information') as npi_then_known, count(*) filter (where ef.created_at < cut and ef.updated_at >= cut) as then_unknown, count(*) filter (where ef.id is null or ef.created_at >= cut) as then_never_assessed from slots s left join entity_fields ef on ef.entity_id=s.entity_id and ef.field_key=s.field_key group by 1; ```
**A24 — the week's work (§9)** ```sql select count(*) filter (where ef.updated_at >= timestamptz '2026-09-07 20:10:00+00') as slots_touched, count(*) filter (where ef.created_at >= timestamptz '2026-09-07 20:10:00+00') as rows_created, count(*) filter (where ef.updated_at >= timestamptz '2026-09-07 20:10:00+00' and ef.created_at < timestamptz '2026-09-07 20:10:00+00') as existing_rows_revised, count(distinct ef.entity_id) filter (where ef.updated_at >= timestamptz '2026-09-07 20:10:00+00') as entities_touched from entity_fields ef join entities e on e.id=ef.entity_id where e.status='published'; ```
**A25 — vendor versus agent assurance depth (§10)** ```sql select p.entity_type, count(distinct p.id) as entities, count(*) filter (where ef.value_status='present' and fc.category='assurance') as assurance_present from (select id, entity_type from entities where status='published') p join field_catalog fc on fc.applies_to='both' or fc.applies_to=p.entity_type left join entity_fields ef on ef.entity_id=p.id and ef.field_key=fc.field_key group by 1; ```
**A26 — why the deferred analyses stay deferred (§11)** ```sql select ef.field_key, count(*) as present_rows, count(distinct ef.value_text) as distinct_values from entity_fields ef join entities e on e.id=ef.entity_id where e.status='published' and ef.value_status='present' and ef.field_key in ('autonomy_level','model_provider','base_models') group by 1; ```
### Reconciliation checks
- Census sums: 12,922 + 31,045 + 2,461 = 46,428. - Slot arithmetic from first principles: 762 agents × 59 + 30 vendors × 49 = 44,958 + 1,470 = 46,428. - Freshness buckets sum: 5,568 + 5,728 + 1,563 + 69 = 12,928, of which 6 values are filed on a field that does not apply to their entity's type, giving the 12,922 present in the census. - Stale confidence split: 1,407 high + 156 medium = 1,563. - `superseded_quote_flags` published rows (1,563) equal the view's published stale count exactly, so the materialised table is faithful to the view. - Entity flow: 782 − 5 + 15 = 792. - Cohort reconstruction independently reproduces five Vol. 6 figures: 782 entities, 753 agents, 29 vendors, 45,848 slots, 2,426 never-assessed. - The replay's unknown band (593 rows) is pinned by Vol. 6's own totals to 167 present and 426 absences; 167 + 426 = 593. - Decomposition terms sum to −0.132pp at both ends of the range. - Cohort slots partition: 45,553 common + 295 leavers = 45,848 (Vol. 6); 45,553 common + 875 newcomers = 46,428 (now). - Matched-denominator field comparison uses an identical 4,752-slot denominator for all 45 shared fields by construction. - All 13 quotes cited in this report were inserted by selecting the stored row, not retyped, and all 13 pass the database's own verbatim test against their stored source document. - Those 13 were then put through §3's own freshness test. Every one comes back `current` or `reconfirmed` — none is stale. A report about citations that no longer verify should not itself rest on any, and it does not.
Entries in this piece 11
Published index entries backed by the same source documents this piece cites.
Sources 13
“Armilla provides named, affirmative AI insurance that responds to those failure modes directly”
www.armilla.ai · checked Jul 30, 2026“Cyber Insurance | Active Insurance & Cybersecurity | Coalition Now Available: Active Cyber Insurance for Enterprises”
www.coalitioninc.com · checked Jul 31, 2026“Active Cyber Insurance for Enterprises Comprehensive cyber coverage backed by proprietary intelligence and Allianz’s A+ rated capacity.”
www.coalitioninc.com · checked Jul 31, 2026“Google’s IP indemnification policy helps protect Gemini Code Assist licensed users from potential legal ramifications concerning copyright infringements.”
cloud.google.com · checked Aug 1, 2026“Plus requester reputation and incident insurance funded from the fee.”
workman.rent · checked Aug 2, 2026“The legal responsibility sits with us, not you.”
agentcard.sh · checked Aug 7, 2026“By using the extension, you agree to indemnify its creator from any liability.”
chromewebstore.google.com · checked Aug 9, 2026“ElevenAgents is also the first agent platform eligible for AI insurance through AIUC, once certified.”
elevenlabs.io · checked Aug 18, 2026“IN NO EVENT WILL THE TOTAL LIABILITY OF THE NOFIRE AI PARTIES TO YOU FOR ALL DAMAGES, LOSSES, AND CAUSES OF ACTION (WHETHER IN CONTRACT OR TORT, INCLUDING, BUT NOT LIMITED TO, NEGLIGENCE OR OTHERWISE) ARISING FROM OR RELATED TO THE TERMS, THE CONTENT, AND/OR YOUR USE OF THE SITE, EXCEED, IN THE AGGREGATE, $100.00.”
nofire.ai · checked Aug 29, 2026“Has cyber insurance”
trust.logicmonitor.com · checked Aug 29, 2026“Up to $100K additional Funds Transfer Fraud coverage”
www.coalitioninc.com · checked Sep 5, 2026“To the fullest extent permitted by applicable law, the service is provided as is and as available. 9bot is not liable for indirect damages, loss of revenue, lost profits, loss of data, interruptions caused by third parties, external account blocks, incorrect user configurations or content operated by the user.”
9bot.com.br · checked Aug 20, 2026“Armilla Insurance Services is a Coverholder at Lloyd's. Affirmative AI Liability Insurance is underwritten by certain underwriters at Lloyd's.”
www.armilla.ai · checked Sep 11, 2026