Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions STATUS.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@
| LinkedIn (primary demand lane) | **LIVE** — 3 posts published (2026-08-13/18/19), first metrics read 2026-08-20; ICP-E lane on disk: 1 posted + 4 approved (of 10 planned), validation clock running | Post an approved draft (week1-tue / week1-wed) at Stream 0 cadence (3-4/wk) | [`metrics-ledger`](linkedin-posts/metrics-ledger.md) · [`plan`](docs/workflows/linkedin-icp-validation-plan.md) |
| 2608 site design system (v2 `/next/` rail) | Paused 2026-08-22 mid-flight; 3 pilots built + voted | Apply the [repositioned pilot copy](docs/projects/2608-site-design-system/20-29-strategy/20.09-repositioned-pilot-copy.md) (2608's own 20.09 — not the content plan); then Paul's 5 decisions | [`2608 README`](docs/projects/2608-site-design-system/README.md) |
| Positioning / homepage offer (2608 niche research + [ADR-0007](docs/adr/0007-homepage-main-offer-and-copy.md)) | **Paused 2026-08-22** — 8 research lanes complete, copy drafted + panel-voted, nothing shipped to the live site; landed on master via [#606](https://github.com/jetthoughts/jetthoughts.github.io/pull/606) | Resume via the HANDOFF — read its corrections first: the staffing constraint was briefed backwards, so every lane's discards need re-reading before acting on a shortlist | [`HANDOFF`](docs/projects/2608-niche-research/HANDOFF.md) |
| Blog / SEO (2510) | **Pipeline rebuilt and 3 posts shipped 2026-08-22.** It previously had no invokable way to produce a post - `/blog-next` never writes and the delivery half existed only as agents. Now three skills: `/blog-operator` (the door, REPAIR > UPGRADE > WRITE > RESTOCK), `/blog-next`, `/blog-write`. Live: [what-senior-developers-catch-that-ai-misses](content/blog/what-senior-developers-catch-that-ai-misses/index.md), [how-to-audit-content-you-didnt-write](content/blog/how-to-audit-content-you-didnt-write/index.md), [when-did-a-test-last-fail-on-purpose](content/blog/when-did-a-test-last-fail-on-purpose/index.md), plus an upgrade to claude-code-xp-team-workflow. Fabricated case studies purged from 14 posts; two ratchets live in `marketing_copy_test.rb` (fabrication baseline 9, uncited baseline 0 — 33→0 after batch-citing all 33 remaining posts 2026-08-24 — 34→33 after citing propshaft 2026-08-24). §1 outreach constraint still stands - Paul drove these directly. **2026-08-23: four more posts written and SCHEDULED (08-26, 09-02, 09-09, 09-16) on [#613](https://github.com/jetthoughts/jetthoughts.github.io/pull/613)**, then put through a four-lens cold-eyes panel that found 3 wrong claims, 2 internal contradictions and a set-level voice tic (20 of 26 section closers ended on a declarative verdict). All fixed except one: `delegate-the-goal-not-the-task` is HELD on a fabricated example (see Blocked on Paul). New defect class recorded in [`fabrication-ratchet`](.okf/content/fabrication-ratchet.md) — two verbatim quotes can compose into a false comparison, and the chart drawing it survives the prose fix. **2026-08-28: editorial-system blueprint consolidated** - four gate upgrades landed in the three skills (falsifiable-thesis outline test, evidence-pack excerpts + wording-strength, citation-spend tracing, code-rot REPAIR trigger); corpus-factory machinery rejected with reasons in [`90.13`](docs/90-99-content-strategy/strategy-analysis/90.13-editorial-system-consolidation-2026-08-28-reference.md). **2026-08-28 PM: `ai-powered-code-reviews-transforming-development-workflows` upgraded** on `blog/upgrade-ai-code-review-trust`. Root cause was structural, not voice: the post welded a first-hand engineering incident to a founder checklist that already exists as `dev-shop-ai-code-review-what-to-ask` (08-26), and the abstraction slop lived at the seam. Cut the second audience, 934 to 563 words. Four-lens panel + independent verifier + visual gate. Fixed: two false claims about our own fix, an unprovable attribution (no artifact preserves the failing response - `workflow.rb` has one commit and arrived fixed), and a proof link that 404d (`blob/main` on a repo with no `main` branch). Cover image added (was missing). The diagram SVG was carrying the exact aphorisms cut from the prose - text inside SVGs is invisible to every ratchet, new concept in [`blog-pipeline`](.okf/workflows/blog-pipeline.md). **§13p scheduled 09-09** as a §5 durable-news SWAP displacing §13l (now marked DISPLACED, returned to queue): RubyLLM 2.0 decomposed the agent loop, which is the seam our own published weakness (`findings.md` #5, a delegation budget is not a spend budget) had no place to live at. | **§13h**: COMPLETE — all 33 uncited posts now carry ## Sources. Every new substantial post will fail the ratchet unless cited. **N9** still parked: the AI code-search benchmark, design owed before any runs. **Panel gaps NOT closed on #613**: 0 of 4 posts carry a runnable code block (against `blog-writer-reference-samples.md`), and 0 carry a first-party number. | [`20.09 §13h`](docs/projects/2510-seo-content-strategy/20-29-strategy/20.09-content-plan-revision-aug-2026.md) **2026-08-28: [should-you-build-it-in-rails](content/blog/should-you-build-it-in-rails/index.md) written, SCHEDULED 09-23, on `blog/case-against-rails`.** The requested thesis (Rails ecosystem stability beats JS/TS for long-term SaaS) was FALSIFIED at primary and NOT published: Rails' own policy calls minors "major versions of Semver", both Rails and Next.js give 2-year windows, and Paul flagged the framework-vs-framework comparison as an unlike-scope error. Rebuilt around what a non-technical founder can actually check. Four-lens panel found a mis-trimmed policy quote and a hiring ratio inflated 3.4:1 to 8:1 by that unstable premise; both fixed. New concept in [`fabrication-ratchet`](.okf/content/fabrication-ratchet.md): the comparison itself can be the defect. **2026-08-28 PM: corpus credibility sweep, 13 PRs.** Repaired the LangChain guide ([#632](https://github.com/jetthoughts/jetthoughts.github.io/pull/632), dead clone repo + 27 stale imports + 19 dead model refs), swept the corpus for both classes ([#633](https://github.com/jetthoughts/jetthoughts.github.io/pull/633)), fixed leaked editing instructions and false cover declarations on top-traffic pages ([#634](https://github.com/jetthoughts/jetthoughts.github.io/pull/634)), and reached THREE different verdicts on three benchmark tables ([#638](https://github.com/jetthoughts/jetthoughts.github.io/pull/638) deleted - 1.2M jobs/day vs 12 jobs/sec is arithmetically impossible; [#639](https://github.com/jetthoughts/jetthoughts.github.io/pull/639) deleted - the 450/120/73 triple appeared across Rails AND Django; [#640](https://github.com/jetthoughts/jetthoughts.github.io/pull/640) KEPT and qualified - Falcon's tables are coherent, just unreproducible). Gate fixes: verdicts now bind to a sha ([#630](https://github.com/jetthoughts/jetthoughts.github.io/pull/630)), `test:links_external` wired to the daily cron after being dead code for months ([#636](https://github.com/jetthoughts/jetthoughts.github.io/pull/636)), visuals ratchet 72 to 69 ([#637](https://github.com/jetthoughts/jetthoughts.github.io/pull/637)). Corpus now: 0 dead models, 0 404 repos, 0 missing covers, 0 fabricated triples. |
| Blog / SEO (2510) | **Pipeline rebuilt and 3 posts shipped 2026-08-22.** It previously had no invokable way to produce a post - `/blog-next` never writes and the delivery half existed only as agents. Now three skills: `/blog-operator` (the door, REPAIR > UPGRADE > WRITE > RESTOCK), `/blog-next`, `/blog-write`. Live: [what-senior-developers-catch-that-ai-misses](content/blog/what-senior-developers-catch-that-ai-misses/index.md), [how-to-audit-content-you-didnt-write](content/blog/how-to-audit-content-you-didnt-write/index.md), [when-did-a-test-last-fail-on-purpose](content/blog/when-did-a-test-last-fail-on-purpose/index.md), plus an upgrade to claude-code-xp-team-workflow. Fabricated case studies purged from 14 posts; two ratchets live in `marketing_copy_test.rb` (fabrication baseline 9, uncited baseline 0 — 33→0 after batch-citing all 33 remaining posts 2026-08-24 — 34→33 after citing propshaft 2026-08-24). §1 outreach constraint still stands - Paul drove these directly. **2026-08-23: four more posts written and SCHEDULED (08-26, 09-02, 09-09, 09-16) on [#613](https://github.com/jetthoughts/jetthoughts.github.io/pull/613)**, then put through a four-lens cold-eyes panel that found 3 wrong claims, 2 internal contradictions and a set-level voice tic (20 of 26 section closers ended on a declarative verdict). All fixed except one: `delegate-the-goal-not-the-task` is HELD on a fabricated example (see Blocked on Paul). New defect class recorded in [`fabrication-ratchet`](.okf/content/fabrication-ratchet.md) — two verbatim quotes can compose into a false comparison, and the chart drawing it survives the prose fix. **2026-08-28: editorial-system blueprint consolidated** - four gate upgrades landed in the three skills (falsifiable-thesis outline test, evidence-pack excerpts + wording-strength, citation-spend tracing, code-rot REPAIR trigger); corpus-factory machinery rejected with reasons in [`90.13`](docs/90-99-content-strategy/strategy-analysis/90.13-editorial-system-consolidation-2026-08-28-reference.md). **2026-08-28 PM: `ai-powered-code-reviews-transforming-development-workflows` upgraded** and MERGED ([#642](https://github.com/jetthoughts/jetthoughts.github.io/pull/642)). Root cause was structural, not voice: the post welded a first-hand engineering incident to a founder checklist that already exists as `dev-shop-ai-code-review-what-to-ask` (08-26), and the abstraction slop lived at the seam. Cut the second audience, 934 to 563 words. Four-lens panel + independent verifier + visual gate. Fixed: two false claims about our own fix, an unprovable attribution (no artifact preserves the failing response - `workflow.rb` has one commit and arrived fixed), and a proof link that 404d (`blob/main` on a repo with no `main` branch). Cover image added (was missing). The diagram SVG was carrying the exact aphorisms cut from the prose - text inside SVGs is invisible to every ratchet, new concept in [`blog-pipeline`](.okf/workflows/blog-pipeline.md). **§13p scheduled 09-09** as a §5 durable-news SWAP displacing §13l (now marked DISPLACED, returned to queue): RubyLLM 2.0 decomposed the agent loop, which is the seam our own published weakness (`findings.md` #5, a delegation budget is not a spend budget) had no place to live at. | **§13h**: COMPLETE — all 33 uncited posts now carry ## Sources. Every new substantial post will fail the ratchet unless cited. **N9** still parked: the AI code-search benchmark, design owed before any runs. **Panel gaps NOT closed on #613**: 0 of 4 posts carry a runnable code block (against `blog-writer-reference-samples.md`), and 0 carry a first-party number. | [`20.09 §13h`](docs/projects/2510-seo-content-strategy/20-29-strategy/20.09-content-plan-revision-aug-2026.md) **2026-08-28: [should-you-build-it-in-rails](content/blog/should-you-build-it-in-rails/index.md) written, SCHEDULED 09-23, on `blog/case-against-rails`.** The requested thesis (Rails ecosystem stability beats JS/TS for long-term SaaS) was FALSIFIED at primary and NOT published: Rails' own policy calls minors "major versions of Semver", both Rails and Next.js give 2-year windows, and Paul flagged the framework-vs-framework comparison as an unlike-scope error. Rebuilt around what a non-technical founder can actually check. Four-lens panel found a mis-trimmed policy quote and a hiring ratio inflated 3.4:1 to 8:1 by that unstable premise; both fixed. New concept in [`fabrication-ratchet`](.okf/content/fabrication-ratchet.md): the comparison itself can be the defect. **2026-08-28 PM: corpus credibility sweep, 13 PRs.** Repaired the LangChain guide ([#632](https://github.com/jetthoughts/jetthoughts.github.io/pull/632), dead clone repo + 27 stale imports + 19 dead model refs), swept the corpus for both classes ([#633](https://github.com/jetthoughts/jetthoughts.github.io/pull/633)), fixed leaked editing instructions and false cover declarations on top-traffic pages ([#634](https://github.com/jetthoughts/jetthoughts.github.io/pull/634)), and reached THREE different verdicts on three benchmark tables ([#638](https://github.com/jetthoughts/jetthoughts.github.io/pull/638) deleted - 1.2M jobs/day vs 12 jobs/sec is arithmetically impossible; [#639](https://github.com/jetthoughts/jetthoughts.github.io/pull/639) deleted - the 450/120/73 triple appeared across Rails AND Django; [#640](https://github.com/jetthoughts/jetthoughts.github.io/pull/640) KEPT and qualified - Falcon's tables are coherent, just unreproducible). Gate fixes: verdicts now bind to a sha ([#630](https://github.com/jetthoughts/jetthoughts.github.io/pull/630)), `test:links_external` wired to the daily cron after being dead code for months ([#636](https://github.com/jetthoughts/jetthoughts.github.io/pull/636)), visuals ratchet 72 to 69 ([#637](https://github.com/jetthoughts/jetthoughts.github.io/pull/637)). Corpus now: 0 dead models, 0 404 repos, 0 missing covers, 0 fabricated triples. |
| 2605 course | v2 live; measuring. Diagnosis: **arrival, not content**; course SEO/AEO **closed** (Paul 2026-08-21) | LinkedIn arrival-test cards **LI-0…LI-D** in [`content-plan`](linkedin-posts/content-plan.md); no new funnel posts on the unproven bridge | [`TASK-TRACKER`](docs/projects/2605-tech-for-non-technical-founders/TASK-TRACKER.md) |
| 2607 campaign tasks | Cold-public-sourcing premise tested and **failed** (3 sweeps, 4 venues, 0 verified-fresh rows; Reddit still un-openable) | Sept-restart Paul decision: retire the cold lane or buy Reddit API access (backlog §c) | [`2607 backlog`](docs/projects/2607-vibe-code-rescue/backlog.md) |
| Test/CI hygiene | **Gates rebuilt 2026-08-22.** Fault-injecting 8 realistic defects caught **3**; now catches **8** ([#576](https://github.com/jetthoughts/jetthoughts.github.io/pull/576), audit in [`20.11`](docs/20-29-testing-qa/20.11-gate-fault-injection-2026-08-22-reference.md)). Link job was excluding 90% of links — 114,050 checked now vs 15,642, and it found 5 real site defects ([#574](https://github.com/jetthoughts/jetthoughts.github.io/pull/574)). `bin/dtest` was comparing **nothing** from a worktree ([#578](https://github.com/jetthoughts/jetthoughts.github.io/pull/578)). CI Linux screenshot job green (run 32565008850) | **Paul decides the dtest arch policy** (below); otherwise nothing queued | [`test-gates`](.okf/build/test-gates.md) |
| Rendering stack → **arm64, and DONE** | **Closed 2026-08-22.** arm64 everywhere ([#589](https://github.com/jetthoughts/jetthoughts.github.io/pull/589) merged `efe85c228`, CfT `153.0.8010.5`, CI `ubuntu-24.04-arm`, compose PINS arm64). Baselines re-recorded on master (`dc11791ab`, all 55). **Local `bin/dtest` is now GREEN against CI's baselines — `55 compared, no failures`** — so the year-old codeblocks drift was stale baselines, not Debian-vs-Ubuntu, and five explanations were wrong. Gate verified discriminating by fault injection (0 → 16 → 0). `mem_limit: 4g` stays (Paul) | **Nothing queued.** `bin/dtest` is now authoritative for DETECTING visual defects (no expected-red list); CI still owns RECORDING. The GHCR container-publishing plan is CANCELLED — it existed only to close a gap that measurement says isn't open | [`rendering-stack`](.okf/build/rendering-stack.md) |

**Not in flight**: 2604 typography — closed 2026-08-08 (P2 leftovers re-homed); **re-opened for audit 2026-08-28** on Paul's request (scanning + reading experience) — measurement pass running, will land as its own PR since a stylesheet diff triggers the full visual gate and baseline re-records on both platforms. 2509 CSS migration — **project complete 2026-07-19** (tracker in maintenance mode; the dormant remainder is the Phase-E groomed backlog + trigger-conditioned items); the 2608 clean-slate rail is the live CSS strategy ([ADR-0006](docs/adr/0006-clean-slate-dual-run.md)).
**Not in flight**: 2604 typography — closed 2026-08-08 (P2 leftovers re-homed); **re-opened for audit 2026-08-28** on Paul's request (scanning + reading experience) — audit COMPLETE 2026-08-28. Verdict: the surface is measured-good (body 22.4px/1.7, empirical 57-67 chars/line, contrast 18.7:1, heading proximity already correct) - 2604 built it and it holds. Only live finding was the dek reading smaller/fainter than the body it introduces; NOT actioned, and Paul's actual ask turned out to be CONTENT formatting, not CSS - delivered instead as voice-guide section 2 markup on the AI-review post. Fence-size change withdrawn (a benchmarked 2604 decision). Byproducts: 2509 Phase D column-width backlog item can close as "keep 680px, evidence attached", and [#644](https://github.com/jetthoughts/jetthoughts.github.io/pull/644) deletes a dead mobile fence rule that silently superseded a 2604 decision. 2509 CSS migration — **project complete 2026-07-19** (tracker in maintenance mode; the dormant remainder is the Phase-E groomed backlog + trigger-conditioned items); the 2608 clean-slate rail is the live CSS strategy ([ADR-0006](docs/adr/0006-clean-slate-dual-run.md)).

## Blocked on Paul

Expand Down
7 changes: 7 additions & 0 deletions docs/projects/2604-typography-ux/findings-mobile-ux.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,13 @@ H1→H2 = 1.33×, H2→body = 1.41× (good). H3→body = 1.12× (tight).
}

/* 3. Code block: smaller token + tighter padding */
SUPERSEDED 2026-08-28: the font-size half never took effect. A later global
`.blog pre code { font-size: 15.5px }` sorts after this block, and media
queries add no specificity, so mobile has always rendered 15.5px. Re-measured
at 390x844 in Aug 2026: fences wrap (pre-wrap), scroll is contained, no
horizontal page overflow - the horizontal-scroll concern this rule addressed
does not reproduce. Ratified rather than restored; the dead declaration is
deleted. The padding half was always live and stays. */
@media (max-width: 768px) {
.blog pre code { font-size: 14.5px; line-height: 1.6; }
.blog pre { padding: 18px 20px; }
Expand Down
9 changes: 4 additions & 5 deletions themes/beaver/assets/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -433,14 +433,13 @@
font-size: 18px;
line-height: 1.55;
}
/* Code blocks: tighter padding + smaller token to reduce horizontal scroll */
/* Code blocks: tighter padding to reduce horizontal scroll. The token size
that used to live here was dead - the global .blog pre code rule below
sorts later and media queries add no specificity, so mobile always
rendered 15.5px. Measured fine at that size; ratified 2026-08-28. */
.blog pre {
padding: 18px 20px;
}
.blog pre code {
font-size: 14.5px;
line-height: 1.6;
}
}

/* Inline code: inherit paragraph line-height so wrapped code stays on baseline */
Expand Down
Loading