feat(dispatch): root/reply-id in DispatchView en __dispatch_input-bron (M41) #68

Merged
janpeter merged 1 commit from feat/m41-review-contract into main 2026-10-02 15:43:47 +02:00
Owner

Samenvatting

M41 increment 1 (sprint S-2026-10-02-1, story ST-1614, taak T-1922): gedeeld contract om review-loop-reviews als QUEUE_REVIEW-jobs uit te voeren.

  • DispatchView en dispatchViewSchema krijgen de verplichte velden root_message_id en reply_message_id. Het antwoord van een dispatch heeft in_reply_to = root-id, dus een aanvrager wacht er met queue_wait_reply op (gat G6).
  • DISPATCH_INPUT_SOURCE_KEY = '__dispatch_input'. Het ondertekende bronmanifest staat hoogstens één zo'n servicebron toe, met sha256 === inputSha256. Zo krijgt het kind zijn opdracht onder de bestaande handtekening (gat G2). Manifests zonder deze bron blijven geldig.

Roadmap en uitwerking: docs/plans/M41-review-loop-via-jobs.md in Scrum4Me (productdoc PLANS/m41-review-loop-via-jobs).

Test

  • Eerst rood: 4 tests (view zonder ids; ontbrekende constante; manifest met __dispatch_input geweigerd).
  • npm run verify groen: 39 files, 590 tests.

Merge-volgorde

Deze PR eerst. De mcp- en docker-PR's pinnen vendor/scrum4me-shared op b3d2b98 (deze branch). Merge als merge commit, dan blijft die pin bereikbaar op main; anders na de merge de submodule in die repo's bijwerken.

🤖 Generated with Claude Code

## Samenvatting M41 increment 1 (sprint S-2026-10-02-1, story ST-1614, taak T-1922): gedeeld contract om review-loop-reviews als `QUEUE_REVIEW`-jobs uit te voeren. - `DispatchView` en `dispatchViewSchema` krijgen de verplichte velden `root_message_id` en `reply_message_id`. Het antwoord van een dispatch heeft `in_reply_to` = root-id, dus een aanvrager wacht er met `queue_wait_reply` op (gat G6). - `DISPATCH_INPUT_SOURCE_KEY = '__dispatch_input'`. Het ondertekende bronmanifest staat hoogstens één zo'n servicebron toe, met `sha256 === inputSha256`. Zo krijgt het kind zijn opdracht onder de bestaande handtekening (gat G2). Manifests zonder deze bron blijven geldig. Roadmap en uitwerking: `docs/plans/M41-review-loop-via-jobs.md` in Scrum4Me (productdoc PLANS/m41-review-loop-via-jobs). ## Test - Eerst rood: 4 tests (view zonder ids; ontbrekende constante; manifest met `__dispatch_input` geweigerd). - `npm run verify` groen: 39 files, 590 tests. ## Merge-volgorde Deze PR eerst. De mcp- en docker-PR's pinnen `vendor/scrum4me-shared` op `b3d2b98` (deze branch). Merge als merge commit, dan blijft die pin bereikbaar op main; anders na de merge de submodule in die repo's bijwerken. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(dispatch): root/reply-id in DispatchView en __dispatch_input-bron (M41 T1)
All checks were successful
CI / Verify (pull_request) Successful in 31s
b3d2b9877c
DispatchView draagt nu root_message_id en reply_message_id, zodat een
aanvrager met queue_wait_reply op het antwoord van een dispatch kan wachten.
Het ondertekende bronmanifest staat precies één servicebron
__dispatch_input toe waarvan de hash de ondertekende inputSha256 is; daarmee
krijgt het kind de canonieke opdracht zonder nieuwe handtekening.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
s4m-codex-reviewer left a comment

COMMENT

Findings:

  • INFO — package.json:12: De statische contract- en typecontrole is geslaagd. De Vitest-suite kon in deze review-runner niet starten omdat de native Rollup-module vanaf /tmp niet mag worden gemapt (ERR_DLOPEN_FAILED); voer de suite in CI of een uitvoerbare worktree uit voordat dit wordt gemerged.

Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.

De diff houdt de gedeelde schema's frameworkloos, valideert de nieuwe gereserveerde bron tegen de ondertekende input-hash, en sluit aan op de reeds aanwezige root_message_id/reply_message_id-velden in het canonieke Prisma-model. Geen blokkerende codefinding vastgesteld.

## COMMENT Findings: - INFO — `package.json:12`: De statische contract- en typecontrole is geslaagd. De Vitest-suite kon in deze review-runner niet starten omdat de native Rollup-module vanaf `/tmp` niet mag worden gemapt (`ERR_DLOPEN_FAILED`); voer de suite in CI of een uitvoerbare worktree uit voordat dit wordt gemerged. Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden. De diff houdt de gedeelde schema's frameworkloos, valideert de nieuwe gereserveerde bron tegen de ondertekende input-hash, en sluit aan op de reeds aanwezige `root_message_id`/`reply_message_id`-velden in het canonieke Prisma-model. Geen blokkerende codefinding vastgesteld.
Sign in to join this conversation.
No reviewers
No labels
severity/s4
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
janpeter/scrum4me-shared!68
No description provided.