Files
veripath/docs/agents/leonard-gbp-execution-card.md
T

82 lines
4.0 KiB
Markdown
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.
# Leonard Execution Card — GBP Snapshot Ingest v1.2
**Goal:** Map a filled GBP Snapshot Intake into client docs with minimal reasoning.
**Governing docs:**
- `docs/agents/agent-charter-v1.md`
- `docs/agents/audit-playbook-v1.md`
- `docs/templates/gbp-snapshot-intake.md` (v1.2+)
---
## Input required
A completed `gbp-snapshot-intake` (or form output) for the client.
If required metadata missing (client name, snapshot datetime, source, observation surface), stop and report `BLOCKED: incomplete intake`.
---
## Step 1 — Update Data Inventory GBP row only
Open: `docs/clients/<client>/data-inventory-v1.md`
Map intake → GBP section. Rules:
- Factual values only
- Blank → `NOT_OBSERVED`
- Confirmed absent after looking → `NOT_PRESENT`
- **PLACE_ID:** if MAPS_URL present and PLACE_ID empty → **compute** from URL (`/g/...`, `0x...:0x...`); never leave blank when derivable
- Secondary `!5s` / related feature IDs → note as related-listing **lead** (not conclusion)
- **PRIMARY_CATEGORY:** must be single canonical value; multi-token free text → write `INVALID_CAPTURE` + raw string; do not invent primary
- **CLAIMED_STATUS inference (allowed, named signals only):**
- If claim prompt NOT_PRESENT/No **and** review responses Yes → may write `Likely Claimed — inferred` + list signals
- Do not write Tier 1 Claimed without owner/dashboard source
- Verification Tier: owner dashboard → 1; human Maps / API → 2
- Snapshot datetime from intake (require TZ when open-now is set)
- Do not rewrite non-GBP sources unless intake names them
---
## Step 2 — Threat Trigger Rules (boolean only)
Apply **only** these rules. No creative threats.
| Rule ID | Version | Condition | Action |
|---------|---------|-----------|--------|
| R1 | 1.2 | BOOKING_BUTTON_PRESENT_ON_GBP = No **and** action-button row completeness OK (messaging observed or explicitly NOT_OBSERVED as incomplete) | Ensure threat for missing public booking on GBP. Prefer title form: missing GBP booking button. If siblings null, emit **reduced confidence** note in evidence. Update evidence/recency if exists; else create. verification_tier: 2; severity: major (provisional). |
| R2 | 1.2 | (Claimed = No OR Unknown) AND (reviews thin OR NOT_OBSERVED) | Ensure threat for thin/unclear GBP completeness. Prefer **enumerated deficits** in evidence (posts, services, photos, Q&A, categories). If status is Likely Claimed — inferred, still allow thin-review threat but do not claim “unclaimed.” |
| R3 | 1.2 | SECOND_LISTING_NEARBY = Yes **or** secondary feature ID lead present | Ensure minor tier-2 related/duplicate listing risk threat; evidence must say lead vs verified. |
| R4 | 1.2 | Star rating + review count both observed | Do **not** create threat from rating alone. |
| R5 | 1.2 | Field NOT_OBSERVED alone | Do not invent threat from absence of observation unless R1R3/R6 fire. |
| R6 | 1.2 | Services listed present **and** category/services breadth mismatch observable (e.g. services narrow vs multi category tokens / spin+PT vs strength only) | Ensure threat for services vs category discovery mismatch. |
**Rules log requirement (output):** for each fired rule include: rule ID, version, input fields read, values read, output emitted (threat ID or update).
---
## Step 3 — Output format
Return only:
1. Updated GBP inventory section
2. Threat Register changes (if any rule fired)
3. `Changes Made` list — bullet facts; include **object IDs** (e.g. T-012) when creating/updating threats
4. `Rules Fired` list — structured per log requirement above
Forbidden:
- Severity upgrades beyond template defaults without human request
- Solution language
- Competitor claims
- New threats outside R1R6
- Phone masking / partial redaction of intake values
---
## Pass criteria
- Every written value traces to intake or deterministic URL parse
- No extra narrative analysis
- Tier labels correct; severity separate from verification_tier
- Only trigger rules created/updated threats
- PLACE_ID computed when URL present
**If uncertain:** leave field as `NOT_OBSERVED` and do not fire a rule.