Skip to content

Commit c44810e

Browse files
Merge pull request #19 from StepenkoAnatoli/docs/metered-run-verified
Run it for real: 900 credits to 898, both routes verified
2 parents f3cd01f + 65cd8a1 commit c44810e

1 file changed

Lines changed: 76 additions & 2 deletions

File tree

‎docs/live-predicate-verification-2026-09-21.md‎

Lines changed: 76 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
records what happened when its success predicate was executed for real, keyless, against
55
live sites — and the defect that found.
66

7-
**Status: local keyless live predicate verified.** Not "live-collection verified". The
8-
distinction is the point of this file.
7+
**Status: local live predicate verified on BOTH routes — keyless and metered.** Not
8+
"live-collection verified": the GitHub Actions path has still never run. The distinction
9+
is the point of this file.
910

1011
## Method
1112

@@ -84,3 +85,76 @@ real fetch.
8485
The gap is now "the CI wiring and the metered route are untested" rather than "the whole
8586
thing is untested", which is smaller and specific. Closing the rest needs the
8687
`live-collection` environment and one real dispatch.
88+
89+
90+
---
91+
92+
# The metered run — 2026-09-21, later the same day
93+
94+
The keyless run proved the predicate logic. It could not touch the paid route, the
95+
credential path, or `cliCompatibility` against a real installed CLI. This did, with a
96+
real key and real credits.
97+
98+
## The meter is the proof
99+
100+
```
101+
credits before 900 / 1000
102+
credits after 898 / 1000
103+
```
104+
105+
Two pages, two credits. Nothing about this run was simulated.
106+
107+
## Every condition, on the metered route
108+
109+
| condition | result |
110+
|---|---|
111+
| `cliCompatibility()` against the installed CLI | `supported: Firecrawl CLI 1.23.3, the version this adapter is tested against` |
112+
| `research.mjs --dry-run` | exit 0, spent nothing |
113+
| `research.mjs` — 2 pages, `firecrawl-cli` | exit 0, 2 collected, 0 failed |
114+
| ledger exists, parses, records successful fetches | 2 entries, 2 successful |
115+
| `handoff.mjs` | exit 0 — "every cited capture on disk, chain verifies" |
116+
| `provenance` | pass |
117+
| `corpus-shape` | pass |
118+
| `citations` | pass |
119+
| `transport-provenance` | pass |
120+
| `hygiene` | pass |
121+
| repository unchanged | `git status --porcelain` empty |
122+
123+
## Two things the metered route showed that keyless could not
124+
125+
**Completeness grading distinguishes the transports.** The same predicate, different
126+
routes:
127+
128+
```
129+
keyless docs.github.com partial
130+
keyless example.com partial
131+
metered docs.firecrawl.dev FULL
132+
metered example.com partial
133+
```
134+
135+
The metered route got a complete capture where the keyless one got a partial. That is the
136+
difference the two adapters exist to express, and it is graded honestly rather than
137+
claimed — `example.com` stayed `partial` on both, because it genuinely is a stub page.
138+
139+
**The credential never reached the ledger.** The ledger's `cmd` field, which is committed
140+
with a corpus, reads:
141+
142+
```
143+
firecrawl scrape https://docs.firecrawl.dev/rate-limits --only-main-content --json
144+
```
145+
146+
No key, in any field, in either entry — checked by scanning the whole serialised ledger
147+
for key-shaped strings. The CLI reads its credential from its own config; the kit never
148+
puts it on a command line it renders.
149+
150+
## What is now established, and what is still not
151+
152+
**Established with a real credential and real spend:** the compatibility gate passes a
153+
real CLI; the metered adapter collects; the ledger records and hashes real bodies; the
154+
chain verifies; all five integrity checks hold on a metered corpus; completeness grading
155+
discriminates between routes; the credential does not leak into recorded evidence; and
156+
collection writes nothing into the repository it runs from.
157+
158+
**Still not established:** the GitHub Actions runner path. `workflow_dispatch` has never
159+
fired, the `live-collection` environment does not exist, and the secret has never been
160+
wired. What remains unproven is the CI plumbing — not the kit.

0 commit comments

Comments
 (0)