# Lane 1 — Requirements traceability

Fusion Tables PPC measurement / reporting / dashboard / strategy system.
Reviewed 2026-08-30 on `lifeos-devbox`, repo `/home/matt/mirror/Fusion`, branch `round-13-takeover` @ `8351b59`.
Read-only review. No live platform, CRM, site or Git mutation. Spend USD 0.

## How to read this file

**Path shorthand**

| Token | Expands to |
| --- | --- |
| `REPO/` | `/home/matt/mirror/Fusion/` |
| `ARCH/` | `REPO/outputs/loop-runs/20260830-fusion-ppc-architecture-orchestration/` |
| `ORCHB/` | `/tmp/claude-1000/-home-matt-mirror-Fusion/3429ff84-e206-4a61-8d4c-770f9bcc2c74/scratchpad/orchbranch/` (read-only materialisation of `origin/codex/fusion-ppc-architecture-orchestrator`, per `ORCH-CORR-1`) |
| `RPT30/` | `ORCHB/outputs/loop-runs/2026-08-28-fusiontables-report/` (also recoverable in-repo as `git show 830df60:outputs/loop-runs/2026-08-28-fusiontables-report/<file>`) |

**Status vocabulary** — a frozen goal row is *intent*, never *delivery*. The distinction is enforced in every row below.

| Status | Meaning |
| --- | --- |
| `DELIVERED` | A commissioned artifact exists, implements the requirement, and was parent-accepted. |
| `PARTIAL` | A commissioned artifact exists and implements only part of the requirement. |
| `NEVER PRODUCED` | No artifact. The owning child task never started. The requirement exists only as goal text. |
| `PRE-EXISTING COVERS PARTLY` | The commissioned artifact was never produced, but an artifact that predates the stopped run covers part of the same requirement. Graded on what that older artifact actually does, not on what it is named. |
| `HONORED` / `VIOLATED` | For constraint requirements. |

**Evidence class** — every claim below is labelled: `requested` (Matt asked for it) · `intended` (a goal document specifies it) · `configured` (a system setting exists) · `observed` (verified by reading bytes or running a command in this review) · `outcome` (verified business result) · `defect` · `hypothesis` · `recommendation`.

**Hard rule applied throughout:** missing is `UNAVAILABLE`, never zero.

---

## 0. The structural precondition that invalidates the whole delivery chain

`ORCH-CORR-1` (orchestrator-verified, not a Lane 1 discovery): the architecture fixed point
`638e7524` is **not** an ancestor of `round-13-takeover`. Two commits share the message
`plan: freeze Fusion PPC architecture delegation`; the frozen goal blob is byte-identical on both,
but the branch the eight children were launched from is missing 41 files — the entire `ads-control/`
keyword-performance system, `deliverables/fusion-meta-ads-review-2026-08-24/`, and all of
`outputs/loop-runs/2026-08-28-fusiontables-report/` except `ledger.json`.

Lane 1's requirements consequence, stated once here and referenced by ID below:

| ID | Requirement (unstated but load-bearing) | Owner | Status | Evidence | Gap |
| --- | --- | --- | --- | --- | --- |
| `R-BASE-01` | A child commissioned to audit, dashboard, strategise from or report on the PPC evidence base must be able to **read** that evidence base from its own worktree. | Architecture orchestrator (`ARCH/goal-v1.md:42-51`) | **VIOLATED** (`defect`) | `ORCH-CORR-1`. All eight worktrees are `/home/matt/mirror/Fusion-ppc-children/t<N>` off `round-13-takeover` (`ARCH/children/t2-measurement-audit/run-state.md`, `- Worktree:` / `- Branch:`). That branch has no `ads-control/`, no `report_data.json`, no Meta creative dashboard. | Every T3/T5/T7 acceptance row below is *unsatisfiable as written* on the branch the child was given, independent of the run stopping. T1 survived only because its method was reading immutable Git blobs by SHA (`ARCH/children/t1-evidence-corpus/artifacts/created-file-inventory.md`, 131 blob reads) rather than opening working-tree files. A dashboard build cannot do that. |

This means the run's failure is **not** simply "it stopped after T1". Even a resumed run would have
produced a dashboard with no data and a report with no evidence files. Record both facts.

---

## 1. Matt's verbatim requirements

Sources: `GROUND-TRUTH.md:75-105` and `REPO/handoffs/2026-08-30-fusion-ppc-system-audit.md:365-425`.
Quotes are verbatim including typos.

| ID | Requirement + source | Owned by | Status | Evidence path (or UNAVAILABLE) | Verification evidence | Gap |
| --- | --- | --- | --- | --- | --- | --- |
| `M-01` | "the goal is to make all the steps till purchase fully transparently measurable" — `019ff730-b932-73c2-9f77-f5ccd4c498b7` T0001 line 10 (`GROUND-TRUTH.md:77-79`). `requested` | T2 (map) + T3 (render) | **PRE-EXISTING COVERS PARTLY** | Meta chain: `RPT30/report_data.json` → `meta_ads.totals.impressions` 63,461 → `meta_ads.totals.clicks` 825 → `actions.link_click` 727 → `actions.landing_page_view` 626 → `actions.conversions:offsite_conversion.fb_pixel_custom.VHK_form_start` 14. Config chain: `REPO/deliverables/fusion-ppc-2026-07-30/evidence/tracking-audit.md:15-36`. Submit→offer: `.../evidence/crm-reconciliation.md:9-26`. | `observed` — I read the JSON values directly (`python3 -c "json.load(...)"`, 2026-08-30). Chain-of-proof ladder at `tracking-audit.md:99-108` grades each rung independently. | Chain breaks in **three** places: (a) Google side has no landing/form-start grain at all — GA4 declared absent (`report_data.json` `source_health[ga4].status = "absent"`); (b) the CRM sheet has **no source or campaign column** (`report_data.json` `crm.source_column = null`, `crm.no_source_column_note`), so submissions cannot be attributed back to a channel at all; (c) purchase and revenue have no field anywhere — `UNAVAILABLE`, never zero (`ARCH/children/t1-evidence-corpus/artifacts/evidence-matrix.md:25`). "Till purchase" is therefore measurable to *form-start* on Meta and to *platform conversion* on Google, and no further. |
| `M-02` | "I want a dashboard that shows multiple diagrams which have the steps of different funnels on the x axis and the number of people reached that funnel step" — same source. `requested` | T3 (`ARCH/children/t3-decision-dashboard/goal-v1.md`, row `T3-04`) | **NEVER PRODUCED** | `UNAVAILABLE — never produced`. `ARCH/children/t3-decision-dashboard/` contains exactly five control files and **no `artifacts/` directory**. | `observed` — `ls ARCH/children/t3-decision-dashboard/` returns `acceptance-ledger.md access-ledger.md goal-v1.md launch-prompt.md run-state.md`; `run-state.md` reads `- Status: WAITING_DEPENDENCY`, `- Started: NOT STARTED`. | Nothing renders a funnel diagram in this system. The nearest artifact is a **static five-box CSS grid with step labels and no values** at `REPO/deliverables/fusion-ppc-2026-07-30/public/deck.html:188-198` ("1 kattintás … 5 értékesítés jelenleg nincs adat") and its internal twin at `internal-audit.html:167-174`. Those are `intended`-class diagrams of the *measurement design*, not `observed` counts. |
| `M-03` | "…in the last 30 days vs the preceding 30 days" — same source. `requested` | T3 (`T3-01`, `T3-03`) | **PRE-EXISTING COVERS PARTLY** | `RPT30/report_data.json` `windows` declares `current`/`previous`/`timezone` **per source** (google_ads, meta_ads, bigquery, crm_sheet, work_evidence). Every metric is an envelope `{current, previous, unit, na}`. Rendered at `RPT30/report.md:11-18` (Google), `:24-31` (Meta), `:47-49` and `:53-55` (enquiries). | `observed` — read from the JSON and the Markdown. Windows: Ads `2026-07-25..2026-08-23` vs prior; CRM `2026-07-26..2026-08-24` vs `2026-06-26..2026-07-25` (`RPT30/crm_connector_receipt.json`). | The period-comparison **machinery exists and is honest**, but only at **channel-total grain**. It is not applied to a funnel step, nor to any breakdown dimension. Also the Ads window and the CRM window are offset by one day at each edge and are deliberately not joined (`ARCH/children/t1-evidence-corpus/artifacts/date-account-caveats.md:8-12`) — so a single cross-system "last 30 vs preceding 30" funnel is **not** currently constructible without declaring the grain break. |
| `M-04` | "the **number of people** reached that funnel step" — same source. `requested` | T3 (`T3-04` proof text demands "verified people reaching each step") | **NEVER PRODUCED — and not satisfiable from current sources** (`defect` in the goal, not only in the delivery) | `UNAVAILABLE`. Every countable value in the accepted corpus is an event/impression/session grain: impressions, clicks, `link_click`, `landing_page_view`, `VHK_form_start`, platform conversions, spreadsheet rows. | `observed` — `report_data.json` has no user/person/reach field; `evidence-matrix.md:26` records the GA4 landing-page funnel as `UNAVAILABLE`; `date-account-caveats.md:23-29` states the grains explicitly ("Impression, click, and platform conversion are advertising-platform grains"). | The frozen goal (`ARCH/goal-v1.md:86-87`, `T3-04`) commissions a **person-grain** funnel from **event-grain** sources with no reconciliation rule. Building it as specified would require either a person-grain source (GA4 + BigQuery, both absent) or a silent event→person substitution — which `T3-03`'s own rule forbids ("no event-to-person substitutions"). The requirement as worded is currently unbuildable; nobody recorded that. |
| `M-05` | "i need to see the demographic distribution" — `019ff730…` T0001 line 10. `requested` | T3 (`T3-05`) | **PRE-EXISTING COVERS PARTLY — and the covering artifact is broken** | `ORCHB/deliverables/fusion-meta-ads-review-2026-08-24/index.html:276-278` (age 25-34 / 45-54 / 55+, gender, geo Budapest/Pest 47%, as narrative cards). Screenshot-only evidence at `REPO/deliverables/fusion-ppc-2026-07-30/internal-audit.html:161-162` (women 3, men 9). | `observed` `defect` — that page fetches its data from `SOURCE_ROOT = '/.tmp/overnight-2026-08-10/data/'` (`index.html:395`) and `.tmp/` is gitignored (`REPO/.gitignore:8`). `find` across the repo, the orchestrator branch tree and `git ls-tree -r origin/codex/fusion-ppc-architecture-orchestrator` returns **no** `meta_ads.json` and **no** `meta_ad_insights.json`. The page therefore always lands in its catch block (`index.html:550-551`) and renders "Meta ad inventory failed to load." | Demographics exist nowhere as reviewable, refreshable data. `report_data.json` collects no demographic breakdown. The one artifact that displays them is permanently empty on any checkout, and its regression test passes anyway (see `M-24`). |
| `M-06` | "how different **ad copies** … performed" — same source. `requested` | T3 (`T3-05`), T7 | **NEVER PRODUCED** | `UNAVAILABLE — never produced`. No artifact in the repo, on the orchestrator branch, or in the report package contains an ad-copy-grain row. | `observed` — `report_data.json` `meta_ads.campaigns` has 1 row at campaign grain; `ppc.campaigns` has 5 rows at campaign grain; the only table template on the orchestrator branch is keyword-grain (`ORCHB/ads-control/template/stage-3-ai-advice-review.html:48-62`). | No collector anywhere requests ad-level or creative-text-level Meta insights. This is a data-collection gap, not only a rendering gap. |
| `M-07` | "how different **ad creatives** … performed" — same source. `requested` | T3 (`T3-05`) | **PRE-EXISTING COVERS PARTLY — broken** | `ORCHB/deliverables/fusion-meta-ads-review-2026-08-24/index.html:241-242` (`Creative performance` table, `id="creative-table-body"`). Historical totals preserved in `evidence-matrix.md:18`: 77,817 Ft across 20 creative rows, 12 Meta lead actions, 2 creatives produced all 12. | `observed` `defect` — same missing `SOURCE_ROOT` as `M-05`. The historical creative numbers survive only as a T1 corpus claim, explicitly caveated: "Neither the actions nor spend establish current results, leads, or sales" (`evidence-matrix.md:18`), and fresh Meta auth failed `190/467`. | The design exists; the data pipe does not. A creative table with no reachable data file is worse than no table, because a viewer who opens it sees a heading that implies coverage. |
| `M-08` | "different **placements** … performed" — same source. `requested` | T3 (`T3-05`) | **PRE-EXISTING COVERS PARTLY — broken, and non-comparative** | `ORCHB/deliverables/fusion-meta-ads-review-2026-08-24/index.html:276-278` ("94% IG" as a narrative card). | `observed` — a single share statement in prose, not a per-placement performance row with spend, results and cost per result; and unreachable data as above. | No placement-grain rows, no period comparison, no cost-per-outcome per placement. A 94% concentration figure cannot support a reallocation decision because it carries no outcome denominator. |
| `M-09` | "different **targeting settings** performed" — same source. `requested` | T3 (`T3-05`, `T3-06`) | **PRE-EXISTING COVERS PARTLY — and honestly self-invalidating** | `ORCHB/deliverables/fusion-meta-ads-review-2026-08-24/index.html` `data-view="targeting"` tab, labelled **mixed-pool**. | `observed` — the artifact's own label states the audiences are pooled, i.e. results cannot be attributed to a targeting setting. | The one existing targeting view correctly tells the reader it cannot answer the question. That honesty is right and the capability gap is real. Answering `M-09` requires either separated ad sets or a Meta breakdown API pull; neither exists. |
| `M-10` | "the point is that i can make decisions based on it about where to allocate more of the budget so we get more and better quality leads from the same monthly budget" — same source. `requested` | T3 (`T3-06` decision cues) + T2 (`T2-07`) | **NEVER PRODUCED — and the nearest existing decision engine structurally cannot answer it** | `UNAVAILABLE — never produced` for the commissioned artifact. Nearest: `ORCHB/ads-control/advice-bundles/advice_output-*.json` (`rows[].promotion_candidate` / `exclusion_candidate` / `needs_attention`) and the Decision queue in the Meta review page. | `observed` — `RPT30/report_data.json` `kpc_snapshot.advice_summary` = `{approve_for_planning: 0, investigate_next: 0, wait_for_evidence: 61}` and `executed: false`. All 61 rows say "wait for evidence". Corroborated at `evidence-matrix.md:20` ("All rows say no keyword decision yet"). | The existing decision surface is Google-**keyword**-grain on an account where **Search delivered a source-verified zero** and 100% of traffic came from PMax (`report_data.json` `ppc.campaigns`: `2605-Fusion-Tables_Pmax` 4,410 clicks; the two Search and two Display campaigns 0). Keyword-grain advice on a zero-delivery surface can never produce a budget decision. The decision surface is pointed at the wrong dimension for this account. |
| `M-11` | "Just in the table, instead of keywords, we will see the different creatives we are using and the targeting options, etc." — `01a03268-01b7-7700-a436-1bba5b154b24` T0001 line 9 (`GROUND-TRUTH.md:88-89`). `requested` — note this is a **replacement** instruction, not an addition | T3 (`T3-05`) / T7 | **NEVER PRODUCED — and directly contradicted by the surviving artifact** | `UNAVAILABLE — never produced`. The only surviving decision table is `ORCHB/ads-control/template/stage-3-ai-advice-review.html:48-62`, whose 18 columns are still keyword-first: `Keyword/cluster`, `Match/category`, `Campaign/ad group`, `Avg monthly volume`, `Top-of-page bid estimate`, `Current keyword QS`, … | `observed` — I read the `columns` array at `:48-62`. Row grain confirmed by `ORCHB/ads-control/advice-bundles/*.json` (`keywords[]` items keyed `criterion_id, campaign_name, ad_group_name, keyword_text, match_type`). | This is the single clearest requirement-versus-artifact inversion in the system. Matt asked for keywords to be **replaced** by creatives and targeting options. The keyword table is the artifact that survived; the creative/targeting table is the one that was never built. |
| `M-12` | "the next agent must create — the suggested next tasks" — `019ff730…` T0008 line 154 (`GROUND-TRUTH.md:91-93`). `requested` | T6 (`T6-A04`, `T6-A05`, `T6-A06`) | **PRE-EXISTING COVERS PARTLY** | `RPT30/report.md:63-74` and `RPT30/recommendations.json`: six rows `R-2026-07-01` … `R-2026-07-06`, each with `id, priority (P1/P2/P3), title, evidence, leverage, effort, owner, measurement` plus a copy-pasteable agent instruction with an acceptance test and a read-only guard. | `observed` — read both files. Closing line `report.md:74`: "Az ügynök-utasítások másolható tervek. Egyiket sem hajtottuk végre." | Covers the *content* of "suggested next tasks" well. Missing entirely: per-task **review controls** (approve / reject / defer), the published owner-review HTML (`T6-A07`, `T6-A08`), the voice review (`T6-A09`, `T6-A10`), and any state that survives Matt's decision. There is no surface on which Matt can act on these six tasks. |
| `M-13` | "the 2 possible PPC strategies for the one landing page only …" — same source. `requested` | T4A | **NEVER PRODUCED** | `UNAVAILABLE — never produced`. `ARCH/children/t4a-single-landing-strategy/` has five control files, no `artifacts/`. | `observed` — `run-state.md`: `- Status: WAITING_DEPENDENCY`, `- Started: NOT STARTED`. Independent grep of both pre-existing deliverable sets returns no match for a single-landing-page strategy. | Nothing exists. Resume point: `ARCH/children/t4a-single-landing-strategy/launch-prompt.md`, gated on parent acceptance of T2. |
| `M-14` | "… vs. the full product suite" — same source. `requested` | T4B | **NEVER PRODUCED** | `UNAVAILABLE — never produced`. | `observed` — as `M-13`, for `t4b-full-suite-strategy`. | Nothing exists. The six-offer inventory (`T4B-03`: Diagonal pool tables, ping-pong, shuffleboard, football tables, chairs, existing FusionTables offer) has never been assembled anywhere in this repo. |
| `M-15` | "and the reports" — same source. `requested` | T5 | **PRE-EXISTING COVERS PARTLY** | `RPT30/report.md` (Hungarian, 89 lines, id `fusiontables-2026-07-25-2026-08-23`), `RPT30/narration.md`, the `.pptx`, published to Notion + Google Slides per `RPT30/run_receipt.json` (`notion_url`, `slides_url`, `native_revision_id: qNgt9degDB3TDA`, `verified_at 2026-08-29T01:16:57`). | `observed` — `run_receipt.json` `"complete": true` with SHA-256 for `evidence.json`, `report_data.json`, `report.md`, `narration.txt`, all matching `report_manifest.json`. | A real, receipted, honest Hungarian report exists — for **one channel-total window**. It has none of T5's commissioned content: no scenario A vs B comparison (`T5-A05`), no dashboard section or links (`T5-A07`), no 30/60/90 roadmap (`T5-A09`), no budget-implication section (`T5-A08`). It also lives on a branch the reviewed line does not contain (`R-BASE-01`). |
| `M-16` | "and the dashboard" — same source. `requested` | T3 | **NEVER PRODUCED** | `UNAVAILABLE — never produced`. See `M-02`. | `observed`. | See section 3 for the full T3 row-by-row grading. |
| `M-17` | "give me a more consice prompt. i need the 80/20. dont overengineer." — `01a04df6-2370-7071-a178-42aa9e3cad05` T0006 line 107 (`GROUND-TRUTH.md:95-96`). `requested` constraint | Architecture orchestrator | **VIOLATED** (`defect`) | `ARCH/goal-v1.md` 177 lines + 8 × `goal-v1.md` totalling 1,445 lines + 8 × 5 = 40 control files + `launch_child.py` (11 KB). Delivered artifact: 716 lines of T1 Markdown. | `observed` — `wc -l ARCH/children/*/goal-v1.md` = 1,445; `wc -l` of the T1 artifact set = 716. T1 alone consumed 555,380 tokens (`ARCH/dependency-handoff-ledger.md`, T1→T2 row). | ~1,622 lines of contract produced 716 lines of output, and 7 of 8 outputs never appeared. The 80/20 instruction was applied to the *prompt Matt received* and inverted in the *machine that was built from it*. |
| `M-18` | "the human is away from the computer. make your own decisions and when stalled, find a workaround" — `01a04a52-f05d-7413-9806-7f7153209243` T0001 line 7 (`GROUND-TRUTH.md:98-99`). `requested` constraint | Architecture orchestrator | **VIOLATED** (`defect`) | `ARCH/acceptance-ledger.md` rows `ARCH-04` … `ARCH-10` all `PENDING`; `ARCH/run-state.md` still reads `- Status: ACTIVE` with `- Last update: 2026-08-30T12:14:00+00:00`; `tmux ls` shows no architecture or child session (`GROUND-TRUTH.md:22`). | `observed`. `ARCH/dependency-handoff-ledger.md` shows the T1→T2 transition `PASS` and every later transition `PENDING`. | The run stalled at the T2 gate and stopped rather than working around it, while its own state file continued to assert `ACTIVE`. A stale `ACTIVE` status with no process behind it is worse than a stopped status, because nothing surfaces the stop. |
| `M-19` | "also create the new sessions on the ssh devbox cuz i have unstable internet here" — `01a04a52…` T0007 line 73 (`handoff:404-406`). `requested` constraint | Architecture orchestrator | **HONORED** | `ARCH/run-state.md` `- Architecture host: lifeos-devbox`; child session records `~/ops/sessions/fusion-ppc-t{1,2,3,4a,4b,5,6,7}.json` (`handoff:643-647`). | `observed`. | None. |
| `M-20` | "Do not send the email, activate campaigns, increase spend, or make live budget and targeting changes without Matt's explicit approval." — `019ff730…` T0001 line 10 (`GROUND-TRUTH.md:101-102`). `requested` constraint | All children | **HONORED** so far | `ARCH/acceptance-ledger.md` `ARCH-06` records no forbidden mutation from T1; `RPT30/report.md:74` states none of the six agent instructions were executed; `kpc_snapshot.executed = false`; every KPC advice row is `wait_for_evidence`. | `observed`. Status remains `PENDING` architecture-wide because 7 children never ran — nothing could violate it. | The constraint is honored, but partly by accident: seven of the eight tasks that *could* have violated it never executed. Do not read `ARCH-06` as a proof of discipline across the full design. |
| `M-21` | "Do not claim Google Ads attribution until the conversion increment is visible." — `019ff730…` T0001 line 10 (`GROUND-TRUTH.md:104-105`). `requested` constraint | T2, T3, T5 | **HONORED** by the pre-existing report | `RPT30/report.md:20`: "A 49 konverzió platformon rögzített jelzés, nem igazolt érdeklődő és nem árbevétel." `report.md:33`: the Meta results column is a form-start signal. `report.md:57`: the enquiry register has no source or campaign column so enquiries cannot be attributed. `evidence-matrix.md:7,9,12`. | `observed`. | None on the report. This is the strongest-performing requirement in the whole system and the pattern the missing dashboard should have inherited. |

---

## 2. Requirements owned by T2 (measurement and PPC audit)

Source: `ARCH/goal-v1.md:65-80` and `ARCH/children/t2-measurement-audit/goal-v1.md` acceptance rows.
**Child state (`observed`):** `ARCH/children/t2-measurement-audit/run-state.md` → `- Status: \`WAITING_DEPENDENCY\``, `- Started: \`PENDING\``, worktree `/home/matt/mirror/Fusion-ppc-children/t2`, branch `codex/fusion-ppc-t2-audit`. No `artifacts/` directory. Branch HEAD is `a286b77 orchestrator: release T2 from accepted T1` — an orchestrator commit, zero child artifacts (`GROUND-TRUTH.md:14`).

**Resume point for every row in this section:** `ARCH/children/t2-measurement-audit/launch-prompt.md`, after `R-BASE-01` is fixed.

| ID | Requirement (intended) + source | Status | Evidence | Gap |
| --- | --- | --- | --- | --- |
| `T2-01` | Fresh-evidence register bounding every source to T1-accepted or explicitly registered (`t2 goal-v1.md`, row T2-01) | **NEVER PRODUCED** | `UNAVAILABLE — never produced` | T1's own `source-register.md` + `date-account-caveats.md` partially pre-empt this, but the T1→T2 boundary receipt does not exist. |
| `T2-02` | Current-state funnel and data-flow map, Google and Meta separately, impression → click → landing-page visit → form start → lead → qualified lead → quote → purchase → revenue, each node stating system, event, owner, evidence ID, window, grain and `VERIFIED`/`PARTIAL`/`UNAVAILABLE`/`NOT APPLICABLE` | **NEVER PRODUCED — PRE-EXISTING COVERS PARTLY** | `UNAVAILABLE — never produced` for the commissioned artifact. Pre-existing: `REPO/deliverables/fusion-ppc-2026-07-30/evidence/tracking-audit.md:15-36` (config table + event-logic table), `:99-108` (a five-rung proof ladder: config exists → browser event fired → platform received → CRM received → client followed up), `crm-reconciliation.md:42-57` (why the four systems disagree). | The pre-existing audit covers **click → form start → submission → offer**, for **Google + Meta together**, in a **13-day CRM window against a 30-day platform window** it explicitly refuses to divide (`crm-reconciliation.md:57`). It does not separate Google and Meta paths, has no per-node state vocabulary, and stops before qualified lead / quote / purchase / revenue, all of which are `UNAVAILABLE`. |
| `T2-03` | Platform events, browser/server events, CRM leads, qualified leads, quotes, purchases and revenue visibly distinct; totals reconcile | **NEVER PRODUCED — PRE-EXISTING COVERS IT WELL** | `crm-reconciliation.md:42-57` tabulates Google 5 / Meta 12 / Sheet 10 / Gmail 10 with each definition and window; `:74-82` grades each claim `verified_record` / `contradiction` / `inferred` with a confidence and a limit. `date-account-caveats.md:23-29` states the grain rules. | This requirement is effectively already met by a July artifact — on a branch the children could not read (`R-BASE-01`). |
| `T2-04` | Event and conversion taxonomy with deduplication, identity, consent, UTM, click-ID, attribution, **offline-conversion**, QA and ownership rules | **NEVER PRODUCED — PRE-EXISTING COVERS PARTLY** | Dedup: `tracking-audit.md:37-51` proves one CF7 submit can push two dataLayer events and create `VHK_lead` + one of `hero/cta/chat_generate_lead` + a Meta `Lead`, with multiple Primary Google Ads actions. Click-ID/UTM: `:25-26` (hidden fields `gclid, gbraid, wbraid, dclid, fbclid, msclkid, ttclid, li_fat_id` and `landing_page`). Attribution risk: `:66-77` (cache `HIT` served a prior visitor's UTM + gclid inside three CF7 form action URLs — a directly observed cache-poisoning signal, graded **P0**). Consent: `:78-89`. QA exclusion: `RPT30/crm_connector_receipt.json` `qa_exclusion` (7 rows, marker `QA`). | **Offline conversion has no rules anywhere.** It appears only as a future bullet: `tracking-audit.md:110-117` item 6 ("offline minősített-lead és értékesítési visszacsatolás tervezése"). Identity and ownership rules do not exist. |
| `T2-05` | Exact edit manifest by system, file, tag, trigger, field, platform setting and validation receipt | **NEVER PRODUCED — PRE-EXISTING COVERS PARTLY** | `tracking-audit.md:110-117`: six named next changes (cache-key/HTML-cache fix, collapse Primary Ads actions to one business submission, demote micro-conversions to Secondary, consent baseline test, one approved traced test lead, offline feedback design). | That is a six-item to-do list, not a manifest keyed by file/tag/trigger/field with a validation receipt per edit. Nothing states which GTM tag, which trigger ID, which WPCode snippet or which Ads conversion action to change. |
| `T2-06` | Prioritized 80/20 repair backlog | **NEVER PRODUCED — PRE-EXISTING COVERS PARTLY** | `RPT30/recommendations.json` / `report.md:65-72`: six rows with P1/P2/P3, evidence, leverage, effort, owner and a measurement condition. Three P1s are exactly the measurement-integrity repairs. | Backlog is real and well formed. It is *client-facing* Hungarian rather than an internal execution backlog, has no dependency ordering, and no item is tracked to done. |
| `T2-07` | Traffic-quality and cost recommendations optimized toward **qualified leads, quotes, purchases and revenue** rather than cheap clicks or platform leads | **NEVER PRODUCED** | `UNAVAILABLE — never produced` | The four optimization targets named in the requirement are all `UNAVAILABLE` in every source (`evidence-matrix.md:25`). The requirement cannot be met until an outcome field exists in the CRM. `crm-reconciliation.md:65-73` item 1-3 specifies precisely the missing fields (structured statuses, dates, owner, offer value, won revenue). That is the true blocking dependency for `M-10`. |
| `T2-08` | Evidence-gap and access-blocker register | **NEVER PRODUCED — PRE-EXISTING COVERS IT** | `ARCH/children/t1-evidence-corpus/artifacts/date-account-caveats.md:31-41` (11 contradictions/partial-coverage entries), `evidence-matrix.md:25-27` (three `UNAVAILABLE` rows), `RPT30/report_data.json` `source_health` (7 sources, each `degraded`/`absent`/`disabled` with a caveat), `limitations` (5 entries). | Nothing meaningful missing. This requirement was satisfied before it was commissioned. |
| `T2-09` / `T2-10` / `T2-11` / `T2-12` | Audit index, no-mutation gate, ledgers + return receipt, branch handoff | **NEVER PRODUCED** | `UNAVAILABLE — never produced` | Branch `codex/fusion-ppc-t2-audit` carries only orchestrator commits (`GROUND-TRUTH.md:14`). |

---

## 3. Requirements owned by T3 (the decision dashboard) — the centre of Matt's ask

Source: `ARCH/goal-v1.md:82-99` and `ARCH/children/t3-decision-dashboard/goal-v1.md:34-53`.
**Child state (`observed`):** `- Status: WAITING_DEPENDENCY`, `- Started: NOT STARTED`, `- Dependency gate: architecture-parent acceptance of T2, which itself depends on accepted T1`. No `artifacts/`.
**Resume point:** `ARCH/children/t3-decision-dashboard/launch-prompt.md`.

| ID | Requirement (intended) | Status | Evidence path (or UNAVAILABLE) | Verification | Gap and nearest thing that exists |
| --- | --- | --- | --- | --- | --- |
| `T3-01` | Reconciled source manifest + coverage matrix for **both** exact 30-day windows | **NEVER PRODUCED — PRE-EXISTING COVERS PARTLY** | `RPT30/report_data.json` `windows` (5 sources × current/previous/timezone) and `source_health` (7 rows, id / identity / range / freshness / status / caveat / client_note). | `observed` | The manifest half exists and is good. The **coverage matrix** — which dimension is populated for which window at which grain — does not exist. |
| `T3-02` | Reproducible local dashboard `artifacts/dashboard/index.html` + executable `artifacts/refresh-dashboard.sh` | **NEVER PRODUCED** | `UNAVAILABLE — never produced` | `observed` | No dashboard, no refresh script, no scheduled trigger. The report package has a generator but its entry point is not in this repo line. |
| `T3-03` | Period totals, conversion rates, drop-offs, spend, cost per step, qualified-lead / purchase / revenue metrics where verified | **NEVER PRODUCED — PRE-EXISTING COVERS PARTLY** | `RPT30/report_data.json` `ppc.totals` (impressions, clicks, ctr, cost, avg_cpc, conversions, conversion_value, cpa, roas), `meta_ads.totals`, `crm.totals`. | `observed` | Totals and rates yes; **drop-off between steps** and **cost per funnel step** no. Qualified lead / purchase / revenue `UNAVAILABLE`. Note `ppc.totals.roas = 0.000532` — a `defect`-class artefact of `conversion_value` being 49.0 (a count mislabelled as HUF), which the report correctly declines to publish. |
| `T3-04` | **At least two** evidence-supported diagrams with ordered funnel steps on x and people per step on y, with separate Google / Meta / product-or-landing-page / CRM panels | **NEVER PRODUCED** | `UNAVAILABLE — never produced` | `observed` | Zero diagrams exist. But see the finding in section 5: a **Meta four-step funnel is already fully constructible from `RPT30/report_data.json` with no new collection**. |
| `T3-05` | Demographic distribution **plus** each of: ad copy, creative, placement, targeting setting, audience, device, geography, campaign, ad set/ad group, keyword/search term, landing page — each independently visible or explicitly unavailable | **NEVER PRODUCED** | `UNAVAILABLE — never produced` | `observed` | Present anywhere, in any form: campaign (`report_data.json` `ppc.campaigns` 5 rows, `meta_ads.campaigns` 1 row), ad group + keyword + search term (`ORCHB/ads-control/`, keyword grain, zero-delivery surface), landing page (`ppc.landing_pages`, **1 row**). Present but unreachable: creative, placement, age/gender, geo (Meta review page, missing `SOURCE_ROOT`). Absent everywhere: **ad copy, targeting setting, audience, device**. `cro.landing_pages` is an empty list and `ppc.search_terms` is an empty list in the report data. |
| `T3-06` | Working filters for channel, period, campaign hierarchy, geography, device, audience, creative, landing page + decision cues (inspect / hold / reduce / expand) | **NEVER PRODUCED — PRE-EXISTING COVERS PARTLY** | `ORCHB/ads-control/template/stage-3-ai-advice-review.html:31-37` (7 view filters: all / attention / promotion / exclusion / coverage / previous / verification), `:38` (text search), `:141-147` (column sort), attention checkboxes. `ORCHB/deliverables/fusion-meta-ads-review-2026-08-24/index.html:514-518` (search, status filter, sort). | `observed` | Both filter sets operate on **the wrong axis for the question**: keyword views on a zero-delivery Search surface, and a creative table with no data. Neither filters by period, geography, device or audience. Decision cues exist as `promotion_candidate` / `exclusion_candidate` but every one of the 61 rows evaluates to `wait_for_evidence`. |
| `T3-07` | Metric dictionary (numerator, denominator, unit, grain, dedup, timezone, source, caveat per metric) and visually distinct zero / unavailable / partial / not-applicable states | **NEVER PRODUCED — PRE-EXISTING COVERS PARTLY, and well** | `RPT30/report_data.json` every metric is `{current, previous, unit, na}` — the `na` slot **is** the honest-unavailable channel; `source_health[].status ∈ {degraded, absent, disabled}`; `limitations` (5); `crm.leads_definition` ("a recorded enquiry, not a GA4 interaction signal"); `report.md:85-89` renders the limits to the client. Visual state vocabulary exists in the stage-3 template legend (`ORCHB/ads-control/template/stage-3-ai-advice-review.html:39`: `Measured` / `Derived`) and a `DEMO/SYNTHETIC` badge (`:66`). | `observed` | No single metric dictionary file. But the *semantics* T3-07 asks for are already implemented in the report data contract. This is the highest-leverage reusable asset in the system. |
| `T3-08` | Static review export `dashboard-review.html` that opens locally with no live session | **NEVER PRODUCED** | `UNAVAILABLE — never produced` | `observed` | Nearest working analogue: `ORCHB/outputs/loop-runs/20260828T232516Z-fusiontables-report-closeout/index.html` (`<title>Fusion Tables report loop closeout</title>`, `<h1>The 30-day PPC, SEO and CRO reporting package is complete.</h1>`) with a relative `artifacts -> ../2026-08-28-fusiontables-report` symlink. That is a closeout page, not a decision export. |
| `T3-09` | Executable `check-dashboard.sh` that exits non-zero when a mandatory artifact, period, metric-definition link, funnel state or refresh result is missing | **NEVER PRODUCED** | `UNAVAILABLE — never produced` | `observed` | The only analogous check in the system is a **false green**: `ORCHB/deliverables/fusion-meta-ads-review-2026-08-24/test_dashboard.py:32-39` asserts the served HTML *contains the string* `meta_ad_insights.json` — it never asserts the file loads. `python3 -m pytest -q` → **1 passed**, while the page it tests renders "Meta ad inventory failed to load." This is the exact failure mode `T3-09` was written to prevent, already live in the codebase. |
| `T3-10` | Playwright QA at 1280×900 DSF 1 + `qa/dashboard-1280x900.png` | **NEVER PRODUCED** | `UNAVAILABLE — never produced` | `observed` | Pre-existing gate screenshots exist for the KPC recovery run only (`ORCHB/outputs/loop-runs/20260824T085117Z-fusion-kpc-report-recovery/gate/`, plus `browser_qa.js`, `validate_final.py`). Lane 2 owns testing what is testable. |
| `T3-11` / `T3-12` | Git delivery + return receipt with runtime goal still active | **NEVER PRODUCED** | `UNAVAILABLE — never produced` | `observed` | `codex/fusion-ppc-t3-dashboard` HEAD is `9f92003 orchestrator: normalize PPC control files` (`GROUND-TRUTH.md:15`). |

---

## 4. Requirements owned by T4A, T4B, T7, T5, T6 — and the ARCH rows

All child directories below contain exactly five control files (`acceptance-ledger.md`, `access-ledger.md`, `goal-v1.md`, `launch-prompt.md`, `run-state.md`) and **no `artifacts/` directory** (`observed`, `ls`, 2026-08-30).

| ID | Requirement (intended) + source | Owner | Status | Evidence | Gap / resume point |
| --- | --- | --- | --- | --- | --- |
| `T4A-01` | Verified combined monthly Meta + Google baseline `B` | T4A | **NEVER PRODUCED** | `UNAVAILABLE — never produced`. Derivable input exists: `RPT30/report_data.json` `ppc.totals.cost.current` 92,096 Ft + `meta_ads.totals.spend.current` 89,778 Ft = **181,874 Ft** for `2026-07-25..2026-08-23`. | The baseline was never computed or frozen. Note the unapproved 150,000 Ft / 60-30-10 proposal in `evidence-matrix.md:23` is `PARTIAL proposal only` — it must not be used as `B`. Resume: `ARCH/children/t4a-single-landing-strategy/launch-prompt.md`. |
| `T4A-02` … `T4A-12` | Single-landing-page boundary, channel roles, funnel, audiences and intent, allocation ranges, sequence, landing-page implications, creative themes, tests, measurement dependencies, operating rules (scale/hold/stop/reallocate), 80/20 package, Git delivery, receipt | T4A | **NEVER PRODUCED** | `UNAVAILABLE — never produced` | Nothing exists. The only landing page in paid inventory is `/billiardasztal` (`report_data.json` `ppc.landing_pages`, 1 row, `in_paid_inventory: true`) — so Scenario A's surface is a single URL, which makes the strategy cheap to write and the absence more conspicuous. |
| `T4B-01` … `T4B-12` | Baseline `B`, enforced cap `C = 1.5 × B`, six-offer inventory and roles, channel/funnel roles, campaign + landing-page architecture, anti-dilution sequencing, allocation ranges, creative themes, tests, measurement dependencies, operating rules, 80/20 portfolio package, delivery, receipt | T4B | **NEVER PRODUCED** | `UNAVAILABLE — never produced` | `C` would be `1.5 × 181,874 = 272,811 Ft` on the observed baseline — **never computed by the system**. The six offers (Diagonal pool tables, ping-pong, shuffleboard, football tables, chairs, existing FusionTables offer) appear nowhere as an inventory. Resume: `ARCH/children/t4b-full-suite-strategy/launch-prompt.md`. |
| `T7-A03` … `T7-A06` | Scrape JSON + measured keyword inventory + keyword tables from `https://b62a73b2.cf-review-9e5.pages.dev/assets-p12/`, DataForSEO spend ≤ USD 3 with receipt | T7 | **NEVER PRODUCED** | `UNAVAILABLE — never produced`. Spend USD 0 (`ARCH/acceptance-ledger.md` `ARCH-07`). | Nothing scraped, nothing measured. |
| `T7-A07` … `T7-A15` | Google keyword/intent groups, negatives, match-type logic, structure, search-term controls, geo/device/time, copy directions, LP mapping — and Meta audiences, exclusions, placements, creative formats, copy angles, retargeting, LP mapping — for **both** scenarios; funnel-stage mapping; launch sequence and budget guardrails | T7 | **NEVER PRODUCED** | `UNAVAILABLE — never produced` | This is where `M-11`'s creative-and-targeting substance would have landed. Its absence is why the keyword table is still the only table. Resume: `ARCH/children/t7-targeting-pack/launch-prompt.md`, gated on T4A+T4B acceptance. |
| `T5-A03` … `T5-A11` | One Hungarian client report: known vs unavailable vs planned-repair separation, fair A/B scenario comparison, concrete traffic-quality plan, accurate dashboard explanation with links, budget implications and risks, 30/60/90 roadmap, source notes and review links, no em dash and no semicolon | T5 | **NEVER PRODUCED — PRE-EXISTING COVERS PARTLY** | `UNAVAILABLE — never produced` for the commissioned artifact. Pre-existing `RPT30/report.md` satisfies the *spirit* of `T5-A04` (`report.md:35-43`, `:85-89`), `T5-A06` (`:65-72`) and `T5-A10` (`:76-83` appendix with account, window and verification method per source). | `T5-A05` (scenario A vs B), `T5-A07` (dashboard section + links) and `T5-A09` (30/60/90) have **no** pre-existing coverage — they depend on T3/T4A/T4B, none of which exist. Resume: `ARCH/children/t5-client-report/launch-prompt.md`, gated on six upstream acceptances. |
| `T6-A04` … `T6-A17` | Markdown action plan, task states reflecting real completion, brief orchestrator prompt (not executed), owner-review HTML, publication at `https://review.cfd-staging.com/2026-08-30-fusion-ppc-owner-action-review/`, voice narration + attachment, cross-origin checks, two live review sessions (Sonnet, Grok), 1280×900 UI QA, spend/authority reconciliation, delivery, receipt | T6 | **NEVER PRODUCED** | `UNAVAILABLE — never produced`. Nothing is published at that slug. | See `M-12`: the *content* of the action plan half-exists in `RPT30/recommendations.json`; the *review surface* — the thing Matt actually acts on — does not exist at all. Resume: `ARCH/children/t6-owner-action-review/launch-prompt.md`, gated on all seven predecessors. |
| `ARCH-01` / `ARCH-02` / `ARCH-03` | Eight distinct children; correct model and effort pins; frozen checksum-addressed goals with complete run files | Architecture | **DELIVERED** | `ARCH/acceptance-ledger.md` rows 1-3 `PASS`, evidenced by `child-registry.md` readback at `2026-08-30T11:05:31Z`. | None. The apparatus was built correctly. It is the only part of the system that was. |
| `ARCH-04` … `ARCH-10` | Dependency handoffs proven; all child ledgers pass; no forbidden mutation; spend reconciled; complete artifact index; T3 QA + T6 readbacks; final receipt | Architecture | **NEVER PRODUCED** (`PENDING` in the ledger) | `ARCH/acceptance-ledger.md` — all seven rows `PENDING`; `ARCH-08`, `ARCH-09`, `ARCH-10` have **empty evidence cells**. `ARCH/dependency-handoff-ledger.md` — T1→T2 `PASS`, all four later transitions `PENDING`. | The parent never returned `READY_FOR_PARENT_ACCEPTANCE`. `ARCH/run-state.md` nevertheless still reads `- Status: ACTIVE` — a stale assertion, contradicted by `tmux ls` and by every child run-state (`GROUND-TRUTH.md:22-24`). |

---

## 5. The finding that changes the resume plan

`observed`, verified by reading `RPT30/report_data.json` directly on 2026-08-30.

**A Meta funnel diagram in exactly the shape Matt specified is already constructible from data that
exists today, with zero new collection and zero new access.** Every value already carries its
preceding-30-day twin in the same envelope:

| Funnel step | Source field | Last 30 (2026-07-25..08-23) | Preceding 30 | Grain |
| --- | --- | ---: | ---: | --- |
| Impressions | `meta_ads.totals.impressions` | 63,461 | 18,286 | impression |
| Clicks (all) | `meta_ads.totals.clicks` | 825 | 322 | click |
| Link clicks | `meta_ads.actions.link_click.count` | 727 | 264 | click |
| Landing-page views | `meta_ads.actions.landing_page_view.count` | 626 | 221 | session |
| Form starts | `meta_ads.actions.conversions:offsite_conversion.fb_pixel_custom.VHK_form_start.count` | 14 | 8 | event |
| Submitted enquiries | `crm.totals.leads` | 13 | 7 | spreadsheet row — **different window, unattributed** |
| Qualified / quote / sale / revenue | — | `UNAVAILABLE` | `UNAVAILABLE` | — |

Google's parallel: `ppc.totals.impressions` 105,555 → `ppc.totals.clicks` 4,410 → **[no landing or
form-start grain: GA4 `absent`]** → `ppc.totals.conversions` 49.0 (a mixed pool of 20 conversion
actions listed in `ppc.conversion_actions`, including page-load and time-on-site actions) →
**[unattributable]** → `crm.totals.leads` 13.

Three consequences for requirements grading:

1. `M-02` and `T3-04` are **much closer to buildable than "never produced" implies at the data layer**.
   What is missing is the *render*, not the *measurement*, for Meta.
2. The last-30-vs-preceding-30 contract (`M-03`, `T3-01`) is **already implemented in the data shape**
   — `{current, previous, unit, na}` on every metric. Rebuilding it would be duplication.
3. The literal wording "**number of people**" (`M-04`) is still not satisfiable: every row above is an
   event, click or session count. Any dashboard built from this data must label the y-axis honestly and
   must not call it people. `T3-03`'s own rule ("no event-to-person substitutions") forbids the
   shortcut, and `T3-04`'s proof text demands the thing that rule forbids. That contradiction is
   unresolved in the frozen goal and should be resolved before T3 is relaunched.

---

## 6. Summary counts

| Status | Count |
| --- | ---: |
| `DELIVERED` | 4 (`ARCH-01`, `ARCH-02`, `ARCH-03`, plus T1's eleven rows accepted as one delivery) |
| `HONORED` (constraints) | 3 (`M-19`, `M-20`, `M-21`) |
| `PRE-EXISTING COVERS PARTLY` | 11 |
| `NEVER PRODUCED` | 27 |
| `VIOLATED` / `defect` | 3 (`R-BASE-01`, `M-17`, `M-18`) |

Of Matt's 16 substantive requested behaviors (`M-01`..`M-16`), **zero are fully delivered by the
system that was commissioned to deliver them**, 7 are partly covered by artifacts that predate the
run, and 9 have no artifact at all. The three constraint requirements he set are honored.

## 7. Limitations of this lane

- I did not open a browser. Interactive behavior of `stage-3-ai-advice-review.html` and the Meta
  review page is asserted from source reading only; Lane 2 owns live verification.
- `/private/tmp/fusion-review-handoff-20260830/chat-gists/` (the raw user-prompt corpus) is
  Mac-local and `UNAVAILABLE` on devbox. All verbatim quotes are taken from `GROUND-TRUTH.md:75-105`
  and `handoffs/2026-08-30-fusion-ppc-system-audit.md:365-425`, both of which cite session ID, turn
  and clean-source line. I could not independently re-derive them from the transcripts.
- Notion pages `3ca9cef9-86ad-81d3-8fb1-de88e4a4ea98` and `3b59cef9-86ad-81be-8085-dc2a0a8fe32f`
  were not opened (no live reads authorized for this lane); their content is taken from the T1
  corpus's registered summaries.
- `ads-control/reports/stage-3-20260824T111713-2aa95a23.html` — the *rendered* KPC report the
  mission cites — remains `UNAVAILABLE` in git on every branch. Only the template and the bundles
  exist. The snapshot ID is corroborated by `report_data.json` `kpc_snapshot.snapshot_id`.
