chore(M001/S01/T01): auto-commit after state-rebuild
This commit is contained in:
@@ -1,2 +1,3 @@
|
||||
{"ts":"2026-03-24T08:21:45.537Z","ok":true,"errors":0,"warnings":7,"fixes":2,"codes":["gitignore_missing_patterns","env_env_file","provider_key_missing","missing_slice_plan","delimiter_in_title"],"issues":[{"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":"missing_slice_plan","message":"Slice M001/S01 has no plan file","unitId":"M001/S01"},{"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","updated /home/pi/development/JobTracker/.gsd/worktrees/M001/.gsd/STATE.md"],"summary":"Clean · 2 fixed · 5 critical GSD runtime pattern(s) missing from .gitignore: .gsd/activity/, .gsd/runtime/, .gsd/auto.lock, .gsd/gsd.db, .gsd/completed-units.json"}
|
||||
{"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"}
|
||||
|
||||
@@ -45,13 +45,13 @@ S01 directly advances active requirements **R001** and **R002**, and it also lay
|
||||
- Do: Add a job-scoped Gmail candidate endpoint that loads the owned job plus company context, builds multiple Gmail queries from recruiter/company/title/correspondence signals, dedupes messages and groups them by thread, and returns ranked suggestions with match reasons, confidence inputs, and already-imported flags; cover the contract with focused controller/service tests instead of leaving ranking in `Correspondence.tsx`.
|
||||
- Verify: `dotnet test JobTrackerApi.Tests/JobTrackerApi.Tests.csproj --filter GmailControllerTests`
|
||||
- Done when: the API can return ranked Gmail candidates for one job with explicit reasons and duplicate state, and backend tests prove owned-job lookup plus ranking/dedupe behavior.
|
||||
- [ ] **T02: Persist Gmail thread metadata and harden import continuity** `est:3h`
|
||||
- [x] **T02: Persist Gmail thread metadata and harden import continuity** `est:3h`
|
||||
- Why: Smarter matching is not enough if imported correspondence still loses thread identity or forces downstream slices to re-derive sender/thread information later.
|
||||
- Files: `Models/Correspondence.cs`, `JobTrackerApi/Controllers/GmailController.cs`, `JobTrackerApi/Controllers/CorrespondenceController.cs`, `JobTrackerApi/Program.cs`, `JobTrackerApi.Tests/GmailControllerTests.cs`
|
||||
- Do: Extend correspondence persistence and import logic so Gmail imports store thread/message identity plus sender/recipient metadata, update import responses and duplicate handling to reflect imported vs skipped outcomes clearly, and update startup schema guards so older SQLite/MySQL dev databases remain bootable when the new fields land.
|
||||
- Verify: `dotnet test JobTrackerApi.Tests/JobTrackerApi.Tests.csproj --filter GmailControllerTests`
|
||||
- Done when: imported correspondence keeps enough Gmail metadata for thread continuity and dedupe, compatibility guards are planned with the schema change, and tests prove single-message/thread imports behave correctly on repeat imports.
|
||||
- [ ] **T03: Wire ranked Gmail suggestions into the job workspace UI** `est:3h`
|
||||
- [x] **T03: Wire ranked Gmail suggestions into the job workspace UI** `est:3h`
|
||||
- Why: The slice is only complete when the user can act on the smarter backend contract inside the actual job workspace rather than through a generic inbox search UI.
|
||||
- Files: `job-tracker-ui/src/components/JobDetailsDialog.tsx`, `job-tracker-ui/src/components/Correspondence.tsx`, `job-tracker-ui/src/types.ts`, `job-tracker-ui/src/correspondence-gmail-import.test.tsx`
|
||||
- Do: Pass job context from `JobDetailsDialog` into `Correspondence`, replace client-side primary ranking with the server-provided candidate contract, show match reasons/confidence/import state and thread actions, keep manual query/search as a fallback override, and add a React test that proves ranked suggestions and import refresh behavior in the dialog.
|
||||
|
||||
Reference in New Issue
Block a user