Skip to content

feat(brief): add Falsifiability field so red-impossible criteria are caught at Plan#251

Merged
eduralph merged 2 commits into
mainfrom
feat/246-falsifiability
Jul 5, 2026
Merged

feat(brief): add Falsifiability field so red-impossible criteria are caught at Plan#251
eduralph merged 2 commits into
mainfrom
feat/246-falsifiability

Conversation

@eduralph

@eduralph eduralph commented Jul 5, 2026

Copy link
Copy Markdown
Owner

Closes #246.

Problem

A binding Success criterion can be impossible to make go RED on the topology/harness the brief points Do at — and nothing catches it until Do has burned cycles. In the wyrd render, #257 Iter-3 was rejected after correct engineering because "exactly-one-winner under real partition" is unfalsifiable on a single-TiKV-replica stack (the store can only go unavailable, never split-brain); #365 verified split-brain freedom by code-reading for two cycles because no gate compiled the store.

Change

  • templates/brief.md.tpl: new standalone - **Falsifiability:** field — Plan declares WHERE the binding criterion can be made RED and on WHICH harness/topology Do is pointed at. A red-impossible environment (a topology that can't exhibit the fault; code no gate compiles) is a Plan-blocking gap: provision the env or narrow the criterion before Do runs. Carries the copier update/render fails: .claude/agents/*.md.jinja includes are not clone-root-relative #257/#365 case as the worked example. Orthogonal to Verification posture (green-deferred) and Production reach.
  • agents/planner.md.jinja: the unconditional "Verify before you hand off" pass gains a step obliging Plan to fill Falsifiability and treat a red-impossible criterion as a blocking gap to surface, not ship silent.

Single-source: the .claude/agents/planner.md.jinja wrapper {% include %}s the body, so no duplicate edit.

Verification

  • cd template && make check — 478 driver unit tests pass.
  • agents/planner.md.jinja parses cleanly (jinja2).
  • Render+run test (tests/test_render_and_run.py) skips locally without copier; runs in CI.

🤖 Generated with Claude Code


Review round 1 (Codex) — addressed in 2bee87a

  • Falsifiability missing from alternate templates → added the parsed Falsifiability field to design-proposal.md.tpl and plan-pointer.md.tpl, so the unconditional "every brief" gate is honest for every template that can become brief.md.

…caught at Plan (#246)

A binding success criterion can be impossible to make go RED on the topology/harness
the brief points Do at, and nothing catches it until Do has burned cycles (wyrd render
M4 #257 Iter-3 rejected after correct engineering; #365 verified split-brain freedom by
code-reading for two cycles). Add a standalone `Falsifiability` field to the brief
template — Plan declares WHERE the criterion can go red and on WHICH topology Do is
pointed at; a red-impossible environment is a Plan-blocking gap. The planner's
hand-off verify pass gains a matching obligation to fill it and surface the gap.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@eduralph eduralph added this to the Milestone 0.52.0 milestone Jul 5, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fc33754982

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread template/agents/planner.md.jinja
…#246 review)

Codex noted the planner's Falsifiability step is unconditional for "every brief", but only
brief.md.tpl carried the parsed field — a design-proposal or plan-pointer brief could hand
Do a success criterion with no falsifiability assessment, bypassing the red-impossible
check. Add the field to design-proposal.md.tpl and plan-pointer.md.tpl so every template
that can become brief.md carries it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@eduralph eduralph merged commit 08cb795 into main Jul 5, 2026
3 checks passed
@eduralph eduralph deleted the feat/246-falsifiability branch July 5, 2026 12:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Plan brief: add a Falsifiability field so unfalsifiable criteria are caught before Do

1 participant