fix: review findings F03-F06 — quotas, rule hierarchy and a validator that checks
F03 — application records
- Quota already removed with F02's tracker; verified uncapped and that
"interview reached" survives a later withdrawal.
- Aker BP: application date confirmed 2026-07-29 by the user, settling the
one-day conflict. Its Adjacent-despite-79 classification is kept, NOT
reclassified: the user does not remember the rationale and judged it
immaterial on a closed role, and silently reclassifying to make the
arithmetic tidy is the exact objection the review raised. Recorded as an
explicit override reason with a rubric version instead.
F04 — rule hierarchy
- Three levels stated in AGENTS.md and CLAUDE.md: immutable evidence rules,
standing user preferences, market/employer presentation.
- Deliverables separated from QA. The .tex stays the artefact of record; you
still compile, into the application's own output/ folder, because the user
cannot approve what he cannot open.
- `resume_reference.md` said "Capgemini/Bundeswehr: include only when directly
relevant", contradicting the standing never-include rule. Split and fixed.
F05 — a green validator now means something
- Per-claim `forbidden` wording is enforced. 14 of 26 claims carried such a
list and NONE of it was checked, which is why "owned the full ML lifecycle"
passed. Matching tolerates inserted adjectives: the real regression read
"Built a decentralized Data Mesh" and one word defeated the literal list.
- Added identity (e-mail/phone), employer-date, placeholder and
document-exclusion checks. Capgemini's omission rule now has a canonical
home in claims.json instead of living only in memory and config.md.
- Registered Groovy and Snowflake as forbidden skills. Both were absent from
claims.json entirely, so "forbidden" existed in prose with nothing enforcing
it.
- PASS no longer reads as a truth certificate: it prints what it did not check
— scope implications, bullet-to-claim support, whether a number is real.
F06 — the scanner stopped fighting the documents
- LaTeX comments are no longer claims; `% never claim Terraform` was a finding
before, which taught the workflow to write around the checker.
- Markup, accent macros and umlauts are normalized, so `\textbf{Snow}flake`
cannot smuggle a forbidden skill past a substring test and
`Universit\"at der Bundeswehr M\"unchen` is recognisably a school.
- Honest denials pass in English and German.
- The triple-list cadence hint knew only English "and", so it silently did
nothing on every German package. Advisory only, and now labelled as such.
Verification
- The six counter-proofs from the report are caught: 9 errors on one synthetic
document, where the old scanner found none.
- All six packages built under current rules scan clean — SBB, NVIDIA, RUAG,
Kdo Cy, Citadel, Aker BP. Four false positives of my own were found and fixed
on the way there; each is now a regression test.
- 13 older packages do report findings. Those look like genuine historical
violations and are deliberately NOT fixed here: F17 governs archives and they
must not be silently rewritten.
- `tests/test_document_scanner.py` added. Full suite 31/31 pass.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qej5SBvhcbGXHwLqNWiskM
This commit is contained in:
1 parent
afdef7eb94
commit
fc5f3e49ba
8 files changed
+421
-31
No files matched your search
+51
-11
@@ -6,19 +6,31 @@ Do not rewrite submitted application archives or invent missing evidence.
|
||||
|
||||
## Resume point
|
||||
|
||||
F01 and F02 complete. Next: F03, route tracker mutations through the authoritative registry, remove quotas and validate events.
|
||||
Read this file and inspect `git diff` before resuming; do not repeat completed work.
|
||||
F01–F06 complete. **Next: F07** — propagate evidence corrections into active writing sources
|
||||
(start at `bundles/bundle_ml_ai_engineer.md:74,81`, the PyTorch context loss named in the report).
|
||||
Read this file and inspect `git log`/`git diff` before resuming; do not repeat completed work.
|
||||
|
||||
Checkpoints so far: `afdef7e` (F01+F02), and the commit that carries F03–F06.
|
||||
|
||||
## 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; 10 tests pass |
|
||||
| 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 | TODO | Remove quota, validate and safely update application records |
|
||||
| F04 | TODO | Rule hierarchy, deliverables and approval semantics |
|
||||
| F05 | TODO | Structured document evidence and honest mechanical/semantic results |
|
||||
| F06 | TODO | LaTeX normalization, schema errors and advisory style diagnostics |
|
||||
| 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 | TODO | Propagate evidence corrections into active writing sources |
|
||||
| F08 | TODO | Normalize source/context/ownership metadata without inventing evidence |
|
||||
| F09 | TODO | Safe professional templates; clearly separate academic legacy |
|
||||
@@ -33,15 +45,43 @@ Read this file and inspect `git diff` before resuming; do not repeat completed w
|
||||
| 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. Corrected the top-level file map and added this resume pointer. `python -m unittest discover -s tests -v`: 10/10 pass. The workflow validator now checks the shared critique implementation.
|
||||
- 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. Original tables/cohort preserved in `job_scout/state/history/application_status_before_2026-09-11.json`. `application_records.py --check` detects stale projections. Aker BP's July 29/30 date discrepancy and original Adjacent override remain explicitly unresolved. No date or rubric explanation invented.
|
||||
- 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.
|
||||
- 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.
|
||||
Historical packages are preserved; fixes apply to active sources and future generation unless
|
||||
specifically noted.
|
||||
Reference in new issue
Block a user