diff --git a/tasks.org b/tasks.org index 4cce0d0..b52dc04 100644 --- a/tasks.org +++ b/tasks.org @@ -44,7 +44,7 @@ title number is miletone.task with est. commits in parens * milestone 1 — setup and scaffolding -* [x] 1.1: project scaffold (1) +* [X] 1.1: project scaffold (1) create usajobs.py, requirements.txt, .env.example, .gitignore ** acceptance criteria @@ -62,7 +62,7 @@ create usajobs.py, requirements.txt, .env.example, .gitignore - tests: ~python usajobs.py --help~ and ~python usajobs.py search --help~ both pass - datetime: [2026-05-18 Sun 15:00] -* [x] 1.2: env validation (1) +* [X] 1.2: env validation (1) implement get_credentials() and wire startup check into search command ** acceptance criteria @@ -81,7 +81,7 @@ implement get_credentials() and wire startup check into search command * milestone 2 — api and data layer -* [x] 2.1: build_params() (1) +* [X] 2.1: build_params() (1) construct api query dict from cli args ** acceptance criteria @@ -101,7 +101,7 @@ construct api query dict from cli args - tests: ~--debug~ flag prints params; verified ~JobCategoryCode=2210~ returns correct results - datetime: [2026-05-18 Sun 15:00] -* [x] 2.2: fetch_page() with caching (1) +* [X] 2.2: fetch_page() with caching (1) fetch one page from the api with disk cache ** acceptance criteria @@ -120,7 +120,7 @@ fetch one page from the api with disk cache - tests: ran twice; second run served from cache (no network calls). ~--offline~ with cache returns data. - datetime: [2026-05-18 Sun 15:00] -* [x] 2.3: fetch_all() (1) +* [X] 2.3: fetch_all() (1) page through api results up to --limit ** acceptance criteria @@ -138,7 +138,7 @@ page through api results up to --limit - tests: ~--debug~ shows "page 1: got 132, running total 132, api reports 132 total" - datetime: [2026-05-18 Sun 15:00] -* [x] 2.4: normalize_job() (1) +* [X] 2.4: normalize_job() (1) flatten raw api shape into a stable dict ** acceptance criteria @@ -162,7 +162,7 @@ flatten raw api shape into a stable dict * milestone 3 — filtering -* [x] 3.1: passes_filters() (1) +* [X] 3.1: passes_filters() (1) local filter predicate applied after api fetch ** acceptance criteria @@ -186,7 +186,7 @@ local filter predicate applied after api fetch * milestone 4 — display -* [x] 4.1: render_table() (1) +* [X] 4.1: render_table() (1) print filtered results as a rich table ** acceptance criteria @@ -205,7 +205,7 @@ print filtered results as a rich table - tests: table renders correctly in Windows terminal; "No jobs matched" shown when filters exclude all - datetime: [2026-05-18 Sun 15:00] -* [x] 4.2: compact_job_label() (1) +* [X] 4.2: compact_job_label() (1) one-line label for questionary checkbox rows ** acceptance criteria @@ -222,7 +222,7 @@ one-line label for questionary checkbox rows * milestone 5 — selection and export -* [x] 5.1: choose_jobs() (1) +* [X] 5.1: choose_jobs() (1) questionary checkbox prompt for export selection ** acceptance criteria @@ -241,7 +241,7 @@ questionary checkbox prompt for export selection - tests: interactive flow needs manual terminal test — covered in 6.2 - datetime: [2026-05-18 Sun 15:00] -* [x] 5.2: make_output_path() (1) +* [X] 5.2: make_output_path() (1) generate timestamped export filename or use --out ** acceptance criteria @@ -260,7 +260,7 @@ generate timestamped export filename or use --out - tests: verified filename format from two live runs with different filter combos - datetime: [2026-05-18 Sun 15:13] -* [x] 5.3: export_org() (1) +* [X] 5.3: export_org() (1) write selected jobs to org-mode file ** acceptance criteria @@ -284,7 +284,7 @@ write selected jobs to org-mode file * milestone 6 — cli wiring and polish -* [x] 6.1: wire search command (1) +* [X] 6.1: wire search command (1) connect all options to all functions end-to-end ** acceptance criteria @@ -319,3 +319,4 @@ validate filter correctness and edge cases ** evidence - commit: - datetime: +* === Backlog ===