refactor: shared agent workflows (F01) and one application registry (F02)
Checkpoint for the 2026-09-11 project review remediation. Work by a previous agent that ran out of context; committed unchanged as a rollback point before the remaining findings land on top of it. F01 — the two agent directories had drifted into different processes - Six shared workflows under `resume_builder/reference/workflows/`; both `.agents/skills/` and `.claude/skills/` are now thin entrypoints that route to the same file instead of carrying full copies. - The `.claude` copies were the stale side: fixed bullet line variants and character budgets that the newer process had already dropped. Removing them is the point of the change, not collateral. - Parity/link regression test added; corrected the top-level file map, which pointed at a directory that does not exist. F02 — application status was stored in four places and disagreed - New registry `job_scout/state/applications.json` (26 records) with `application_records.py` (schema, validation, transactional write) and `application_tracker.py` (add/update, no quota). - AGENTS.md and CLAUDE.md no longer keep their own status tables; both point at `current_applications.md`, generated from the registry. - Interview-reached is now independent of outcome, so a withdrawal after an interview can record both facts. The old tables are preserved verbatim in `job_scout/state/history/application_status_before_2026-09-11.json`. Verification: `python -m unittest discover -s tests -v` — 18/18 pass. Spot-checked that the detailed SBB and Kdo Cy notes survived the migration into the registry rather than being flattened. Known unresolved, deliberately not invented (see FIX_PROGRESS.md): Aker BP's application date and its Adjacent-despite-79 classification. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qej5SBvhcbGXHwLqNWiskM
This commit is contained in:
1 parent
0d999ab21b
commit
afdef7eb94
33 files changed
+1558
-1768
No files matched your search
@@ -28,7 +28,7 @@ source documents
|
||||
- Target Staff/Senior Data Engineering first.
|
||||
- Use ML Platform/MLOps, data platform, analytics, and semiconductor profiles only where direct evidence covers the actual requirements.
|
||||
- Treat direct LLM engineering, formal model evaluation, Terraform-heavy SRE, and similar missing required experience as gates rather than keyword opportunities.
|
||||
- Build application cohorts with roughly 70% core, 20% adjacent, and 10% deliberate stretch roles.
|
||||
- Record fit and outcomes without application quotas; a fit classification is a preparation signal.
|
||||
- Add a warm-channel action for core applications.
|
||||
|
||||
The default document is a two-page International Tech resume for US-tech/FAANG-style roles in Europe. A Swiss/DACH policy overlay is available for employers that expect local conventions. Cover letters are conditional, not automatic.
|
||||
@@ -66,12 +66,24 @@ Validate a generated document:
|
||||
python resume_builder/helpers/validate_resume_system.py --document output/Role/resume.tex
|
||||
```
|
||||
|
||||
Track the active 7/2/1 cohort:
|
||||
Track the uncapped application record (use `summary --all` for older applications too):
|
||||
|
||||
```powershell
|
||||
python resume_builder/helpers/cohort_tracker.py summary
|
||||
```
|
||||
|
||||
`job_scout/state/applications.json` owns current status and event history. The old cohort JSON and
|
||||
`resume_builder/reference/current_applications.md` are generated views. Update status without erasing interview history:
|
||||
|
||||
```powershell
|
||||
python resume_builder/helpers/cohort_tracker.py update --id <application-id> --date YYYY-MM-DD --event interview_held --note "Interview completed"
|
||||
python resume_builder/helpers/cohort_tracker.py update --id <application-id> --date YYYY-MM-DD --outcome withdrawn_by_candidate --note "Reason"
|
||||
python resume_builder/helpers/application_records.py --check
|
||||
```
|
||||
|
||||
Use `application_records.py --render` to recover stale generated views. A classification that differs
|
||||
from its numeric rubric needs `--fit-override-reason`; it is never silently relabelled.
|
||||
|
||||
Character counts are available only as readability diagnostics. There are no fixed character bands, equal-length bullet rules, or page-fill quotas.
|
||||
|
||||
## Output and prerequisites
|
||||
|
||||
Reference in new issue
Block a user