b05ffbfbd6d0dfce44fbe702eca276603e46485c
13
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
b05ffbfbd6 |
feat(kb): record language split per employer, KLA DMS ownership, register Kotlin
User corrections, 2026-09-11. KOTLIN was absent from claims.json entirely and was therefore unwritable under the evidence-first rule. Bosch 2020-2022: backend services, Ansible plugin work and extensions. This is the FOURTH real skill found missing this way, after Ansible and Linux (2026-08-27) and Bash (2026-09-05). Correction to an earlier statement in this session: I described Kotlin as the fifth instance and named Groovy/Snowflake as the other two. That was wrong and the user caught it. Groovy and Snowflake were registered the same day as `forbidden` - skills he does NOT have, registered so the document scanner could catch them. The opposite of this pattern. The Kotlin note records the distinction so it does not propagate. Language split per employer, none of it previously recorded: - Fraunhofer: C#. FC-1 and FC-3 named no language at all. - Vizrt: Python for the wrapper, C++ for the transcoding engine (FFmpeg). Cross-referenced to the standing rule not to oversell C++. - Bosch: primarily Python, with some Java and Kotlin (backend, Ansible plugins, extensions) and C# for Spotfire plugins. BS-3 / BS-5: he was TECHNICAL Application Owner for the KLA Defect Management System (DMS) as well as for Spotfire. "Technical" is explicit so the line cannot be read as people management or vendor-side ownership. SW-6 (PySpark): the scope line carried "scale and performance metrics are not verified", which duplicated the metrics field and read as doubt about the skill rather than about the numbers - the skill is production-current and allowed. The caveat now lives only where it belongs. last_verified REMOVED from all 26 evidence blocks at the user's instruction: every claim already carries its employer in the ID prefix, and for closed employers a recency date measured nothing. Provenance (source, ownership) stays. The schema records the reasoning so it is not reintroduced out of habit. Validator advisory warnings 18 -> 0. 37/37 tests pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qej5SBvhcbGXHwLqNWiskM |
||
|
|
f2a1229701 |
fix: clarify the Bosch 24/7 constraint; tidy build artefacts
BS-1 operating constraint - the F07 open item, resolved by the user The user clarified what the 24/7 constraint actually is: a defect in the software could, worst case, halt production - an outcome that must never occur. That is a FAILURE-CONSEQUENCE constraint, and the submitted NVIDIA cover letter states something different: "a production line that could not be stopped for a deployment" describes a scheduling window. The distinction matters in both directions - the letter is inaccurate, and the truth is the stronger claim. - BS-1 scope now records the real constraint and how to write it. - Both variants of the letter's phrasing are added to BS-1 `forbidden`, so the scanner catches them. Verified: it now flags the submitted letter. - BS-1 evidence filled from a real source (this clarification) rather than left unrecorded, including ownership - integration and operation, not model work. - The submitted letter is NOT rewritten (F17). experience_bosch.md records the resolution and the wording to use instead. Scanner false positive fixed: the employer-date check now runs on CVs only. A cover letter naming an employer in prose is not claiming a date. Cleanup, authorised by the user - 136 LaTeX build artefacts removed (already gitignored, regenerable). - 7 superseded intermediate QA renders removed, 6 of them in NATO_AI_ENGINEER which carried nine PDFs for two documents. - Nothing evidential touched: 36 submitted PDFs, 41 e2e deliverables, 44 sources, 54 session/critique files and 20 JD files are intact. The Kraken PDF was checked before deleting and turned out to be the saved job description, not a render. - output/ 16M -> 13M. 37/37 tests pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qej5SBvhcbGXHwLqNWiskM |
||
|
|
eecdbdade6 |
fix(F17): a PDF in a folder is not proof the package can be rebuilt
Build sweep run this session: 48 sources, 46 built, 2 failed. Infineon_AI_Engineer's cover letter fails on font expansion (the font is not scalable); cv_template.tex fails on unfilled placeholders, which is expected for the academic legacy path. Overfull boxes: Microsoft ISE 25.33pt, Isovalent 0.88pt. All historical, all left alone. New: resume_builder/helpers/package_manifest.py records, per application package, what a rebuild would ACTUALLY do - sources, class-file hashes, PDFs present, and the reasons a rebuild would not reproduce the submitted document. It is descriptive; nothing in it authorises rewriting a submitted file. What it found across 21 packages: - 17 are DATE-DEPENDENT. The cover letters use oday, so recompiling a historical package silently restamps it with today's date. - 1 has an INCOMPLETE SOURCE DISTRIBUTION: output/NATO_AI_ENGINEER ships no resume.cls. It builds on this machine only because a copy exists elsewhere, and the shipped PDF hid that. Not repaired by copying the newest class in - the repo carries THREE different resume.cls variants (13/7/1 copies) and older macros differ, so that "fix" could silently change a historical document. - 1 has no PDF at all, so nothing is reviewable without a build. Classification: 7 application packages were in no reuse category. Added to historical_revalidate, and the register now records the default explicitly - anything unlisted is treated as revalidate-before-reuse. Being recent is not the same as being verified; none of the seven was re-read for this. Prevention rather than repair: oday removed from the cover-letter template so new packages stop adding to the pile. A test now fails if it comes back, if the manifest goes stale, or if a package is left unclassified. Also: scan_document gained a template mode. A placeholder in a TEMPLATE is what makes it a template; the defect is one surviving into a generated document. 37/37 tests pass; counter-proof still catches all 9. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qej5SBvhcbGXHwLqNWiskM |
||
|
|
3519b2ffe7 |
fix(F08-F10): machine-checkable evidence, honest templates, demoted GPA
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 |
||
|
|
fc5f3e49ba |
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
|
||
|
|
a0ec2fedb5 |
feat: NVIDIA Sr DevOps application, drop cohort caps, fix Workday/decision-log bugs
Scout run 2026-09-04 (36 companies, 778 eligible) plus the NVIDIA package it surfaced, and the tooling and policy fixes found along the way. Application - NVIDIA Senior DevOps Engineer, Zurich (JR2024256): submitted 2026-09-05. Evidence Fit 64/100 Stretch, hard gate FAIL x2, channel Weak. Sent on an explicit user override with the working model unresolved, so hybrid-vs-onsite is a live screening topic. 2pp resume + 1pp cover letter, both validators PASS, 0 boxes, 0 Tier 1 findings open. Policy - Drop the 7 Core / 2 Adjacent / 1 Stretch cohort caps. They had no derivation and were overridden whenever they bound, and the cohort was confounded: it tested fit class while holding channel constant at Weak across all six applications. Keep the recording, drop the rationing. - Channel replaces the slot budget as the rationed variable: no application goes out cold when a named contact is published and reachable. - Propagated through shared_ops, session_file_template, cohort_tracker (counts, never counts-against-a-target) and application_cohort.json. Tool fixes - fetch_workday emitted 404 URLs for every Workday company (NVIDIA, Novartis, Equinor): externalPath is site-relative and needs the locale + site prefix. 6/6 short-form 404, 3/3 long-form 200. 773 dead links repaired across 42 archived reports. - find_decision_url silently de-linked decisions on two boards, which is why ruled-out roles kept resurfacing as undecided. RUAG rotates its UUID on repost; BIS migrated its vacancy URL scheme, orphaning 5 decisions including a live application. Fixed as a two-tier match, not a slug key -- slugs collide (two live RUAG reqs shared one). Knowledge base - claims.json: add Bash / shell scripting, the third canonical gap of this shape after Ansible and Linux administration. - bundle_data_platform: BS-4 was framed as a delivered observability stack over what claims.json calls a proof of concept -- the defect the 2026-08-21 sweep was told to look for. - CLAUDE.md and AGENTS.md: correct the RUAG Data Lakehouse shortlist claim, which the JD does not support and which both files still asserted. - resume_template: comment-guard the missing babel/ngerman language block. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QFb8tTCig5r1KzkQiNXcYt |
||
|
|
a0f844c143 |
feat(ruag): submit AI Engineer C5I, and record the Kdo Cy package
RUAG C5I - AI Engineer C5I (Thun, app ID 18027): SUBMITTED 2026-08-27. Evidence Fit 74/100, fit class Stretch, title-capability hard gate FAIL (R1 build/operate the AI-LLM platform and R2 in-house LLM/retrieval are Adjacent, not Direct) - all knowingly accepted under the user's explicit Phase 0 override. Consumes the cohort's sole Stretch slot: cohort is now 6/10, Stretch 1/1. Critique ran twice. Round 1 scored the documents 85/100 and raised three Tier 1 items; Round 2, after the fixes, scores 93/100 with truth and provenance 24/25 and zero Tier 1 findings. Evidence Fit did not move and was not allowed to: PP-3 is a personal project and cannot convert an Adjacent title-capability into a Direct one. Documents (.tex is the deliverable; PDFs are gitignored): - resume 2pp/13 bullets, letter 1pp/295 words, both validators PASS - headline is now the canonical title "Staff Data, Analytics & AI Engineer", which puts the req's own word above the fold - PP-3 added as a Projekte section - the only current Linux/hardening evidence, since BS-6 ended Dec 2022 - the letter names the AI-platform gap in one sentence, then connects SW-5 to C5I's stated DevSecOps model - "governte" -> "governance-konforme"; JD term coverage 18/22 -> 22/22 claimable, with all six gap terms still correctly absent Two defects found and fixed that the first critique missed: - the resume never loaded babel, so a German document was hyphenated with English patterns (Hal-bleiterfertigung, Tran-skription). Fixed with babel[ngerman] plus a Transkription exception; this also cleared an overfull box. Check this on every future German package - resume_template.tex likely has the same omission. - IBM AI Engineering had no primary-source record. Certificate read directly (IBM via Coursera, 4 Jun 2020, verify 3ZBZFVAL6A34), recorded as entry #8; it also proves PyTorch, now evidence: certification. Also included: the submitted Kdo Cy DevOps Engineer III package, the Capgemini omit rule promoted into config.md, BW-1 canonicalized in experience_bundeswehr.md, and a scout.py comment correcting the telenorgroup slug from "near-empty" to a claimed board serving stale phantom listings that DEMO_TITLES would not catch. Compensation, PSP/project eligibility and role level were never resolved before sending and are now live screening topics. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JMcHCsTKWvVzqyLChF5ckk |
||
|
|
420e205e37 |
fix(kb): settle ECTS B as the 10-35% band, 'top 35%' is correct
ECTS grade B is the next 25% after the top 10%, so the accurate phrasing is 'top 35%'. The record's original value was right; the 'top 30%' considered yesterday was the error, now removed rather than left as an open question. The field also now says never to narrow B to a point estimate. B is a band, and quoting 'top 30%' or 'top 25%' overstates the standing - the kind of small, checkable claim that costs credibility for no gain. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MHtzyTKBcg6BWhD5qFegtK |
||
|
|
124f5d4953 |
feat(kb): record degree final grades and US 4.0 conversions
A Citadel application form asked for GPA and neither degree's Abschlussnote existed anywhere in claims.json - only the M.Eng. thesis grade. The single lead was an old CV extraction whose own provenance note disclaims it and which already carries a known error, so it was not safe to convert from. User confirmed both directly: M.Eng. 1.6 and B.Eng. 2.4 on the German 1.0-4.0 scale. US 4.0 equivalents recorded via the modified Bavarian formula, which simplifies to 5.0 - G: 3.4 and 2.6. Both fields carry usage rules, because a converted grade is easy to misuse. They are for application forms and credential checks only, never to be presented as a natively awarded GPA, and the German scale must always be stated alongside - particularly for the bachelor, where the conversion makes a solid "gut" read weaker to a US audience than it is. Also flagged a percentile that does not agree with itself. The relative grade is ECTS B, but this record said top 35%, the user said top 30%, and ECTS B is formally the next 25% after the top 10%. Rather than pick one, the field now says to check the certificate and notes that quoting "ECTS grade B" alone is always safe. A specific percentile on an application is exactly the kind of small number that a credential check can contradict. New grade_output_rule: neither grade belongs on a resume or in a cover letter by default. Industry resumes omit grades, and the thesis 1.0 is the only figure worth surfacing where academic performance is valued. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MHtzyTKBcg6BWhD5qFegtK |
||
|
|
b97dec978a |
feat(kb): add trading-domain evidence as PP-1 and PP-2
claims.json had zero hits for trading, finance or quant, so a real capability could not legally reach any document: the file is the highest-authority source and nothing outside it is claimable. Surfaced while assessing the Citadel Securities Platform Engineer req (Zurich), where domain fluency is exactly what was missing. PP-1 is the self-built investing/signal platform: US-equity price, fundamental and LLM-assisted sentiment ingestion, a long-only cross-sectional residual 12-1 momentum book with ATR stop/trail and max 15 concurrent names, scheduled scan and backtest pipelines, web dashboard and Telegram alerts. PP-2 is the Udacity AI for Trading nanodegree. Two allowed-with-context skills reference both. Written defensively, because this is the kind of entry a later run inflates. Each carries an explicit forbidden list: no PnL, Sharpe, return or backtest figure may EVER be quoted (none is verified); PP-1 is single-user and self-hosted, so never distributed, scalable, production or multi-user; neither implies professional quantitative, trading or finance experience; the nanodegree is never an academic or quant credential. Legitimate use is self-directed domain fluency plus an end-to-end ingestion/backtest/alerting build outside work. PP-1 is also the one claim where full-ownership verbs are correct - it is genuinely solo, unlike the employer work that Scope Discipline governs. Stated in the scope so the two rules do not collide later. JSON valid, validator PASS, 9/9 tests pass. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MHtzyTKBcg6BWhD5qFegtK |
||
|
|
239129b37e |
feat(sdu): add SDU PhD enquiry, verify thesis claims from source
Explore SDU Center for Energy Informatics PhD, Theme 2 (Predictive Maintenance and Asset Management of Smart Energy Networks), Odense DK, deadline 2026-08-20. JD scraped live via Playwright. Verified the master's thesis against the source PDF rather than the stored title alone: - Vibration-based condition monitoring of CNC machine tools; features are the dimensionless waveform, peak, pulse, margin and kurtosis indices. - Implemented a hybrid of rule-based reasoning and a 7-10-3 ANN. - Evaluation measured throughput and latency, not model accuracy: ~500 SPS pipeline against 72.9 kSPS sensors. - Corrects an earlier note in the same session: PSO was surveyed only and never implemented. Recorded under thesis_limits alongside the absence of real operational data and accuracy figures. Also records the ECTS relative grade (B, top 35%), the existence of English-language transcripts, and the concrete Bosch sensor-data types (defect management records, wafer inspection images, PCM electrical parameters) under BS-2. Adds the enquiry email sent to Prof. Bo Norregaard Jorgensen, which asks whether an industry candidate is viable and whether non-academic letters of recommendation are accepted. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|
|
f1095a062f |
feat(applications): archive Aker BP package, add Compass evidence, extend scout
Aker BP ASA — Data Product Architect (FINN 469067315): archive the finalized resume/CL sources, JD, session and critique. Submitted 2026-07-30 ahead of the 2026-08-02 deadline; logged as applied in the scout decision log and marked SUBMITTED in Active Sessions. KB: record Atlassian Compass as Swisscom's metadata/catalogue platform for data products and lineage (user-confirmed 2026-07-29). Practitioner use only — claims.json forbids claiming administration, rollout or ownership, and it is explicitly not a substitute claim for Purview, Collibra or Alation. Also: close out the Google Business Home session (no interview), extend the job scout, and allow the job-board domains used during the Aker BP research. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|
|
fe5f24704f | feat: rebuild evidence-first application workflow |