feat(scheduler): WORKER_CAPABILITY env-var + plan/spec docs #21

Merged
janpeter merged 8 commits from claude/upbeat-chebyshev-7b6282 into master 2026-06-01 17:27:24 +02:00
Owner

Phase B of the Worker Capability Scheduler (alongside Phase A which is staged across scrum4me-shared PR #6 merged, Scrum4Me PR #62 merged, and scrum4me-mcp PR #31 in review).

Wires WORKER_CAPABILITY env-var from .env through docker-compose → entrypoint (warn-only validation, exit-1 enforcement comes in Phase C) → run-one-job.ts → registerWorker.

Also ships the design spec and implementation plan that drove the change:

  • docs/superpowers/specs/2026-05-31-worker-capability-scheduling-design.md
  • docs/superpowers/plans/2026-05-31-worker-capability-scheduling.md

Per-host rollout (max2=HIGH_P, mac=MEDIUM_P, scrum4me-server=LOW_P) is a manual SSH step after this PR merges and the container is rebuilt against the new MCP_GIT_REF (which will track PR #31).

Phase B of the Worker Capability Scheduler (alongside Phase A which is staged across scrum4me-shared PR #6 merged, Scrum4Me PR #62 merged, and scrum4me-mcp PR #31 in review). Wires WORKER_CAPABILITY env-var from .env through docker-compose → entrypoint (warn-only validation, exit-1 enforcement comes in Phase C) → run-one-job.ts → registerWorker. Also ships the design spec and implementation plan that drove the change: - docs/superpowers/specs/2026-05-31-worker-capability-scheduling-design.md - docs/superpowers/plans/2026-05-31-worker-capability-scheduling.md Per-host rollout (max2=HIGH_P, mac=MEDIUM_P, scrum4me-server=LOW_P) is a manual SSH step after this PR merges and the container is rebuilt against the new MCP_GIT_REF (which will track PR #31).
Brainstorm-output: routeer jobs naar de hoogste-capability idle worker
via een extra NOT-EXISTS-clausule in tryClaimJob. Geen nieuwe service,
geen schema-wijziging aan claude_jobs; alleen claude_workers krijgt een
WorkerCapability-enum (HIGH_P / MEDIUM_P / LOW_P). Host-mapping:
max2=HIGH_P, mac=MEDIUM_P, scrum4me-server=LOW_P. Migratie in 2 stappen
(nullable kolom → entrypoint-guard). Cost-class per job is Future.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3-phase rollout: Phase A in scrum4me-mcp (schema + tryClaimJob filter),
Phase B in scrum4me-docker (WORKER_CAPABILITY env-var + entrypoint
warn-only + run-one-job.ts wiring), Phase C entrypoint-guard tightening.
TDD per code change. Calls out 4 spec deviations discovered while
reading source (QUEUED ipv PENDING, worker_instance_id ipv
claimed_by_instance_id, runtime-scoping in NOT EXISTS, naming naast
bestaande capabilities[]).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Schema source-of-truth lives in scrum4me-shared (git submodule). Migrations
in Scrum4Me webapp. Phase A is now 3 ordered PRs: shared (enum+field) →
webapp (submodule bump + Prisma migration → Neon) → mcp (submodule bump +
registerWorker + buildHigherTierIdleFragment + tryClaimJob). Phase B/C
unchanged. scrum4me-mcp default branch is main not master; no local DB so
prisma generate is enough on mcp-side. Discovered during subagent-execution
setup.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
janpeter merged commit 04a6689604 into master 2026-06-01 17:27:24 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
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-docker!21
No description provided.