mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-14 20:37:14 +01:00
fix(office-hours): reviewer returns a hash-bound receipt instead of echoing its verdict
The spec reviewer now Writes its verdict once, seals it with gstack-office-hours-review seal (validates the saved JSON and prints OFFICE_HOURS_VERDICT round=N sha256=<hash> path=<verdict>), and returns only that line. check --receipt recomputes the hash and fails closed on a missing, malformed, stale-round, wrong-path or mismatched receipt. The saved file stays the sole findings inventory; validators bind the receipt to the saved bytes and the judge reads those bytes.
This commit is contained in:
1 parent
43e2b89369
commit
209a61dcd3
10 files changed
+178
-62
No files matched your search
@@ -57,19 +57,23 @@ string unchanged as the prompt. The reviewer must Read the entire prepared promp
|
||||
file before reviewing the design. Do not recreate the prompt, copy selected fields,
|
||||
or summarize prior findings. A parent Read does not deliver the file to the reviewer.
|
||||
The reviewer has fresh context and cannot see the brainstorming conversation.
|
||||
Its prepared contract requires a complete JSON Write and an identical JSON response.
|
||||
Its prepared contract requires a complete JSON Write, sealed by the dispatch's
|
||||
\`Seal:\` command, and a one-line \`OFFICE_HOURS_VERDICT\` receipt as its entire response.
|
||||
It protects the required coaching and Assignment sections, distinguishes unknown
|
||||
customer facts from committed behavior, and requires evidence for every prior status.
|
||||
|
||||
**Step 2: Check stop conditions, then fix and re-dispatch**
|
||||
|
||||
After each verdict, BEFORE fixing any findings or dispatching again, validate the
|
||||
saved files with the helper (list every completed round in order):
|
||||
saved files with the helper. Pass the reviewer's entire response unchanged as the
|
||||
receipt and list every completed round in order:
|
||||
|
||||
\`\`\`bash
|
||||
~/.claude/skills/gstack/bin/gstack-office-hours-review check "<round-1.json>" "<round-2.json if present>" "<round-3.json if present>"
|
||||
~/.claude/skills/gstack/bin/gstack-office-hours-review check --receipt "<reviewer response>" "<round-1.json>" "<round-2.json if present>" "<round-3.json if present>"
|
||||
\`\`\`
|
||||
|
||||
A missing, malformed, or mismatched receipt fails the check: that attempt is a failed review.
|
||||
|
||||
Omit absent arguments rather than passing placeholders.
|
||||
**Convergence guard and stopping rules:** Read its stop reason:
|
||||
- PASS: no unresolved findings; proceed to Step 3.
|
||||
|
||||
@@ -265,7 +265,6 @@
|
||||
"test/model-overlays.test.ts\tTS2322\tType 'string' is not assignable to type '\"claude\" | \"fable-5\" | \"gemini\" | \"gpt\" | \"gpt-5.4\" | \"gpt-5.6-sol\" | \"gpt-6-astra\" | \"o-series\" | \"opus-4-7\" | \"opus-4-8\" | \"sonnet-5\" | undefined'.": 4,
|
||||
"test/native-auto-decide-pty.test.ts\tTS2345\tArgument of type 'string | undefined' is not assignable to parameter of type 'string'. Type 'undefined' is not assignable to type 'string'.": 1,
|
||||
"test/native-auto-decide.test.ts\tTS2345\tArgument of type '{ status: string; calls: never[]; assistantMessages: { sessionId: string; text: string; timestamp: string; }[]; }' is not assignable to parameter of type 'PlanCountTranscript'. Types of property 'status' are incompatible. Type 'string' is not assignable to type '\"error\" | \"missing\" | \"ready\"'.": 1,
|
||||
"test/office-hours-completion.test.ts\tTS18046\t'reordered.findings' is of type 'unknown'.": 1,
|
||||
"test/office-hours-review.test.ts\tTS18048\t'check.stderr' is possibly 'undefined'.": 1,
|
||||
"test/office-hours-review.test.ts\tTS18048\t'check.stdout' is possibly 'undefined'.": 1,
|
||||
"test/office-hours-review.test.ts\tTS18048\t'direct.stderr' is possibly 'undefined'.": 1,
|
||||
|
||||
Reference in new issue
Block a user