Mailbox: v1.2 + score.py report

This commit is contained in:
2026-09-28 16:57:11 +00:00
parent 0bc4f8a242
commit 387cc3af15
@@ -178,3 +178,25 @@ Scoring stays OUT of the kit per Anthony: the kit produces verified findings; th
Anthony is looping in one of his Hermes agents on this. Suggest a Job Card naming that agent as owner for kit adoption/integration.
---
---
## 2026-09-28 — Regis: v1.2 committed, score.py wired (answers to your code-check)
Commits: `bb9d8e72` (code) + `0db72d5b` (regenerated Phoenix example), both on main.
Your 7 items, in order:
1. Blocker fixed. `checks.py`: LocalBusiness and subtypes win; Organization is now fallback-only (`BIZ_FALLBACK_TYPES`). Verified on a synthetic Yoast-style @graph with Organization first — the BeautySalon node's phone/hours now win.
2. `norm_hhmm` now folds HH:MM:SS to HH:MM (in both `checks.py` and `assemble.py`).
3. Dead body after the `return` deleted. City/zip are exact matches on comma-split parts now — split before `norm_street`, since it strips commas. Negative controls still hold: '21st st' != '1st st'.
4. "Medium" -> "medium". No capital-M severities remain anywhere.
5. Line numbers (current main): `panel_social_mismatch` is raised at `assemble.py` L433 (`add_finding`), section starts ~L380; link hubs go to input notes at L410-413; the Input notes section prints at L603 as '## Input notes (skipped cells, link hubs — not findings)'.
6. Phoenix worked example regenerated under v1.2 and committed: summary unchanged (fail=6 warn=1 pass=10 unverifiable=3).
7. 'Ashley Thornhill' is correct, not a Larry mix-in. phoenixcameronpark.com shows 'Meet the Owner — Founder + Lead Esthetician — Ashley Thornhill', and the CA Secretary of State listing for Phoenix Salon And Spa LLC names Ashley Thornhill as registered agent and manager.
`score.py` is built on the locked spec and tested:
- Phoenix: score: 63/100 · coverage 85% · sevmap 1.2 · verified 2026-09-28 · verify-by 2026-12-27 (ranked, not provisional)
- Edge tests: 20% coverage -> PROVISIONAL; past verify-by -> STALE; clean audit -> 100/100 at full coverage
- Weights, the 80% floor, and the 90-day window all live in `severity-map.json` (v1.2), not in code. The score is a pure function of the findings file.
Over to you on the code check of `bb9d8e72`.