Skip to content

refactor(ship): ChatGPT verifies Fable's own findings, no Sonnet pass - #617

Merged
BorisTyshkevich merged 1 commit into
mainfrom
refactor/ship-chatgpt-verifies-own-findings
Aug 5, 2026
Merged

refactor(ship): ChatGPT verifies Fable's own findings, no Sonnet pass#617
BorisTyshkevich merged 1 commit into
mainfrom
refactor/ship-chatgpt-verifies-own-findings

Conversation

@BorisTyshkevich

Copy link
Copy Markdown
Collaborator

What & why

The --planner chatgpt plan-author loop (skills/ship/references/chatgpt-plan-author-loop.workflow.mjs) fanned out a parallel Sonnet read-only verifier per Fable finding before folding accepted ones into a revision context for ChatGPT — mirroring the default (Fable-authors) loop's pattern, where that separate fact-check makes sense because Fable there is reviewing ChatGPT's own PR/plan work.

But in this loop ChatGPT is the plan's sole author and reviser, and it already performs exactly this kind of live verification unprompted (observed live while running /ship 585 --planner chatgpt: it looked up the exact current npm package version while incorporating a finding about it). Fable's raw findings — explicitly labelled unverified, since Fable is read-only and cannot confirm exact repository/registry state — now go straight to ChatGPT's revision context instead. ChatGPT verifies each one itself before folding it in, and records anything it rejects under a ## Review responses section in the plan the same way the default loop's revise agent already does, so nothing is silently dropped even though there's no separate accepted/rejected return value anymore.

Removes one Sonnet agent call per finding per pass. Updates review-loops.md and SKILL.md, which documented the removed pattern as a hard rule ("neither ChatGPT nor Fable is a source of truth" / "the workflows return accepted and rejected lists") — both now describe the ownership-based split: whichever party owns the plan/PR being revised verifies findings against it, never the critic who raised them.

skills/ship/tests/*.test.mjs (plain node --test) is green: 5/5.

Checklist

  • Tests added/updated in the same change as the code (this skill's own node --test suite — N/A to product vitest gate)
  • npm test (product coverage gate) — N/A, this only touches skills/ship/
  • npm run build — N/A, same reason
  • Layers (src/core/src/net/src/ui) — N/A, same reason
  • No new runtime dependency
  • README/CHANGELOG — N/A, tooling-only change, no deployed-product behavior change
  • Reconciled tracked work — N/A, no roadmap/issue link

The ChatGPT-author plan loop fanned out a parallel Sonnet read-only
verifier per Fable finding before folding accepted ones into a
revision context for ChatGPT -- mirroring the default (Fable-authors)
loop's pattern, where that separate fact-check makes sense because
Fable there is reviewing ChatGPT's own PR/plan work.

But in this loop ChatGPT is the plan's sole author and reviser, and it
already performs exactly this kind of live verification unprompted
(e.g. looking up an exact npm package version while incorporating a
finding about it, observed live on issue #585 phase 0). Fable's raw
findings -- explicitly labelled unverified, since Fable is read-only
and cannot confirm exact repository/registry state -- now go straight
to ChatGPT's revision context instead. ChatGPT verifies each one
itself before folding it in, and records anything it rejects under a
`## Review responses` section in the plan the same way the default
loop's revise agent already does, so nothing is silently dropped even
though there's no separate accepted/rejected return value anymore.

Removes one Sonnet agent call per finding per pass. Updates
review-loops.md and SKILL.md, which documented the removed pattern as
a hard rule ("neither ChatGPT nor Fable is a source of truth" /
"the workflows return accepted and rejected lists") -- both now
describe the ownership-based split: whichever party owns the
plan/PR being revised verifies findings against it, never the critic
who raised them.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LwFPT465eDJqYcRa8HGNLz
@BorisTyshkevich
BorisTyshkevich merged commit 5961899 into main Aug 5, 2026
8 checks passed
@BorisTyshkevich
BorisTyshkevich deleted the refactor/ship-chatgpt-verifies-own-findings branch August 6, 2026 15:28
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.

1 participant