feat(auditing): pipeline v1.1 — report generation + scripted gate + temporal delta

- report_generate.py: REPORT-final.md + VALIDATION.md from findings + raw
  capture; per-surface status from summary.surfaces_ok; Data Limitations
- report_gate.py: §6 gate scripted (count/evidence/identity/material
  support); non-zero exit blocks delivery
- audit_diff.py: before/after capture comparison -> DELTA.md
- audit_pipeline.sh: 2 steps -> 4; collision-safe capture copy (re-runs
  preserve baseline); relative output dir resolved to absolute
- beta-audit-process.md: locked v1.0 -> v1.1 (+ dated decision record)
- all 9 runs of the 2026-08-15 batch regenerated + gated (9/9 PASS)
- live end-to-end proof: Gilmore re-run, DELTA.md 0 changes (same day)
This commit is contained in:
2026-08-15 16:52:23 +00:00
parent c951f79a18
commit 394d5dae3f
33 changed files with 1681 additions and 228 deletions
@@ -11,7 +11,7 @@
## Executive Summary
We audited Gordon Law across its primary online surfaces: Google Business Profile, Apple Maps, and the business website. The business shows 4.9 ★ across 45 Google reviews.
We audited Gordon Law across its primary online surfaces: Google Business Profile and Apple Maps. The business shows 4.9 ★ across 45 Google reviews.
**4 material integrity issues were identified:**
1. Phone numbers are inconsistent across directories.
@@ -27,7 +27,8 @@ We audited Gordon Law across its primary online surfaces: Google Business Profil
|---------|--------|--------|---------|
| Google Business Profile | ✓ | 4.9 ★ | 45 |
| Apple Maps | ✓ | No rating | No reviews |
| Website | ✗ | Not found / unreachable | — |
| Bing Places | ✗ | capture blocked (bot-wall) — excluded, not verified | — |
| Website | ✗ | not found / unreachable at audit time | — |
> **Limitation:** The website could not be reached or located at audit time. A blocked or missing website is itself a customer-path risk: visitors arriving from search cannot engage the business. Reachability should be re-verified; if the block persists, treat it as a material finding in the next run.
@@ -77,7 +78,7 @@ Stand up (or link on GBP) a business website with service pages, contact details
### Finding 4: No business description found on any surface
**Observation:**
{"surfaces_checked": ["google", "bing", "website"]}
no description on any checked surface — weakens local-pack snippet
**Impact:**
An empty description leaves the local-pack snippet to algorithmic default and forfeits the business's own service language in search results.
@@ -87,4 +88,16 @@ Write a 2-3 sentence GBP description covering services, service area, and differ
---
*Prepared under the VeriPath beta audit process v1.0. Findings reflect reviewed engine output; format-level discrepancies were normalized before inclusion.*
## Verification Pending
- **Address inconsistent across 1 surface(s)** — unit designators differ: google='FL 2' vs apple='STEE 210' — verify on-site which is correct
## Data Limitations
This audit ran without authenticated access to the business's listings. Known ceilings:
- **Review text and dates** were not captured; ratings and counts only.
- **Bing Places** is bot-walled for headless capture in most runs; where it shows ✗ above, that surface is excluded from this audit, not verified.
- This is a **point-in-time snapshot**; directory data changes after the audit date.
*Prepared under the VeriPath beta audit process v1.1. Findings reflect reviewed engine output; format-level discrepancies were normalized before inclusion.*
@@ -1,11 +1,11 @@
# Validation Run: Gordon Law
**Date:** 2026-08-15
**Date:** 15 August 2026
**Business:** Gordon Law
**Rating:** 4.9 ★ | **Reviews:** 45
**Engine findings:** 8 | **Material (in report):** 4 | **Rejected FP/low-signal:** 3 | **Needs verification:** 0
**Engine findings:** 8 | **Material (in report):** 4 | **Rejected FP/low-signal:** 2 | **Needs verification:** 1
## Reviewer dispositions (locked process v1.0 §3)
## Reviewer dispositions (locked process v1.1 §3)
### Material (survive normalization → in REPORT-final.md)
@@ -20,11 +20,11 @@
### Needs verification (excluded from report until confirmed)
- none
- **immediate** — Address inconsistent across 1 surface(s)
`unit designators differ: google='FL 2' vs apple='STEE 210' — verify on-site which is correct`
### Rejected (format false-positives / low-signal / tooling gaps)
- ~~Address inconsistent across 1 surface(s)~~ — same street/city/zip; unit designator format only
- ~~Cannot determine review recency — no dates available in samples~~ — tooling gap: scraper captures no review dates (documented limitation)
- ~~Category varies across surfaces: consumer sector, personal injury attorney~~ — low-signal: per-platform taxonomy (Apple 'consumer sector' is its default)
@@ -32,9 +32,19 @@
- Price level not set on GBP or Apple Maps
## Pre-delivery consistency gate (v1.0 §6)
## Pre-delivery consistency gate (v1.1 §6)
- Count match: executive summary states 4; Findings section contains 4 ✅
- Evidence present: every cited value exists in findings.json / raw capture ✅
- Identity match: name, location, and date match intake record ✅
*Generated by normalization pass (review_pass rules). Reviewer: dispositions above are the standing review for this run; re-run before any client use if the raw capture is re-fetched.*
*Generated by report_generate.py (locked normalization rules). Gate result appended by report_gate.py before delivery.*
## GATE RESULT
**PASS** — report_gate.py, 2026-08-15T16:27:11
- Count: 4 stated / 4 material after review — match
- Identity: report title + date match raw capture ('Gordon Law', 15 August 2026) — match
- Surface disclosure: all captured/failed surfaces rendered correctly — match
- Material support: every material finding re-derived from raw capture — hold
- Needs-verification open: 1