End-to-end map from brief input through cell selection, lander routing, tool completion, dynamic
post-result monetization, and Stage R signal capture. Visualizes the two-axis model
(6-path monetization_path × 4-mode lander_mode) accepted in ADR 0018.
ADR 0013’s monetization_path
enum (Accepted 2026-04-19) had 4 values: affiliate_online /
direct_school /
content_only /
hybrid.
Operator 2026-04-21 clarification surfaced two material expansions: (1) the economic-endpoint enum needs 6 values, not 4, to distinguish
aggregator-portal vs direct-online-school vs ping/post-marketplace vs organic-campus-school vs content-only vs hybrid-dynamic;
and (2) lander mode is a separate orthogonal axis (4 values) that describes how the ad enters
the funnel, not where the money comes from. ADR 0018 captured all 10 OQ rulings + 3 pre-walkthrough pivots + 2 renames.
Worker 3.5-C migrated the 32-cell corpus; Phase 5.1-5.8 SKILL regen ran against the new taxonomy.
This page remains the visual reference for the accepted taxonomy.
flowchart TD classDef input fill:#0d0d1a,stroke:#2a3a6a,color:#6a8cf7,stroke-width:1px classDef engine fill:#12121a,stroke:#4a2a4a,color:#af6adf,stroke-width:1px classDef stage fill:#0d1a0d,stroke:#1a3a1a,color:#4acf4a,stroke-width:1px classDef landing fill:#1a1a0d,stroke:#3a3a1a,color:#cfcf4a,stroke-width:1px classDef current fill:#0a2a0a,stroke:#1a4a1a,color:#4acf4a,stroke-width:2px classDef future fill:#1a1a0d,stroke:#3a3a1a,color:#cfcf4a,stroke-width:1px,stroke-dasharray:4 4 classDef organic fill:#0d0d1a,stroke:#2a3a6a,color:#6a8cf7,stroke-width:1px,stroke-dasharray:4 4 classDef always fill:#1a0d1a,stroke:#3a1a3a,color:#cf4acf,stroke-width:1px classDef signal fill:#1a0d0d,stroke:#3a1a1a,color:#cf8a4a,stroke-width:1px A["Campaign Brief
vertical_tag · intends_paid_traffic
projected_spend_usd · persona_segments · goal"]:::input A --> B["Strategy Engine — Cell Selection
32-cell corpus walk per ADR 0013 rule_12
For each selected cell, resolve:
• monetization_path (1 of 6)
• lander_mode (1 of 3) NEW
• archetype_tag (only for archetype_* modes)
• proof_mechanism_id (FK to tool_registry)
• paid_traffic_eligible (derived + persona AND school gate)"]:::engine B --> C["Stage 3 + 4 — Copy × Creative
Angle-per-cell copy matrix
Creative variants per angle × platform
Ads route to lander per lander_mode"]:::stage C --> D{"Lander Mode"}:::landing D -->|"content_site_tool_direct"| E["Tool on content site
Long-form content surrounds tool
Primary for organic + high-quality signal"]:::landing D -->|"archetype_tool_embedded"| F["Archetype lander
Tool embedded inline
Bridges between ad aggression + tool proof"]:::landing D -->|"archetype_prequalifier"| G["Archetype pre-qualifier
2-3 Q quick qualification
→ then routes to Tool"]:::landing E --> H F --> H G --> H H["Tool Completion — Dynamic Routing Decision
User sees RESULT + options
System evaluates:
• HHI · location · intent · vet status · credit · school preference
• Available partner routes (current state)
• Consent state (for ping/post compliance)"]:::engine H --> I1["★ affiliate_aggregator_portal
$35 CPL external partner
CURRENT primary revenue today"]:::current H --> I2["affiliate_direct_online_school
SNHU · Purdue Global · WGU · Strayer
FUTURE — pending direct deals"]:::future H --> I3["aggregator_marketplace_ping_post
Education Dynamics · Archer · LeadHoop · PX
FUTURE — multi-buyer with consent"]:::future H --> I4["organic_state_school_redirect
UT · OU · UF · UM · Bama · state flagships
ORGANIC ONLY (no paid traffic)"]:::organic H --> I5["content_only
Deep educational dive
ALWAYS AVAILABLE — brand + SEO moat"]:::always I1 --> S["Stage R — Signal Capture
Which monetization_path × lander_mode × archetype_tag × proof_mechanism_id combos converted?
Feeds Winners Vault + exploration vault
Closes the loop to next campaign's Strategy Engine"]:::signal I2 --> S I3 --> S I4 --> S I5 --> S S -.->|"winners_vault_readback v0.4.0"| B
monetization_path up-front. In the proposed shape, most cells
are hybrid_dynamic — the cell emits a tool that gathers the data, and the routing-endpoint decision is deferred to
tool-completion time based on that data. The operator called this out explicitly: “The tool produces the data that
determines the routing.”
monetization_path (6 values) × lander_mode (3 values) — which combinations are valid, which are
strategically preferred, which are nonsensical. Current state vs future state labeled per cell.
| Enum value | Paid-traffic eligible | State | Description |
|---|---|---|---|
affiliate_aggregator_portal |
Yes | CURRENT | Today's $35 CPL external partner (LeadAmplify-style matching portal that accepts a degree sub-param). Primary revenue channel. |
affiliate_direct_online_school |
Yes | FUTURE | SNHU · Purdue Global · WGU · Strayer direct relationships. Cuts aggregator middleman, preserves paid-traffic eligibility, richer framing allowed (“matched with SNHU”). |
aggregator_marketplace_ping_post |
Yes | FUTURE | Education Dynamics · Archer · LeadHoop · PX.com ping/post or host/post marketplaces. Multi-buyer lead distribution from our tools with explicit consent capture. |
organic_state_school_redirect |
No (organic only) | ACTIVE ORGANIC | Texas State · OU · UF · UM · Alabama · state flagships. UTM-tracked outbound to school application portals. Brand-building + potential future direct rev-share. |
content_only |
No | ALWAYS AVAILABLE | Deep educational article or tool with no immediate monetization hook. CPM-reduction on parallel paid campaigns + topical authority. |
hybrid_dynamic |
Per sub-route | OPERATIONAL TARGET | Tool completes → result + dynamic options routed by HHI · location · intent · vet status · school preference. Most cells will live here. |
| Enum value | Entry point | Tool placement | Best for |
|---|---|---|---|
content_site_tool_direct |
Ad → content-site tool page | Tool IS the lander; surrounded by long-form educational content | High-quality-signal campaigns · organic-path cells · state-school redirect · content-heavy audiences |
archetype_tool_embedded |
Ad → archetype lander | Tool embedded inline in the lander | Bridges ad-aggression to tool-proof. Advertorial or authority-notice framing + tool below the fold. |
archetype_prequalifier |
Ad → archetype pre-qualifier | 2-3 quick questions → routes to tool | Vet-eligibility gates · HHI disqualifier · employer-tuition filter · high-qualification-value campaigns |
| ↓ monetization_path \ lander_mode → | content_site_tool_direct |
archetype_tool_embedded |
archetype_prequalifier |
|---|---|---|---|
| affiliate_aggregator_portal | ✓ CURRENTTool on site → $35 CPL partner after completion. Primary today. | ✓ CURRENTArchetype advertorial/authority + tool inline → partner. Also primary today. | ✓ Some cellsQuick qualifier (HHI/age) → tool → partner. Used for filtering. |
| affiliate_direct_online_school | FUTUREPost direct deal: tool on site → SNHU/WGU branded flow. | FUTUREBranded archetype + tool inline → direct school. | FUTUREVA-eligibility or HHI qualifier → tool → matched direct school. |
| aggregator_marketplace_ping_post | FUTUREPost-consent: tool collects data → ping/post to multi-buyer marketplace. | ✓ Strongest fitArchetype lander with embedded tool + explicit TCPA/consent capture → ping/post. | —Pre-qualifier doesn't fit ping/post economics (marketplaces want full intake before buying). |
| organic_state_school_redirect | ✓ Primary pathContent SEO + tool → UTM-tracked outbound to state school portal. Persona B traffic today. | —Archetype framing is overkill for organic; users arrive via SEO not paid. | —Organic doesn't need pre-qualification — user is already segmented by search intent. |
| content_only | ✓ DefaultArticle or tool page with no monetization hook. CPM-reduction + authority. | —Archetype-style aggression doesn't fit brand-signal-only intent. | —No conversion endpoint to qualify for. |
| hybrid_dynamic | ✓ Most flexibleTool on content site → result + dynamic routing per user profile. Default target. | ✓ SecondaryArchetype lander + tool inline → dynamic routing at completion. | ✓ When gating mattersPre-qualifier filters first → tool → dynamic routing. Adds friction but richer data. |
content_site_tool_direct × hybrid_dynamic is the operational target for most cells going forward — it's the
cleanest expression of the persona-v2 tool-as-proof thesis.
(b) aggregator_marketplace_ping_post × archetype_tool_embedded is the only natural fit for ping/post because marketplaces
price on full intake + consent, not on qualified-only leads.
(c) organic_state_school_redirect is content-site-only by construction — no paid traffic means no archetype-lander use case.
(d) content_only only exists in the content-site lane; it's an anti-pattern to wrap brand-signal content in an
archetype lander.
monetization_path: affiliate_online
post-ADR-0013 migration (except Persona B–targeted cells which flipped to direct_school or hybrid). Under the
proposed expansion, the bulk of cells should reclassify as hybrid_dynamic × content_site_tool_direct, with select cells
reclassified per the operator's persona/cell mapping work (BR-2 of ADR 0013 is the precedent). Worker 3.5-C scope amendments would land in a Phase 5 follow-up session.
vertical_tag=edu, intends_paid_traffic=true, persona_segment includes Persona B (parent-of-HS-senior), goal=lead_gen. Operator reserves budget for exploration on parent segment.
Cell selected: S1.F6 (aid-letter-decoder-adjacent). Strategy Engine resolves monetization_path: hybrid_dynamic, lander_mode: content_site_tool_direct, proof_mechanism_id: edu_efc_calculator.
Copy + Creative: Stage 3 emits ad variants framing “see your actual combined aid in 2 minutes” with tool-backed credibility. Creative matches UGC library for parent demographic.
Lander: Ad clicks to content_site_tool_direct — EFC Calculator tool page on degreesources.com, surrounded by long-form aid-decoding content.
Tool completion: User enters HHI $140K, TX location, “kid attending traditional college” signal. Dynamic routing evaluates: HHI > $100K + TX + on-campus preference → NOT a fit for $35 CPL portal (portal doesn't serve this segment).
Monetization routing: Tool result screen shows: (a) calculated aid breakdown + sources, (b) organic_state_school_redirect dynamic option to UT Austin / Texas State application portals (UTM-tracked), (c) optional “also consider an online program” path to the $35 CPL partner if user self-selects that.
Stage R signal: Logs which sub-route converted (state-school click-out vs partner conversion vs content_only exit) — feeds Winners Vault per-cell readback.
vertical_tag=edu, persona_segment=Persona D (veteran), goal=lead_gen, intends_paid_traffic=true.
Cell selected: S6.F8 (full veteran picture: Ch33 + MHA + Yellow Ribbon + VR&E + TEB). Strategy Engine resolves monetization_path: hybrid_dynamic, lander_mode: archetype_prequalifier, proof_mechanism_id: edu_gi_bill_calculator. Pre-qualifier filters VA status and service era before surfacing the calculator.
Copy + Creative: Archetype lander with vet-identity-first framing; 2 pre-qual questions (“Post-9/11 status?” and “Active / discharged?”) route to tool.
Lander + Tool: User answers qualifier → GI Bill Calculator computes MHA + Ch33 coverage + Yellow Ribbon match based on target school tier.
Tool completion: Tool identifies Yellow Ribbon match with $18K annual gap coverage. Dynamic routing evaluates: veteran + graduate + Yellow Ribbon eligible + online preference.
Monetization routing: Two sub-routes offered: (a) affiliate_direct_online_school if SNHU or Purdue Global graduate program matches (FUTURE — falls back to aggregator portal today), OR (b) organic_state_school_redirect to a TX State or Alabama Yellow Ribbon program if user prefers on-campus.
Stage R signal: Logs which sub-route converted. Yellow Ribbon school attribute is captured separately from monetization_path — it's a SCHOOL attribute, not a path.
vertical_tag=edu, persona_segment=Persona C (career changer with employer benefits), goal=lead_gen.
Cell selected: S7.F1 (dual-§127 household / employer tuition). Strategy Engine resolves monetization_path: hybrid_dynamic, lander_mode: content_site_tool_direct, proof_mechanism_id: edu_employer_tuition_checker.
Copy + Creative: “See what your employer covers in 3 minutes” — §127 anchor tied to tool-backed proof.
Lander + Tool: Tool on content site surrounded by employer-tuition explainer content. User enters employer, household status, spouse employer.
Tool completion: Tool shows $10,500 combined cap (dual-§127 household stacking). Dynamic routing evaluates: employer benefit eligible + explicit “yes, I consent to being contacted” checkbox.
Monetization routing: If consent captured + profile fits multiple buyers → aggregator_marketplace_ping_post to Education Dynamics / Archer / PX multi-buyer distribution (FUTURE — falls back to $35 CPL portal today). If user prefers direct-online path → affiliate_direct_online_school route instead.
Stage R signal: Captures consent-state + which buyer(s) accepted the ping + final CPL distribution per buyer.
1cb13fc) ruling all 10 OQs + 3 pivots + 2 renames.
Worker 3.5-C shipped cell-angle-rules.json v0.3.0 at commit 8488d5f (2026-04-22).
Phase 5.1–5.8 SKILL regen + Worker 3.5-D cell-assignments shipped through 2026-04-27 (commit 62058f7).
Phase 5 deployment loop CLOSED 2026-04-27. Original section content preserved as historical record.
docs/adr/0018-expanded-monetization-and-lander-routing-taxonomy.md.docs/psychology-engine/phase-3-operationalization/cell-angle-rules.json v0.2.4 → v0.3.0 — Worker 3.5-C shipped 2026-04-22 (commit 8488d5f). Enum expanded to 6 values; lander_mode + allowed_lander_modes[] + routing_override[] + archetype_tag all added; hybrid_routing block deleted.docs/schemas/strategy.schema.json v0.2.1 → v0.3.0 — consumer mirror; lander_mode + routing_decision_log added.docs/psychology-engine/phase-4-result-personalization/result_personalization.json v0.6.0 → v0.7.0 — rav/dlo/lpv/trr readbacks reference 6-value monetization_path.docs/schemas/winners_vault_readback.schema.json v0.4.1 → v0.5.0 — per-path conditional required fields + routing_decision_signal field added (also extended by ADR 0015 Stage R signal hierarchy).docs/schemas/tool_registry.json v0.1.0 → v0.2.0 — additive routing_rules[] field per tool.docs/schemas/school_attributes.schema.json v0.1.0 — shared sub-schema (Pivot 2): modality, yellow_ribbon_participant, institutional_type, title_iv_eligible, accreditation_body, hbcu, hispanic_serving_institution, religious_affiliation.verticals/edu/research/direct-school-partners.json — schema v0.2.0; folded existing fields into shared school_attributes sub-schema via $ref; added is_currently_accepting_leads + daily_quota_remaining.verticals/edu/research/campus-school-partners.json v0.1.0 — scaffold shipped empty (serves organic_campus_school_redirect; operator populates as partnerships materialize).verticals/edu/research/aggregator-portal-school-roster.json v0.1.0 — scaffold shipped empty (populated when aggregator delivers list).verticals/edu/research/aggregator-marketplace-partners.json — Education Dynamics / Archer / LeadHoop / PX endpoint schemas. Activates with first hosted-post / ping-post partnership.881133d); Phase 5.5 campaign-architect shipped 2026-04-27 (43d9b3c).9826af2). CTAs generate POST to /api/route/<tool_id>, not direct offer URLs. Per-path TCPA/consent copy blocks added.cb3491e). Renders archetype per OQ-7 matrix + archetype_tag; consent surface inline on ping/post-routed landers.ea5bd5f); v0.5.0 amendment closed 2026-04-27 (adb694f). Reads routing_decision_log; per-path CPL/LTV analysis (6 paths).fa5bc42). Consumes lander_mode + allowed_lander_modes[]; archetype selection per OQ-7 matrix.6871aa8). Validates projected_monthly_lead_volume for ping/post-target briefs per OQ-4.3fc03d5). Platform-path compliance check per OQ-7 matrix; ping/post TCPA/consent language scan patterns.e5ca46a). Phase 5 deployment loop CLOSED.8488d5f —
walked the 32-cell corpus, set monetization_path + lander_mode + archetype_tag per cell;
added routing_override[] field (default empty on non-hybrid_dynamic cells);
migrated all hybrid cells to hybrid_dynamic with operator input on paid_subset + direct_school_subset resolution;
created school_attributes.schema.json v0.1.0;
folded direct-school-partners.json fields into shared sub-schema;
created campus-school-partners.json + aggregator-portal-school-roster.json scaffolds.
Worker 3.5-D Task 2 cell-assignments shipped 2026-04-27 at commit 62058f7.
docs/adr/ADR-0018-OQ-VERDICTS.md + ADR 0018 (Accepted 2026-04-21).
Per-OQ verdict tags shown below; original OQ content preserved as historical record of the deliberation.
hybrid_dynamic routing logic itself defined per cell?tool_registry.json → routing_rules[]); cell-level routing_override[] replaces (not merges) defaults. Predicate is safe-expression grammar (comparison + logical + in + partner_live(partner_id)); priority-ordered, first match wins; fallback_on_partner_unavailable chain. Halt: [HYBRID_DYNAMIC_NO_ROUTING_RULES].
hybrid today (ADR 0013) uses a hybrid_routing block with paid_subset_segment_match[] and
direct_school_subset_segment_match[] — a 2-way fork. hybrid_dynamic is an N-way fork across up to 4 active monetization paths
plus a content-only fallback. Proposal: new dynamic_routing_rules[] array per cell where each entry is
{predicate, target_monetization_path, priority} and the engine evaluates them at tool-completion time.
Who owns authoring these rules? The cell-angle-rules author, or a separate per-tool routing config?
(Recommend: per-tool because the tool knows what data it collects; operator decides cell overrides.)
lander_mode live on the cell, or on the angle, or on both?allowed_lander_modes[] (array, ordered by author preference) + angle-level lander_mode (scalar, optional). Default: angle inherits first element of cell's allowed set. Halt: [ANGLE_LANDER_MODE_NOT_IN_CELL_ALLOWED_SET].
content_site_tool_direct, while a “quick-qualifier” angle on the same cell uses archetype_prequalifier).
Three options: (a) lander_mode is cell-level, all angles inherit; (b) lander_mode is angle-level, cell enumerates allowed set;
(c) both — cell declares allowed set, angle picks one. Recommend (c) — matches how monetization_path already works on the cell with per-angle override potential.
organic_state_school_redirect?organic_campus_school_redirect (renamed from organic_state per Pivot 1). UTM extends ADR 0013 BR-4 with new utm_id=<tool_session_id> (16-char anonymous random, GA4 campaign_id standard). Server-side decision log on our side: {tool_session_id, cell_id, routing_decision_path, target_school_id, tool_result_anonymized_summary_hash, decision_timestamp}. No PII persisted beyond ~15min rate-limit window. Partnership conversations correlate tool_session_id back to anonymous decision-log without PII exchange.
utm_source=degreesources · utm_medium=organic · utm_campaign=<cell_id> · utm_content=<tool_id> · utm_term=<persona_id> for
direct-school outbound. Is that still correct for organic_state_school_redirect? And specifically: zero PII leaves our domain
(pure UTM) or do we capture email on our side before redirect? Recommend zero PII + UTM only for organic path — preserves
“we didn't sell your data” credibility that's structurally different from aggregator marketplace.
aggregator_marketplace_ping_post to make sense?config/validation-rules.json → platform_requirements.aggregator_marketplace_ping_post.min_monthly_lead_volume (default 100). Brief field: brief.yaml → projected_monthly_lead_volume required for ping/post-target briefs. Strategy engine auto-flips sub-threshold cells to affiliate_aggregator_portal for that campaign. Tier-2 halt: [MONETIZATION_PATH_AUTOFLIPPED_VOLUME] (emit + continue). Per-partner override deferred to v2.
min_monthly_volume_for_path[] config, or is this an operator-manual decision? Recommend config with default so
the engine auto-flips to affiliate_aggregator_portal fallback when projected volume is below the marketplace threshold.
affiliate_aggregator_portal and affiliate_direct_online_school coexist on the same cell, and if so, how does the engine choose?hybrid_dynamic swallows this naturally (Pivot 1)monetization_path: hybrid_dynamic + tool's routing_rules[] handles direct-vs-portal as sub-routes. Pattern: priority-1 rule with partner_live('snhu') && user.degree_interest in snhu.accepted_programs → SNHU direct, fallback portal; catch-all rule → portal. New fields on partners: is_currently_accepting_leads (required) + daily_quota_remaining (nullable). Partner-status is data, not code — flip availability without schema migration.
[direct, portal] and the engine uses whichever is active; (c) hybrid_dynamic swallows this naturally as sub-routes.
Recommend (c) — this is exactly what hybrid_dynamic is for. Direct and portal are sub-routes, not separate monetization_path assignments.
school_attributes.schema.json v0.1.0modality, yellow_ribbon_participant, yellow_ribbon_annual_gap_coverage_usd, institutional_type, title_iv_eligible, accreditation_body, hbcu, hispanic_serving_institution, religious_affiliation. Applied via $ref to 3 school-list files (existing direct-school-partners + new campus-school-partners + new aggregator-portal-school-roster). Routing predicates may reference target_school.<attribute>. Halt: [SCHOOL_ATTRIBUTE_FK_UNRESOLVED].
yellow_ribbon_participant: boolean + yellow_ribbon_annual_gap_coverage_usd: integer|null to the direct-school-partners.json schema AND to a
new state-school-partners.json schema. Routing logic reads the attribute at tool completion, not the monetization_path.
Does this match operator intent, or should YR be its own sub-route type?
content_only × content_site_tool_direct need a distinct label?content_site_article_direct); no nulls anywherecontent_site_article_direct (ad → article page, no tool flow; TOFU/native use case). 4-mode enum: content_site_tool_direct / content_site_article_direct / archetype_tool_embedded / archetype_prequalifier. Validator-enforced compatibility matrix (see Section 2.3 above — updated to 6×4). Halt: [LANDER_MODE_INCOMPATIBLE_WITH_MONETIZATION_PATH].
content_only is only valid with content_site_tool_direct lander_mode. If the combination is unique, the two fields
carry redundant information on content-only cells. Alternative: content_only implies content_site_tool_direct by default and the
lander_mode field is null/inapplicable. Recommend allow null lander_mode on content_only cells + validator enforces the constraint.
Clean schema; no redundant data.
workers/tool-router//api/route/<tool_id>. TypeScript Cloudflare Worker mirroring workers/capi-relay/ pattern. Hot config via Cloudflare KV (~60s cache) for routing_rules + partner status. Decision log: Analytics Engine real-time + D1 persistent (Stage R feed). Safe-fallback to affiliate_aggregator_portal on engine error. A/B cohort override hook for routing-rule experiments. Halt: [ROUTING_ENGINE_ERROR].
_online_school / _campus_school_) — explicit beats implicit. Future affiliate_direct_campus_school flagged for 18-24 months out (Pivot 3). Reasoning: each path wires to materially different plumbing (partner config shapes, consent language, A/B dimensions, Stage R attribution).
affiliate_aggregator_portal + aggregator_marketplace_ping_post into one aggregator_* path with a sub-type: both go through aggregators, just different economic models.
Counter: economics ARE materially different ($35 CPL single-buyer vs per-lead ping/post multi-buyer), compliance posture is different
(portal: standard affiliate disclosure; ping/post: explicit TCPA + multi-buyer consent), and operational setup is different.
Recommend keep separate — collapsing them loses the economic-regime distinction the enum exists to capture.
hybrid_dynamic replace the current hybrid value, or coexist?hybrid_routing blockhybrid → hybrid_dynamic; delete legacy hybrid_routing block; logic moves to tool-level routing_rules[] or cell-level routing_override[]. Per-cell migration of existing hybrid cells required operator input (cannot be automated due to pre-Pivot-1 ambiguity on direct-school modality). Migration absorbed into Worker 3.5-C expanded scope. Halts: [LEGACY_HYBRID_VALUE_UNMIGRATED], [ROUTING_OVERRIDE_ON_NON_HYBRID_CELL].
hybrid is a 2-way fork (paid_subset vs direct_school_subset). hybrid_dynamic is N-way.
Options: (a) rename hybrid → hybrid_dynamic and expand its semantics — clean migration, no dual concept;
(b) keep both with hybrid as legacy 2-way fork and hybrid_dynamic as N-way — ugly but lossless.
Recommend (a) — the 2-way fork is a degenerate case of the N-way fork.
Originally this section listed 5 next actions for ADR 0018 + Worker 3.5-C + Phase 5 regen. All 5 actions shipped between 2026-04-21 and 2026-04-27:
1cb13fc)ea5bd5f); v0.5.0 amendment closed 2026-04-278488d5f)62058f7)Pipeline validator: 329/337 pytest passing post-regen. Halt-markers: HALT-MARKERS v1.3.0 shipped 2026-04-27 with all 7 tier-1 + 1 tier-2 markers from ADR 0018 OQ rulings registered. Two non-blocking follow-ups deferred: 5.6.1 routing_quality_metrics populator (blocked on first Phase 7 close per ADR 0015 BR 15-3); 5.9.1 build-export-package.py (operator-runnable manually).