Skip to content

Client mode + demo golden lock (engagement-ready) - #13

Merged
MsShawnP merged 6 commits into
mainfrom
client-mode-2026-08
Aug 4, 2026
Merged

Client mode + demo golden lock (engagement-ready)#13
MsShawnP merged 6 commits into
mainfrom
client-mode-2026-08

Conversation

@MsShawnP

@MsShawnP MsShawnP commented Aug 4, 2026

Copy link
Copy Markdown
Owner

Engagement-ready client-mode conversion. Verified; source-only and demo-locked.

Every listed P1 was already fixed on disk, verified by the audit's reproduction, then regression-locked. Demo golden byte-identical; client mode + adversarial fixtures added.

Deploys trigger on push to main only — merging this PR is what goes live. Nothing has deployed from pushing the branch. CI (canonical-drift / ci / render) runs on this PR.

Commits (4):

  • Wire demo golden into CI (gtin-validator)
  • Add gtin-validator client mode (engagement.yml + provenance report)
  • Lock demo golden + P1 regressions (gtin-validator)
  • Engagement scaffold: gitignore + deploy guard

🤖 Generated with Claude Code

MsShawnP and others added 6 commits August 3, 2026 13:17
Golden-file test pins the shipped sample dataset's batch summary (46 GTINs,
36 clean, score 82/B) so the deployed demo cannot drift during the client-mode
conversion. Regression tests lock the two 07-31 audit P1s (already fixed on
disk, verified with the audit's reproduction):
- UPC-A and its case GTIN-14 share a company prefix (no false PREFIX_MISMATCH
  on sample rows 37-39).
- INFO advisories (UPC_NOT_GTIN13) do not zero the clean count / grade.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Client-mode CLI wraps the existing gtin_core engine with lailara_engagement:
tolerant CSV/XLSX intake (GTIN read as text), preflight that names the GTIN
column via engagement.yml (Data Readiness Report if missing), and a branded,
provenance-footed, draft-watermarked readiness summary + CSV report written to
client-output/ only. INPUT-SPEC.md documents the required column and mapping.
4 client-mode tests (clean file, missing-column blocked, BOM+semicolon GTIN as
text, --final). 74 tests pass; demo golden unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Rename tests_golden.py/tests_client_mode.py to test_golden.py/test_client_mode.py
and add test_golden.py to the CI core-test command so the demo golden + P1
regressions run on every commit (CI invokes files explicitly). Client-mode tests
stay local (require the path-installed lailara_engagement).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
engagement.demo.yml carried "Cinderhaven Foods (demo)" — a retired brand-name
error (canonical is Cinderhaven Provisions; canonical_values.json flags "Foods").
The canonical-drift gate correctly blocked it. Rename to match the roster's other
demo configs. Deployed demo golden is unaffected — client_mode reads this config,
the deployed app does not (test_golden.py still passes, unchanged).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Remove unused imports (sys, render_html) and split three CSS-in-f-string rules at
property boundaries so each physical line is <=120. CSS is whitespace-insensitive
between properties, so the rendered report is unchanged; no golden covers
client_mode output. ruff check . clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@MsShawnP
MsShawnP merged commit 386ac4b into main Aug 4, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant