feat(brief): add Falsifiability field so red-impossible criteria are caught at Plan#251
Merged
Conversation
…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>
There was a problem hiding this comment.
💡 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".
…#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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #246.
Problem
A binding
Success criterioncan 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 toVerification posture(green-deferred) andProduction reach.agents/planner.md.jinja: the unconditional "Verify before you hand off" pass gains a step obliging Plan to fillFalsifiabilityand treat a red-impossible criterion as a blocking gap to surface, not ship silent.Single-source: the
.claude/agents/planner.md.jinjawrapper{% include %}s the body, so no duplicate edit.Verification
cd template && make check— 478 driver unit tests pass.agents/planner.md.jinjaparses cleanly (jinja2).tests/test_render_and_run.py) skips locally without copier; runs in CI.🤖 Generated with Claude Code
Review round 1 (Codex) — addressed in 2bee87a
Falsifiabilityfield todesign-proposal.md.tplandplan-pointer.md.tpl, so the unconditional "every brief" gate is honest for every template that can becomebrief.md.