feat(queue): agent_presence-schema + presence-versdrempel (IDEA-194) #58

Merged
janpeter merged 1 commit from feat/idea194-agent-presence into main 2026-09-12 15:03:21 +02:00
Owner

Fase A van IDEA-194 (presence per queue-adres), plan v6 Task 1 / spec rev 5 §4.

Wat

  • lib/queue-identity.ts: PRESENCE_FRESH_SECONDS = 45 — de vers-drempel voor de watcher-hartslag (drie herpoll-ticks van 15 s). Eén waarheid voor CLI én MCP; de s4m-queue-CLI krijgt in Task 4 een bewuste tweelingkopie in src/types.ts met een vocab-drift-gate die de twee vergelijkt.
  • prisma/schema.prisma: model AgentPresence (@@map("agent_presence")), PK (server, model) — nooit per pid. Watcher-kolommen, sessie-kolommen en session_expected_by voor de poll-route.
  • __tests__/queue-identity.test.ts: test die de 45 vastlegt.

Wat er bewust níet in zit

Geen status-kolom en geen SQL-view: "vers", "bezig", "beschikbaar" en "onbemand" zijn leesregels (spec §6.1), afgeleid in identieke twin-implementaties in s4m-queue en scrum4me-mcp. Geen busy_since. Stale rijen blijven staan — geen cleanup, geen DELETE-grant.

Verificatie

  • npm run verify (verify-no-deps + typecheck + vitest): 274/274 groen, 26 test-bestanden.
  • Prisma-validatie: de canonieke schema is generator-loos, dus gevalideerd via scripts/gen-consumer-schema.sh → prisma 7.8.0 validate → The schema is valid.

Opvolging (niet in deze PR)

gen-consumer-schema.sh emit nog url/directUrl in het datasource-blok; Prisma 7 weigert die. De ingecheckte prisma/schema.prisma van Scrum4Me heeft ze er met de hand uit. Die drift hoort thuis bij Task 2 (submodule-bump + gen-schema.sh), niet hier.

Vervolg: Task 2 bumpt de submodule in Scrum4Me en schrijft de migratie 20260912120000_agent_presence.

🤖 Generated with Claude Code

Fase A van IDEA-194 (presence per queue-adres), plan v6 Task 1 / spec rev 5 §4. ## Wat - `lib/queue-identity.ts`: `PRESENCE_FRESH_SECONDS = 45` — de vers-drempel voor de watcher-hartslag (drie herpoll-ticks van 15 s). Eén waarheid voor CLI én MCP; de s4m-queue-CLI krijgt in Task 4 een bewuste tweelingkopie in `src/types.ts` met een vocab-drift-gate die de twee vergelijkt. - `prisma/schema.prisma`: model `AgentPresence` (`@@map("agent_presence")`), PK `(server, model)` — nooit per pid. Watcher-kolommen, sessie-kolommen en `session_expected_by` voor de poll-route. - `__tests__/queue-identity.test.ts`: test die de 45 vastlegt. ## Wat er bewust níet in zit Geen status-kolom en geen SQL-view: "vers", "bezig", "beschikbaar" en "onbemand" zijn leesregels (spec §6.1), afgeleid in identieke twin-implementaties in s4m-queue en scrum4me-mcp. Geen `busy_since`. Stale rijen blijven staan — geen cleanup, geen DELETE-grant. ## Verificatie - `npm run verify` (verify-no-deps + typecheck + vitest): **274/274 groen**, 26 test-bestanden. - Prisma-validatie: de canonieke schema is generator-loos, dus gevalideerd via `scripts/gen-consumer-schema.sh` → prisma 7.8.0 `validate` → *The schema is valid*. ## Opvolging (niet in deze PR) `gen-consumer-schema.sh` emit nog `url`/`directUrl` in het `datasource`-blok; Prisma 7 weigert die. De ingecheckte `prisma/schema.prisma` van Scrum4Me heeft ze er met de hand uit. Die drift hoort thuis bij Task 2 (submodule-bump + `gen-schema.sh`), niet hier. Vervolg: Task 2 bumpt de submodule in Scrum4Me en schrijft de migratie `20260912120000_agent_presence`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(queue): AgentPresence-model + PRESENCE_FRESH_SECONDS (IDEA-194)
All checks were successful
CI / Verify (pull_request) Successful in 39s
56085986c4
Presence per queue-adres krijgt zijn gedeelde vocabulaire: één rij per
(server, model) in agent_presence, en de vers-drempel van 45 s (drie
herpoll-ticks van 15 s) als één waarheid voor CLI en MCP. "Vers" en
"aangemeld" blijven leesregels, geen kolommen — daarom geen status-kolom
en geen SQL-view.

Plan v6 Task 1, spec rev 5 §4 (Scrum4Me, branch
claude/presence-queue-adres-watcher-407ea2).

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

APPROVED

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

Findings

  • Geen blokkerende of error-severity findings gevonden.

Review-notities

  • lib/queue-identity.ts:55 exporteert PRESENCE_FRESH_SECONDS = 45 als pure shared constante zonder extra runtime-dependencies; dit past bij de @scrum4me/shared architectuur als canonieke pure TS-bron.
  • prisma/schema.prisma:1465 voegt AgentPresence toe aan het canonieke shared Prisma-schema. Volgens de productdocs hoort de schemawijziging hier te starten; migraties draaien later uitsluitend in de Scrum4Me designated migrator-consumer, dus het ontbreken van een migratie in deze PR is hier conform.
  • __tests__/queue-identity.test.ts:156 dekt de geëxporteerde presence-versdrempel af. De modelschemawijziging zelf is declaratief; ik zie in de diff geen consumer-code die daardoor direct extra unitcoverage nodig heeft.
# APPROVED Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden. ## Findings - Geen blokkerende of error-severity findings gevonden. ## Review-notities - `lib/queue-identity.ts:55` exporteert `PRESENCE_FRESH_SECONDS = 45` als pure shared constante zonder extra runtime-dependencies; dit past bij de `@scrum4me/shared` architectuur als canonieke pure TS-bron. - `prisma/schema.prisma:1465` voegt `AgentPresence` toe aan het canonieke shared Prisma-schema. Volgens de productdocs hoort de schemawijziging hier te starten; migraties draaien later uitsluitend in de `Scrum4Me` designated migrator-consumer, dus het ontbreken van een migratie in deze PR is hier conform. - `__tests__/queue-identity.test.ts:156` dekt de geëxporteerde presence-versdrempel af. De modelschemawijziging zelf is declaratief; ik zie in de diff geen consumer-code die daardoor direct extra unitcoverage nodig heeft.
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!58
No description provided.