Files
claude-resume-kit/resume_builder/canonical/package_manifest.json
T
dennisthiessenandClaude Opus 5 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
2026-09-11 20:48:52 +02:00

535 lines
18 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"schema_version": 1,
"generated_note": "Generated by package_manifest.py (review finding F17). A PDF in a folder is not evidence that the package is reproducible. This file records what would actually happen on a rebuild. It is descriptive: nothing here authorises rewriting a submitted document.",
"packages": {
"AkerBP_Data_Product_Architect": {
"sources": [
"e2e_akerbp_data_product_architect_cover_letter.tex",
"e2e_akerbp_data_product_architect_resume.tex"
],
"class_files": {
"resume.cls": "b3a032a850cd0d6d"
},
"requires_class": [
"article",
"resume"
],
"pdfs": [
"Dennis_Thiessen_Cover_Letter.pdf",
"Dennis_Thiessen_Resume.pdf",
"e2e_akerbp_data_product_architect_cover_letter.pdf",
"e2e_akerbp_data_product_architect_resume.pdf"
],
"uses_today": [],
"problems": [],
"reuse_classification": "recorded"
},
"Apple_Data_Engineer": {
"sources": [
"e2e_apple_data_engineer_cover_letter.tex",
"e2e_apple_data_engineer_resume.tex"
],
"class_files": {
"resume.cls": "b26f882a42d30d90"
},
"requires_class": [
"moderncv",
"resume"
],
"pdfs": [
"e2e_apple_data_engineer_cover_letter.pdf",
"e2e_apple_data_engineer_resume.pdf"
],
"uses_today": [
"e2e_apple_data_engineer_cover_letter.tex"
],
"problems": [
"rebuild is date-dependent: e2e_apple_data_engineer_cover_letter.tex use \\today, so recompiling a historical package silently restamps it with the current date. New packages must carry the explicit application date instead."
],
"reuse_classification": "recorded"
},
"BIS": {
"sources": [
"e2e_bis_senior_data_analytics_ai_cover_letter.tex",
"e2e_bis_senior_data_analytics_ai_resume.tex"
],
"class_files": {
"resume.cls": "b26f882a42d30d90"
},
"requires_class": [
"moderncv",
"resume"
],
"pdfs": [
"Dennis_Thiessen_Cover_Letter.pdf",
"Dennis_Thiessen_Resume.pdf",
"critique_resume_check.pdf",
"e2e_bis_senior_data_analytics_ai_cover_letter.pdf",
"e2e_bis_senior_data_analytics_ai_resume.pdf"
],
"uses_today": [
"e2e_bis_senior_data_analytics_ai_cover_letter.tex"
],
"problems": [
"rebuild is date-dependent: e2e_bis_senior_data_analytics_ai_cover_letter.tex use \\today, so recompiling a historical package silently restamps it with the current date. New packages must carry the explicit application date instead."
],
"reuse_classification": "recorded"
},
"CitadelSecurities_PlatformEngineer": {
"sources": [
"e2e_citadel_securities_platform_engineer_cover_letter.tex",
"e2e_citadel_securities_platform_engineer_resume.tex"
],
"class_files": {
"resume.cls": "b3a032a850cd0d6d"
},
"requires_class": [
"article",
"resume"
],
"pdfs": [
"Dennis_Thiessen_Cover_Letter.pdf",
"Dennis_Thiessen_Resume.pdf",
"e2e_citadel_securities_platform_engineer_cover_letter.pdf",
"e2e_citadel_securities_platform_engineer_resume.pdf"
],
"uses_today": [],
"problems": [],
"reuse_classification": "recorded"
},
"Equinor_AI_Manager": {
"sources": [
"e2e_equinor_ai_manager_cover_letter.tex",
"e2e_equinor_ai_manager_resume.tex"
],
"class_files": {
"resume.cls": "b26f882a42d30d90"
},
"requires_class": [
"moderncv",
"resume"
],
"pdfs": [
"Dennis_Thiessen_Cover_Letter.pdf",
"Dennis_Thiessen_Resume.pdf",
"e2e_equinor_ai_manager_cover_letter.pdf",
"e2e_equinor_ai_manager_resume.pdf"
],
"uses_today": [
"e2e_equinor_ai_manager_cover_letter.tex"
],
"problems": [
"rebuild is date-dependent: e2e_equinor_ai_manager_cover_letter.tex use \\today, so recompiling a historical package silently restamps it with the current date. New packages must carry the explicit application date instead."
],
"reuse_classification": "recorded"
},
"Google_Business_Home": {
"sources": [
"e2e_google_software_engineer_iii_business_home_cover_letter.tex",
"e2e_google_software_engineer_iii_business_home_cover_letter_v2.tex",
"e2e_google_software_engineer_iii_business_home_resume.tex",
"e2e_google_software_engineer_iii_business_home_resume_v2.tex"
],
"class_files": {
"resume.cls": "b3a032a850cd0d6d"
},
"requires_class": [
"article",
"resume"
],
"pdfs": [
"Dennis_Thiessen_Cover_Letter.pdf",
"Dennis_Thiessen_Resume.pdf",
"e2e_google_software_engineer_iii_business_home_cover_letter.pdf",
"e2e_google_software_engineer_iii_business_home_cover_letter_v2.pdf",
"e2e_google_software_engineer_iii_business_home_resume.pdf",
"e2e_google_software_engineer_iii_business_home_resume_v2.pdf"
],
"uses_today": [],
"problems": [],
"reuse_classification": "recorded"
},
"Google_Senior_Data_Engineer": {
"sources": [
"e2e_google_senior_data_engineer_cover_letter.tex",
"e2e_google_senior_data_engineer_resume.tex"
],
"class_files": {
"resume.cls": "b26f882a42d30d90"
},
"requires_class": [
"moderncv",
"resume"
],
"pdfs": [
"Dennis_Thiessen_Cover_Letter.pdf",
"Dennis_Thiessen_Resume.pdf",
"e2e_google_senior_data_engineer_cover_letter.pdf",
"e2e_google_senior_data_engineer_resume.pdf"
],
"uses_today": [
"e2e_google_senior_data_engineer_cover_letter.tex"
],
"problems": [
"rebuild is date-dependent: e2e_google_senior_data_engineer_cover_letter.tex use \\today, so recompiling a historical package silently restamps it with the current date. New packages must carry the explicit application date instead."
],
"reuse_classification": "recorded"
},
"Infineon": {
"sources": [
"e2e_infineon_doctoral_cover_letter.tex",
"e2e_infineon_doctoral_resume.tex"
],
"class_files": {
"resume.cls": "b26f882a42d30d90"
},
"requires_class": [
"moderncv",
"resume"
],
"pdfs": [
"Dennis_Thiessen_Cover_Letter.pdf",
"Dennis_Thiessen_Resume.pdf",
"e2e_infineon_doctoral_cover_letter.pdf",
"e2e_infineon_doctoral_resume.pdf"
],
"uses_today": [
"e2e_infineon_doctoral_cover_letter.tex"
],
"problems": [
"rebuild is date-dependent: e2e_infineon_doctoral_cover_letter.tex use \\today, so recompiling a historical package silently restamps it with the current date. New packages must carry the explicit application date instead."
],
"reuse_classification": "recorded"
},
"Infineon_AI_Engineer": {
"sources": [
"e2e_infineon_ai_engineer_cover_letter.tex",
"e2e_infineon_ai_engineer_resume.tex"
],
"class_files": {
"resume.cls": "b26f882a42d30d90"
},
"requires_class": [
"moderncv",
"resume"
],
"pdfs": [
"e2e_infineon_ai_engineer_resume.pdf"
],
"uses_today": [
"e2e_infineon_ai_engineer_cover_letter.tex"
],
"problems": [
"rebuild is date-dependent: e2e_infineon_ai_engineer_cover_letter.tex use \\today, so recompiling a historical package silently restamps it with the current date. New packages must carry the explicit application date instead."
],
"reuse_classification": "recorded"
},
"Isovalent_DataEngineer": {
"sources": [
"e2e_isovalent_data_engineer_cover_letter.tex",
"e2e_isovalent_data_engineer_resume.tex"
],
"class_files": {
"resume.cls": "b26f882a42d30d90"
},
"requires_class": [
"moderncv",
"resume"
],
"pdfs": [
"Dennis_Thiessen_Cover_Letter.pdf",
"Dennis_Thiessen_Resume.pdf",
"e2e_isovalent_data_engineer_cover_letter.pdf",
"e2e_isovalent_data_engineer_resume.pdf"
],
"uses_today": [
"e2e_isovalent_data_engineer_cover_letter.tex"
],
"problems": [
"rebuild is date-dependent: e2e_isovalent_data_engineer_cover_letter.tex use \\today, so recompiling a historical package silently restamps it with the current date. New packages must carry the explicit application date instead."
],
"reuse_classification": "recorded"
},
"KdoCy_DevOps_Data_Platform": {
"sources": [
"e2e_kdocy_devops_data_platform_cover_letter.tex",
"e2e_kdocy_devops_data_platform_resume.tex"
],
"class_files": {
"resume.cls": "b3a032a850cd0d6d"
},
"requires_class": [
"article",
"resume"
],
"pdfs": [
"Dennis_Thiessen_Lebenslauf.pdf",
"Dennis_Thiessen_Motivationsschreiben.pdf",
"e2e_kdocy_devops_data_platform_cover_letter.pdf",
"e2e_kdocy_devops_data_platform_resume.pdf"
],
"uses_today": [
"e2e_kdocy_devops_data_platform_cover_letter.tex"
],
"problems": [
"rebuild is date-dependent: e2e_kdocy_devops_data_platform_cover_letter.tex use \\today, so recompiling a historical package silently restamps it with the current date. New packages must carry the explicit application date instead."
],
"reuse_classification": "recorded"
},
"Kraken_AI_Infrastructure": {
"sources": [
"e2e_kraken_ai_infra_cover_letter.tex",
"e2e_kraken_ai_infra_resume.tex"
],
"class_files": {
"resume.cls": "b26f882a42d30d90"
},
"requires_class": [
"moderncv",
"resume"
],
"pdfs": [
"Dennis_Thiessen_Cover_Letter.pdf",
"Dennis_Thiessen_Resume.pdf",
"Senior Software Engineer – AI Infrastructure @ Kraken.pdf",
"e2e_kraken_ai_infra_cover_letter.pdf",
"e2e_kraken_ai_infra_resume.pdf"
],
"uses_today": [
"e2e_kraken_ai_infra_cover_letter.tex"
],
"problems": [
"rebuild is date-dependent: e2e_kraken_ai_infra_cover_letter.tex use \\today, so recompiling a historical package silently restamps it with the current date. New packages must carry the explicit application date instead."
],
"reuse_classification": "recorded"
},
"Kraken_SRE_AI_Agents": {
"sources": [
"e2e_kraken_sre_ai_agents_cover_letter.tex",
"e2e_kraken_sre_ai_agents_resume.tex"
],
"class_files": {
"resume.cls": "b26f882a42d30d90"
},
"requires_class": [
"moderncv",
"resume"
],
"pdfs": [
"Dennis_Thiessen_Cover_Letter.pdf",
"Dennis_Thiessen_Resume.pdf",
"e2e_kraken_sre_ai_agents_cover_letter.pdf",
"e2e_kraken_sre_ai_agents_resume.pdf"
],
"uses_today": [
"e2e_kraken_sre_ai_agents_cover_letter.tex"
],
"problems": [
"rebuild is date-dependent: e2e_kraken_sre_ai_agents_cover_letter.tex use \\today, so recompiling a historical package silently restamps it with the current date. New packages must carry the explicit application date instead."
],
"reuse_classification": "recorded"
},
"Microsoft_ISE_Senior_SWE": {
"sources": [
"e2e_microsoft_ise_cover_letter.tex",
"e2e_microsoft_ise_resume.tex"
],
"class_files": {
"resume.cls": "b26f882a42d30d90"
},
"requires_class": [
"moderncv",
"resume"
],
"pdfs": [
"Dennis_Thiessen_Cover_Letter.pdf",
"Dennis_Thiessen_Resume.pdf",
"e2e_microsoft_ise_cover_letter.pdf",
"e2e_microsoft_ise_resume.pdf"
],
"uses_today": [
"e2e_microsoft_ise_cover_letter.tex"
],
"problems": [
"rebuild is date-dependent: e2e_microsoft_ise_cover_letter.tex use \\today, so recompiling a historical package silently restamps it with the current date. New packages must carry the explicit application date instead."
],
"reuse_classification": "recorded"
},
"Microsoft_Principal_FDE_SWE": {
"sources": [
"e2e_microsoft_principal_fde_swe_cover_letter.tex",
"e2e_microsoft_principal_fde_swe_resume.tex"
],
"class_files": {
"resume.cls": "b26f882a42d30d90"
},
"requires_class": [
"moderncv",
"resume"
],
"pdfs": [
"Dennis_Thiessen_Cover_Letter.pdf",
"Dennis_Thiessen_Resume.pdf",
"e2e_microsoft_principal_fde_swe_cover_letter.pdf",
"e2e_microsoft_principal_fde_swe_resume.pdf"
],
"uses_today": [
"e2e_microsoft_principal_fde_swe_cover_letter.tex"
],
"problems": [
"rebuild is date-dependent: e2e_microsoft_principal_fde_swe_cover_letter.tex use \\today, so recompiling a historical package silently restamps it with the current date. New packages must carry the explicit application date instead."
],
"reuse_classification": "recorded"
},
"NATO_AI_ENGINEER": {
"sources": [
"e2e_nato_ai_engineer_cover_letter.tex",
"e2e_nato_ai_engineer_resume.tex"
],
"class_files": {},
"requires_class": [
"moderncv",
"resume"
],
"pdfs": [
"Dennis_Thiessen_Cover_Letter.pdf",
"Dennis_Thiessen_Resume.pdf",
"e2e_nato_ai_engineer_resume.pdf",
"nato_ai_engineer_check.pdf",
"nato_ai_engineer_final_check.pdf",
"nato_cover_final_check.pdf",
"nato_cover_letter_check.pdf",
"nato_critique_cover.pdf",
"nato_critique_resume.pdf"
],
"uses_today": [],
"problems": [
"source distribution incomplete: requires resume.cls, which is not in the folder. A build here only succeeds if a copy happens to exist elsewhere on the machine. Do NOT repair by copying the newest class in - the repo carries several class variants and older macros differ."
],
"reuse_classification": "recorded"
},
"NVIDIA_SrDevOps_Zurich": {
"sources": [
"e2e_nvidia_sr_devops_cover_letter.tex",
"e2e_nvidia_sr_devops_resume.tex"
],
"class_files": {
"resume.cls": "b3a032a850cd0d6d"
},
"requires_class": [
"article",
"resume"
],
"pdfs": [
"Dennis_Thiessen_Cover_Letter.pdf",
"Dennis_Thiessen_Resume.pdf",
"e2e_nvidia_sr_devops_cover_letter.pdf",
"e2e_nvidia_sr_devops_resume.pdf"
],
"uses_today": [
"e2e_nvidia_sr_devops_cover_letter.tex"
],
"problems": [
"rebuild is date-dependent: e2e_nvidia_sr_devops_cover_letter.tex use \\today, so recompiling a historical package silently restamps it with the current date. New packages must carry the explicit application date instead."
],
"reuse_classification": "recorded"
},
"QuantCo_Cloud_Engineer": {
"sources": [
"e2e_quantco_cloud_engineer_cover_letter.tex",
"e2e_quantco_cloud_engineer_resume.tex"
],
"class_files": {
"resume.cls": "b26f882a42d30d90"
},
"requires_class": [
"moderncv",
"resume"
],
"pdfs": [
"Dennis_Thiessen_Cover_Letter.pdf",
"Dennis_Thiessen_Resume.pdf",
"e2e_quantco_cloud_engineer_cover_letter.pdf",
"e2e_quantco_cloud_engineer_resume.pdf"
],
"uses_today": [
"e2e_quantco_cloud_engineer_cover_letter.tex"
],
"problems": [
"rebuild is date-dependent: e2e_quantco_cloud_engineer_cover_letter.tex use \\today, so recompiling a historical package silently restamps it with the current date. New packages must carry the explicit application date instead."
],
"reuse_classification": "recorded"
},
"RUAG_AI_Engineer_C5I": {
"sources": [
"e2e_ruag_ai_engineer_c5i_cover_letter.tex",
"e2e_ruag_ai_engineer_c5i_resume.tex"
],
"class_files": {
"resume.cls": "b52a6f7123ae9067"
},
"requires_class": [
"article",
"resume"
],
"pdfs": [
"Dennis_Thiessen_Lebenslauf.pdf",
"Dennis_Thiessen_Motivationsschreiben.pdf",
"e2e_ruag_ai_engineer_c5i_cover_letter.pdf",
"e2e_ruag_ai_engineer_c5i_resume.pdf"
],
"uses_today": [
"e2e_ruag_ai_engineer_c5i_cover_letter.tex"
],
"problems": [
"rebuild is date-dependent: e2e_ruag_ai_engineer_c5i_cover_letter.tex use \\today, so recompiling a historical package silently restamps it with the current date. New packages must carry the explicit application date instead."
],
"reuse_classification": "recorded"
},
"SBB_DataEngineer_AssetMgmt": {
"sources": [
"e2e_sbb_data_engineer_asset_mgmt_resume.tex"
],
"class_files": {
"resume.cls": "b3a032a850cd0d6d"
},
"requires_class": [
"resume"
],
"pdfs": [
"e2e_sbb_data_engineer_asset_mgmt_resume.pdf"
],
"uses_today": [],
"problems": [],
"reuse_classification": "recorded"
},
"Snowflake_Observe_Enterprise": {
"sources": [
"e2e_snowflake_observe_enterprise_cover_letter.tex",
"e2e_snowflake_observe_enterprise_resume.tex"
],
"class_files": {
"cv.cls": "a623d286e808b27e",
"resume.cls": "b26f882a42d30d90"
},
"requires_class": [
"moderncv",
"resume"
],
"pdfs": [
"Dennis_Thiessen_Cover_Letter.pdf",
"Dennis_Thiessen_Resume.pdf",
"e2e_snowflake_observe_enterprise_cover_letter.pdf",
"e2e_snowflake_observe_enterprise_resume.pdf"
],
"uses_today": [
"e2e_snowflake_observe_enterprise_cover_letter.tex"
],
"problems": [
"rebuild is date-dependent: e2e_snowflake_observe_enterprise_cover_letter.tex use \\today, so recompiling a historical package silently restamps it with the current date. New packages must carry the explicit application date instead."
],
"reuse_classification": "recorded"
}
}
}