Development record
The ideate protocol's adversarial leg gives reviewers no way to tell an ambition from a present-tense claim, so an idea about where a repository's product should go is killed because the product does not deliver it yet. On a 2026-10-31 run on a positioning idea (in abcd's own repository, where abcd is the product), both reviewers marked it fatal on current delivery gaps. The product thinker ruled that not yet built is never a reason to kill an ambition: the gap is the roadmap the exercise exists to find.
The ideate protocol's adversarial leg gives reviewers no way to tell an ambition from a present-tense claim, so an idea about where a repository's product should go is killed because the product does not deliver it yet. On a 2026-10-31 run on a positioning idea (in abcd's own repository, where abcd is the product), both reviewers marked it fatal on current delivery gaps. The product thinker ruled that not yet built is never a reason to kill an ambition: the gap is the roadmap the exercise exists to find.
They added two requirements. First, the product thinker chooses whether the review considers the product's current state, and by default it does not. Second, the rule holds for the product any abcd-managed repository builds, so a product thinker can ideate around their own product and not only around abcd; abcd's own repository is the proving ground, not the scope.
Grounds
- pursued: reviewers told to ignore current delivery stop killing ambition ideas on not-yet-built gaps; a later ignore-mode verdict whose fatal attempt rests on a delivery gap would show it wrong
Frontmatter
| id | iss-2610310815034547 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2610310815034547-the-ideate-protocol-s-adversarial-leg.md
open on GitHub ↗ · commit history ↗
mentions2
- dcn-26103113445293662026-10-31 — The ideate verdict payload gains current_state as a required top-level field while staying schema_version 2 (iss-2610310815034547). Grounds: the version number exists to stop a host composing against an old page from being misread in silence, and a payload without the field cannot be misread: it is refused with a message naming current_state and both modes, so the host that sent it learns exactly what to add. A version bump would refuse every old payload with a message about the version rather than the field, and would churn every fixture for no extra protection. The field sits at the top level rather than on the adversarial leg because it is the person's choice for the run, stated before the legs start. Reverse by bumping SchemaVersion to 3 in internal/core/ideate and teaching olderSchemaError that version 3 adds current_state.
- dcn-26103113582785062026-10-31 — Each ideate reviewer's list of what the idea implies building is recorded as an optional implies_building field on that reviewer and rendered under its label in leg 3 (iss-2610310815034547), not relayed to the person and dropped. Grounds: an independent review of the change found the ignore mode told reviewers to list delivery gaps with no field to keep them, so the strict decoder left the host to lose the list or file it as the kill attempt the same rule forbids; the product thinker's ruling calls that gap the roadmap the exercise exists to find, and a verdict is recorded so a later session need not re-run it. The field is optional because a reviewer may name no gap, and it is held to the same rules as every other free-text list (no empty entry, a cap of 50, redaction, record ids resolved). Proposed while the product thinker is away; they review it on return. Reverse by dropping Reviewer.ImpliesBuilding and telling the page to relay the list with the verdict instead.