From 8a2a28864efcd1636b7bb9e6685b790538d6b8a7 Mon Sep 17 00:00:00 2001 From: Justin Visser Date: Sat, 27 Jun 2026 16:13:08 +0200 Subject: [PATCH] web: Method and Sources page on the Explainer tab Turn the Explainer placeholder into the real method + sources page the proposal's Proof of Concept promises, so the demo's results can be examined and reproduced rather than taken on trust. Two parts in MethodPage.vue: - How the model works, structured loosely on the ODD protocol for agent-based models (purpose; entities, state, scale; the Holme-Kim friendship network; the independent-cascade spread; the additive forwarding composite; the education lever and the three strategies; determinism from seeds; parameters as low/medium/high sensitivity ranges rather than fitted values). Cites Holme & Kim 2002 and Kempe, Kleinberg & Tardos 2003. - Sources behind each parameter: a table mapping every lever, live and reserved, to the project team's open-access literature review (S1-S11), with the full reference list below it. App.vue routes explainer to MethodPage; Findings and Guides stay placeholders. Matches the existing visual tokens and card system, carries the "illustrative, not validated" disclaimer, scrolls its table inside an overflow container at 390px, and stays keyboard reachable and reduced-motion friendly. Verified in light, dark, and at 390px against a local prod build with the embedded frontend. No Go types changed, so the type-drift guard stays clean. --- web/src/App.vue | 2 + web/src/components/MethodPage.vue | 697 ++++++++++++++++++++++++++++++ 2 files changed, 699 insertions(+) create mode 100644 web/src/components/MethodPage.vue diff --git a/web/src/App.vue b/web/src/App.vue index c183b7e..a2c6864 100644 --- a/web/src/App.vue +++ b/web/src/App.vue @@ -8,6 +8,7 @@ import FocusModal from '@/components/FocusModal.vue' import FooterDisclaimer from '@/components/FooterDisclaimer.vue' import HeroHeadline from '@/components/HeroHeadline.vue' import LegendRow from '@/components/LegendRow.vue' +import MethodPage from '@/components/MethodPage.vue' import MobileScoreStrip from '@/components/MobileScoreStrip.vue' import NodeTooltip from '@/components/NodeTooltip.vue' import OverlayCard from '@/components/OverlayCard.vue' @@ -74,6 +75,7 @@ onMounted(async () => { + diff --git a/web/src/components/MethodPage.vue b/web/src/components/MethodPage.vue new file mode 100644 index 0000000..f2f8111 --- /dev/null +++ b/web/src/components/MethodPage.vue @@ -0,0 +1,697 @@ + + + + +