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
1 change: 1 addition & 0 deletions .agents/skills/async-first-communication/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ the work. A task is not done until its state is readable asynchronously.

| What | Where |
|---|---|
| Current WIP + goals snapshot (cold-start entry) | `STATUS.md` at repo root — links only, updated in the same commit as the state change |
| Decision / groomed design / vote | the project's docs (`docs/projects/<id>/`), with rationale |
| Task status + claims + handoffs | kanban board (`kanban-md`, local) AND the committed snapshot (project `backlog.md` State section) |
| Operational state across sessions | the project runbook (statuses + handoff notes pasted VERBATIM) |
Expand Down
11 changes: 11 additions & 0 deletions .okf/log.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,17 @@ Also corrected: the ~1e-6 noise figure in test-gates and in the code comment
was macOS-local and read as universal. Same overclaim shape the #566 reviewer
caught one layer down.

## 2026-08-22 - STATUS.md is the repo's cold-start surface

Paul asked for a way for anyone landing in the repo to know the goals and the
WIP without archaeology. The answer is `STATUS.md` at repo root: goals (links),
a WIP table, blocked-on-Paul — links only, no duplicated state, updated in the
same commit as the state change (same enforcement wording as the OKF rule,
which is the one that has held). Ownership boundary unchanged: the vault still
owns operations; STATUS.md points, never copies. Recorded in
[company-layer-ownership](workflows/company-layer-ownership.md); pointer + rule
added to CLAUDE.md, AGENTS.md, and the async-first skill's surfaces table.

## 2026-08-22 - the site sells one thing, and title claims are now a canon rule

Paul changed the positioning: the site sells an embedded team of senior
Expand Down
13 changes: 13 additions & 0 deletions .okf/workflows/company-layer-ownership.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,19 @@ into published copy days after they were removed from 13 blog posts.
Never copy a company number out of a vault note into published copy. Corrected
in the vault the same day; the guard lives in the CLAUDE.md banner.

# The repo's cold-start surface: STATUS.md

Added 2026-08-22 (Paul, via /claude-md-improver): `STATUS.md` at repo root is
the single cold-start index — goals, WIP table, blocked-on-Paul — **links
only**. It never copies vault-owned state (bet status, numbers, weekly loop)
or company facts into itself; it points at the vault and the per-project
surfaces (`docs/projects/<id>/README.md` / `backlog.md`). Update rule
(CLAUDE.md §Behavioral Constraints, AGENTS.md): a session that changed what's
in flight updates `STATUS.md` in the same commit/PR, or the session is not
done. Enforcement is rule-only by deliberate choice — no freshness test, no
hook (the 2510 `_ARCHIVED_TASK-TRACKER` rotted under tooling-free neglect;
the OKF same-commit wording is the pattern that has held).

# Where the routers point

Aligned 2026-08-17: `AGENTS.md`, `docs/workflows/BASE_HANDBOOK.md`,
Expand Down
15 changes: 6 additions & 9 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Canonical instructions live in `CLAUDE.md`. Read that first.
Session start: always read `@docs/workflows/BASE_HANDBOOK.md` and `@docs/workflows/flow-router.md`.

**Async-first communication (SOP for ALL agents):** written, discoverable artifacts are the default for every decision, finding, status change, and handoff — sync interaction is the exception and its outcome gets written back same-day. Full rules + canonical surfaces table: `.agents/skills/async-first-communication/SKILL.md`. A task is not done until its state is readable asynchronously.
**Async-first communication (SOP for ALL agents):** written, discoverable artifacts are the default for every decision, finding, status change, and handoff — sync interaction is the exception and its outcome gets written back same-day. Full rules + canonical surfaces table: `.agents/skills/async-first-communication/SKILL.md`. A task is not done until its state is readable asynchronously. **Cold-start surface: `STATUS.md` at repo root** (goals + WIP + blockers, links only) — a session that changed what's in flight updates it in the same commit/PR, or the session is not done.

**Four eyes on every stage, author != verifier (SOP for ALL agents):** the point is agents collaborating to find the TRUTH — a single agent cannot find its own blind spot, because it checks the thing it MEANT to build. Every change is **written by one sub-agent and verified by a different one**; the author never produces the evidence for its own claim. The review lands before the artifact leaves the workshop: a plan is peer-reviewed BEFORE the user is asked, a diff BEFORE commit, a finding is reproduced before it is reported, a measurement re-derived before it is quoted. Brief reviewers with the goal and the artifact, never your conclusions; ask for measurements, not verdicts. Routing: internal sub-agents for every per-stage review, `/codex:review` ONCE at the final verify before merge for USER-FACING changes (it is slow — never in the inner loop); docs-only and instruction-layer changes ship on internal review + CI and apply its findings as a follow-up. No reviewer tooling in this runtime? Fall back agent → external → peer session → human, and mark the change UNREVIEWED if none is reachable. Full protocol: the `jt-delivery:contract` skill (plugin `jt-delivery@jetthoughts`); repo bindings: `docs/workflows/autonomous-delivery-prompt.md`.

Expand Down Expand Up @@ -45,14 +45,11 @@ Projects live in `docs/projects/<project-id>/`. Each project follows a standard
onboarding path:

**First visit — read in this order:**
1. `PROJECT-INDEX.md` — navigation hub, agent routes, integration rules
2. `GOAL-AT-A-GLANCE.md` — one-page exec summary, strategy, metrics
3. `.agent/prd/PRD.md` — formal spec (if PRD-driven project)
4. `.agent/tasks.json` — machine-readable task graph (if PRD-driven)
5. `TASK-TRACKER.md` — live task queue, migration schedule, active phase

**Project health:** `.agent/STATUS.md` — cross-project RAG dashboard.
Per-project PM health reports in `40-49-review/40.10-*.md`.
1. `STATUS.md` (repo root) — cross-project view: what's in flight, goals, blockers
2. The project's `README.md` or `GOAL-AT-A-GLANCE.md` — one-page status / exec summary (2608's README is the template: status paragraph, read-order table, open decisions, known reds)
3. `TASK-TRACKER.md` or `backlog.md` — live task queue, active phase

(The former `.agent/STATUS.md` / `.agent/prd/PRD.md` / `.agent/tasks.json` stack never existed in this repo — removed 2026-08-22; root `STATUS.md` is the cross-project dashboard.)

**Skills:** Project-specific skills in `.skills/`. Global skills loaded via
`skill` tool.
Expand Down
4 changes: 3 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
>
> **Company FACTS are NOT vault-owned.** Every claim in `.okf/content/claims-canon.md` is canon HERE, enforced by `test/unit/marketing_copy_test.rb`. Never copy a company number out of a vault note into published copy (the vault itself carried two banned strings on 2026-08-17). The vault decides what we're doing; the canon decides what we're allowed to say.

**What's in flight + goals**: `STATUS.md` at repo root — the cold-start surface; update it in the same commit as any WIP change (rule in §Behavioral Constraints).

**Type**: Hugo static site blog | **Build**: `bin/hugo-build`
**Test**: `bin/qtest --changed` (per change — tests the pages your diff touches) / `bin/test --smoke` (fixed 17-test core net, ~50s / ~30s CI) / `bin/rake test:critical` (milestones) / `bin/test` + `bin/dtest` (PR prep). qtest and smoke are complementary: qtest follows your diff, smoke is a constant basics check.
**CSS**: PostCSS pipeline | **Content**: `content/blog/` (Markdown + Hugo frontmatter)
Expand Down Expand Up @@ -81,7 +83,7 @@ Operational knowledge lives in `.okf/` (`build/`, `content/`, `design/`, `workfl
- **Feature/idea intake**: `/deliver <idea>` (from the `jt-delivery` plugin) — triage → GOAL → author≠verifier orchestration per the `jt-delivery:contract` skill §1a; repo-specific bindings (gates, canon, reviewer routing): `docs/workflows/autonomous-delivery-prompt.md`.
- **Manager triage (Paul 2026-08-01)**: Paul adds requests mid-flight; triage each against the active plan — now / sequenced / backlog / groom-first — and report the verdict in one line so he can override. Deferring is a decision; interrupting a gated pipeline for a non-critical request is the failure. **Autonomy grant**: handle sprints end-to-end; for big/critical calls AND any highly OPINIONATED question (design taste, naming, strategy trade-offs — anywhere reasonable people disagree) run a voting panel of subagents with DISTINCT PERSONAS/lenses and organize an explicit vote (Paul 2026-08-21); make the call (split + irreversible → hold for Paul). Record every autonomous call with its evidence. Paul's explicit words override any panel.
- **Agent 4-eyes on EVERY stage, author ≠ verifier (Paul 2026-08-20, widened 2026-08-21)**: every change is written by one agent and verified by a different one; review lands BEFORE the artifact leaves the workshop (plan before Paul sees it, diff before commit, finding before reported, measurement before quoted). Brief reviewers with goal + artifact, never conclusions; ask for measurements, not verdicts. Internal sub-agents per stage — **model routing (Paul 2026-08-21): critical decisions, editing/outlining AND design critique on fable; coding, code review AND content writing on opus; mechanical/simple tasks on sonnet; spawns never inherit the session model implicitly — pass `model` on every Agent call**; `/codex:review` once at the merge gate for user-facing changes. Full protocol: `jt-delivery:contract` skill §5; repo routing: `docs/workflows/autonomous-delivery-prompt.md`. (Evidence: 2026-08-20/21 — reviewers caught a CSS-breaking defect, a fabricated quote, and 11 findings on the delivery prompt itself, all after author self-review.)
- **Async-first (MANDATORY)**: written, discoverable artifacts for every decision, finding, and handoff; sync is the exception, written back same-day. A task is not done until a cold session can read its state with zero questions. Canonical surfaces: `.agents/skills/async-first-communication/SKILL.md`; same SOP in `AGENTS.md`.
- **Async-first (MANDATORY)**: written, discoverable artifacts for every decision, finding, and handoff; sync is the exception, written back same-day. A task is not done until a cold session can read its state with zero questions. Canonical surfaces: `.agents/skills/async-first-communication/SKILL.md`; same SOP in `AGENTS.md`. **Cold-start surface: `STATUS.md` at repo root** — a session that changed what's in flight (started/finished/parked a workstream, shipped a PR, hit a blocker) without updating `STATUS.md` in the same commit/PR is not done.
- **Company facts have a canon**: check `.okf/content/claims-canon.md` before publishing any number (founding 2008-09-01; tenure from `site.Params.foundingYear`; "4.8/5 on Clutch" linked, NO review count; founder 22+ vs company 18+). A number with no in-repo source is a defect. Correcting one means sweeping the instruction layer too — `PRODUCT.md`, `docs/business/`, outreach kits have re-introduced bad canon before (4 of 8 published figures were wrong on 2026-08-14).
- **Text ratchets read RENDERED output, not source**: `marketing_copy_test` globs source and missed three rendered-only defects on 2026-08-14 (unglobbed partial, line-wrapped banned phrase, composed nested `<main>`). Queued: `docs/20-29-testing-qa/20.10` §3b P0-4.
- **Zero**: generic AI language · unsupported claims · Hugo build breaks (`bin/hugo-build` validates) · ad hoc test scripts (header Test line commands only) · Python for analysis (use `rg`/`sed`/`awk`) · duplicate files (`*_new.*`, `*_backup.*`).
Expand Down
38 changes: 38 additions & 0 deletions STATUS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Status — what's in flight

> Cold-start surface. One screen: goals, WIP, blockers. Links carry the detail —
> this file never duplicates project state, it points at it.
> **Update rule**: any session that changes what's in flight (starts/finishes/parks
> a workstream, ships a PR, hits a blocker) updates this file in the same commit/PR.
> **When updating: verify against the artifact (the ledger, the file, the PR), never
> a tracker line — trackers rot, and this file must not inherit their staleness.**

## Goals

- **Company goals / OKR / weekly numbers**: vault `~/Documents/pkm/jt-operations.md` (host-only — vault owns operations; this repo carries growth/marketing execution).
- **Bet of record**: Vibe Code Rescue — status is vault-owned (`jt-vcr-runbook.md`; repo mirror [`docs/business/index.md`](docs/business/index.md)); campaign artifacts in [`docs/projects/2607-vibe-code-rescue/`](docs/projects/2607-vibe-code-rescue/backlog.md).
- **Content plan of record**: [`20.09 (Aug 2026)`](docs/projects/2510-seo-content-strategy/20-29-strategy/20.09-content-plan-revision-aug-2026.md) — its §1 governing constraint: **outreach outranks new posts**.

## Now / WIP

| Workstream | State | Next step | Entry point |
|---|---|---|---|
| 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 20.09 repositioned copy; then Paul's 5 decisions | [`2608 README`](docs/projects/2608-site-design-system/README.md) |
| Blog / SEO (2510) | Constrained by 20.09 §1 (outreach first). R-queue empty/retired; replacement queue is §13 (restocked 2026-08-21) | Per §1: LinkedIn cadence + sourcing outrank a new post; when drafting, take §13 N-queue | [`20.09 §13`](docs/projects/2510-seo-content-strategy/20-29-strategy/20.09-content-plan-revision-aug-2026.md) |
| 2605 course | v2 live; measuring. Diagnosis: **arrival, not content** (GSC/GA/Clarity triple-read 2026-08-20) | Arrival/discovery actions per 50.05; 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 | One known red (stale linux baseline, see 2608 README §Known red) | Diff record-vs-test build paths before re-recording | [`test-gates`](.okf/build/test-gates.md) |

**Not in flight**: 2604 typography — closed 2026-08-08 (P2 leftovers re-homed). 2509 CSS migration — Phase C complete 2026-07-19, Phase D backlog dormant; the 2608 clean-slate rail is the live CSS strategy ([ADR-0006](docs/adr/0006-clean-slate-dual-run.md)).

## Blocked on Paul

| What | Where the full ask lives |
|---|---|
| Five 2608 decisions (register pick, 3 claims, first page, legacy CTO sweep, Sept measurement gate) | [`2608 README`](docs/projects/2608-site-design-system/README.md) |
| **Joy Adamson override** (1 min; only survivor of outreach batch 1, still publicly unanswered) | [`20.09 §1`](docs/projects/2510-seo-content-strategy/20-29-strategy/20.09-content-plan-revision-aug-2026.md) desk table + 2607 backlog card #12 |
| Three 2605 fabricated-fact findings (five-tech-words client claim, $78K/$400 story, SVG chart stats) | [`2605 TASK-TRACKER`](docs/projects/2605-tech-for-non-technical-founders/TASK-TRACKER.md) §Aug-20 sweep |
| 2607 T3 (Gmail warm-source consent) + T10 (split strategy docs, [#449](https://github.com/jetthoughts/jetthoughts.github.io/issues/449)) | [`2607 backlog`](docs/projects/2607-vibe-code-rescue/backlog.md) |

Last updated: 2026-08-22
Loading
Loading