LLL · communication board

Google Ads: finish and prove it

● ACTIVE

Sol High owns the six-service setup, every relevant conversion path and an evidence-backed launch. No green checks without proof.

Live owner: Sol High · configuration and release verified, positive test pending Run: ads-sol-recovery-20260926 Updated: 2026-09-26T12:28:01.270409+00:00

Goal and finish line

End goal: A usable enquiry journey and the agreed six Google Search campaigns, correctly measured and safely launched within 200,000 Ft per calendar month.

Done means: All 12 checks pass, with 16 accepted form cases, normal conversion-chain evidence and real postactivation delivery. External dependencies remain visible until actually cleared.

3 / 12criteria verified
4deliverables
3open evidence gaps

Rules that stay fixed

  • Google only. Six services, seven groups. Maintenance: the existing collection and one 10 km Szigetszentmiklós radius.
  • Whole-account maximum 200,000 Ft/month. Péter handles payment. No client messages, fake conversions or protection bypass.
  • Cloudflare only. No GAJA/GHL, unrelated product work, new security layer or competing writers. Preserve recoverable source and releases.
Proof standard: Real interaction → accepted storage → exact success event → intended provider receipt. QA, dispatch, attributed conversion and real business stay distinct.

Deliverable flow

Inputs → outputs · maximum eight nodes

Read left to right: preserve the approved inputs, prove the lead journeys, then launch only when the evidence supports it.

Input 1 · confirmed or open

Approved service brief

Why: Keep the agreed scope and existing account objects.

Input 2 · constraint or source

Luna receipts + current state

Why: Preserve useful work and identify actual gaps.

Deliverable 1 · main review item

Measured lead journeys

Why: Prove enquiries are saved and measured once.

Deliverable 2 · evidence or artifact

Reconciled campaign setup

Why: Match targeting, copy, goals and spending to the brief.

Output · decision or next action

Verified launch + handoff

Why: Show actual eligibility and delivery after gates pass.

Next: 24h/48h observation from the real activation instant.

Why replace Luna

Useful work to keep

Six campaigns and seven approved ads were reported configured. Navigation checks passed in a focused parent review. v45 reports a choice-neutral cookie-panel close control and two-route live checks. Preserve these results and their receipts.

The main outcome is unproved

Three recorded form attempts produced no accepted lead. That leaves storage, normal success events, GA4 receipt and native Ads conversion delivery unproved. More layout passes cannot establish those outcomes.

The test design has a branch gap

Current lead-runtime.js routes names starting with Teszt and the test email domain to cf_lead_validation instead of lead_saved. Sol must explicitly prove the production success path without misreporting QA as real business.

Authority was misread

A reviewer-only read-only scope was treated as a user-wide ban on fixes. This was later corrected. Sol must trace constraints to the actual user or runtime, and continue independent authorized work.

Evidence and status drifted

The v45 receipt says the public board still showed v44. Screenshot observations were not durable files, and route spellings differ in the report. Keep exact URLs, timestamps, source/version and evidence links synchronized.

Model choice is not a guarantee

The evidence supports replacing the executor. It cannot establish that Luna is generally incapable, or that Sol is certain to finish. Success will be judged by the checks below. Payment, human verification and real auction delivery remain external dependencies.

Previous execution board · Approved campaign contract

Confirmed facts, assumptions and open facts

Confirmed scope: drilling, concrete breaking and paving take priority. Turf and standalone irrigation remain included at smaller budgets. Maintenance includes short mowing/leaf work and larger jobs. The latest human radius is 10 km.

Dated evidence: 26 September fresh provider reads: all 25 campaigns paused, seven target ads approved. All 254 settings checks reconciled after narrow sitelink corrections. v47 is deployed with two narrow mobile CSS fixes, v46 rollback and unchanged Worker modules. All twelve live pages match the reviewed build.

Operator choices: the 6,500 Ft daily split, 600/400 Ft CPC caps and 24h/48h observation checkpoints came from the approved plan, not meeting quotations. No promise of lead count or CPA.

Open: legitimate-token test route and normal-event coverage, payment/eligibility, and current serving state. These are evidence needs, not permission to stop unrelated work.

Live executor updates

Parent · replacement authorized

Sol High is the new sole owner. Keep this board open in the task’s in-app browser, republish it after meaningful evidence or state changes, and refresh the displayed page. Record timestamps and next actions here. Do not mark a planned task done.

2026-09-26T12:28:01.270409+00:00 · Sol executor

All 254 campaign settings checks reconcile after narrow sitelink corrections. All 25 campaigns remain paused. Billing clearance and positive protected-form tracking remain unresolved. Private billing evidence stays outside this public board.

v47 is deployed at 100%. Two confirmed mobile defects were repaired with three CSS lines in two pages. All twelve live HTML routes match the reviewed build, all four Worker modules match v46, and all 31 bindings/runtime/assets settings are preserved. Immediate rollback is v46. Two fresh Luna xhigh reviewers are checking the changed/risky live states.

Parent pixel review corrected an unsupported missing-header finding. Existing animation source explains the reveal transition and testimonial mask. Shared consent loading passed denied/granted UI checks, but the first accepted transaction and full 16-case measurement matrix remain pending the current CAPTCHA action-time confirmation.

Parent checkpoint refinement · 26 September

This is the one parent refinement authorized by Matt. Sol remains sole owner of the live HTML and execution. Incorporate this into the existing board, preserving its URL, comments, approved campaign specification and accumulated evidence.

The normal-path QA marker may suppress notification email and exclude identified QA rows from genuine CRM lists/counts. It must not bypass Turnstile, quarantine, consent, validation or persistence, or fabricate analytics events. Retain the stored QA rows and transaction IDs for private traceability. Maintain the existing normal lead_saved event and native tag route. QA measurement dispatch is a controlled test, never a genuine customer enquiry or paid-ad attributed conversion.

Before releasing this bounded change, prove complete-marker suppression, ordinary-customer and partial/quoted-marker notification queueing, and parity between the JavaScript marker and SQLite exclusions, including NULL messages. Prove existing synthetic-test behavior and ordinary CRM counts/list visibility remain intact. Verify the exact released version afterward, with practical rollback. Local tests do not establish live accepted-lead or destination proof. Ordinary mail behavior can be checked with a stubbed provider and existing readback, without unsolicited client email.

One legitimately accepted, visibly labelled normal-path lead must establish server acceptance, one stored transaction, normal event, exact GTM tag, matching GA4 session/event and intended Ads ID/label request before scaling to the full 16-case matrix. Keep individual layers NOT_RUN/BLOCKED/PARTIAL until observed. No PII in analytics or public evidence. A dispatched Ads request does not prove attributed conversion.

The current reconciliation reports additional/inherited sitelinks and a changed paving RSA identity. Check effective serving associations and canonical redirects before treating URL spelling differences as defects. Remove or correct genuinely off-scope effective assets through narrow campaign/group changes, preserving unrelated account work. Retain only the maintenance collection-page destination for its campaign. Reconcile paving RSA 812427480883 versus 825938005143 against the approved wording, real history and current approval. Do not duplicate an identical ad merely to satisfy a stale ID, but preserve any explicit user requirement and explain any justified replacement mapping in the board.

The budget ledger is conditional and not a native account cap. Refresh whole-account costs, high-water budget history and outstanding exposure immediately before activation. Resolve remaining history/finalization assumptions honestly. Activation requires the existing measurement, eligibility and budget gates. Actual 24h/48h serving observation begins at activation, not at this checkpoint.

Replace “Awaiting the first Sol result” and stale clean-checkout/provider-pending statements with actual progress, version and evidence timestamps. Show the precise status of each layer and remaining dependency, not only 0/12. Keep the board open in the child in-app browser and republish its stable URL after meaningful evidence batches. Public evidence must omit private lead data, credentials and sensitive account content. The parent does not race board edits.

The pending runtime CAPTCHA confirmation blocks only that challenge action and dependent positive-path verification. It does not block independent negative tests, provider reconciliation, approved settings corrections, release tests or budget analysis. Péter retains payment ownership. Do not send him a message or touch payment controls. No extra approval gates, new executor or recurring parent supervision.

End goal system

Relevant Google search

Matching service page

Accepted enquiry

One intended conversion

Measurable campaign delivery

Route to the end state

Fresh state + signal map

One valid lead + root-cause repair

All paths + edge cases

Budget + billing gates

Enable + observe + handoff

Exact campaign specification

The approved matrix is retained. Values are target settings, not a claim about the current account.

CampaignDaily / CPC ceilingGeographyDestination
Talajfúrás
23879060095
1800 Ft
CPC ≤ 600 Ft
Keep six counties: Pest (20429), Fejér (20421), Komárom-Esztergom (20427), Bács-Kiskun (20417), Somogy (20430), Veszprém (20434). Remove the additional LOCATION_GROUP criterion 2189547636663 so the explicit areas are the only inclusions. This is a retained account choice, not a September meeting promise./gepi-foldmunkak#talajfuras
Betontörés
23934089692
1700 Ft
CPC ≤ 600 Ft
Keep Budapest radius 50 km at 47.497912, 19.040235 and the existing Szentendre inclusion (1007669). The meeting’s restricted maintenance area is not applied to this machine-work campaign./gepi-foldmunkak#betontores-bontas
Térkövezés
23934089710
1300 Ft
CPC ≤ 600 Ft
Keep the UNION of two 20 km radii: Budapest 47.497912, 19.040235 and Érd 47.363091, 18.981764. Exclude Szentendre (1007669)./kertepites#terkovezes
Gyepszőnyegezés
23934089701
450 Ft
CPC ≤ 400 Ft
Keep Budapest radius 50 km at 47.497912, 19.040235. Smaller budget is the agreed restriction here, not the maintenance radius./gyepszonyegezes
Öntözőrendszer
23934089713
450 Ft
CPC ≤ 400 Ft
Keep the UNION of two 20 km radii: Budapest 47.497912, 19.040235 and Érd 47.363091, 18.981764. Exclude Szentendre (1007669)./automata-ontozorendszerek
Helyi kertfenntartás
24276893685
800 Ft
CPC ≤ 400 Ft
Exactly one 10 km radius at 47.348706, 19.045241, the current Szigetszentmiklós town targeting point. It is not a verified home address. No additional town/county inclusions that widen the circle. Exclude Szentendre (1007669). The meeting’s southern-town examples are context, not extra OR targets./kertfenntartas
Shared settings

Proposed target · Campaign type and networks: SEARCH. Google Search ON. Search partners OFF. Display OFF. Keep every currently paused outside campaign, including PMax and generic garden/earthmoving campaigns, paused and otherwise untouched. Fresh unexpected outside active spend is reconciled in the account-wide bound and documented before this plan activates. No duplicate campaigns.

Proposed target · Bidding: Standard campaign Maximize Clicks (API TARGET_SPEND), no target CPA/ROAS. CPC caps are in the matrix. Remove non-neutral bid adjustments so they cannot inflate the starting cap. Do not switch back to Maximize Conversions during setup based on clicks or test events. Record a later evidence-based bidding recommendation separately. Check current keyword/auction diagnostics and available historical bid ranges against the proposed caps. Estimates are context, not a minimum bid or success guarantee. Do not automatically raise caps or pause solely because an estimate is higher. If caps constrain serving, record the evidence and a justified revised-cap proposal separately, within the same monthly budget bound.

Proposed target · Language, time and devices: Hungarian (languageConstants/1024). Campaign ads 00:00–24:00 every day, Europe/Budapest. Desktop, mobile and tablet included with neutral adjustments. No audience or demographic restriction, no unsupported income/age exclusions. Call assets stay paused until the number, staffed hours and actual-call measurement are verified.

Proposed target · Location mode: Positive = PRESENCE. Negative = PRESENCE. Exactly the inclusions/exclusions in each campaign card. No presence-or-interest expansion. Radius targeting is a provider setting, not a guarantee of physical location.

Proposed target · Keywords: For every listed phrase, one EXACT and one PHRASE positive keyword in its named ad group. Reuse matching objects, add missing forms, pause BROAD versions. Move generic kertfenntartás terms to the larger-maintenance group. No generic earthmoving, whole-garden or alpine-felling targeting.

Proposed target · Ads: One enabled responsive search ad in each of the seven groups. Reuse/correct existing ads. For paving keep 812427480883 and pause alternate 812427480880. Each ad has the service headline below pinned to Headline 1, plus Kertújítók and Kérjen ajánlatot, and its stated description plus Írja meg a települést és a feladatot. Egyeztetjük a részleteket. No keyword insertion or unsupported free-survey, price, speed or warranty claims. Minimum 3 headlines and 2 descriptions, valid lengths. Pinning does not guarantee an impression.

Proposed target · Assets and URLs: Use canonical kertujitok.hu destinations below. Per campaign: service link to its destination + Ajánlatkérés link to the same page #kapcsolat. For maintenance use only a verified relevant section of the existing /kertfenntartas collection if a stable anchor exists after the UI release; otherwise use the collection URL without a fragment. Keep only other assets that pass the same offer/claim checks. Remove inherited irrelevant garden-build/service links from eligibility, preserving unrelated campaigns. Auto-tagging ON. URL suffix: utm_source=google&utm_medium=cpc&utm_campaign={campaignid}&utm_content={adgroupid}&utm_term={keyword}. Verify query strings and service anchors survive redirects.

Negative keywords

All six · phrase: állás, állásajánlat, munkát keresek, tanfolyam, eladó, kölcsönzés, bérlés, házilag, csináld magad · Exclude job hunting, DIY and machine hire. Do not block ár, árak, árlista, munkadíj, telepítés or kivitelezés.

Drilling · preserve KPC exclusions: Phrase: kútfúrás, kut furas, kutfuras, vízszintes, házilag. Exact: talajfuro obi, haina h 1901 · Keep existing unrelated-intent exclusions. Add phrase kútfúró, talajfúró eladó, talajfúró bérlés only if not already covered.

Paving · preserve KPC exclusions: Phrase: házilag, térkőgyár, alvállalkozóknak · Keep genuine installation/price queries.

Irrigation · phrase: komplett kert, teljes kertépítés, teljes kertepites · Standalone irrigation is welcome. Do not use a blanket kert negative.

Maintenance · phrase: alpin, alpintechnika, favágás, fakivágás, láncfűrész · No alpine or standalone tree-felling offer. Short-job group excludes phrase ágaprítás, ágdarálás and gépi kertkarbantartás. Larger-work group excludes EXACT fűnyírás and lombgyűjtés only, not blanket phrase negatives that could suppress combined large-job queries. Preserve leaf collection within complete maintenance jobs. Negative matching does not guarantee query routing, inspect search terms when available.

Conversion settings and tests

Target bidding goal: Use one campaign-specific custom goal containing exactly Contact Form Lead 7685753897, Hero Form Lead 7686106212 and Widget Form Lead 7686113193, after each passes. All three remain ONE_PER_CLICK. Use/reuse a dedicated goal for these six campaigns instead of editing shared custom goal 6457939076 in place, which is also attached to unrelated campaigns. For all six, read back goal_config_level=CAMPAIGN and the dedicated custom-goal resource. Set every standard CampaignConversionGoal category/origin row biddable=false for those six and verify the full row set, so a standard goal cannot add other actions. Do not change customer-level defaults or the old shared goal. Maximize Clicks itself optimizes clicks, this clean goal setup governs conversion reporting and any future authorized conversion bidding.

Exclude from this goal: Google Forwarding Number 7621478367 and Calls from ads (1) 7661968974 until actual qualifying-call proof exists. Also exclude page visits, directions, phone/button clicks, GA4 duplicates, legacy/native duplicate and retired-system imports. Secondary status alone does not exclude an action included in a custom goal.

Real submission proof: Inventory 15 unique live form paths: hero/contact/widget on each of /gepi-foldmunkak, /kertepites, /gyepszonyegezes, /automata-ontozorendszerek and /kertfenntartas. Perform 16 accepted submission cases: each path once, plus one additional maintenance submission of the alternate short/large job type on a suitable maintenance form. Use unique QA IDs, controlled contact details and TEST messages. Each needs one accepted /api/lead response, stored Cloudflare record, success event and correct native Ads request. Verify both maintenance selections persist. Reconcile the live inventory after the UI release and add any newly discovered in-scope paths.

Failure, retry and consent proof: For each of the three form implementations, invalid/rejected submissions produce no lead conversion. Repeated submit, back/reload and thank-you reload do not create duplicate lead conversions for the same accepted submission. Consent granted/denied flows preserve the existing consent behavior, with diagnostic limits recorded honestly.

What the proof means: Specific GTM event detail with fired tag plus the matching GA4 event/session and Ads conversion ID/label request. Aggregate GTM Summary or aggregate Realtime is insufficient. Separate test records from genuine leads. GA4 Testing filters do not exclude traffic. No paid self-clicks, fake gclid or fabricated events. An Ads request proves dispatch, not attributed paid conversion. Map each native conversion-action resource to its provider tag ID/label before requests are compared. ONE_PER_CLICK does not prove browser/backend deduplication. Keep transaction/submission identifiers for duplicate checks.

Budget calculation

Allocation: drilling 1,800 + concrete 1,700 + paving 1,300 + turf 450 + irrigation 450 + maintenance 800 = 6,500 Ft/day. Priorities receive 4,800 Ft/day (73.85%). Each campaign has its separate existing non-shared budget. Maintenance’s 800 Ft is shared by two groups. Concrete/paving are changed from the current 1,300/1,700 allocation to follow the stated priority order.

For a full month with these unchanged budgets, Google’s usual 30.4× monthly charging bounds sum to 197,600 Ft. The 2,400 Ft difference is headroom, not extra spend to allocate. This is not a native hard account cap and does not cover earlier higher budgets automatically.

Before activation or ANY budget edit, calculate an account-wide upper bound: cost through a finalized prior day + a conservative charge bound for every unfinalized day + future permitted charges. On a change day use 2× each budget’s highest value that day. Count shared budgets once. For remaining changed-month days, the conservative 2×daily upper bound is acceptable. If earlier history cannot establish a bound, affected spend remains paused.

September 25–30 example, only with a fresh ledger proving zero earlier cost/exposure: because concrete rises 1,300→1,700 and paving falls 1,700→1,300 on the same day, per-campaign highest budgets sum to 6,900. September 25 bound = 2×6,900 = 13,800, plus September 26–30 = 5×2×6,500 = 65,000, total 78,800 Ft. The 78,000 Ft figure applies only to six unchanged 6,500 Ft days, not this swap day. Recompute for the actual launch date/history, do not catch up unused spend. Next full month remains 6,500/day.

Boundary fixtures: (A) six unchanged full days, prior finalized cost 130,000:130,000+78,000=208,000, reject 6,500/day; floor70,000/12=5,833/day before round-down allocations. (B) swap-day high-water 6,900/day already established:130,000+13,800+5×13,000=208,800, reject. Reserve the full 13,800 for that day, leaving 56,200 for five future days, hence total daily allocation ≤5,620 then, or pause. A same-day reduction does not erase its earlier highest budgets. The live worksheet must compute each campaign/day maximum from history before choosing scaled budgets.

Executor owns fresh preflight, temporary pause of these six during edits, before/after ledger and 24h/48h checks. Record exact checkpoint times and next-month baseline now. A scheduled month-boundary recheck remains pending until performed, not claimed complete. Do not build a spend controller. No budget increase or reactivation outside this six-campaign plan. Matrix amounts are maximum baseline allocations, permitted proportional reductions must be recorded consistently in settings-diff and budget-ledger.

Seven ad groups, exact/phrase keywords and offer copy

2606_Gepi-foldmunka_Talajfúrás-földfúrás-gödörfúrás-lyukfúrás_Search

Talajfúrás / földfúrás / gödörfúrás / lyukfúrás: talajfúrás, földfúrás, lyukfúrás földbe, gödörfúrás, kerítésoszlop fúrás, oszlopfúrás

Talajfúrás és oszlopfúrás · Fúrás kerítéshez, növényültetéshez. Írja meg a helyszínt és a feladatot.

2606_Gepi-foldmunka_Betontörés_Search

Betontörés: beton bontás, beton törés, járda bontás, betontörés, beltéri bontás

Betontörés és beltéri bontás · Beton és járda bontása, beltéri munkák. Írja meg a helyszínt és a bontandó részt.

2606_Kertujitok_Térkövezés_Search

Térkövezés: térkövezés, terasz burkolás, térkő lerakás, kocsibeálló térkövezés

Térkövezés és térkő lerakás · Járda, terasz vagy kocsibeálló térkövezése. Kérjen ajánlatot a tervezett munkára.

2606_Kertujitok_Gyepszőnyeg-lerakás_Search

Gyepszőnyeg lerakás: gyepszőnyeg telepítés, gyepszőnyegezés, gyepszőnyeg lerakás

Gyepszőnyeg lerakás · Gyepszőnyegezés előkészítéssel. Küldje el a terület méretét és a települést.

2606_Kertujitok_Öntözőrendszer-telepítés_Search

Öntözőrendszer telepítés: öntözőrendszer tervezés, locsolórendszer, automata öntözőrendszer, kerti öntözőrendszer, öntözőrendszer telepítés

Önálló öntözőrendszer · Öntözőrendszer telepítése önálló munkaként is. Írja meg a helyszínt és az igényt.

2609_Kertujitok_Helyi-kertfenntartas_10km_Search

Helyi fűnyírás és lombgyűjtés: fűnyírás, fűnyírás szigetszentmiklós, lombgyűjtés, lomb összeszedés

Fűnyírás és lombgyűjtés · Fűnyírás és lombgyűjtés Szigetszentmiklós 10 km-es körzetében. Kérjen egyeztetést.

Gépi kertkarbantartás: kertfenntartás, kertfenntartás szigetszentmiklós, gépi kertkarbantartás, ágaprítás, ágdarálás

Gépi kertkarbantartás · Nagyobb kerti rendbetétel és ágaprítás, földről végezhető munkákkal. Kérjen egyeztetést.

Technical references: Google budget limits · Google conversion goals. Resolve the QA-event branch conflict in the tests below before treating historical test instructions as executable.

Work and proof

One card per deliverable

C1 · Exact campaign configuration

VERIFIED
Observable result and proof

Read all settings, positive/negative keywords, inherited assets, URLs, policy, goals and outside campaign statuses. Reuse IDs and preserve useful history. A mutate receipt is insufficient.

Evidence: Fresh audit: geography, networks, language, 64 exact/phrase keywords, 77 required negatives and seven approved RSAs match. 15 unrelated group sitelink associations paused and six target-only inheritance exclusions verified at 11:00 UTC. Existing approved paving replacement retained and mapped. No budget/status changes.

C2 · Usable live destinations

REPAIRS IN PROGRESS
Observable result and proof

Maintenance uses /kertfenntartas only. Local landing absent from menus. Check collection hero gap, deep-scroll menu open/close, lower menu items, floating CTA, standalone irrigation copy and consent open/close. Reuse valid passing evidence when source/version still match. Blind independent screenshot description and criterion comparison are required for changed GUI states.

Evidence: Mobile QA saved 145 frames, with 136 distinct images, across all five routes at 390×844. Parent image review confirms two defects: turf comparison heading wrap and maintenance gallery/copy collision. The reported missing irrigation header is not supported by the three retained top screenshots, which all show it. Luna Max repaired the two confirmed defects with three scoped CSS lines. Source diagnosis explains the reveal transition and scrolling testimonial edge mask. v47 is deployed, with twelve matching live page bodies. Two fresh independent Luna xhigh agents are checking changed/risky states while preserving verified unchanged section coverage.

C3 · Complete conversion inventory

VERIFIED
Observable result and proof

Record current provider IDs and versions. Map contact 7685753897, hero 7686106212 and widget 7686113193 to actual Ads tag IDs and labels. Inventory calls, phone clicks, legacy imports and duplicates too. Excluded calls stay excluded until qualifying-call proof exists.

Evidence: GTM UI independently confirms live version 20, published 24 September, 17 configured tags. Published bundle has 10 additional internal listeners. Workspace 21 has 0 pending changes. GA4 property 294660018 and stream G-SRHT129F0Q verified. Native Ads labels and 39-action inventory saved. GA4 live UI confirms Internal Traffic and Developer traffic exclusion filters are Active. No positive event receipt yet.

C4 · One complete lead before scaling tests

CONFIRMATION
Observable result and proof

Diagnose empty-token cause through visible widget, callback, consent/script state and response evidence. Do not repeat empty-token POSTs. Resolve the cf_lead_validation versus lead_saved QA branch before claiming normal-path tracking. Billing does not prevent this independent diagnostic work.

Evidence: Live IAB contact form shows the Cloudflare “Verify you are human” checkbox. All three widgets initialized with empty tokens. No empty-token POST sent. Runtime action-time confirmation requested.

C5 · Every form path covered

NOT RUN
Observable result and proof

Each row: timestamp, URL, form ID, consent state, unique QA marker, transaction ID, response, stored lead, event, GTM detail, GA4 receipt, Ads request or exact blocked layer. Preserve both short and larger maintenance selections. Discover and add missing in-scope paths. Never extrapolate one passing form to another.

Evidence: Pending. Attach dated receipt and screenshot/description/comparison where required.

C6 · Actual conversion delivery

NOT RUN
Observable result and proof

A validation-only QA event does not prove the normal success path. Use legitimate controlled submissions and provider-supported diagnostics. No fabricated dataLayer event, fake click ID, paid self-click or protection bypass. Record QA separately from real enquiries. Request dispatch is distinct from paid attribution or a qualified lead. A deliberately suppressed destination stays unverified.

Evidence: The explicit QA marker now suppresses mail and excludes genuine CRM metrics/lists without changing normal lead_saved dispatch. The v46 backend is preserved unchanged in verified v47. No accepted submission or Ads dispatch claimed.

C7 · No false or duplicate conversions

3 NEGATIVE CHECKS
Observable result and proof

Cover existing consent denied/granted behavior for each implementation. Denied-state suppression passes only its negative test, not positive delivery. Quarantined leads must not become successful ad leads. ONE_PER_CLICK is a provider setting, not proof of browser/backend deduplication.

Evidence: Empty hero, contact and widget submissions were blocked by native validity, with no lead API request or success event observed. Shared consent-loader UI check passed: necessary-only loaded no Google tags, and restoring consent loaded the expected IDs. Per-form consent and remaining negative/deduplication cases are untested. Full local runtime, mail and reporting regression tests pass, not production proof.

C8 · Only intended goals count

CONFIG VERIFIED
Observable result and proof

Verify full CampaignConversionGoal row set. Calls 7621478367 and 7661968974, page/button proxies, duplicates and retired imports are absent from this goal. Keep unrelated shared goals and account defaults intact. Maximize Clicks remains the approved starting strategy.

Evidence: Fresh read: six CAMPAIGN-level custom-goal references, exactly three native form actions, all 72 standard-goal rows nonbiddable. Calls/proxies excluded. Three intended actions still require positive production receipts.

C9 · Whole-account spending bound

CONDITIONAL BOUND
Observable result and proof

Daily baseline 1,800/1,700/1,300/450/450/800 Ft, total 6,500, with proportional reductions if necessary. Count shared budgets once, reserve unfinalized days and per-campaign daily high-water changes. Fixtures: 130,000+78,000 rejects 6,500 and allows ≤5,833/day; swap-day 13,800 leaves ≤5,620/day for five remaining days. No native hard account cap is claimed.

Evidence: Zero September reported cost and current billed campaign charge. Conservative historical/unfinalized reserve plus future exposure is 120,600 Ft under stated maturity assumptions. Both 5,833/day and 5,620/day boundary fixtures pass with safe proportional integer rounding. Fresh preactivation reconciliation still required.

C10 · Eligibility and payment are known

DIAGNOSIS VERIFIED
Observable result and proof

Outstanding balance/possible suspension is not confirmed suspension. Péter owns card/payment. No agent retries or changes it. Complete all independent setup and measurement work while payment remains unresolved. UNKNOWN is not launch-ready.

Evidence: Live billing warning: service may be suspended. Private billing receipts confirm the unresolved payment state. Seven RSAs approved. All campaigns paused. Payment clearance not proved and remains Péter’s action.

C11 · Real delivery after safe activation

NOT RUN
Observable result and proof

Save exact activation instant, Budapest window, impressions/clicks/cost and current budget reconciliation. Zero stays unverified and gets diagnosis. No scope or spend expansion to force delivery. Checkpoints start at actual activation, not an obsolete calendar deadline. Paid conversions and commercial results are separately reported, never manufactured.

Evidence: Not activated. No 24h/48h clock started.

C12 · A reviewable final record

LIVE RECORD
Observable result and proof

Update this same URL after meaningful results. Base contract black, executor evidence blue, verified green, failures red. Keep an evidence index, deliverables.md, main-prompts.md and session.txt. Secrets and private leads stay local. No COMPLETE while essential proof is missing.

Evidence: Durable provider audit, screenshot files, before/after sitelink receipts and test logs saved privately. v47 19626b31 is deployed, v46 rollback verified. Backend source 9f1b4a1 and CSS source 30ee06e are integrated in the canonical checkout. QA mail/reporting changes passed review and live module readback. No activation or observation clock.

Dependencies and honest stop conditions

Human or provider dependency

If the browser presents a verification challenge, preserve the visible state and obtain its required action-time confirmation. Péter owns payment. Do not ask for generic reapproval of already authorized technical work.

Keep moving

Diagnose the form and measurement chain while billing is unresolved. Prove all independent account settings, negative tests and release checks. A missing screenshot or receipt stays unverified, and prohibited tool workarounds remain prohibited.

Recovery state

Only inspect on stall or completion
0consecutive stalls
New ownerrecovery state
First valid leadresume point
Last stall / completion note: Luna transferred ownership after v45. Wider Ads completion remains unproved.
Parent action: Launch Sol High. Stay fully idle for 20 minutes, inspect once, refine this contract once if needed, send one consolidated prompt, then return to idle.