Who it's for: Sheran (the arbitrator on every ruling named below), then the Gate-1 review group. Owner teams (Analytics, Eng/Data, CRM, Product, Compliance, CS) receive it together with EVIDENCE-VALIDATION-PLAN.md.
The one takeaway: the council pass turned a portfolio with six inter-pack contradictions into a portfolio with none: every previously contested boundary now has one synthesised proposal carried identically by both packs involved, so what stands between the ten journeys and build is no longer arbitration between authors but one ruling stack for Sheran, one Analytics definitions sprint, and a small set of engineering gates, on a calendar that starts this week with the Journey 8 lock.
How to read: six sections in fixed order. Section 1 states the portfolio thesis and what the council pass changed. Section 2 walks the connected experience from entry to exit and lists the remaining genuine gaps. Section 3 gives the shared capabilities with build order and owners. Section 4 names the portfolio-level risk concentrations. Section 5 states the coherence rules now in force across all ten packs. Section 6 gives the sequencing: what locks when, on the real dates. Terms and figures are defined at first use; figures keep their source labels (confirmed / assumed / TBC with owner).
Status: agent-drafted DRAFT, 20 Jul 2026, compiled from the ten COUNCIL-ASSESSMENT.md files (J1 to J10), the per-journey decisions-delta.json files, DECISIONS-LOG.json (the consolidated Decisions and Approvals Log, v2 post-council, 20 Jul, 125 items), ROSTER.md and the pre-council cross-journey review. Nothing here is signed; every recommendation is agent-proposed unless a Sheran ruling is cited by date.
This document SUPERSEDES CROSS-JOURNEY-REVIEW.md (the 20 Jul pre-council portfolio view). That document described the portfolio before the ten council passes ran; its conflict list is now largely resolved and, critically, it cites decision ids from the superseded baseline numbering (its "DL-001/002/003/004", for example, meant the old Journey 8 baseline items, which are DL-029, DL-030, DL-033 and DL-031 in the consolidated log). Every id in THIS document is a consolidated-log id, verified against the log's source_ids field. Anything from the old document that is still true and not stated elsewhere is carried here (chiefly the shared-dependency inventory, folded into section 3, and the duplicate-contact stacks, folded into sections 2 and 5).
Conventions. Journey numbers are the canonical team-facing hub numbers (ROSTER.md section 1): J1 first-time winner, J2 upgrade winner pre-travel/travel day, J3 funnel abandon, J4 live bidder and loss recovery, J5 never-transacted first win, J6 habit and advocacy, J7 triggered win-back, J8 first slip (DEF-20, the built pilot pack), J9 seasonal reactivation waves, J10 returning-customer home re-entry. "DL-nnn" cites the consolidated Decisions and Approvals Log (v2, post-council); items are cited by id and a short handle only, never restated in full. The six items the councils added are now in the v2 log as DL-120 (the day-14 episode close), DL-121 (the Journey 6 interim entry anchor), DL-122 (the Journey 7 consent-age floor), DL-123 (the opt-in banner owner), DL-124 (the pack-template fix) and DL-125 (the wave-1 readiness gate).
The ten journeys are windows over one customer timeline, not ten programmes. Each journey owns a state of the same customer (never-transacted, in the funnel, in a live auction, just won, pre-travel, post-trip, slipping, lapsed, dormant, returning) and the engine is what connects them: shared scores decide who is in which window (the D2 churn-score family, that is the churn-risk score and reactivation-propensity bands; BRZ-83, the RFM power-user flag and persona model synced to Braze; the propensity bands J7 sends on), one arbitration stack decides who may speak when (the journey_state ownership trait, the contact backbone dials, the layer model in which L0 transactional always outranks, the episode grammar Journey 8 minted), and hand-off contracts move the customer between owners with named payloads (J4's first_loss / close_reason / route exhaust flags into J5; J3's 7-day episode hand-back to J5; J6's slip hand-off into J8; the day-60 journey_state hand-off into J7). A journey is good when its window is honest; the portfolio is good when no two windows claim the same customer-moment. That second property is what the council pass established.
What the council pass changed: six contradictions dissolved to zero. Before the pass, five customer windows were contested by more than one journey and roughly a dozen headline figures circulated in two versions. After it:
Provenance and figure conflicts also closed. The travel-day yield order and F3 clamp are verified RULED in tobe-composition (Sheran, 5 to 7 Jul); J2 now builds on the ruled order and asks only for a one-line confirm-and-close (DL-047). The 159,053 losing-bidders/yr label is closed as confirmed per the Analytics sizing tracker (DL-078, closing roster decision f). J10's objective label is closed as a working assumption (O3 primary, DL-119, veto-able at scoping). The stale ~44% Unclassified persona share is retired everywhere in favour of 1.7% unclassified (Ivi persona model, 3 Jul, confirmed); J10 was the last carrier and has adopted the supersession. The 23% new-to-first-transaction conflict is resolved as a working assumption (23% = target; interim baseline = the 16.8% DN 30-day new-user purchase rate, confirmed as stated), with the canonical pair still to publish via DL-009.
What this leaves. No journey now contradicts another journey. The remaining work is of three kinds: (a) the ruling stack, single synthesised proposals awaiting Sheran (section 6 sequences them); (b) the definitions sprint, the two-version figures only Analytics can collapse (EVIDENCE-VALIDATION-PLAN.md is the commissioning document); and (c) the engineering gates (the close-event contract DL-001, the content-card instrumentation fix DL-013, the journey_state batch exclusions DL-012, the PECR classification cluster anchored on DL-034). PECR is the Privacy and Electronic Communications Regulations, the consent law governing which sends may do marketing work.
Read this as one customer's possible path; each transition names its owner. RECOMMENDATION language marks the places a ruling is still needed; everything else is adopted in the packs.
Cold and dormant (entry). J9's wave engine owns all scheduled outbound to the dormant pools: one seasonal calendar, a two-audience grid (A: never-transacted, where J5 owns the audience definition and offer content and J9 executes; B: churned-transacted), per-wave no-contact holdouts, triggered-outranks-scheduled suppression. J7 owns score-triggered win-back (entry only via the day-60 journey_state hand-off, one clock, never a second day-count), gated on the D2 family. The anniversary beat runs under wave governance until D2 lands (DL-006 synthesis). REC-21, the welcome-back moment that is the landing surface of every win-back send, goes to J7: three packs (J7, J9, J10) independently converge, awaiting the easy ratification (DL-014).
Considering (never-transacted). J5 owns the first-win journey: the opportunity ladder from in-session deciders to the 31.8k onramp (confirmed), the substantiation rule on every claim, exit on first transaction. J3 owns funnel abandon pre-bid: three evidenced jobs (dead-end search, value doubt, commitment fear), a 7-day recovery episode, then automatic hand-back to J5 (DL-065, adopted in both packs, ratification riding the recovery pass). One funnel nudge per session, deepest step reached wins (DL-066, closed).
In the auction. J4 owns the customer from bid_placed to close (state S2, layer L1): live status, the Live Activity as contact removal not addition (status pushes downgrade to critical-only where it is active, DL-071 closed), the 8-branch close-reason outcome box that never says "you lost" on an auction that never ran. The close-event contract (DL-001: does instant_win emit auction_won; does every termination path emit auction_closed with readable close reason) is the hard gate under the whole fork.
Loss. J4 owns loss recovery: stripped-neutral L0 at close, silence for organic returners, one D+7 touch for non-returners only, capped at 3 per auction, episode close at day 14 (DL-120, new) with named exhaust flags (first_loss, close_reason, route) handed to J5 for the bad-luck-not-rejection reframe (DL-073). The evidence constraint is respected portfolio-wide: the only causal reads in this territory are negative (minus 11.8% blanket recovery; minus 3.73% M21_E, both confirmed).
Win. One celebration per win event (DL-081), one owner surface under the shared win_moment_canvas_active key, the capture ladder with its single shared decline counter (ladder-wide extension proposed, DL-085). J1 enters here: four legacy walks consolidated into one journey with four entry views (the J4c restructure), the D+1 habit touch on the confirmed hazard curve (81.2% of instant-win quick returns land by D+1), the honest reach ladder for the not-armed majority (56% of instant-win first winners are not push-opted at the win, confirmed).
Pre-travel and travel day. J2 owns every marketing slot while a won trip is pre-travel (state S1, layered rule 6 L1; the T+0 win beat is exempt as the entry hand-off; J1 rebook touches floor at travel-completion + 1 day): DL-052, mirrored in both packs. The proven-incremental GRW-16 day-before family (+16.9%/+16.3% confirmed, the estate's only proven-incremental send) is protected by a non-inferiority A/B. Disruption yields everything to L0/OPS-DR with zero commercial content, per the 20 Jul Darwin rulings.
Post-trip. The single arbitrated T+24h slot (advocacy > review > savings tracker, DL-092) replaces the pre-council 48h pile-up; M39_E keeps +1d per the DL-002 synthesis. J6 owns trip-anchored jobs from trip 1 and the habit ladder from the 2nd transaction; the advocacy AND-gate (positive trip AND 2nd/3rd transaction, DL-090) holds throughout. GRW-09, the re-booking nudge, is J6-owned with J10 rendering the in-app leg under a rendering contract (DL-015).
Slip and lapse. J6 hands off to J8 at the slip boundary (fixed 60d interim until the personal-cadence trait and D2 land; DL-094 closed); J8 saves at first slip on the ruled window model; at day 60 the journey_state hand-off makes J7 the one lapse owner. No other journey may run a lapse clock.
Return. REC-21 (J7) plus the J10 home framework: one lifecycle-state model, one slot map, one governance rule (state decides which journey's treatment renders; slots never stack). Every journey's deep links land here, which is why the J10 scoping session is on the critical path of all ten (section 6).
The remaining genuine gaps: six. These are places where no built or authored thing exists yet, as distinct from ratifications with an agreed answer (REC-21's home, ACT-15's missing card DL-080, ACT-10's engine disposition DL-063, and the outside-the-10 confirm DL-027 all have agreed answers waiting on a ruling and are not counted).
The pre-council build order (seven capabilities) survives the council pass; what changed is that the assessments settled the open ownership and gating questions inside it. Order logic unchanged: arbitration first, then the critical path of journeys at READY/BUILD, then later-quarter engines. The calendar exception also stands: build order 3 ships first in time because wave 1 is the only hard external date.
1. The suppression / one-owner arbitration stack. journey_state (the journey-written ownership trait), the batch-audience exclusion segments (DL-012, the launch precondition for every triggered journey), the backbone dials sign-off (DL-008, now explicitly needed before wave 1 because cap class C rides it), and the episode grammar. Owners: CRM (Lisa) + Data; Sheran signs the dials. Settled by the pass: nothing; this was never contested, only unbuilt. Consumers: all ten plus the Summer Campaign.
2. The win-moment owner surface. The ACT-24/GRW-01 partition, one-celebration-per-win (DL-081), the shared dedupe key and dual-listing (DL-079), the capture ladder with the ladder-wide shared decline counter (DL-085). Gated on the close-event contract, which the pass EXTENDED from the original Q5 question to the full termination-path audit (DL-001, now covering J4's close-reason fork as well). Owners: Eng/PMM (audit), Product + Lisa (surface), Sheran (contracts). Settled: both packs now carry identical contract text.
3. The wave engine (J9). One calendar, the two-audience grid, per-wave holdouts. Settled: the shared-moment split is agreed across J5/J7/J9 (audience+content vs execution vs score-triggered), the anniversary runs under wave governance interim (DL-006 synthesis), and the pass added the wave-1 readiness gate (DL-125: BRZ-83+BRZ-84, the batch read, the power calculation, and claim-and-incentive-ruled creative all true, or the wave slips). Owners: CRM executes; Analytics sizes; Sheran rules the wave-1 package.
4. The lifecycle-state home framework (J10, re-scoped). One state model, one slot map, one governance rule; Braze Content Card as the Q3 mechanic (DL-115, staged), native tiles as the Product target state. Settled: the re-scope is council-approved as the scoping-session input (DL-114), the framework closes the landing-destination question for every pack (DL-029 extends to a default-destination contract), and the instrumentation fix (DL-013) is launch-blocking. Owners: Sheran + Product (scope); Eng (instrumentation fix); Analytics (measurement frame DL-117).
5. The personal-data trait family. The cadence traits (personal_median_inter_txn_gap and baseline, one shared J6+J8 build, DL-093), usual_route + live from-£ (ruled 20 Jul; staleness fallback closed, DL-106), anniversary_of_last_purchase, and the substantiated-savings and positive_trip family (positive_trip definition sign-off DL-091 is launch-blocking for J6). RECOMMENDATION (unchanged): brief Analytics as ONE trait-family build with per-journey priority tags. Owners: Analytics (Ivi) defines; Eng pipes.
6. The Route-Watch capture engine (ACT-10). Settled: closed as the shared capture-and-alert engine behind ACT-25/26, not a fourth dead-end moment (DL-063). Consumers: J3, J6 (GRW-09's CTA), J10, J7/J9 landing routes. Owners: Product/Eng trigger package; follows the funnel-event work.
7. The legacy decommission programme. The sequenced retirement of the estate the journeys replace (M44/M45 STOP ruled 14 Jul, LAPSING50D, M21_E, T20_P, X67-class, M33_P, M36_P consolidation DL-053, the referral one-offs), per-canvas holdouts where revenue is attached, and the ordering constraint that retirements land BEFORE the replacing journey ships (J4's C1 constraint, now also carried on the loss-close estate items DL-075/DL-076). Settled: two proposed homes collapsed to one proposal (J9's REC-06 vehicle, J7 ceded); Sheran rules the final home (DL-007), with the standalone-runbook alternative noted. Owners: CRM (Lisa) + Eng, running continuously alongside builds 1 to 6.
Carried shared dependencies (from the superseded review, ids corrected, still true). The D2 churn-score family (J8 numbers via DL-031, J7 launch gate, J6 hand-off, J9 anniversary revisit; Analytics, not landed). BRZ-83 (DL-011, ~w/c 20 Jul; the interim RW fallback is design-only, never live suppression). BRZ-84 and the lapse-threshold family (DL-010). Live Activity infrastructure settled once for J2+J4+J8 (DL-030 consent/webhook, DL-033 token holder, DL-057 re-scope rides the shared build). The PECR cluster (DL-034 sets the precedent; DL-045 and J4's stripped L0 inherit it). The Darwin real-time feed (product-led, alignment session DL-016; nothing in any launch scope may assume it). The two new Eng feeds auction_close_time + is_currently_winning (one brief, three moments), the trip_completed event (interim proxy: scheduled departure + 1 day, DL-040 closed; J6's schedule-derived arrival anchor DL-121 rides the same build), and the app_open + lifecycle-state event carrying REC-21 and J10's entry.
These are the cross-journey rules every pack now encodes identically. Provenance is stated per rule; none is signed unless a Sheran ruling is cited.
Anchored to the real dates in the packs and the log. Dates labelled (recommended) are council-proposed and not yet ruled dates in the log.
This week (w/c 20 Jul): the J8 lock and the two framing sessions.
Late July: wave 1 and the J8 ship.
The paired J1/J2 ratification and the arbitration sitting. J1 is READY and the programme's #1-ranked journey; J2 is conditional-ready. RECOMMENDATION: one Gate-1 sitting immediately after the J8 lock (target w/c 27 Jul, assumed, no ruled date exists) takes, in order: the paired restructure itself (DL-005, ratifying one without the other leaves the legacy win walks half-dismembered); the win-surface contracts (DL-079, DL-081, DL-085); the post-trip ruling covering both packs (DL-002 confirm + DL-089 with DL-039's deletion); the pre-travel slot (DL-052) and J2's confirm-and-close set (DL-047, DL-058 at Gate-1 acceptance); and the recovery one-pass (DL-003 + DL-004 + DL-060, with DL-065 riding), after Lisa's M22_P entry-criteria audit. This one sitting closes every formerly contested boundary in the portfolio.
Build gates (after ratification, before any go-live). The close-event audit (DL-001, Eng/PMM); the PECR cluster ruled DL-034-first (Lisa + compliance); the content-card instrumentation fix verified in the warehouse (DL-013) paired with the not-armed placement (DL-036); the batch exclusions (DL-012) before every triggered launch; and the ordering constraint that estate retirements (DL-075/DL-076, the M44/M45 stop confirm) land before the journeys that replace them ship.
Gated in parallel, no dates yet. J7 (authored-in-parallel; ship gated on the D2 family and the Braze hire either way); the J5 approvals set (DL-080 ACT-15 card, DL-082 claims owner, DL-083/DL-084 staging gates); J6's Gate-1 agenda (DL-088 through DL-096, entry anchored on DL-121 until trip_completed exists); the scoping-session follow-ons (DL-118 home-station question). The validation plan carries every needed-by date that feeds these.
Companion documents: EVIDENCE-VALIDATION-PLAN.md (the commissioning document for every REQUIRES VALIDATION item above), the ten J<n>/COUNCIL-ASSESSMENT.md files, DECISIONS-LOG.json (v2, post-council). Airtable base appN7dd7fgbyJ8EYg remains the system of record; record ids are cited in the packs, not restated here.