Private localhost control board · base prepared before LUNA.MaX write pass · 18 September 2026

Annotation fixes

End goal: correct the two user-annotated defects in the verified Csupi Google Ads account: make the active campaign geography explicit and evidence-backed, and make the active campaigns optimize for the web phone interaction that covers phone-number-reveal buttons and the floating phone widget. The pass is narrowly scoped, read back after every external write, and must leave unrelated Ads and measurement state unchanged.

Account: 4891907898Client: Csupi AutómentőTarget cohort: 21 active campaignsWrite scope: explicit user request

Required end state

Geography fixed

Every active campaign in the target cohort has an explicit, provider-readable geographic target that matches its verified campaign label and the documented service-area evidence. No campaign relies on its name alone.

Phone interaction goal fixed

Every active campaign uses the existing web phone-interaction conversion goal as its biddable campaign-specific goal. The signal covers clicks on phone-number-reveal buttons and the floating phone widget, without claiming that a click is a connected call.

Unrelated state preserved

Campaign status, budgets, bidding strategy, ads, keywords, networks, devices, languages, account-level conversion actions and website/GTM state remain unchanged except for the exact requested campaign-goal and geographic-target mutations.

Provider proof complete

The before and after resource IDs, exact mutation scope, provider response, post-write readback, and any UI screenshot are saved locally. A failed or ambiguous write is not reported as complete.

Deliverables and strict verification

D01 · scope and before-state

Verified target cohort and mutation receipt

Not started

End state: the exact current active 21-campaign cohort and its pre-write location criteria, campaign-goal rows, conversion action identity, budgets, statuses and bidding state are captured for customer 4891907898.

Pass when: the account identity is read back; all 21 resource IDs are listed once; the intended phone action is verified as the existing enabled `tel_szam_katt`/phone-interaction action; and a before snapshot can be compared field-by-field with the after snapshot.

Must not: include paused legacy campaigns, infer identity from a browser tab, or start a write before the exact account and object IDs are verified.

Screenshot placeholder: verified Google Ads account and active-campaign scope.
D02 · location repair

Explicit geographic targeting for every active campaign

Not started

End state: every active campaign has a positive `LOCATION` or `PROXIMITY` target that is traceable to verified project/service-area evidence. City campaigns use their verified city target; motorway campaigns use only a provider-supported, evidence-backed geographic scope. Generic keeps its existing verified Budakeszi 40 km target unless the same evidence proves a narrower correction.

Pass when: the post-write provider readback shows the expected geographic criterion for all 21 active campaigns, no unintended location rows exist, presence behavior remains explicit, campaign IDs and statuses are unchanged, and the mapping table is saved with criterion IDs and names.

Must not: invent radii, broaden service areas from campaign names, use unverified business locations, touch paused/legacy campaigns, or change budgets, bids, keywords, ads or schedules.

Screenshot placeholder: representative campaign location settings and post-write readback.
D03 · conversion-goal repair

Phone-reveal and widget interaction as the campaign goal

Not started

End state: for each active campaign, the biddable campaign-specific goal is the existing web `PHONE_CALL_LEAD / WEBSITE` phone-interaction goal backed by the verified `tel_szam_katt` action. Its event coverage is verified against the site’s `gfn-track-phone` phone-reveal buttons and floating `widget-phone` link. Other campaign-specific goal categories are not biddable for this target cohort unless the provider model requires an equivalent exact representation.

Pass when: all 21 campaign-goal rows read back with the web phone-interaction goal biddable; non-phone goal categories are read back as non-biddable for these campaigns; the existing action remains enabled and primary/included; and no duplicate conversion action is created.

Must not: create synthetic conversions, place a call, change account-level action status, publish GTM, edit website code, delete conversion actions, or claim that the interaction proves a connected call, lead, job or revenue.

Screenshot placeholder: campaign conversion-goal setting and phone-reveal/widget coverage evidence.
D04 · no-drift verification

Unrelated campaign state preserved

Not started

End state: a post-write diff proves that only the requested location criteria and campaign-specific goal rows changed.

Pass when: campaign status, budgets, bidding, ads, keywords, network, devices, languages, URLs, account-level conversion actions, GTM and website hashes match the before-state, except for the explicitly authorized fields.

Must not: treat a successful API response as proof of a narrow diff, accept hidden account-wide changes, or leave any partial write unexplained.

Screenshot placeholder: before/after settings comparison or provider change-history readback.
D05 · final handoff

Client-ready fix receipt

Not started

End state: a concise explanation states which campaigns were fixed, what exact goal now drives them, which settings were intentionally untouched, and any campaign that remains blocked by missing geographic evidence.

Pass when: the report contains exact before/after IDs, timestamps, screenshots or scripts, provider receipts, a strict success matrix, and an honest statement of remaining UNKNOWNs. The project state and changelog record the result without claiming more than the readback proves.

Must not: call a partial mutation complete, promise a learning-phase exit date, or publish private Ads evidence.

Screenshot placeholder: final provider state and completed receipt.

Live agent progress

The contract above is black. The LUNA.MaX executor must append evidence, screenshots, provider receipts and status changes below. Every new or edited sentence in this region must be blue and use the `progress-entry` or `blue` class. Preserve the black contract and screenshot placeholders.

Waiting for the LUNA.MaX executor to begin. This placeholder is part of the black base template.

2026-09-18T21:08:31Z · D01 PASS · Fresh preflight verified customer 4891907898 as Csupi Autómentés, the exact 21-campaign active cohort, the existing enabled tel_szam_katt action 6509672057, current campaign goals, locations, budgets, statuses and bidding. Evidence: ../.tmp/google-ads-annotation-fixes-20260918/preflight.json
2026-09-18T21:10:49Z · D02/D03 VALIDATED · Provider validate-only accepted 26 evidence-backed location operations and 42 campaign-goal updates without issuing mutations. Evidence: ../.tmp/google-ads-annotation-fixes-20260918/validate-only.json
2026-09-18T21:11:06Z–21:14:54Z · D02/D03 PASS · The authorized write pass added 26 positive LOCATION criteria to the 20 campaigns that lacked them and set exactly 42 non-phone campaign-goal rows non-biddable. Every location write had an immediate same-campaign readback, and all 42 goal operations returned provider resources. Evidence: ../.tmp/google-ads-annotation-fixes-20260918/write-receipts.json
2026-09-18T21:16:00Z · D01/D02/D03 PASS · Fresh after-readback proves the same 21 active campaign IDs, 21/21 expected location assertions, 21/21 exact biddable PHONE_CALL_LEAD / WEBSITE goal rows, explicit PRESENCE/PRESENCE behavior, and the enabled primary/included action 6509672057. Evidence: ../.tmp/google-ads-annotation-fixes-20260918/fresh-after-provider.json
2026-09-18T21:19:09Z · D04 PASS · Minimal-diff verification found 26 allowed location criteria additions and 42 allowed campaign-goal changes, with zero removals, changed existing criteria, or unexpected goal diffs. Budgets, bidding, ads, ad groups, ad-group criteria, campaign IDs and stable campaign rows stayed unchanged. Evidence: ../.tmp/google-ads-annotation-fixes-20260918/minimal-diff.json
2026-09-18T21:08:31Z · D03 SITE PASS · All 21 local source pages and live routes returned the expected area/service markers, gfn-track-phone phone-reveal markers and widget-phone marker. phone-reveal.js retains the reveal-button, widget branch and tel href checks. No website, GTM or GA4 deployment occurred. Evidence: ../.tmp/google-ads-annotation-fixes-20260918/preflight.json and ../phone-reveal.js
2026-09-18T23:20 CEST · D05 PASS · Exact mapping, provider timestamps, resource IDs, receipts and the honest proxy boundary are recorded in the private parent report. The phone interaction remains a proxy and does not prove a connected call, qualified lead, completed job or revenue. Report: ../.tmp/agent-handoffs/csupi-google-ads-annotation-fixes-luna-max-20260918.md

Shared non-negotiable rules

RuleVerificationMust not do
Exact account and scope.Read back customer 4891907898, the 21 active campaign IDs and the intended conversion action before writing.Never reuse an unresolved account picker or touch paused/legacy campaigns.
Evidence-backed geography.Every new location criterion maps to an approved evidence row and is read back by criterion ID.Never invent a radius or use a campaign name as the only proof of service area.
Phone interaction only.All 21 campaign goal rows point to the verified web phone-interaction category, with the existing `tel_szam_katt` action preserved.Never create synthetic events, call a click a connected call, or change account-level conversion actions.
Minimal mutation.Before/after diff contains only the explicitly requested geographic and campaign-goal fields.Never modify budgets, bids, ads, keywords, website, GTM, GA4, billing or publication state.
Private and recoverable.Local JSON/Markdown receipts and localhost board include timestamps, resource IDs and rollback-safe prior state.Never expose credentials, caller details or publish private Ads evidence.
Blue progress rule.All executor-added text is blue and remains inside `#agent-progress`.Never recolor or silently rewrite the black base contract.