Backlog
What is outstanding on this repo, and what has been decided. Kept here because the alternative is a session task list, which dies with its container: when one restarted on 6 October 2026 the whole list went with it, and every “what’s left?” after that was answered by re-deriving it from the repo.
Every number here is measured, and every number here goes stale. The command that produced it sits beside it, so check rather than quote. Update this file in the PR that changes what it describes.
Decided
Exam order for the person who sits them: AIP-C01, then AIB-C01. This sets priority for anything reader-facing. AIB-C01 is publishing now and ends 16 Dec 2026; AIP-C01 has already published in full.
ANS-C01 is not being swept, and not being written off. Its exam retired on 31 December 2026, the track is parked, and its 114 posts are dated Mar to Jun
- A sweep is a point in time, so verifying AWS facts now for posts no reader sees for over two years means verifying them again nearer the date. The open question is the track’s future: revive it, reframe it as a standalone networking series, or fold parts into SAP-C03. Folding wholesale loses depth that is hard to rebuild, 35 posts touching BGP against SAP-C03’s 4 and 54 on Direct Connect against 18.
The daily re-sweep Routine is disabled. Three firings, nothing produced each
time. CLAUDE.md carries the diagnosis and what to try next if it is revived.
It had no work left to do once ANS-C01 became the only outstanding track.
Open, and the person’s call
A fifth evidence rule for a non-AWS primary source. Recorded at
EXAM-VERIFICATION.md, deliberately not written during a sweep because what
counts as a primary source is an editorial judgement. It is live: a WebFetch
returned an ISO/IEC 42001 control list the page does not support, inventing an
A.8.6 that does not exist. The agents reattributed rather than sourced it, which
is correct by instinct and not by rule.
Work
Prose length, 490 of 537 scenario posts over budget
python3 scripts/check-exam-prose.py --strict # the table
python3 scripts/check-exam-prose.py --over # worst first
_data/prose_budget.yml has an enforced: list of certs, and CI gates every
track on it. Nothing is in that list, which is why the overruns grew
unnoticed. The job is per track: trim, add the cert to enforced, repeat, so
each track that comes right stays right.
| cert | over / posts | median words (budget 2000) |
|---|---|---|
| AIP-C01 | 136 / 137 | 2,928 |
| SAA-C03 | 65 / 66 | 2,836 |
| SAP-C03 | 48 / 48 | 3,164 |
| SCS-C03 | 44 / 45 | 2,798 |
| DOP-C02 | 43 / 44 | 2,622 |
| AIF-C01 | 41 / 41 | 2,987 |
| ANS-C01 | 76 / 76 | 2,960 |
| AIB-C01 | 29 / 66 | 2,268 |
| CLF-C02 | 8 / 14 | 2,165 |
The overruns concentrate in ### The solution, running +92% to +240% against a
400-word budget, which is the section a revising reader re-reads. AIP-C01
first, then AIB-C01, per the exam order above.
What is open here is one question, and it is not a measurement. Measured 8 October 2026 across all 537 scenario posts:
- Exam level does not predict length. Foundational 2,839 words, Associate 2,836, Professional 2,921, Specialty 2,898: every group within 3% of the others. Business is the only one that differs, at 2,268, and that is because AIB-C01 is the one track that has been through the pass. So there is no level signal to build per-level budgets on, which is what an earlier session recommended off the medians alone.
- The number of options weighed does not explain it either. Options
correlate with
### The landscapeat r = 0.25, which is nothing at the post level. The bin medians look tidy (3 options 560 words, 9 options 882) only because binning averages the noise out. - At matched option count, the longer tracks are a flat 1.27x the
known-good length. Against the 50 purpose-written AIB-C01 posts, the
professional tracks run 1.27, 1.26, 1.27 and 1.28 at 4, 5, 6 and 7 options.
A constant multiplier is not more options; it is more words per option,
uniformly, which is either 27% padding or the extra mechanism
CLAUDE.mdsays professional posts carry.
The flatness is what makes it a judgement rather than a defect. Padding varies post to post; this does not. So the open question is whether ~2,850 words is right for a non-business scenario post, or whether every track should be cut to AIB’s ~2,200. The second reading is a 120,700-word cut across the corpus, and nobody should take that decision from a ratio.
Reproduce any of the three with scripts/check-exam-prose.py plus the option
counts from the Evaluation tables; the script’s docstring carries the
calibration history.
Four tracks unwritten, about 370 posts
SOA-C03, DVA-C03, DEA-C01 and MLA-C02 have no posts. They publish from Feb 2028
at the current spacing, MLA-C02 last in Feb 2029. Plan each one before writing
it (scripts/workflows/plan-exam-track.js), and size the post count by
objectives per post rather than by the domain’s exam weight.
What the October 2026 re-sweep says about where the effort goes: mechanism defects concentrate in the long formats, 92 in 93 SAA-C03 posts and 63 in 92 AIF-C01 posts, almost none in the quizzes. That is the defect class no read-through catches, because nothing on the page contradicts anything else.
Queue runway, and two shelves that were spent
python3 scripts/queue-runway.py --series # the table, measured
python3 scripts/queue-runway.py --below 365 # exit 1 if a queue is thinner
The numbers are not reproduced here, because a runway table in markdown
is wrong as soon as anyone schedules or re-lays a post. The script
classifies queues by importing reschedule.py’s own constants, so it
cannot drift from the way the laying code sees them.
As at 8 October 2026 the exam queue is the nearest cliff at 2029-06-20, ahead of Thursday at 2030-07-04 and Tuesday at 2031-12-09. A first pass at this section claimed Thursday was nearest, which was wrong and is exactly what the script exists to stop. Note that the exam figure is flattered by parked ANS-C01 sitting at the end of it, and that the four unwritten tracks fill slots inside that span rather than extending it.
Thursday is the queue with the shape problem rather than the shortest runway. Consulting and Craft runs out on 2029-01-04, The Workshop on 2029-03-22 and High Performance Teams on 2028-04-13, while Under the Hood runs to 2030-07-04, so the slot CLAUDE.md describes as mixed between four series is single-series for its last eighteen months: 73 Under the Hood posts from 2029 against 5 of everything else. Nobody decided to stop writing craft posts; only one of the four series had a shelf to restock from.
All five Under the Hood candidates from the first shelf were written (2030-06-06 to 2030-07-04), and both narrative candidates were written as The Shortlist (11 posts) and The Safety Case (9 posts). All three shelves now carry fresh candidates, marked as things to mull over rather than commitments. High Performance Teams has five posts and no shelf; whether it continues or folds into Consulting and Craft is an open editorial call.
Writing the current shelves
Commissioned 8 October 2026: write every live candidate on the three shelves, to the house style, and keep this table current as each one lands. A shelf entry is an outline; the post is the deliverable. Tick a row in the PR that adds the post, not before.
The Thursday stream is free from 2030-07-11, which satisfies the two candidates whose outlines ask to be scheduled after March and June 2030 (they want backlinks that publish then).
python3 scripts/queue-runway.py --series # has the slot moved?
grep -c '^## ' NEXT-*-IDEAS.md # what is still on a shelf
| # | post | series | slot | state |
|---|---|---|---|---|
| 1 | Reading Code You Didn’t Write | Consulting and Craft | 2030-07-11 | written |
| 2 | The Restore You Haven’t Tried | Consulting and Craft (Hands On) | 2030-07-18 | written |
| 3 | Test Data That Isn’t Production | Consulting and Craft (Hands On) | 2030-07-25 | written |
| 4 | When They Want a Date | Consulting and Craft | 2030-08-01 | written |
| 5 | Leaving Well | Consulting and Craft | 2030-08-08 | written |
| 6 | How Is a Forecast Made? | Under the Hood | 2030-08-15 | written |
| 7 | How Does a Battery Actually Work? | Under the Hood | 2030-08-22 | written |
| 8 | Where Does It All Go? | Under the Hood | 2030-08-29 | written |
| 9 | How Does a Vote Get Counted? | Under the Hood | 2030-09-05 | written |
| 10 | How Does a Drug Get Approved? | Under the Hood | 2030-09-12 | written |
All ten written, 8 October 2026, totalling 24,110 words: the five Craft
posts run 22 to 25 minutes and the five Under the Hood 28 to 35. Every one
comes back within budget on measure-post.py, with no real em-dashes, none
of the banned tics, and backlinks only to posts dated earlier than its slot.
The Craft and Under the Hood shelves now hold no live candidates.
The three narrative candidates are not in it. The Standard of Proof, The Reproducible Result and The Floor are arcs, not posts: the written equivalents from earlier shelves came to 52 posts (Tentpeg), 11 (The Shortlist) and 9 (The Safety Case). Committing to three arcs is a different decision from writing ten Thursday posts, and it needs CANON work before a word of prose. Left for an explicit call.
A note on reading these shelves: they are layered, newest section last, so an entry near the top may already be written. Tentpeg, The Shortlist and The Safety Case all read as open candidates and are all done. Check the series counts before treating a shelf entry as work.
Dependencies
Three open Dependabot PRs (#1838 actions, #1852 cdk, #1853 everything-else) and
9 advisories on main, 6 high and 3 moderate, as of 8 October 2026. The npm
advisories were last cleared on 1 October, so these are newer than that.
gh api 'repos/barkingiguana/barkingiguana.github.com/pulls?state=open'
None of the three is a chore, and the reason is the deploy wiring.
deploy-analytics.yml, deploy-contact.yml and deploy-signup.yml trigger on
a push to main touching their directory, so #1852 and #1853 are each three
live AWS deploys on merge. #1838 bumps actions/checkout, setup-go and
setup-node a major version each across five workflows, one of which is the
scheduled publisher, and a publisher that breaks does so silently.
#1853 does not build. Checked out and typechecked 8 October: at the
versions it resolves (typescript@7.0.2, @types/node@26.6.4) all three apps
return the same four errors, TS2591 on process, path and child_process
plus TS2304 on __dirname. main is clean at typescript@5.9.3, so it is
the bump. TypeScript 7 no longer applies the automatic @types/* inclusion the
three tsconfig.json files relied on, having no types field of their own.
Adding "types": ["node"] takes analytics from 4 errors to 0 on TS 7, and is
a no-op on TS 5.9.3, so it can land ahead of the bump. moduleResolution:
node16 gets to 1 error and a lib change to none of them. Diagnosis and the
measured table are on #1853.
A clean typecheck is the floor; cdk synth on each app is the check that
decides a two-major TypeScript jump in the code that provisions
infrastructure. #1852 touches the same six files, so whichever lands first
leaves the other needing a rebase.
Done, where the result is worth keeping
Eight of nine written tracks are at the 2026-10 verification standard
(python3 scripts/resweep.py --status). The outstanding 109 are all ANS-C01,
deliberately held.
What that sweep measured, over 7,338 AWS claims in 185 posts already recorded verified: 492 wrong facts, 155 mechanism defects, 51 unpublished figures, 20 availability defects, 85 arithmetic errors, and 15 posts clean. A four-post sample sizes a track to within about 25%, and only if it is stratified by format: AIF-C01’s two halves split by format and came in at 1.57 and 3.46 wrong facts a post.
The exam queue has a two-week gap between runs and SAA-C03 sits entirely
after Christmas (python3 scripts/relay-exam-queue.py --summary). The anchors
in EXAM_RUNS are derived from the gap rather than chosen, so changing the gap
means recomputing all of them.