feat(queue): job-adres als dashboard-bestemming + pin-bump (M30 P0.4, workers-helft) #78

Merged
janpeter merged 2 commits from feat/m30-p0.4-job-destination into main 2026-08-06 11:10:25 +02:00
Owner

M30 P0.4, workers-helft (plan: Scrum4Us docs/plans/M30-scrum4us-review-jobs.md @ b4b3352, §Task P0.4). Basis: main @ 68d5cf0 (r17-herpin geverifieerd); geciteerde regelnummers herverifieerd vóór het editen.

Gitlink: vendor/scrum4me-sharedcf38b54. De shim (lib/queue/types.ts) re-exporteert het job-namespace onder lokale namen en draagt de rauwe kolomrepresentatie + het éne flatten/unflatten-paar (r3/codex-MAJOR-6: geen casts, de consumer-shapes liegen niet over de kolommen).

Bestemming, action én formulier (r2/codex-MAJOR-4): PushPayload/PushFormData dragen een canoniek adres; pushMessageAction valideert via parseAddress (melding blijft 'Ongeldige bestemming'); ops-db's PushInput draagt het gediscrimineerde adres en flattent; het formulier krijgt een vrij bestemmingsveld naast de selects (operator-tool) zodat scrum4us-job:<jobid> intypbaar is. AgentMessage/NotifyEnvelope eerlijk verbreed; rules-sync volgt.

Tests: action-matrix (beide paden + weigering 'scrum4us-job:'/'scrum4us-job:a:b'), render-test die BEIDE bestemmingspaden daadwerkelijk verstuurt (de r1-valkuil), en de positieve realdb-test — rij én NOTIFY-envelope tegen echte Postgres (gedraaid op een wegwerp-DB queue_test_m30: 9/9 groen). Volledige suite 802 groen; typecheck groen; lint 0 errors (1 pre-existing warning in job-card.tsx, onaangeraakt).

P0.G stap 5: mergen ná stap 3/4, dan dashboard-redeploy + de live probe scrum4us-job:probe-<datum> pushen, zien in /queue/messages, cancellen.

🤖 Generated with Claude Code

M30 P0.4, workers-helft (plan: Scrum4Us docs/plans/M30-scrum4us-review-jobs.md @ b4b3352, §Task P0.4). Basis: main @ 68d5cf0 (r17-herpin geverifieerd); geciteerde regelnummers herverifieerd vóór het editen. **Gitlink:** `vendor/scrum4me-shared` → `cf38b54`. De shim (`lib/queue/types.ts`) re-exporteert het job-namespace onder lokale namen en draagt de rauwe kolomrepresentatie + het éne flatten/unflatten-paar (r3/codex-MAJOR-6: geen casts, de consumer-shapes liegen niet over de kolommen). **Bestemming, action én formulier (r2/codex-MAJOR-4):** `PushPayload`/`PushFormData` dragen een canoniek adres; `pushMessageAction` valideert via `parseAddress` (melding blijft `'Ongeldige bestemming'`); ops-db's `PushInput` draagt het gediscrimineerde adres en flattent; het formulier krijgt een vrij bestemmingsveld naast de selects (operator-tool) zodat `scrum4us-job:<jobid>` intypbaar is. `AgentMessage`/`NotifyEnvelope` eerlijk verbreed; `rules-sync` volgt. **Tests:** action-matrix (beide paden + weigering `'scrum4us-job:'`/`'scrum4us-job:a:b'`), render-test die BEIDE bestemmingspaden daadwerkelijk verstuurt (de r1-valkuil), en de positieve realdb-test — rij én NOTIFY-envelope tegen echte Postgres (gedraaid op een wegwerp-DB `queue_test_m30`: 9/9 groen). Volledige suite 802 groen; typecheck groen; lint 0 errors (1 pre-existing warning in job-card.tsx, onaangeraakt). **P0.G stap 5:** mergen ná stap 3/4, dan dashboard-redeploy + de live probe `scrum4us-job:probe-<datum>` pushen, zien in /queue/messages, cancellen. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(queue): job-adres als dashboard-bestemming + pin-bump (M30 P0.4, workers-helft)
All checks were successful
CI / Verify (pull_request) Successful in 1m51s
b924498d67
vendor/scrum4me-shared -> cf38b54 (post-P0.1-merge main-head). De shim
(lib/queue/types.ts) re-exporteert het job-namespace onder lokale namen
(JOB_SERVER, Address, parseAddress, formatAddress, isJobId) en draagt de
rauwe kolomrepresentatie plus het ene flatten/unflatten-paar.

De bestemming is nu eerlijk gediscrimineerd, actie EN formulier:
PushPayload/PushFormData dragen een canoniek adres ('server:model' of
'scrum4us-job:<jobid>'), pushMessageAction valideert via parseAddress
('Ongeldige bestemming' blijft de melding), ops-db's PushInput draagt het
gediscrimineerde adres en flattent naar de text-kolommen, en het
formulier krijgt een vrij bestemmingsveld naast de selects zodat een
job-id intypbaar is. AgentMessage/NotifyEnvelope verbreed (to_model =
opake tekst op het job-namespace); rules-sync volgt de nieuwe PushInput.

Tests: action-matrix (acceptatie beide paden + weigering), render-test
op beide bestemmingspaden, en de positieve realdb-test die rij én
NOTIFY-envelope tegen echte Postgres inspecteert.

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

Verdict: COMMENT

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

Findings

  • minor — vendor/scrum4me-shared:1 — De PR wijzigt de shared submodule naar cf38b54..., terwijl de workers-code nu hard afhankelijk is van nieuwe exports zoals QUEUE_JOB_SERVER, parseQueueAddress, formatQueueAddress en isQueueJobId. De aangeleverde unified diff bevat alleen de submodule-SHA en niet de inhoud van die shared-wijziging, waardoor de kern van het nieuwe adrescontract niet inhoudelijk te reviewen is. Dit blokkeert geen zichtbare workers-code, maar maakt APPROVED niet verantwoord.
  • minor — app/(app)/queue/messages/_components/messages-view.tsx:617 — De UI voegt een vrije bestemming toe, maar de productdoc voor /queue/messages beschrijft nog uitsluitend server/model-selects. Dit is documentatie-drift voor een admin-facing operationele flow.

Samenvatting

De zichtbare workers-wijzigingen volgen grotendeels het bestaande patroon: server-action validatie voor auth/type/body, één queue-DB schrijver, en gerichte tests voor action/UI/real-DB gedrag. Geen blocking finding gevonden in de zichtbare diff. Door de niet-inhoudelijk zichtbare submodulewijziging kies ik safe-default COMMENT in plaats van APPROVED.

# Verdict: COMMENT geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden. ## Findings - minor — `vendor/scrum4me-shared:1` — De PR wijzigt de shared submodule naar `cf38b54...`, terwijl de workers-code nu hard afhankelijk is van nieuwe exports zoals `QUEUE_JOB_SERVER`, `parseQueueAddress`, `formatQueueAddress` en `isQueueJobId`. De aangeleverde unified diff bevat alleen de submodule-SHA en niet de inhoud van die shared-wijziging, waardoor de kern van het nieuwe adrescontract niet inhoudelijk te reviewen is. Dit blokkeert geen zichtbare workers-code, maar maakt `APPROVED` niet verantwoord. - minor — `app/(app)/queue/messages/_components/messages-view.tsx:617` — De UI voegt een vrije bestemming toe, maar de productdoc voor `/queue/messages` beschrijft nog uitsluitend server/model-selects. Dit is documentatie-drift voor een admin-facing operationele flow. ## Samenvatting De zichtbare workers-wijzigingen volgen grotendeels het bestaande patroon: server-action validatie voor auth/type/body, één queue-DB schrijver, en gerichte tests voor action/UI/real-DB gedrag. Geen blocking finding gevonden in de zichtbare diff. Door de niet-inhoudelijk zichtbare submodulewijziging kies ik safe-default `COMMENT` in plaats van `APPROVED`.
docs(queue): vrij bestemmingsveld + scrum4us-job-adres in de pagina-doc (review #78)
All checks were successful
CI / Verify (pull_request) Successful in 1m53s
d6d840248b
Reviewer-minor: de doc beschreef de bestemming als selects-only terwijl
de UI sinds M30 P0.4 een vrij veld draagt dat het job-namespace
accepteert. Beide passages bijgewerkt.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Author
Owner

Reactie op de review:

Submodule-inhoud niet in de diff: klopt — de gitlink-bump verwijst naar de shared-wijziging die zélf inhoudelijk als scrum4me-shared PR #45 is gereviewd en gemerged; cf38b54 ís die merge-head. Dit PR neemt hem alleen over, conform de M30 P0.G-volgorde (pin-bumps ná de shared-merge). Het volledige adrescontract (QUEUE_JOB_SERVER, QueueAddress, parseQueueAddress, formatQueueAddress, isQueueJobId) staat daar in lib/queue-identity.ts met de bijbehorende testmatrix.

Doc-drift /queue/messages: overgenomen — d6d8402 werkt docs/pages/queue-messages.md bij: het vrije bestemmingsveld en het scrum4us-job:<jobid>-adres staan nu in de Doel-paragraaf én in de componentenlijst (PushForm).

Reactie op de review: **Submodule-inhoud niet in de diff:** klopt — de gitlink-bump verwijst naar de shared-wijziging die zélf inhoudelijk als **scrum4me-shared PR #45** is gereviewd en gemerged; `cf38b54` ís die merge-head. Dit PR neemt hem alleen over, conform de M30 P0.G-volgorde (pin-bumps ná de shared-merge). Het volledige adrescontract (`QUEUE_JOB_SERVER`, `QueueAddress`, `parseQueueAddress`, `formatQueueAddress`, `isQueueJobId`) staat daar in `lib/queue-identity.ts` met de bijbehorende testmatrix. **Doc-drift `/queue/messages`:** overgenomen — `d6d8402` werkt `docs/pages/queue-messages.md` bij: het vrije bestemmingsveld en het `scrum4us-job:<jobid>`-adres staan nu in de Doel-paragraaf én in de componentenlijst (PushForm).
s4m-codex-reviewer left a comment

Verdict: COMMENT

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

Findings

  • minor — app/(app)/queue/messages/_components/messages-view.tsx:603: na submit wordt alleen body geleegd; toFree blijft staan en blijft de selects overrulen. Dat is zichtbaar, maar operationeel foutgevoelig: een volgend bericht kan onbedoeld opnieuw naar hetzelfde scrum4us-job:<jobid>-adres gaan terwijl de operator vooral de server/model-selects ziet. Overweeg setToFree('') na een succesvolle submit of een explicietere mode-keuze.

Samenvatting

De wijziging gebruikt de gedeelde adresparser, centraliseert flattening naar de bestaande kolommen, werkt de dashboard-doc bij en voegt gerichte action-, UI- en realdb-tests toe. De aanpak is conform de bestaande queue/dashboard-patronen; geen blokkerende bevindingen gevonden.

# Verdict: COMMENT Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden. ## Findings - minor — `app/(app)/queue/messages/_components/messages-view.tsx:603`: na submit wordt alleen `body` geleegd; `toFree` blijft staan en blijft de selects overrulen. Dat is zichtbaar, maar operationeel foutgevoelig: een volgend bericht kan onbedoeld opnieuw naar hetzelfde `scrum4us-job:<jobid>`-adres gaan terwijl de operator vooral de server/model-selects ziet. Overweeg `setToFree('')` na een succesvolle submit of een explicietere mode-keuze. ## Samenvatting De wijziging gebruikt de gedeelde adresparser, centraliseert flattening naar de bestaande kolommen, werkt de dashboard-doc bij en voegt gerichte action-, UI- en realdb-tests toe. De aanpak is conform de bestaande queue/dashboard-patronen; geen blokkerende bevindingen gevonden.
Sign in to join this conversation.
No reviewers
No labels
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-workers!78
No description provided.