with one click
tracking-backend-worker
// Update backend timer/time-entry contracts, regressions, and source docs for the timer refactor mission.
// Update backend timer/time-entry contracts, regressions, and source docs for the timer refactor mission.
Use when working in this repository after receiving recurring coding feedback, adding or reviewing durable lint guardrails from AGENTS.md, updating Rules/*.md, or finishing changes that should be checked by harness-lint.
Build and verify real-Postgres Go tests and thin transport smoke for tracking behavior.
Build and verify page-flow and E2E coverage for the tracking browser surface.
Build cross-layer regression coverage that ties browser-visible behavior to backend truth.
Harden shared test infrastructure, runtime readiness, schema setup, and parallel lane behavior.
Audit and finalize inline source-document status blocks for the timer refactor mission.
| name | tracking-backend-worker |
| description | Update backend timer/time-entry contracts, regressions, and source docs for the timer refactor mission. |
NOTE: Startup and cleanup are handled by worker-base. This skill defines the work procedure.
Use for features that change backend tracking behavior, current-timer semantics, HTTP contract smoke, Go regressions, or product docs tightly coupled to backend rules.
None.
mission.md, mission AGENTS.md, .factory/services.yaml, .factory/library/architecture.md, and .factory/library/documentation-traceability.md.expectedBehavior bullets into a local checklist before editing anything.AGENTS.md that actually govern this feature. Do not use unlisted docs.200 + nullopentoggl_test schema. Never point tests at the business schema.docs/product/tracking.md, update that doc in the same feature and refresh its mission status block using the canonical field names.{
"salientSummary": "Updated the tracking contract and backend regressions so running-timer uniqueness is global per user, not per workspace. Added cross-workspace conflict coverage plus a thin current-timer transport proof, and refreshed the tracking PRD status block to reflect the new rule.",
"whatWasImplemented": "Changed the backend tracking rule so a second running timer cannot be created in another workspace for the same user, kept `GET /me/time_entries/current` as the user-global source of truth, added failing-first Go regressions for the conflict/readback paths, and updated `docs/product/tracking.md` with the new rule plus a canonical mission status block.",
"whatWasLeftUndone": "",
"verification": {
"commandsRun": [
{
"command": "go test ./apps/backend/internal/tracking/... -count=1 -parallel 4",
"exitCode": 0,
"observation": "Tracking regressions passed with the new global conflict coverage."
},
{
"command": "go test ./apps/backend/internal/bootstrap/... -count=1 -parallel 4",
"exitCode": 0,
"observation": "Current-timer transport semantics passed, including idle `200 + null`."
}
],
"interactiveChecks": [
{
"action": "Replayed a two-workspace start conflict against the reused backend and read `/me/time_entries/current` afterward.",
"observed": "The second start was rejected, no second running row was persisted, and the original running entry stayed current."
}
]
},
"tests": {
"added": [
{
"file": "apps/backend/internal/tracking/application/regressions_test.go",
"cases": [
{
"name": "rejects a second running timer across workspaces for the same user",
"verifies": "VAL-TIMER-001"
}
]
},
{
"file": "apps/backend/internal/bootstrap/...",
"cases": [
{
"name": "returns 200 null when current timer is idle",
"verifies": "VAL-TIMER-003"
}
]
}
]
},
"discoveredIssues": []
}
AGENTS.md