원클릭으로
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.
| 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.mdUse 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.