campaign (single-file page node)

Purpose

The /campaign route (campaign.astro, 1790 lines) — the campaign’s status / evidence hub. It is an investigation/status-tracking page with three parts: (1) a long, documented list of withheld unpublished Aajonus material (books, consult tapes, lectures, legal docs, …) with the evidence each exists; (2) a condensed scam-coaching recap (Phoenix’s coaching vs. Aajonus’ teachings) that reuses the shared comparison chart; and (3) a campaign-goals status board driven by an in-file typed data model. It is composition-heavy — almost all substance is delivered through already-documented components (DataItem, Quote, CampaignLink, BigButton, CoachingComparisonChart, Contact) plus astro:assets Image and one hard-coded <video>. A single-file node — no Children section. The documentation value is the page’s shape, its in-file data model + helpers, and its composition, not its editorial prose; the campaignGoals/DataItem text values are not transcribed here. This is the smallest of the four giant pages but carries the most in-frontmatter logic and the largest dead-import set of any page node.

Direct content

src/pages/campaign.astro

Public API / frontmatter (:1-153)

In-frontmatter logic + data model (:74-152)

This is the page’s main documentation-worthy artifact — richer than the other giants.

Section outline

Everything renders inside one <MainLayout><section><div> (:157-160). The page <h1> is “Save Aajonus’ legacy” (:161), followed by a plain table-of-contents (.table-of-contents--plain, :165-171) linking the three <h2> anchors. One line per top-level block:

Components used

Counts are literal <Tag occurrences in source at e32f3ef (live unless noted); reconcile against the importer table in src/components/DOCS.md. Link, don’t re-derive — each is documented there.

ComponentCountProp(s) this page passes
DataItem19 live (+1 commented :1059)title, importance ({1..5}), likelihood ({n}), and location on only 2 of the 19 (:199, :552); + slotted body. location is received-but-never-rendered by the component (Phase 3) — see Open questions.
Quote26 live (+4 commented: :520,:525,:783,:1069)photo (.src of aajonus/jim/paul), name, content or slotted <p>s, source, date (new Date(...)), url; some dialogue turns use followUp={true}
CampaignLink2text="Sign the petition on change.org" (:1239, :1345)
BigButton2href (/official-coaching-scam :1267 with targetBlank={true}; / :1350)
CoachingComparisonChart1none (:1261)
Contact1none (:1348)
PersonProfile0imported (:7) but never rendered — dead import
PersonProfiles0imported (:8) but never rendered — dead import
External0imported (:10) but never rendered — dead import
Table0imported (:13) but never rendered — dead import (also a “dead component”: renders an empty <div> per Phase 3)
Image (astro:assets)6src (imported ImageMetadata), alt, width={500}, quality={75}

So 6 of the 10 imported components are live, 4 are dead. (Note: DataItem’s brief estimate of ×20 is one high — there are 19 live opens + 1 commented; the location brief estimate of “every DataItem” is also off — only 2 pass it.)

Dependencies

Invariants / gotchas

Open questions