chore(M001/S01): auto-commit after state-rebuild
This commit is contained in:
@@ -2,3 +2,4 @@
|
|||||||
{"ts":"2026-03-24T08:25:41.311Z","ok":true,"errors":0,"warnings":7,"fixes":3,"codes":["state_file_stale","gitignore_missing_patterns","env_env_file","provider_key_missing","delimiter_in_title"],"issues":[{"severity":"warning","code":"state_file_stale","message":"STATE.md is stale — shows \"planning\" but derived state is \"executing\"","unitId":"project"},{"severity":"warning","code":"gitignore_missing_patterns","message":"5 critical GSD runtime pattern(s) missing from .gitignore: .gsd/activity/, .gsd/runtime/, .gsd/auto.lock, .gsd/gsd.db, .gsd/completed-units.json","unitId":"project"},{"severity":"warning","code":"env_env_file","message":".env.example exists but no .env or .env.local found — Copy .env.example to .env and fill in values","unitId":"environment"},{"severity":"warning","code":"provider_key_missing","message":"OpenAI — not configured — Set OPENAI_API_KEY or run /gsd keys","unitId":"project"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M002 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M002"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M003 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M003"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M004 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M004"}],"fixDescriptions":["rebuilt STATE.md from derived state","added missing GSD runtime patterns to .gitignore","updated /home/pi/development/JobTracker/.gsd/worktrees/M001/.gsd/STATE.md"],"summary":"Clean · 3 fixed · STATE.md is stale — shows \"planning\" but derived state is \"executing\""}
|
{"ts":"2026-03-24T08:25:41.311Z","ok":true,"errors":0,"warnings":7,"fixes":3,"codes":["state_file_stale","gitignore_missing_patterns","env_env_file","provider_key_missing","delimiter_in_title"],"issues":[{"severity":"warning","code":"state_file_stale","message":"STATE.md is stale — shows \"planning\" but derived state is \"executing\"","unitId":"project"},{"severity":"warning","code":"gitignore_missing_patterns","message":"5 critical GSD runtime pattern(s) missing from .gitignore: .gsd/activity/, .gsd/runtime/, .gsd/auto.lock, .gsd/gsd.db, .gsd/completed-units.json","unitId":"project"},{"severity":"warning","code":"env_env_file","message":".env.example exists but no .env or .env.local found — Copy .env.example to .env and fill in values","unitId":"environment"},{"severity":"warning","code":"provider_key_missing","message":"OpenAI — not configured — Set OPENAI_API_KEY or run /gsd keys","unitId":"project"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M002 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M002"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M003 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M003"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M004 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M004"}],"fixDescriptions":["rebuilt STATE.md from derived state","added missing GSD runtime patterns to .gitignore","updated /home/pi/development/JobTracker/.gsd/worktrees/M001/.gsd/STATE.md"],"summary":"Clean · 3 fixed · STATE.md is stale — shows \"planning\" but derived state is \"executing\""}
|
||||||
{"ts":"2026-03-24T11:07:25.707Z","ok":true,"errors":0,"warnings":8,"fixes":4,"codes":["gitignore_missing_patterns","env_env_file","provider_key_missing","task_summary_without_done_checkbox","delimiter_in_title"],"issues":[{"severity":"warning","code":"gitignore_missing_patterns","message":"1 critical GSD runtime pattern(s) missing from .gitignore: .gsd/gsd.db","unitId":"project"},{"severity":"warning","code":"env_env_file","message":".env.example exists but no .env or .env.local found — Copy .env.example to .env and fill in values","unitId":"environment"},{"severity":"warning","code":"provider_key_missing","message":"OpenAI — not configured — Set OPENAI_API_KEY or run /gsd keys","unitId":"project"},{"severity":"warning","code":"task_summary_without_done_checkbox","message":"Task T02 has a summary but is not marked done in the slice plan","unitId":"M001/S01/T02"},{"severity":"warning","code":"task_summary_without_done_checkbox","message":"Task T03 has a summary but is not marked done in the slice plan","unitId":"M001/S01/T03"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M002 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M002"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M003 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M003"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M004 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M004"}],"fixDescriptions":["added missing GSD runtime patterns to .gitignore","marked T02 done in /home/pi/development/JobTracker/.gsd/worktrees/M001/.gsd/milestones/M001/slices/S01/S01-PLAN.md","marked T03 done in /home/pi/development/JobTracker/.gsd/worktrees/M001/.gsd/milestones/M001/slices/S01/S01-PLAN.md","updated /home/pi/development/JobTracker/.gsd/worktrees/M001/.gsd/STATE.md"],"summary":"Clean · 4 fixed · 1 critical GSD runtime pattern(s) missing from .gitignore: .gsd/gsd.db"}
|
{"ts":"2026-03-24T11:07:25.707Z","ok":true,"errors":0,"warnings":8,"fixes":4,"codes":["gitignore_missing_patterns","env_env_file","provider_key_missing","task_summary_without_done_checkbox","delimiter_in_title"],"issues":[{"severity":"warning","code":"gitignore_missing_patterns","message":"1 critical GSD runtime pattern(s) missing from .gitignore: .gsd/gsd.db","unitId":"project"},{"severity":"warning","code":"env_env_file","message":".env.example exists but no .env or .env.local found — Copy .env.example to .env and fill in values","unitId":"environment"},{"severity":"warning","code":"provider_key_missing","message":"OpenAI — not configured — Set OPENAI_API_KEY or run /gsd keys","unitId":"project"},{"severity":"warning","code":"task_summary_without_done_checkbox","message":"Task T02 has a summary but is not marked done in the slice plan","unitId":"M001/S01/T02"},{"severity":"warning","code":"task_summary_without_done_checkbox","message":"Task T03 has a summary but is not marked done in the slice plan","unitId":"M001/S01/T03"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M002 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M002"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M003 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M003"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M004 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M004"}],"fixDescriptions":["added missing GSD runtime patterns to .gitignore","marked T02 done in /home/pi/development/JobTracker/.gsd/worktrees/M001/.gsd/milestones/M001/slices/S01/S01-PLAN.md","marked T03 done in /home/pi/development/JobTracker/.gsd/worktrees/M001/.gsd/milestones/M001/slices/S01/S01-PLAN.md","updated /home/pi/development/JobTracker/.gsd/worktrees/M001/.gsd/STATE.md"],"summary":"Clean · 4 fixed · 1 critical GSD runtime pattern(s) missing from .gitignore: .gsd/gsd.db"}
|
||||||
{"ts":"2026-03-24T11:11:32.760Z","ok":true,"errors":0,"warnings":8,"fixes":3,"codes":["state_file_stale","gitignore_missing_patterns","env_env_file","provider_key_missing","task_done_must_haves_not_verified","delimiter_in_title"],"issues":[{"severity":"warning","code":"state_file_stale","message":"STATE.md is stale — shows \"summarizing\" but derived state is \"executing\"","unitId":"project"},{"severity":"warning","code":"gitignore_missing_patterns","message":"1 critical GSD runtime pattern(s) missing from .gitignore: .gsd/gsd.db","unitId":"project"},{"severity":"warning","code":"env_env_file","message":".env.example exists but no .env or .env.local found — Copy .env.example to .env and fill in values","unitId":"environment"},{"severity":"warning","code":"provider_key_missing","message":"OpenAI — not configured — Set OPENAI_API_KEY or run /gsd keys","unitId":"project"},{"severity":"warning","code":"task_done_must_haves_not_verified","message":"Task T03 has 3 must-haves but summary addresses only 2","unitId":"M001/S01/T03"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M002 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M002"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M003 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M003"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M004 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M004"}],"fixDescriptions":["rebuilt STATE.md from derived state","added missing GSD runtime patterns to .gitignore","updated /home/pi/development/JobTracker/.gsd/worktrees/M001/.gsd/STATE.md"],"summary":"Clean · 3 fixed · STATE.md is stale — shows \"summarizing\" but derived state is \"executing\""}
|
{"ts":"2026-03-24T11:11:32.760Z","ok":true,"errors":0,"warnings":8,"fixes":3,"codes":["state_file_stale","gitignore_missing_patterns","env_env_file","provider_key_missing","task_done_must_haves_not_verified","delimiter_in_title"],"issues":[{"severity":"warning","code":"state_file_stale","message":"STATE.md is stale — shows \"summarizing\" but derived state is \"executing\"","unitId":"project"},{"severity":"warning","code":"gitignore_missing_patterns","message":"1 critical GSD runtime pattern(s) missing from .gitignore: .gsd/gsd.db","unitId":"project"},{"severity":"warning","code":"env_env_file","message":".env.example exists but no .env or .env.local found — Copy .env.example to .env and fill in values","unitId":"environment"},{"severity":"warning","code":"provider_key_missing","message":"OpenAI — not configured — Set OPENAI_API_KEY or run /gsd keys","unitId":"project"},{"severity":"warning","code":"task_done_must_haves_not_verified","message":"Task T03 has 3 must-haves but summary addresses only 2","unitId":"M001/S01/T03"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M002 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M002"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M003 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M003"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M004 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M004"}],"fixDescriptions":["rebuilt STATE.md from derived state","added missing GSD runtime patterns to .gitignore","updated /home/pi/development/JobTracker/.gsd/worktrees/M001/.gsd/STATE.md"],"summary":"Clean · 3 fixed · STATE.md is stale — shows \"summarizing\" but derived state is \"executing\""}
|
||||||
|
{"ts":"2026-03-24T11:14:31.380Z","ok":true,"errors":0,"warnings":9,"fixes":4,"codes":["orphaned_completed_units","gitignore_missing_patterns","env_env_file","provider_key_missing","task_file_not_in_plan","task_summary_without_done_checkbox","delimiter_in_title"],"issues":[{"severity":"warning","code":"orphaned_completed_units","message":"1 completed-unit key(s) reference missing artifacts: execute-task/M001/S01/T01","unitId":"project"},{"severity":"warning","code":"gitignore_missing_patterns","message":"1 critical GSD runtime pattern(s) missing from .gitignore: .gsd/gsd.db","unitId":"project"},{"severity":"warning","code":"env_env_file","message":".env.example exists but no .env or .env.local found — Copy .env.example to .env and fill in values","unitId":"environment"},{"severity":"warning","code":"provider_key_missing","message":"OpenAI — not configured — Set OPENAI_API_KEY or run /gsd keys","unitId":"project"},{"severity":"warning","code":"task_summary_without_done_checkbox","message":"Task T01 has a summary but is not marked done in the slice plan","unitId":"M001/S01/T01"},{"severity":"warning","code":"task_summary_without_done_checkbox","message":"Task T02 has a summary but is not marked done in the slice plan","unitId":"M001/S01/T02"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M002 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M002"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M003 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M003"},{"severity":"warning","code":"delimiter_in_title","message":"Milestone M004 title contains em/en dash (— or –), which conflict with GSD state document delimiters. Rename the milestone to remove these characters to prevent state corruption.","unitId":"M004"}],"fixDescriptions":["added missing GSD runtime patterns to .gitignore","marked T01 done in /home/pi/development/JobTracker/.gsd/worktrees/M001/.gsd/milestones/M001/slices/S01/S01-PLAN.md","marked T02 done in /home/pi/development/JobTracker/.gsd/worktrees/M001/.gsd/milestones/M001/slices/S01/S01-PLAN.md","updated /home/pi/development/JobTracker/.gsd/worktrees/M001/.gsd/STATE.md"],"summary":"Clean · 4 fixed · 1 completed-unit key(s) reference missing artifacts: execute-task/M001/S01/T01"}
|
||||||
|
|||||||
@@ -39,13 +39,13 @@ S01 still owns active requirement **R002** and materially supports **R010**. The
|
|||||||
|
|
||||||
## Tasks
|
## Tasks
|
||||||
|
|
||||||
- [ ] **T01: Add linked Gmail thread refresh to the backend contract** `est:4h`
|
- [x] **T01: Add linked Gmail thread refresh to the backend contract** `est:4h`
|
||||||
- Why: R002 is still unmet until the app can turn a one-time import into continuing thread history for the same job.
|
- Why: R002 is still unmet until the app can turn a one-time import into continuing thread history for the same job.
|
||||||
- Files: `JobTrackerApi/Controllers/GmailController.cs`, `JobTrackerApi/Services/GmailOAuthService.cs`, `JobTrackerApi.Tests/GmailControllerTests.cs`, `JobTrackerApi/Program.cs`
|
- Files: `JobTrackerApi/Controllers/GmailController.cs`, `JobTrackerApi/Services/GmailOAuthService.cs`, `JobTrackerApi.Tests/GmailControllerTests.cs`, `JobTrackerApi/Program.cs`
|
||||||
- Do: Add a job-scoped refresh path that reads already-linked `ExternalThreadId` values for one owned job, fetches messages for those known Gmail threads, imports only unseen message ids into the same job, updates refresh timestamps/status, and exposes a clear duplicate-safe result contract. Follow D008: use bounded refresh over known imported thread ids rather than inbox-wide Gmail watch/history infrastructure.
|
- Do: Add a job-scoped refresh path that reads already-linked `ExternalThreadId` values for one owned job, fetches messages for those known Gmail threads, imports only unseen message ids into the same job, updates refresh timestamps/status, and exposes a clear duplicate-safe result contract. Follow D008: use bounded refresh over known imported thread ids rather than inbox-wide Gmail watch/history infrastructure.
|
||||||
- Verify: `dotnet test JobTrackerApi.Tests/JobTrackerApi.Tests.csproj --filter GmailControllerTests`
|
- Verify: `dotnet test JobTrackerApi.Tests/JobTrackerApi.Tests.csproj --filter GmailControllerTests`
|
||||||
- Done when: the API can refresh linked Gmail threads for one job, import new inbound or sent replies without duplicate re-imports, and tests prove success, duplicate-only, disconnected, and invalid-job cases.
|
- Done when: the API can refresh linked Gmail threads for one job, import new inbound or sent replies without duplicate re-imports, and tests prove success, duplicate-only, disconnected, and invalid-job cases.
|
||||||
- [ ] **T02: Surface live Gmail thread continuity in the job workspace** `est:3h`
|
- [x] **T02: Surface live Gmail thread continuity in the job workspace** `est:3h`
|
||||||
- Why: The slice is only complete when the user can see the linked thread stay current inside the real `Correspondence` workspace flow.
|
- Why: The slice is only complete when the user can see the linked thread stay current inside the real `Correspondence` workspace flow.
|
||||||
- Files: `job-tracker-ui/src/components/Correspondence.tsx`, `job-tracker-ui/src/types.ts`, `job-tracker-ui/src/correspondence-gmail-import.test.tsx`, `job-tracker-ui/src/components/JobDetailsDialog.tsx`
|
- Files: `job-tracker-ui/src/components/Correspondence.tsx`, `job-tracker-ui/src/types.ts`, `job-tracker-ui/src/correspondence-gmail-import.test.tsx`, `job-tracker-ui/src/components/JobDetailsDialog.tsx`
|
||||||
- Do: Wire the workspace to call the new linked-thread refresh contract automatically when appropriate for already-linked threads, show refresh/loading/freshness state in the Gmail area and correspondence list, and prove in the React test that a newly synced Gmail reply appears on the job without using the import action again.
|
- Do: Wire the workspace to call the new linked-thread refresh contract automatically when appropriate for already-linked threads, show refresh/loading/freshness state in the Gmail area and correspondence list, and prove in the React test that a newly synced Gmail reply appears on the job without using the import action again.
|
||||||
|
|||||||
Reference in New Issue
Block a user