383 lines
10 KiB
JSON
383 lines
10 KiB
JSON
{
|
|
"tasks": [
|
|
{
|
|
"id": "task-001",
|
|
"type": "eng-infra",
|
|
"priority": 10,
|
|
"dependencies": [],
|
|
"payload": {
|
|
"action": "create-structure",
|
|
"description": "Create project directory structure",
|
|
"target": "/tmp/loki-mode-test-todo-app"
|
|
},
|
|
"createdAt": "2026-01-02T23:41:38Z",
|
|
"claimedBy": null,
|
|
"claimedAt": null,
|
|
"timeout": 300,
|
|
"retries": 0,
|
|
"maxRetries": 3,
|
|
"backoffSeconds": 60,
|
|
"lastError": null,
|
|
"completedAt": null,
|
|
"result": null
|
|
},
|
|
{
|
|
"id": "task-002",
|
|
"type": "eng-backend",
|
|
"priority": 9,
|
|
"dependencies": ["task-001"],
|
|
"payload": {
|
|
"action": "init-backend",
|
|
"description": "Initialize backend with package.json, tsconfig.json, dependencies",
|
|
"target": "/tmp/loki-mode-test-todo-app/backend"
|
|
},
|
|
"createdAt": "2026-01-02T23:41:38Z",
|
|
"claimedBy": null,
|
|
"claimedAt": null,
|
|
"timeout": 300,
|
|
"retries": 0,
|
|
"maxRetries": 3,
|
|
"backoffSeconds": 60,
|
|
"lastError": null,
|
|
"completedAt": null,
|
|
"result": null
|
|
},
|
|
{
|
|
"id": "task-003",
|
|
"type": "eng-frontend",
|
|
"priority": 9,
|
|
"dependencies": ["task-001"],
|
|
"payload": {
|
|
"action": "init-frontend",
|
|
"description": "Initialize frontend with Vite + React + TypeScript",
|
|
"target": "/tmp/loki-mode-test-todo-app/frontend"
|
|
},
|
|
"createdAt": "2026-01-02T23:41:38Z",
|
|
"claimedBy": null,
|
|
"claimedAt": null,
|
|
"timeout": 600,
|
|
"retries": 0,
|
|
"maxRetries": 3,
|
|
"backoffSeconds": 60,
|
|
"lastError": null,
|
|
"completedAt": null,
|
|
"result": null
|
|
},
|
|
{
|
|
"id": "task-004",
|
|
"type": "eng-backend",
|
|
"priority": 8,
|
|
"dependencies": ["task-002"],
|
|
"payload": {
|
|
"action": "setup-database",
|
|
"description": "Set up SQLite database connection and schema",
|
|
"target": "/tmp/loki-mode-test-todo-app/backend/src/db"
|
|
},
|
|
"createdAt": "2026-01-02T23:41:38Z",
|
|
"claimedBy": null,
|
|
"claimedAt": null,
|
|
"timeout": 300,
|
|
"retries": 0,
|
|
"maxRetries": 3,
|
|
"backoffSeconds": 60,
|
|
"lastError": null,
|
|
"completedAt": null,
|
|
"result": null
|
|
},
|
|
{
|
|
"id": "task-005",
|
|
"type": "eng-backend",
|
|
"priority": 7,
|
|
"dependencies": ["task-004"],
|
|
"payload": {
|
|
"action": "implement-api-get",
|
|
"description": "Implement GET /api/todos endpoint",
|
|
"target": "/tmp/loki-mode-test-todo-app/backend/src/routes/todos.ts"
|
|
},
|
|
"createdAt": "2026-01-02T23:41:38Z",
|
|
"claimedBy": null,
|
|
"claimedAt": null,
|
|
"timeout": 300,
|
|
"retries": 0,
|
|
"maxRetries": 3,
|
|
"backoffSeconds": 60,
|
|
"lastError": null,
|
|
"completedAt": null,
|
|
"result": null
|
|
},
|
|
{
|
|
"id": "task-006",
|
|
"type": "eng-backend",
|
|
"priority": 7,
|
|
"dependencies": ["task-004"],
|
|
"payload": {
|
|
"action": "implement-api-post",
|
|
"description": "Implement POST /api/todos endpoint with validation",
|
|
"target": "/tmp/loki-mode-test-todo-app/backend/src/routes/todos.ts"
|
|
},
|
|
"createdAt": "2026-01-02T23:41:38Z",
|
|
"claimedBy": null,
|
|
"claimedAt": null,
|
|
"timeout": 300,
|
|
"retries": 0,
|
|
"maxRetries": 3,
|
|
"backoffSeconds": 60,
|
|
"lastError": null,
|
|
"completedAt": null,
|
|
"result": null
|
|
},
|
|
{
|
|
"id": "task-007",
|
|
"type": "eng-backend",
|
|
"priority": 7,
|
|
"dependencies": ["task-004"],
|
|
"payload": {
|
|
"action": "implement-api-patch",
|
|
"description": "Implement PATCH /api/todos/:id endpoint",
|
|
"target": "/tmp/loki-mode-test-todo-app/backend/src/routes/todos.ts"
|
|
},
|
|
"createdAt": "2026-01-02T23:41:38Z",
|
|
"claimedBy": null,
|
|
"claimedAt": null,
|
|
"timeout": 300,
|
|
"retries": 0,
|
|
"maxRetries": 3,
|
|
"backoffSeconds": 60,
|
|
"lastError": null,
|
|
"completedAt": null,
|
|
"result": null
|
|
},
|
|
{
|
|
"id": "task-008",
|
|
"type": "eng-backend",
|
|
"priority": 7,
|
|
"dependencies": ["task-004"],
|
|
"payload": {
|
|
"action": "implement-api-delete",
|
|
"description": "Implement DELETE /api/todos/:id endpoint",
|
|
"target": "/tmp/loki-mode-test-todo-app/backend/src/routes/todos.ts"
|
|
},
|
|
"createdAt": "2026-01-02T23:41:38Z",
|
|
"claimedBy": null,
|
|
"claimedAt": null,
|
|
"timeout": 300,
|
|
"retries": 0,
|
|
"maxRetries": 3,
|
|
"backoffSeconds": 60,
|
|
"lastError": null,
|
|
"completedAt": null,
|
|
"result": null
|
|
},
|
|
{
|
|
"id": "task-009",
|
|
"type": "eng-frontend",
|
|
"priority": 6,
|
|
"dependencies": ["task-003", "task-005", "task-006", "task-007", "task-008"],
|
|
"payload": {
|
|
"action": "create-api-client",
|
|
"description": "Create API client functions",
|
|
"target": "/tmp/loki-mode-test-todo-app/frontend/src/api/todos.ts"
|
|
},
|
|
"createdAt": "2026-01-02T23:41:38Z",
|
|
"claimedBy": null,
|
|
"claimedAt": null,
|
|
"timeout": 300,
|
|
"retries": 0,
|
|
"maxRetries": 3,
|
|
"backoffSeconds": 60,
|
|
"lastError": null,
|
|
"completedAt": null,
|
|
"result": null
|
|
},
|
|
{
|
|
"id": "task-010",
|
|
"type": "eng-frontend",
|
|
"priority": 5,
|
|
"dependencies": ["task-009"],
|
|
"payload": {
|
|
"action": "create-hook",
|
|
"description": "Implement useTodos custom hook",
|
|
"target": "/tmp/loki-mode-test-todo-app/frontend/src/hooks/useTodos.ts"
|
|
},
|
|
"createdAt": "2026-01-02T23:41:38Z",
|
|
"claimedBy": null,
|
|
"claimedAt": null,
|
|
"timeout": 300,
|
|
"retries": 0,
|
|
"maxRetries": 3,
|
|
"backoffSeconds": 60,
|
|
"lastError": null,
|
|
"completedAt": null,
|
|
"result": null
|
|
},
|
|
{
|
|
"id": "task-011",
|
|
"type": "eng-frontend",
|
|
"priority": 4,
|
|
"dependencies": ["task-010"],
|
|
"payload": {
|
|
"action": "build-component",
|
|
"description": "Build TodoForm component",
|
|
"target": "/tmp/loki-mode-test-todo-app/frontend/src/components/TodoForm.tsx"
|
|
},
|
|
"createdAt": "2026-01-02T23:41:38Z",
|
|
"claimedBy": null,
|
|
"claimedAt": null,
|
|
"timeout": 300,
|
|
"retries": 0,
|
|
"maxRetries": 3,
|
|
"backoffSeconds": 60,
|
|
"lastError": null,
|
|
"completedAt": null,
|
|
"result": null
|
|
},
|
|
{
|
|
"id": "task-012",
|
|
"type": "eng-frontend",
|
|
"priority": 4,
|
|
"dependencies": ["task-010"],
|
|
"payload": {
|
|
"action": "build-component",
|
|
"description": "Build TodoItem component",
|
|
"target": "/tmp/loki-mode-test-todo-app/frontend/src/components/TodoItem.tsx"
|
|
},
|
|
"createdAt": "2026-01-02T23:41:38Z",
|
|
"claimedBy": null,
|
|
"claimedAt": null,
|
|
"timeout": 300,
|
|
"retries": 0,
|
|
"maxRetries": 3,
|
|
"backoffSeconds": 60,
|
|
"lastError": null,
|
|
"completedAt": null,
|
|
"result": null
|
|
},
|
|
{
|
|
"id": "task-013",
|
|
"type": "eng-frontend",
|
|
"priority": 3,
|
|
"dependencies": ["task-011", "task-012"],
|
|
"payload": {
|
|
"action": "build-component",
|
|
"description": "Build TodoList component",
|
|
"target": "/tmp/loki-mode-test-todo-app/frontend/src/components/TodoList.tsx"
|
|
},
|
|
"createdAt": "2026-01-02T23:41:38Z",
|
|
"claimedBy": null,
|
|
"claimedAt": null,
|
|
"timeout": 300,
|
|
"retries": 0,
|
|
"maxRetries": 3,
|
|
"backoffSeconds": 60,
|
|
"lastError": null,
|
|
"completedAt": null,
|
|
"result": null
|
|
},
|
|
{
|
|
"id": "task-014",
|
|
"type": "eng-frontend",
|
|
"priority": 3,
|
|
"dependencies": ["task-013"],
|
|
"payload": {
|
|
"action": "build-component",
|
|
"description": "Build EmptyState component",
|
|
"target": "/tmp/loki-mode-test-todo-app/frontend/src/components/EmptyState.tsx"
|
|
},
|
|
"createdAt": "2026-01-02T23:41:38Z",
|
|
"claimedBy": null,
|
|
"claimedAt": null,
|
|
"timeout": 300,
|
|
"retries": 0,
|
|
"maxRetries": 3,
|
|
"backoffSeconds": 60,
|
|
"lastError": null,
|
|
"completedAt": null,
|
|
"result": null
|
|
},
|
|
{
|
|
"id": "task-015",
|
|
"type": "eng-frontend",
|
|
"priority": 3,
|
|
"dependencies": ["task-012"],
|
|
"payload": {
|
|
"action": "build-component",
|
|
"description": "Build ConfirmDialog component",
|
|
"target": "/tmp/loki-mode-test-todo-app/frontend/src/components/ConfirmDialog.tsx"
|
|
},
|
|
"createdAt": "2026-01-02T23:41:38Z",
|
|
"claimedBy": null,
|
|
"claimedAt": null,
|
|
"timeout": 300,
|
|
"retries": 0,
|
|
"maxRetries": 3,
|
|
"backoffSeconds": 60,
|
|
"lastError": null,
|
|
"completedAt": null,
|
|
"result": null
|
|
},
|
|
{
|
|
"id": "task-016",
|
|
"type": "eng-frontend",
|
|
"priority": 2,
|
|
"dependencies": ["task-011", "task-012", "task-013", "task-014", "task-015"],
|
|
"payload": {
|
|
"action": "assemble-app",
|
|
"description": "Assemble App.tsx with all components",
|
|
"target": "/tmp/loki-mode-test-todo-app/frontend/src/App.tsx"
|
|
},
|
|
"createdAt": "2026-01-02T23:41:38Z",
|
|
"claimedBy": null,
|
|
"claimedAt": null,
|
|
"timeout": 300,
|
|
"retries": 0,
|
|
"maxRetries": 3,
|
|
"backoffSeconds": 60,
|
|
"lastError": null,
|
|
"completedAt": null,
|
|
"result": null
|
|
},
|
|
{
|
|
"id": "task-017",
|
|
"type": "eng-frontend",
|
|
"priority": 2,
|
|
"dependencies": ["task-016"],
|
|
"payload": {
|
|
"action": "add-styling",
|
|
"description": "Add CSS styling (clean, minimal design)",
|
|
"target": "/tmp/loki-mode-test-todo-app/frontend/src/App.css"
|
|
},
|
|
"createdAt": "2026-01-02T23:41:38Z",
|
|
"claimedBy": null,
|
|
"claimedAt": null,
|
|
"timeout": 300,
|
|
"retries": 0,
|
|
"maxRetries": 3,
|
|
"backoffSeconds": 60,
|
|
"lastError": null,
|
|
"completedAt": null,
|
|
"result": null
|
|
},
|
|
{
|
|
"id": "task-018",
|
|
"type": "eng-qa",
|
|
"priority": 1,
|
|
"dependencies": ["task-016", "task-017"],
|
|
"payload": {
|
|
"action": "e2e-test",
|
|
"description": "Manual end-to-end testing of all features",
|
|
"target": "/tmp/loki-mode-test-todo-app"
|
|
},
|
|
"createdAt": "2026-01-02T23:41:38Z",
|
|
"claimedBy": null,
|
|
"claimedAt": null,
|
|
"timeout": 900,
|
|
"retries": 0,
|
|
"maxRetries": 3,
|
|
"backoffSeconds": 60,
|
|
"lastError": null,
|
|
"completedAt": null,
|
|
"result": null
|
|
}
|
|
]
|
|
}
|