The 57-hour lesson

One annotation chat, hand-built. One second-brain test, method-driven. Same week.

Kid mode. We made one webpage two different ways. The first way had no plan, so we fixed the same five things over and over for more than two whole days. The second way had a plan, so it was done before lunch. The fix: write the five rules down once, and let a little program check them every time, so nobody has to remember them again.

The contrast

Both sessions ran the same week and shipped to the same site. The difference was method, not difficulty.

Community + Parks annotation
57.1 h

Jul 5 → Jul 8 · 671 turns · 571 tool calls · 440 Bash · no reusable skill

Obsidian 2nd-brain speed test
1.5 h

Jul 8, one sitting · 84 turns · 62 tool calls · 48 Bash · defined method

MeasureAnnotation2nd brainRatio
Wall-clock time57.1 h1.5 h38×
User turns67184
Tool calls57162
Bash calls44048

Measured from the raw session transcripts (first timestamp → last), not estimated.

Where the 57 hours went

The transcript shows the same five corrections coming back again and again. Verbatim from the chat:

"callbacks not just reoccurring objects or people"

"you have wrong people there. make sure right"

"it does need to have the speakers name on there, how does it not"

"a lot of common phrases are still in there though"

"anti ai corpus should have removed you saying name named or names"

"parks-s5-future-seeds should have all seasons"

The five fixes, now hard-gated

Locked into ~/.claude/skills/_shared/annotation_gate.py and feedback_annotation_callback_page_hard_gates. Run it at build-top and before ship.

G1 speaker-attribution, every dialogue line carries a named speaker, from speaker-TAGGED scripts, never guessed. (deterministic, blocks)
G2 callback-quality, a callback is a deliberate reference or running gag with a payoff, not merely a recurring object or person. (judgment)
G3 common-phrase-noise, the list is not dominated by generic filler; the phrase filter must actually strip it before the list is called clean. (deterministic, blocks)
G4 anti-AI prose, the page's own prose passes the anti-AI corpus, and name / named / names is banned outright. (deterministic, blocks)
G5 completeness, the index covers the full declared scope, no partial ship. (judgment)
META no-hand-build, annotation work runs through a reusable pipeline, not 440 ad-hoc Bash calls. No skill yet? That is the first task, not the page.

Proof the gate catches it

Run against the un-gated community-annotate-s1e3 page, it fails exactly the defects the chat kept re-fixing:

[FAIL] G1 speaker-attribution: 0 speaker markers found (need >=3)
[PASS] G3 common-phrase-noise: 0/0 quoted items are generic filler (0%)
[FAIL] G4a name-tell: 4 occurrences of name/named/names (must be 0)
[FAIL] G4b anti-ai-corpus: GATE: FAIL
annotation_gate: 3 deterministic gate(s) FAILED, do not ship.   (exit 1)

Sources: session transcripts 24f0e49b (annotation) and 5b290f1a (2nd-brain test).