v1.0.1: batch generate + audit

This commit is contained in:
Hermes Agent 2026-07-08 13:13:33 +00:00
parent 080bcd6452
commit 38de0644c7
64 changed files with 113 additions and 32 deletions

81
RELEASE_NOTES.md Normal file
View File

@ -0,0 +1,81 @@
# SDS Release — 2026-07-08 13:13:33
## Files Generated
| File | Size |
|------|------|
| SDS_BG_ACETONE.pdf | 87 KB |
| SDS_BG_BUTYL_ACETATE.pdf | 87 KB |
| SDS_BG_BUTYL_DIGLYCOL.pdf | 83 KB |
| SDS_BG_BUTYL_GLYCOL.pdf | 88 KB |
| SDS_BG_CHLOROFORM.pdf | 88 KB |
| SDS_BG_CYCLOHEXANONE.pdf | 87 KB |
| SDS_BG_DENATURED_ETHYL_ALCOHOL.pdf | 83 KB |
| SDS_BG_DIETHYLENE_GLYCOL.pdf | 82 KB |
| SDS_BG_DIMETHYL_KETONE.pdf | 87 KB |
| SDS_BG_DIOCTYL_TEREPHTHALATE.pdf | 80 KB |
| SDS_BG_DPGME.pdf | 80 KB |
| SDS_BG_ETHOXYPROPANOL.pdf | 82 KB |
| SDS_BG_ETHYL_ACETATE.pdf | 87 KB |
| SDS_BG_ETHYL_SILICATE.pdf | 88 KB |
| SDS_BG_FORMIC_ACID_85%.pdf | 87 KB |
| SDS_BG_GLYCEROL.pdf | 80 KB |
| SDS_BG_ISOBUTANOL.pdf | 87 KB |
| SDS_BG_METHANOL.pdf | 88 KB |
| SDS_BG_METHOXYPROPANOL.pdf | 82 KB |
| SDS_BG_METHOXYPROPYL_ACETATE.pdf | 83 KB |
| SDS_BG_METHYLENE_CHLORIDE.pdf | 81 KB |
| SDS_BG_METHYL_ETHYL_KETONE.pdf | 87 KB |
| SDS_BG_MONO_ETHYLENE_GLYCOL.pdf | 81 KB |
| SDS_BG_MONO_PROPYLENE_GLYCOL.pdf | 80 KB |
| SDS_BG_N_BUTANOL.pdf | 88 KB |
| SDS_BG_N_PROPANOL.pdf | 87 KB |
| SDS_BG_N_PROPYL_ACETATE.pdf | 87 KB |
| SDS_BG_SODIUM_HYDROXIDE_48%.pdf | 87 KB |
| SDS_BG_SODIUM_HYDROXIDE_DIL.pdf | 87 KB |
| SDS_BG_SODIUM_HYDROXIDE_FLAKES.pdf | 87 KB |
| SDS_BG_TERT_BUTANOL.pdf | 87 KB |
| SDS_BG_TOLUENE.pdf | 88 KB |
| SDS_BG_TRIETHYLENE_GLYCOL.pdf | 80 KB |
| SDS_BG_XYLENE.pdf | 88 KB |
| SDS_Ethyl_Acetate_REV1_BG.pdf | 97 KB |
| SDS_Ethyl_Acetate_REV1_EN.pdf | 79 KB |
| SDS_Ethyl_Acetate_REV1_EN_fixed.pdf | 79 KB |
| SDS_Ethyl_Acetate_REV1_RO.pdf | 55 KB |
## Audit Summary
## Summary
| PASS | 27 |
| BARELY PASS | 0 |
| NO PASS | 0 |
| 1 | SDS_BG_ACETONE.pdf | BG | PASS | 7 | 144/146 (99%) |
| 2 | SDS_BG_BUTYL_DIGLYCOL.pdf | BG | PASS | 6 | 142/146 (97%) |
| 3 | SDS_BG_BUTYL_GLYCOL.pdf | BG | PASS | 7 | 142/146 (97%) |
| 4 | SDS_BG_CHLOROFORM.pdf | BG | PASS | 7 | 142/146 (97%) |
| 5 | SDS_BG_CYCLOHEXANONE.pdf | BG | PASS | 7 | 144/146 (99%) |
| 6 | SDS_BG_DENATURED_ETHYL_ALCOHOL.pdf | BG | PASS | 6 | 144/146 (99%) |
| 7 | SDS_BG_DIETHYLENE_GLYCOL.pdf | BG | PASS | 6 | 141/146 (97%) |
| 8 | SDS_BG_DIMETHYL_KETONE.pdf | BG | PASS | 7 | 144/146 (99%) |
| 9 | SDS_BG_DIOCTYL_TEREPHTHALATE.pdf | BG | PASS | 6 | 137/146 (94%) |
| 10 | SDS_BG_DPGME.pdf | BG | PASS | 6 | 139/146 (95%) |
| 11 | SDS_BG_ETHYL_SILICATE.pdf | BG | PASS | 7 | 144/146 (99%) |
| 12 | SDS_BG_FORMIC_ACID_85%.pdf | BG | PASS | 7 | 144/146 (99%) |
| 13 | SDS_BG_GLYCEROL.pdf | BG | PASS | 6 | 139/146 (95%) |
| 14 | SDS_BG_ISOBUTANOL.pdf | BG | PASS | 7 | 144/146 (99%) |
| 15 | SDS_BG_METHANOL.pdf | BG | PASS | 7 | 144/146 (99%) |
| 16 | SDS_BG_METHYLENE_CHLORIDE.pdf | BG | PASS | 6 | 141/146 (97%) |
| 17 | SDS_BG_METHYL_ETHYL_KETONE.pdf | BG | PASS | 7 | 144/146 (99%) |
| 18 | SDS_BG_MONO_ETHYLENE_GLYCOL.pdf | BG | PASS | 6 | 141/146 (97%) |
| 19 | SDS_BG_MONO_PROPYLENE_GLYCOL.pdf | BG | PASS | 6 | 139/146 (95%) |
| 20 | SDS_BG_SODIUM_HYDROXIDE_48%.pdf | BG | PASS | 7 | 142/146 (97%) |
| 21 | SDS_BG_TOLUENE.pdf | BG | PASS | 7 | 144/146 (99%) |
| 22 | SDS_BG_TRIETHYLENE_GLYCOL.pdf | BG | PASS | 6 | 139/146 (95%) |
| 23 | SDS_BG_XYLENE.pdf | BG | PASS | 7 | 144/146 (99%) |
| 24 | SDS_Ethyl_Acetate_REV1_BG.pdf | BG | PASS | 9 | 136/146 (93%) |
| 25 | SDS_Ethyl_Acetate_REV1_EN.pdf | EN | PASS | 7 | 137/143 (96%) |
| 26 | SDS_Ethyl_Acetate_REV1_EN_fixed.pdf | EN | PASS | 7 | 137/143 (96%) |
| 27 | SDS_Ethyl_Acetate_REV1_RO.pdf | RO | PASS | 8 | 124/131 (95%) |
## Version Tracking
Generated and committed by Hermes Agent on 2026-07-08 13:13:33

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 144/146 (99%) **Score:** 144/146 (99%)
**Pages:** 7 **Pages:** 7
**Date:** 2026-07-08 12:56:58 **Date:** 2026-07-08 13:13:17
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 142/146 (97%) **Score:** 142/146 (97%)
**Pages:** 6 **Pages:** 6
**Date:** 2026-07-08 12:56:59 **Date:** 2026-07-08 13:13:18
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 142/146 (97%) **Score:** 142/146 (97%)
**Pages:** 7 **Pages:** 7
**Date:** 2026-07-08 12:56:59 **Date:** 2026-07-08 13:13:18
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 142/146 (97%) **Score:** 142/146 (97%)
**Pages:** 7 **Pages:** 7
**Date:** 2026-07-08 12:57:00 **Date:** 2026-07-08 13:13:19
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 144/146 (99%) **Score:** 144/146 (99%)
**Pages:** 7 **Pages:** 7
**Date:** 2026-07-08 12:57:01 **Date:** 2026-07-08 13:13:19
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 144/146 (99%) **Score:** 144/146 (99%)
**Pages:** 6 **Pages:** 6
**Date:** 2026-07-08 12:57:01 **Date:** 2026-07-08 13:13:20
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 141/146 (97%) **Score:** 141/146 (97%)
**Pages:** 6 **Pages:** 6
**Date:** 2026-07-08 12:57:02 **Date:** 2026-07-08 13:13:21
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 144/146 (99%) **Score:** 144/146 (99%)
**Pages:** 7 **Pages:** 7
**Date:** 2026-07-08 12:57:02 **Date:** 2026-07-08 13:13:21
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 137/146 (94%) **Score:** 137/146 (94%)
**Pages:** 6 **Pages:** 6
**Date:** 2026-07-08 12:57:03 **Date:** 2026-07-08 13:13:22
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 139/146 (95%) **Score:** 139/146 (95%)
**Pages:** 6 **Pages:** 6
**Date:** 2026-07-08 12:57:03 **Date:** 2026-07-08 13:13:22
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 144/146 (99%) **Score:** 144/146 (99%)
**Pages:** 7 **Pages:** 7
**Date:** 2026-07-08 12:57:04 **Date:** 2026-07-08 13:13:23
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 144/146 (99%) **Score:** 144/146 (99%)
**Pages:** 7 **Pages:** 7
**Date:** 2026-07-08 12:57:05 **Date:** 2026-07-08 13:13:24
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 139/146 (95%) **Score:** 139/146 (95%)
**Pages:** 6 **Pages:** 6
**Date:** 2026-07-08 12:57:05 **Date:** 2026-07-08 13:13:24
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 144/146 (99%) **Score:** 144/146 (99%)
**Pages:** 7 **Pages:** 7
**Date:** 2026-07-08 12:57:06 **Date:** 2026-07-08 13:13:25
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 144/146 (99%) **Score:** 144/146 (99%)
**Pages:** 7 **Pages:** 7
**Date:** 2026-07-08 12:57:07 **Date:** 2026-07-08 13:13:25
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 141/146 (97%) **Score:** 141/146 (97%)
**Pages:** 6 **Pages:** 6
**Date:** 2026-07-08 12:57:07 **Date:** 2026-07-08 13:13:26
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 144/146 (99%) **Score:** 144/146 (99%)
**Pages:** 7 **Pages:** 7
**Date:** 2026-07-08 12:57:08 **Date:** 2026-07-08 13:13:27
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 141/146 (97%) **Score:** 141/146 (97%)
**Pages:** 6 **Pages:** 6
**Date:** 2026-07-08 12:57:08 **Date:** 2026-07-08 13:13:27
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 139/146 (95%) **Score:** 139/146 (95%)
**Pages:** 6 **Pages:** 6
**Date:** 2026-07-08 12:57:09 **Date:** 2026-07-08 13:13:28
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 142/146 (97%) **Score:** 142/146 (97%)
**Pages:** 7 **Pages:** 7
**Date:** 2026-07-08 12:57:10 **Date:** 2026-07-08 13:13:28
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 144/146 (99%) **Score:** 144/146 (99%)
**Pages:** 7 **Pages:** 7
**Date:** 2026-07-08 12:57:10 **Date:** 2026-07-08 13:13:29
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 139/146 (95%) **Score:** 139/146 (95%)
**Pages:** 6 **Pages:** 6
**Date:** 2026-07-08 12:57:11 **Date:** 2026-07-08 13:13:30
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 144/146 (99%) **Score:** 144/146 (99%)
**Pages:** 7 **Pages:** 7
**Date:** 2026-07-08 12:57:11 **Date:** 2026-07-08 13:13:30
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 136/146 (93%) **Score:** 136/146 (93%)
**Pages:** 9 **Pages:** 9
**Date:** 2026-07-08 12:57:12 **Date:** 2026-07-08 13:13:31
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 137/143 (96%) **Score:** 137/143 (96%)
**Pages:** 7 **Pages:** 7
**Date:** 2026-07-08 12:57:13 **Date:** 2026-07-08 13:13:31
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 137/143 (96%) **Score:** 137/143 (96%)
**Pages:** 7 **Pages:** 7
**Date:** 2026-07-08 12:57:13 **Date:** 2026-07-08 13:13:32
## Section Results ## Section Results

View File

@ -4,7 +4,7 @@
**Grade:** PASS **Grade:** PASS
**Score:** 124/131 (95%) **Score:** 124/131 (95%)
**Pages:** 8 **Pages:** 8
**Date:** 2026-07-08 12:57:14 **Date:** 2026-07-08 13:13:33
## Section Results ## Section Results

View File

@ -1,6 +1,6 @@
# Master Compliance Audit Report # Master Compliance Audit Report
**Generated:** 2026-07-08 12:57:14 **Generated:** 2026-07-08 13:13:33
**PDFs audited:** 27 **PDFs audited:** 27
## Summary ## Summary

View File

@ -11,9 +11,9 @@ Usage:
import os, sys, subprocess, json, glob import os, sys, subprocess, json, glob
from datetime import datetime from datetime import datetime
BASE = os.path.dirname(os.path.abspath(__file__)) BASE = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
OUT = os.path.join(BASE, "output") OUT = os.path.join(BASE, "output")
SCRIPTS = os.path.join(BASE, "scripts") SCRIPTS_DIR = os.path.dirname(os.path.abspath(__file__))
# ─── Colours ─── # ─── Colours ───
GREEN = "\033[92m"; RED = "\033[91m"; YELLOW = "\033[93m"; RESET = "\033[0m"; BOLD = "\033[1m" GREEN = "\033[92m"; RED = "\033[91m"; YELLOW = "\033[93m"; RESET = "\033[0m"; BOLD = "\033[1m"
@ -31,7 +31,7 @@ def sh(cmd, cwd=None):
def generate_all(filter_product=None): def generate_all(filter_product=None):
"""Run the BG batch generator.""" """Run the BG batch generator."""
print(info("\n=== Step 1: Generate PDFs ===")) print(info("\n=== Step 1: Generate PDFs ==="))
code, out, err = sh(f"python3 {SCRIPTS}/generate-and-audit.py") code, out, err = sh(f"python3 {SCRIPTS_DIR}/generate-and-audit.py")
if code != 0: if code != 0:
print(fail(f"Generation failed: {err}")) print(fail(f"Generation failed: {err}"))
return False return False
@ -42,7 +42,7 @@ def generate_all(filter_product=None):
def run_audit(lang="auto"): def run_audit(lang="auto"):
"""Run compliance audit on ALL PDFs in output/.""" """Run compliance audit on ALL PDFs in output/."""
print(info(f"\n=== Step 2: Compliance Audit ===")) print(info(f"\n=== Step 2: Compliance Audit ==="))
code, out, err = sh(f"python3 {SCRIPTS}/compliance-audit.py {OUT}/ --lang {lang}") code, out, err = sh(f"python3 {SCRIPTS_DIR}/compliance-audit.py {OUT}/ --lang {lang}")
if code != 0: if code != 0:
print(fail(f"Audit failed: {err}")) print(fail(f"Audit failed: {err}"))
return False return False