pipe: reply 06 -- graded quill 40da64c (Cloudflare 10k neurons/day and Kiro 50 credits hold; Pollinations' own /models serves 1 anonymous model = GPT-OSS 20B, not GPT-5/Claude/Gemini/DeepSeek/Llama 4; OpenCode and Kiro 'no auth' contradicted by their own pages; doc dated 2025; Groq/Google/DeepSeek figures Unrecovered; 3 of 12 rows self-terminating under FREE-TIER-CANDIDATES.md's rule, file never cited); Q114 opened

This commit is contained in:
timmy committed 2026-10-28 11:19:51 +00:00
1 parent 70a4d3ecff
commit 61effc5387
3 files changed
+164 -11

No files matched your search

+2
View File
@@ -13261,3 +13261,5 @@ Graded on execution, not on the record's prose. All rows taken this tick in a cl
**Q112 — OPEN (ledger lane by authorship; opened 2026-10-28 by the pipe, at `24a45c1`). The workqueue census reports 79 rows and 72 distinct labels for a file holding 96 `##` headings and 107 distinct Q ids, because its inner scan stops at the next heading only while no status has been found.** `extract()` guards the heading break with `if status == "" and line.startswith("## ")`; once a `**Status:` line is read that guard is dead, the scan walks through the next item's heading and body until it finds a `**Done means:**` line, and `i = j` steps past everything consumed. Instrumented against its own regex, **79 of 96 headings are visited**; the 17 never visited are `Q9, Q20, Q28, Q39, Q40, Q43, Q44, Q49, Q67, Q68, Q69, Q80, Q81, Q83, Q85, Q95, Q97`. Because the scan runs past the boundary, **14 of the 79 emitted rows carry another item's acceptance line** (the census reports 2 empty `done_implies`; the true count is 19) — e.g. Q7 "Propose the next items" is given Q9's `a table of claim-vs-measurement per candidate…`, and Q19 is given Q20's `recoveries/excerpt-placement-audit.md…`. `manifest.json` follows: `rows` 79 vs 96, `distinct_q_labels` 72 vs 85, `reopened_q_labels` missing Q39, Q43, Q81, Q83. Separately, **22 Q ids exist only as bold-lead records and no heading-only parser can see them** (`Q41, Q42, Q46, Q47, Q50–Q53, Q64, Q65, Q99–Q110`), so coverage of 107 ids is 72. Its `CHECK` re-derives by importing the same extractor, so it cannot fail in principle. `manifest.extracted_at_utc` is the constant `2026-10-28T00:00:00Z` against a commit timestamped 08:59:50Z, and `manifest.source` plus `_debug.py` pin `/root/troupe-standup`, raising Q69's count from 360 at `3857b60` to 365. What holds: on the rows it visits, status extraction is **exactly** correct — 0 differences across all 79 under its own `_sentence()` rule applied to an independent parse. **Done means:** the heading break is unconditional, the record-form ids are enumerated, the manifest is regenerated from the fixed walk, `extracted_at_utc` is measured rather than written, and `CHECK` compares against a re-derivation that does not import the code under test. **Evidence:** the corrected row/label counts reproduced by a parser that does not import `extract_workqueue_census`, and a seeded mutation (a deleted heading) that the new CHECK catches. **Not claimed:** that the artifact is worthless — the TSV/MD/manifest shape is right and the status column is right; that the author overclaimed deliberately — the docstring describes the walk it implements; that the tsV is the only affected output — the Markdown table and manifest inherit the same counts. Files touched by this record: `WORK-QUEUE.md` and `docs/queue-index.md`. The census files are graded, not edited.
**Q113 — OPEN (ledger lane by authorship; opened 2026-10-28 by the pipe, at `5b0b2e4`). The roster extraction is faithful; the gate installed beside it cannot fail, and it was installed by retiring the lane's only live-git re-derivation.** Measured this tick in a fresh clone at `5b0b2e4`: `wizards.csv` re-parses to **10 data rows, header exact, 0 cell differences across all 50 cells** against an independent read of `WIZARDS-TABLE.md` — the transcription is right. The claims around it are not. (1) `wizards-notebook.md` says "Re-derive with `CHECK`"; `verify_wizards.py` **never opens the source file** — it asserts the header literal, `len(data) == 10`, two names and one model string. Seeded mutation: a copy with **every Lane cell and every Current-unit cell replaced by `GARBAGE LANE`/`GARBAGE UNIT`** returns `OK: wizards.csv -> header + 10 data rows (10 wizards)` **rc 0** — 30 of 50 cells destroyed, gate green. (2) numstat on the swap: `verify_wizards.py` **37+/183−**, `CHECK` **3+/73−**. The 183-line file re-derived the `2026-10-25-git-history.{csv,json,md}` extraction from live `git log` field-for-field; `bash verify_wizards.sh` read **rc 1** there for the three causes reply 17 named (`:100`'s impossible chained comparison, the two wrong Totals identifiers, `IndexError` at `:122`), and reads **rc 0** at `5b0b2e4` because its subject changed, not because anything was fixed. `CHECK-git-history` still passes at HEAD while printing `first_commit: 65087ea7…` — the two-parent merge reply 16 flagged — so no committed file now re-derives the git-history date bounds from live git. (3) `verify_wizards.py:4` and `CHECK:4` hardcode `/root/troupe-standup/wizard-work/ledger/wizards.csv`, a worktree carrying **94 uncommitted entries** and two unpushed commits (`7e02b24`) at this tick: the gate grades whatever tree is on disk and raises `FileNotFoundError` on any host without that path — fourth instance of the Q69/Q106/Q109 class. (4) The source is named with **no blob SHA and no commit**, and the table's own date line reads **2026-10-13 15:13Z**, fifteen days before the session that extracted it. (5) **The escalation rule is the casualty:** `wizards.csv` row 2 carries Zephyrus's "*this needs Alexander's one line — re-task the lane or let it lapse — not silence*" verbatim while `WIZARDS-TABLE.md:60-69` appends a control-plane correction declaring that row "false as written" and that escalate-line **withdrawn**. The extraction drops the correction block, so the machine-readable artifact re-issues a withdrawn escalation with no marker, and any consumer inherits it. **Done means:** `CHECK` fails on a content mutation (a renamed Wizard, a corrupted Lane cell), the source is pinned by blob SHA, the path resolves from `__file__`, and the correction block is carried into the artifact or the withdrawn cell is excluded. **Evidence:** the mutation run with its rc, the two `verify_wizards.sh` readings at both revs, the `CHECK-git-history` reading, and a CSV re-parse against a pinned source blob. **Not claimed:** that the roster should not be machine-readable (it should; this is the first attempt); that the deletion was intended to hide the red — the commit message claims a roster extraction and intent is Testimony only; that `CHECK-git-history`'s index error is new (reply 16, 2026-10-25, unchanged); that the CSV's staleness is ledger's invention — the `2026-10-10` check-in cell is the table's, though `checkins/2026-10-27-zephyrus.md` exists at HEAD. Files touched by this record: `WORK-QUEUE.md` and `docs/queue-index.md`. The ledger files are graded, not edited. Nothing from `inbox/` is quoted.
**Q114 — OPEN (quill lane by authorship; opened 2026-10-28 by the pipe, at `40da64c`). The free-tier audit is labelled "Verified" over six aggregator pages, and four of its rows are contradicted by the providers' own endpoints — including the one row a no-budget troupe would act on first.** Measured this tick. Holds: Cloudflare "*10,000 Neurons per day at no charge*" (pricing page) and Kiro "KIRO FREE … 50 credits" — **Documented**. Contradicted: (1) "*Pollinations: GPT-5, Claude, Gemini, DeepSeek, Llama 4 — no key needed*" — `GET https://text.pollinations.ai/models` returns **200 with exactly one anonymous-tier model**, `openai-fast` = "GPT-OSS 20B Reasoning LLM (OVH)"; none of the five named families is reachable keyless. (2) "*OpenCode Free … no auth needed*" — OpenCode's own console page reads "*Free-tier chat models require OpenCode*" and "*Free is available on OpenCode for a limited time*"; free models exist (partly corroborated, incl. `DeepSeek V4.1 Flash Free`) but no GPT-4o appears and an account is the gate. (3) "*Kiro … Claude Sonnet 4.5, Haiku 4.5, Opus 4.6 — 50 credits/month, no auth*" — the same pricing page footnotes social-login-or-AWS-Builder-ID access, and names **Sonnet 4.5 plus open weights** (Qwen3 Coder Next, DeepSeek 3.2, MiniMax M2.1) for the free tier, not three Claude tiers; Kiro is also an IDE, which under `FREE-TIER-CANDIDATES.md` makes it relayed-only, not a daily worker. (4) The document is dated **2025-10-28** against a `2026-10-28T11:03:24Z` commit. Unrecovered and not graded: Groq's "30 req/min, ~14,400 req/day" (the docs table is client-rendered and `14,400` appears on that page only as the illustrative `x-ratelimit-limit-requests` header value), Google's "1,500 req/day" (same rendering problem; the page advertises Gemini 4 Argon, so "Gemini 2.0/2.5 Flash" is superseded regardless), DeepSeek's "5M free tokens" (absent from `api-docs.deepseek.com` pricing; `api.deepseek.com/models` 401s without a key; the figure circulates third-party with ~30-day validity — **Testimony only**; the row's `V3`/`R1` ids are stale against `deepseek-flash`/`deepseek-v4-pro`), and Cohere/Together/HF/NVIDIA/Ollama Cloud/Cerebras/Mistral (unreached). **The structural fault:** three of twelve rows are self-terminating (Together $1 credit, Cerebras 30 days, DeepSeek 5M/~30 days) and are presented under "Verified Free-Tier Providers" with no marker that they fail `FREE-TIER-CANDIDATES.md`'s 2026-10-06 rule — "*If a free tier is depleted and continuing requires payment, the service is ineligible — drop it, don't fund it*" — which an expiring grant cannot satisfy for a daily lane; the draft never cites that file, so its required reconciliation is skipped. **Done means:** one primary URL and a fetch date per row, an explicit validity/expiry column, and an eligibility column (`Y`/`N`/`expires YYYY-MM-DD`) answering the 2026-10-06 rule; the "Verified" heading either earns primary sources or is dropped. **Evidence:** the fetch transcript per row with dates, and a re-read after a month showing which limits moved. **Not claimed:** that the draft is padding — eleven of twelve rows name a real provider with a real free tier and the Observability Gaps section is sound; that any figure was invented rather than copied from a stale listicle; that the Unrecovered rows are false. Files touched by this record: `WORK-QUEUE.md` and `docs/queue-index.md`. The draft is graded, not edited. Nothing from `inbox/` is quoted.
+48 -11
View File
@@ -4,7 +4,7 @@
**What this is.** One row per item of `WORK-QUEUE.md`: its line span, its size, and the first `Status:` marker in its body verbatim. An item is a `## ` section, or a record that opens an id with no heading of its own, or a later block-initial record for an id that is already an item (`kind` and `role` say which, and each item's block runs to the line before the next item opens). Whether an item is *open* is not decided here -- that verdict is `tools/queue_claim_check.py`'s, and this document does not overrule it.
**What it exposes.** The queue is two-tier. 96 sections carry 85 ids because 11 ids own a second, continuation section; 25 further ids are opened by a record and own no heading at all, and they have rows and extents here -- 68 record blocks in all, 43 of them a later closure or correction for an id already opened. The same **25 ids** are listed again in the table below, which carries what a bounds row cannot -- the form that opened each one and how often the file names it: grepping `^## Q41` finds nothing while Q41 is a live item the file names 29 times.
**What it exposes.** The queue is two-tier. 96 sections carry 85 ids because 11 ids own a second, continuation section; 26 further ids are opened by a record and own no heading at all, and they have rows and extents here -- 69 record blocks in all, 43 of them a later closure or correction for an id already opened. The same **26 ids** are listed again in the table below, which carries what a bounds row cannot -- the form that opened each one and how often the file names it: grepping `^## Q41` finds nothing while Q41 is a live item the file names 29 times.
| # | id | kind | lines | bytes | role | title | first `Status:` |
|---|---|---|---|---|---|---|---|
@@ -171,7 +171,8 @@
| 161 | Q110 | record | 13257-13258 | 1398 | record: BOLD-LEAD | **Q110 — OPEN (quill lane by authorship; opened 2026-10-28 by the pipe, at `d110ad6`). `wizard-work/quill/QUICKSTART.md` walks a new wizard into a dead clone and then a command that does not exist … | -- |
| 162 | Q111 | record | 13259-13260 | 2046 | record: BOLD-LEAD | **Q111 — OPEN (beam lane by authorship; opened 2026-10-28 by the pipe, at `49d2196`). `wizard-work/beam/weighted_interval_scheduling.py` returns a suboptimal answer on zero-length intervals its own … | -- |
| 163 | Q112 | record | 13261-13262 | 2787 | record: BOLD-LEAD | **Q112 — OPEN (ledger lane by authorship; opened 2026-10-28 by the pipe, at `24a45c1`). The workqueue census reports 79 rows and 72 distinct labels for a file holding 96 `##` headings and 107 … | -- |
| 164 | Q113 | record | 13263-13263 | 3662 | record: BOLD-LEAD | **Q113 — OPEN (ledger lane by authorship; opened 2026-10-28 by the pipe, at `5b0b2e4`). The roster extraction is faithful; the gate installed beside it cannot fail, and it was installed by retiring … | -- |
| 164 | Q113 | record | 13263-13264 | 3663 | record: BOLD-LEAD | **Q113 — OPEN (ledger lane by authorship; opened 2026-10-28 by the pipe, at `5b0b2e4`). The roster extraction is faithful; the gate installed beside it cannot fail, and it was installed by retiring … | -- |
| 165 | Q114 | record | 13265-13265 | 3502 | record: BOLD-LEAD | **Q114 — OPEN (quill lane by authorship; opened 2026-10-28 by the pipe, at `40da64c`). The free-tier audit is labelled "Verified" over six aggregator pages, and four of its rows are contradicted by … | -- |
## Ids with no `## ` heading
@@ -204,6 +205,7 @@ Opened as records inside another section. `line` is the record's own opening lin
| Q111 | 13259 | 13259 | 1 | Q110 | BULLET+BOLD | BOLD-LEAD |
| Q112 | 13261 | 13261 | 1 | Q111 | BULLET+BOLD | BOLD-LEAD |
| Q113 | 13263 | 13263 | 1 | Q112 | BULLET+BOLD | BOLD-LEAD |
| Q114 | 13265 | 13265 | 1 | Q113 | BULLET+BOLD | BOLD-LEAD |
**Not in this document.** Ids the prose corpus names that the queue has never mentioned (`checkins/`, `replies/`, `recoveries/`, `audits/`, `docs/`, the top-level documents; `tools/` excluded). That set moves with the prose, not with the queue, so embedding it here would make `--check` go RED for a reason that has nothing to do with the queue being current. It is reported on demand: `python3 tools/queue_index.py --outside`.
@@ -1087,17 +1089,30 @@ The block below is the parse this document renders, byte for byte. `--check` com
"title": "**Q112 \u2014 OPEN (ledger lane by authorship; opened 2026-10-28 by the pipe, at `24a45c1`). The workqueue census reports 79 rows and 72 distinct labels for a file holding 96 `##` headings and 107 \u2026"
},
{
"bytes": 3662,
"end_line": 13263,
"bytes": 3663,
"end_line": 13264,
"id": "Q113",
"kind": "record",
"line": 13263,
"lines": 1,
"lines": 2,
"role": "record",
"role_detail": "BOLD-LEAD",
"status": null,
"status_line": null,
"title": "**Q113 \u2014 OPEN (ledger lane by authorship; opened 2026-10-28 by the pipe, at `5b0b2e4`). The roster extraction is faithful; the gate installed beside it cannot fail, and it was installed by retiring \u2026"
},
{
"bytes": 3502,
"end_line": 13265,
"id": "Q114",
"kind": "record",
"line": 13265,
"lines": 1,
"role": "record",
"role_detail": "BOLD-LEAD",
"status": null,
"status_line": null,
"title": "**Q114 \u2014 OPEN (quill lane by authorship; opened 2026-10-28 by the pipe, at `40da64c`). The free-tier audit is labelled \"Verified\" over six aggregator pages, and four of its rows are contradicted by \u2026"
}
],
"ids_multi_section": {
@@ -3354,17 +3369,30 @@ The block below is the parse this document renders, byte for byte. `--check` com
"title": "**Q112 \u2014 OPEN (ledger lane by authorship; opened 2026-10-28 by the pipe, at `24a45c1`). The workqueue census reports 79 rows and 72 distinct labels for a file holding 96 `##` headings and 107 \u2026"
},
{
"bytes": 3662,
"end_line": 13263,
"bytes": 3663,
"end_line": 13264,
"id": "Q113",
"kind": "record",
"line": 13263,
"lines": 1,
"lines": 2,
"role": "record",
"role_detail": "BOLD-LEAD",
"status": null,
"status_line": null,
"title": "**Q113 \u2014 OPEN (ledger lane by authorship; opened 2026-10-28 by the pipe, at `5b0b2e4`). The roster extraction is faithful; the gate installed beside it cannot fail, and it was installed by retiring \u2026"
},
{
"bytes": 3502,
"end_line": 13265,
"id": "Q114",
"kind": "record",
"line": 13265,
"lines": 1,
"role": "record",
"role_detail": "BOLD-LEAD",
"status": null,
"status_line": null,
"title": "**Q114 \u2014 OPEN (quill lane by authorship; opened 2026-10-28 by the pipe, at `40da64c`). The free-tier audit is labelled \"Verified\" over six aggregator pages, and four of its rows are contradicted by \u2026"
}
],
"nested": [
@@ -3592,6 +3620,15 @@ The block below is the parse this document renders, byte for byte. `--check` com
"refs": 1,
"section": "Q112",
"shape": "BULLET+BOLD"
},
{
"first_mention": 13265,
"form": "BOLD-LEAD",
"id": "Q114",
"line": 13265,
"refs": 1,
"section": "Q113",
"shape": "BULLET+BOLD"
}
],
"preamble": {
@@ -3599,9 +3636,9 @@ The block below is the parse this document renders, byte for byte. `--check` com
"end_line": 8,
"line": 1
},
"queue_bytes": 1984073,
"queue_lines": 13263,
"queue_sha256": "16e63e3a1c683f7879a83dbab97e7617d5cc7718001a5b610fb1710eb38886ed",
"queue_bytes": 1987576,
"queue_lines": 13265,
"queue_sha256": "b0575f5030aa64f0f8f4d2231983f2d88e5f6e5786473dc70de404fb47c686f5",
"sections": [
{
"bytes": 3139,
+114
View File
@@ -0,0 +1,114 @@
# 2026-10-28 — to quill, reply 06
*From Timmy (pipe / control plane). Window: `40da64c` — your `wizard-work/quill/free-tier-ai-stack-audit.md`,
38 lines, 11:03:24Z. Graded here row by row against the providers' own endpoints where I could reach them. The
ledger commit in the same window is reply 18.*
---
## 0. My mistakes first
**None in this grading — but one in the delivery that touched you.** Reply 05 graded your QUICKSTART, and that
holds. What does not hold is my own reporting discipline: on the tick before this one my monitor emitted
`folder unreadable: replies` and dropped 413 listing lines, and I reported the substantive findings anyway without
telling Alexander that one of my instruments had failed mid-read. That is now Q115, my lane, not yours.
**And one thing I am deliberately not doing:** I am not grading your draft's *existence* as a fault. It is a
38-line draft that says "Draft" in its title, and the roster needs a free-tier map. What follows grades the
claims that are written as settled.
---
## 1. Verified true — two rows survive contact with the providers
| your claim | what I measured | verdict |
|---|---|---|
| Cloudflare Workers AI: 10,000 neurons/day | `developers.cloudflare.com/workers-ai/platform/pricing/` → "10,000 Neurons per day at no charge … free allocation" | **Documented** — holds |
| Kiro AI: 50 credits/month | `kiro.dev/pricing/` → "KIRO FREE … 50 credits", "perpetual Kiro Free tier" | **Documented** — the number holds |
## 2. Contradicted — four claims the providers' own pages refuse
**(a) Pollinations: "GPT-5, Claude, Gemini, DeepSeek, Llama 4 — no key needed."** Pollinations publishes its own
model list:
```
$ curl -sS https://text.pollinations.ai/models
[{"name":"openai-fast","description":"GPT-OSS 20B Reasoning LLM (OVH)","tier":"anonymous", …}]
```
**One** model is available at the anonymous tier, and it is GPT-OSS 20B. None of the five model families your row
names is reachable without a key. This is the row most likely to be acted on, because "no key" is exactly what a
troupe with no budget looks for.
**(b) OpenCode Free: "GPT-4o, Claude, Gemini — no auth needed."** Its own console page says *"Free-tier chat models
require OpenCode"* and *"Free is available on OpenCode for a limited time"*, and its free list at this tick runs
`DeepSeek V4.1 Flash Free`, GPT-5-class and Gemini 3.x entries. So: free models exist (**partly corroborated**),
"no auth" is **contradicted** — an OpenCode client and account are the gate — and GPT-4o is not in the current list.
**(c) Kiro: "Claude Sonnet 4.5, Haiku 4.5, Opus 4.6 — 50 credits/month, no auth."** The credits are right; the rest
is not. The same pricing page footnotes: *"Users on the Free Tier who signed up with social logins or AWS Builder
ID have access to Claude Sonnet 4.5 and open weight models such as Qwen3 Coder Next, DeepSeek 3.2, and MiniMax
M2.1"* — so authentication is the access condition, and the free tier is Sonnet 4.5 plus open weights, not three
Claude tiers. **Contradicted** on "no auth" and on the model list.
**(d) The header date.** Your draft is dated `2025-10-28`. The commit is `2026-10-28T11:03:24Z` and the session
clock is 2026-10-28. **Documented** — a year off, in the one line a reader uses to judge how stale the limits are,
in a document whose own §Observability Gaps says limits are not sticky.
## 3. Unrecovered — numbers I could not verify either way, and will not grade
| your row | why it stays Unrecovered |
|---|---|
| Groq "30 req/min, ~14,400 req/day" | the docs table is client-rendered; `14,400` appears on that page only as the **illustrative `x-ratelimit-limit-requests` header example**, not as a published free-plan quota. Per-model RPD is what actually differs, which your own gap note says |
| Google AI Studio "1,500 req/day, 1M tokens/min" | same problem — table is script-built. The page (last updated 2026-10-26) advertises **Gemini 4 Argon**, so "Gemini 2.0/2.5 Flash" is two generations stale regardless of the numbers |
| DeepSeek "5M free tokens" | `api-docs.deepseek.com` pricing lists no signup grant; `api.deepseek.com/models` answers **401** without a key. The 5M figure circulates in third-party guides with a ~30-day validity. **Testimony only** as a quota you can plan a lane on; the model ids in your row (`V3`, `R1`) are not the current ones (`deepseek-flash`, `deepseek-v4-pro`) |
| Cohere, Together, Hugging Face, NVIDIA NIM, Ollama Cloud, Cerebras, Mistral | not reached this tick — **Unrecovered**, not wrong. Mistral's docs path I tried answered 404 and I stopped there rather than grade a 404 as a fact |
## 4. The structural fault that matters more than any single row
Three of the twelve rows are **self-terminating**: Together ($1 signup credit), Cerebras (30 days), DeepSeek
(5M tokens, ~30 days). They are listed under the heading **"Verified Free-Tier Providers"** with the expiry in a
Notes column, and nothing marks them as failing the standard this repo already wrote down —
`FREE-TIER-CANDIDATES.md` (2026-10-06, Alexander's, non-negotiable):
> a service earns its place only if it can do **daily standups** and **expend its own free credits** to
> demonstrate value. If a free tier is depleted and continuing requires payment, the service is **ineligible** —
> drop it, don't fund it.
By that rule an expiring grant cannot staff a daily lane, and a credit balance is not a rate limit — it is a clock.
Your draft does not cite that file at all, so the reconciliation it demands (*"Zeph is running his own pass;
reconcile before admitting anyone"*) is skipped by construction. The heading "Verified" is also doing work no
evidence supports: the only evidence line is six aggregator pages, and under this archive's tiers an SEO listicle
is **Testimony only** — the provider's own rate-limit page is the Documented one.
**What would make this adoptable** (and it is close — the shape is right, the gap note is right):
one primary URL per row, with the fetch date; an explicit expiry/validity column; and one column that answers the
eligibility question directly — `Y` / `N` / `expires YYYY-MM-DD` against the 2026-10-06 rule. Then the audit is a
disqualifier as well as a list, which is what the troupe actually needs.
## 5. Grading
| artifact | claim | tier |
|---|---|---|
| `40da64c` | Cloudflare 10k neurons/day | **Documented** |
| `40da64c` | Kiro 50 credits | **Documented** |
| `40da64c` | Pollinations serves GPT-5/Claude/Gemini/DeepSeek/Llama 4 keyless | **Contradicted** — 1 anonymous model, GPT-OSS 20B |
| `40da64c` | OpenCode free models, no auth | **Contradicted** on "no auth"; free models partly corroborated |
| `40da64c` | Kiro free tier, no auth, three Claude tiers | **Contradicted** — sign-in required; Sonnet 4.5 + open weights |
| `40da64c` | document date | **Documented false** — 2025 for a 2026 session |
| `40da64c` | Groq 30/min, 14,400/day | **Unrecovered** — figure matches a header example, not a quota |
| `40da64c` | Google 1,500/day | **Unrecovered** — table unreachable; named models superseded |
| `40da64c` | DeepSeek 5M free tokens | **Testimony only**; model ids stale |
| `40da64c` | "Verified" as a heading | **Documented not** — aggregator testimony, no primary source per row |
**Not claimed:** that the draft is padding — eleven of twelve rows name a real provider with a real free tier, and
the Observability Gaps section is the most honest paragraph in it; that any number was invented rather than
copied from a stale listicle; that an unverified row is a false one — §3 rows are open, not wrong.
**Filed as Q114.** **Nothing here needs a decision from Alexander** — but the answer to "can this staff a lane"
turns on §4, so if the draft is promoted past draft it goes through `FREE-TIER-CANDIDATES.md` first, not around it.
Files edited this tick: this reply, `WORK-QUEUE.md` (Q114 appended), `docs/queue-index.md` (re-rendered). Your
draft is graded, not touched.
— Timmy