F08 - evidence metadata - Only 1 of 26 claims carried structured source/last_verified/ownership, which is why recency and reference checks could not run. Added an evidence_schema block and an evidence block on all 26 claims. - 8 dates were recovered from each claim's OWN recorded text; the other 18 are written as the literal "unrecorded". Nothing was inferred. "unrecorded" means nobody wrote it down, NOT that the claim is unevidenced - most carry evidence in their free-text scope. - Coverage is reported as an advisory warning, never a gate: failing on it would push a future session to invent dates to clear the run. F09 - templates - resume_template.tex asserted "12+ years of production software experience". It does not hold: canonical employment starts 2014-11 (~11y10m) and the VISIBLE chronology starts 2015-05 (~11y4m) because Capgemini is omitted. Now "over ten years", with the arithmetic and the no-date-math rule inline. - cv_template.tex still carries page targets, rendered-line budgets and 2L/3L variants the project dropped. Banner-marked as the ACADEMIC legacy path so it is not reached for whenever a posting says "CV". F10 - US GPA - The modified Bavarian formula converts FOREIGN grades INTO the German system. Inverting it to produce a US GPA is not a recognised method, and the TUM source calls even its forward calculator orientation only. - Fields renamed to final_grade_us_4pt_orientation_only with that caveat. The German grades remain the canonical facts. If a recipient publishes its own conversion, use theirs and record which was used. Validator PASS (1 advisory), 31/31 tests. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qej5SBvhcbGXHwLqNWiskM
94 lines
6.9 KiB
Markdown
94 lines
6.9 KiB
Markdown
# Review remediation — 2026-09-11
|
||
|
||
User authorized all recommendations in `output/Project_Review_2026-09-11/project_review.tex`.
|
||
Work sequentially; update this file after each verified fix and before stopping.
|
||
Do not rewrite submitted application archives or invent missing evidence.
|
||
|
||
## Resume point
|
||
|
||
F01–F10 complete. **Next: F11** — dedupe scout results by requisition, not title
|
||
(`job_scout/scout.py`, inside `_process_company`).
|
||
Read this file and inspect `git log`/`git diff` before resuming; do not repeat completed work.
|
||
|
||
Checkpoints: `afdef7e` (F01+F02) · `fc5f3e4` (F03–F06) · `ce5b7f5` (F07) · plus F08–F10.
|
||
|
||
## User rulings — 2026-09-11
|
||
|
||
- **Aker BP application date: 2026-07-29** (confirmed; the CLAUDE.md cell saying 07-30 was wrong).
|
||
- **Aker BP Adjacent-despite-79:** user does not remember and considers it immaterial, role closed
|
||
and rejected — *"mach wie du es am saubersten findest"*. Resolved as: keep the recorded class,
|
||
record an honest override reason saying the rationale is unrecoverable, and do **not** reclassify.
|
||
Silent reclassification was the review's own objection.
|
||
- **F18/F19 document layout changes: authorized.**
|
||
|
||
## Checklist
|
||
|
||
| Finding | Status | Scope / verification |
|
||
|---|---|---|
|
||
| F01 | DONE | Six shared workflows; both agent entrypoints route identically; parity/link regression test |
|
||
| F02 | DONE | 26 registry records, preserved original tables, common current view, interview events independent of outcome |
|
||
| F03 | DONE | Quota gone (tracker is uncapped, `cohort_tracker.py` is a shim); Aker BP date and override recorded; validation enforces unique IDs, ISO dates, score range and gate/class consistency |
|
||
| F04 | DONE | Three-level rule hierarchy in AGENTS.md + CLAUDE.md; deliverable vs QA separated; `resume_reference.md` Capgemini contradiction removed |
|
||
| F05 | DONE | Per-claim forbidden wording enforced, identity/employer/placeholder/exclusion checks, `document_exclusions` given a canonical home, PASS no longer claims to be a truth certificate |
|
||
| F06 | DONE | LaTeX comments, markup, accent macros and umlauts normalized; negations respected; German `und` in the cadence hint; advisory warnings labelled as never a gate |
|
||
| F07 | DONE | Overstatement narrowed (BS-1, zero-downtime, retrieval, evaluation, PyTorch context); undervaluation fixed (BS-6 reached no bundle at all; Linux/Ansible/Bash missing from taxonomy) |
|
||
| F08 | DONE | `evidence_schema` + per-claim `evidence` block on all 26; 8 dates recovered from existing text, 18 written `unrecorded` rather than guessed; coverage reported as an advisory hint, never a gate |
|
||
| F09 | DONE | `12+ years` -> `over ten years` with the reasoning inline; `cv_template.tex` banner-marked as the academic legacy path |
|
||
| F10 | DONE | US figures renamed `*_orientation_only`; the Bavarian formula runs foreign-INTO-German, so inverting it is not a recognised conversion. German grades stay canonical |
|
||
| F11 | TODO | Dedupe by requisition, not title |
|
||
| F12 | TODO | Structured country/remote eligibility |
|
||
| F13 | TODO | Shared decision identity resolver |
|
||
| F14 | TODO | Search relevance distinct from fit; German terminology |
|
||
| F15 | TODO | Typed dates and retained contact/compensation metadata |
|
||
| F16 | TODO | Run-scoped reports, transactional persistence and scan coverage |
|
||
| F17 | TODO | Reproducible new builds and safe historical archive classification |
|
||
| F18 | TODO | Evidence earlier on page one; rendered skills budget |
|
||
| F19 | TODO | Education layout, phrasing guidance, reproducible word counts |
|
||
|
||
**Sequencing note:** F11–F16 all touch `scout.py`. Fix behaviours in place and keep each
|
||
finding's diff separately verifiable. **Do not start the ~2400-line file split F16 suggests**
|
||
mid-remediation — it would destroy the ability to attribute a regression to a specific fix.
|
||
|
||
## Verification log
|
||
|
||
- Review baseline: 9 existing tests passed; 43/45 LaTeX builds succeeded. See the report for limitations.
|
||
- F01: moved current workflows into `resume_builder/reference/workflows/`; preserved skill frontmatter
|
||
and Claude invocation support. `python -m unittest discover -s tests -v`: 10/10 pass.
|
||
- F01 limitation: external `quick_validate.py` could not start because PyYAML is absent; repository
|
||
tests validate frontmatter and both routing links.
|
||
- F02: imported 26 applications from the newer CLAUDE table and seven structured cohort records.
|
||
Originals preserved in `job_scout/state/history/application_status_before_2026-09-11.json`.
|
||
- F03: `application_tracker.py summary` runs uncapped and reports "interview reached: 1" for SBB
|
||
despite the withdrawal — the F02 separation working. Aker BP written through
|
||
`records.transaction()`, so validation and view regeneration ran; `--check` reports views current.
|
||
- F04: `resume_reference.md` said "Capgemini/Bundeswehr: include only when directly relevant",
|
||
contradicting the standing never-include rule. Corrected, and the two rules separated.
|
||
- F05/F06 verification — **the counter-proof document is the evidence**:
|
||
- All six counter-proofs from the report are now caught (9 errors on one synthetic document).
|
||
- `% Never claim Terraform` (a comment) and an honest "no Terraform experience" — English and
|
||
German — correctly produce **no** finding.
|
||
- **All six packages built under current rules scan clean: SBB, NVIDIA, RUAG, Kdo Cy, Citadel,
|
||
Aker BP — 0 errors each.** Four false positives of my own making were found and fixed along the
|
||
way (title collision across employers, education institution vs employment entry, umlauts,
|
||
LaTeX accent macros). Each is now a regression test.
|
||
- 13 older packages DO report findings (Apple 9, Microsoft Principal FDE 8, …). These look like
|
||
genuine historical violations under today's stricter rules — "petabyte scale", "own the AWS data
|
||
platform", uncontextualised PyTorch/TensorFlow. **Not fixed: F17 governs historical archives and
|
||
they must not be silently rewritten.** Feed this list into F17.
|
||
- `tests/test_document_scanner.py` added: 8 must-fail, 4 must-not-fail, plus a guard that current
|
||
packages stay clean. Full suite 31/31 pass.
|
||
- F07: raw history preserved; only selection rules and safe wording changed. The NVIDIA/RUAG
|
||
"line could not be stopped" phrasing is left in the submitted letters and recorded as an OPEN
|
||
ITEM in `experience_bosch.md` - plausible, unevidenced, to be confirmed before reuse.
|
||
- F08: `unrecorded` is deliberately a real value. Failing the build on it would push a future
|
||
session to invent dates to get a green run.
|
||
- F10: no stale `final_grade_us_4pt` references remain anywhere in the repo.
|
||
- Not re-run this session: the 45-document LaTeX build sweep and the visual sampling.
|
||
|
||
## Completion rules
|
||
|
||
DONE requires implementation plus relevant checks. Record partial work and exact next action.
|
||
Missing factual evidence must remain explicitly unresolved, never silently promoted to verified.
|
||
Historical packages are preserved; fixes apply to active sources and future generation unless
|
||
specifically noted.
|