Virtual Pages - Source Excerpt 65
Summary
This source excerpt preserves a bounded section of 2IA.org/wp-content/themes/twoia-intelligence/inc/virtual-pages.php so readers can inspect the evidence without opening the full source file.
**Source path:** 2IA.org/wp-content/themes/twoia-intelligence/inc/virtual-pages.php
/**
* Return a narrative angle for a route family.
*
* @param string $parent_slug Parent route slug.
* @return string
*/
function twoia_virtual_dossier_route_angle( $parent_slug ) {
$angles = array(
'start-here' => __( 'Start Here is the fast door into the work: surveillance, identity, AI inference, public records, and the gap between what institutions claim and what their paperwork can actually prove.', 'two-identities-anonymous' ),
'methodology' => __( 'Methodology is the story of how a claim earns its place in public. It follows the path from a source note to a confidence label, from a confidence label to a correction route, and from a correction route to a page that can be challenged without falling apart.', 'two-identities-anonymous' ),
'public-records-and-foia' => __( 'Public records are where institutional stories stop being vibes. A contract, policy, meeting packet, retention schedule, appeal letter, or released email can show what power actually bought, promised, denied, or quietly changed.', 'two-identities-anonymous' ),
'two-identities' => __( 'Identity is the pressure point between the person the state files, the person a platform profiles, and the person who speaks, organizes, jokes, worships, recovers, protests, or writes under a name that gives them room to breathe.', 'two-identities-anonymous' ),
'surveillance-systems' => __( 'Surveillance systems are not just cameras and databases. They are purchase orders, retention rules, vendor claims, audit gaps, data-broker feeds, human habits, and policies that decide whose ordinary life becomes a record.', 'two-identities-anonymous' ),
'ai-surveillance' => __( 'AI surveillance turns uncertainty into output at scale. The public question is not whether the system sounds confident; it is whether the source data, model limits, review authority, appeal path, and error record are visible enough to challenge.', 'two-identities-anonymous' ),
'false-positives' => __( 'False positives are not abstract bugs. They are the moment a weak signal, stale record, bad match, or overconfident inference becomes somebody else trying to explain why the system is wrong about them.', 'two-identities-anonymous' ),
'research-archive' => __( 'The archive is the memory layer for public accountability. It keeps routes, issue hubs, source notes, corrections, and verification paths together so a reader can see what changed and what still needs records.', 'two-identities-anonymous' ),
'organizations' => __( 'The directory is a map of useful public-interest institutions, not a pile of names. It asks what help a reader needs, which organization type fits, what source verifies the entry, and when history or controversy demands more context than a link.', 'two-identities-anonymous' ),
'support' => __( 'Support is part of the publication story because money, forms, newsletters, volunteer work, and growth tools can either strengthen public research or quietly compromise the privacy promise readers came here for.', 'two-identities-anonymous' ),
'about' => __( 'About pages should not hide the point. 2IA exists to make public power legible, defend civil liberties, protect lawful anonymous space, and keep sharp speech answerable to evidence instead of institutional mystique.', 'two-identities-anonymous' ),
);
return $angles[ $parent_slug ] ?? __( 'This page follows a public-interest question from the visible claim to the records, rights, verification paths, and accountability choices that make the issue understandable.', 'two-identities-anonymous' );
}
/**
* Return short, front-of-page action items that avoid method lecture tone.
*
* @param array $page Section-backed child route definition.
* @param array $section Section definition.
* @return array
*/
function twoia_get_virtual_dossier_front_actions( $page, $section ) {
$parent_slug = isset( $page['parent_slug'] ) ? $page['parent_slug'] : '';
$actions = array(
'start-here' => array(
__( 'Jump to the linked issue route that matches the card: metadata, AI, public records, anonymity, false positives, support, or methodology.', 'two-identities-anonymous' ),
__( 'Use the outside verification links near the top before treating a big claim as settled.', 'two-identities-anonymous' ),
__( 'Look for the concrete record behind the claim: a contract, policy, audit trail, appeal path, or correction note.', 'two-identities-anonymous' ),
),
'methodology' => array(
__( 'Look for the decision point: what gets published, what gets corrected, what stays private, and what needs more proof.', 'two-identities-anonymous' ),
__( 'Check whether the page names the record, date, uncertainty, correction path, or right-of-reply issue that would change the conclusion.', 'two-identities-anonymous' ),
__( 'Use the outside links to compare the method against journalism, records, and AI-governance standards.', 'two-identities-anonymous' ),
),
'public-records-and-foia' => array(
__( 'Find the record category first: contract, policy, procurement file, retention schedule, appeal letter, meeting packet, or released correspondence.', 'two-identities-anonymous' ),
__( 'Use the FOIA and public-records links to turn the issue into a request someone can answer.', 'two-identities-anonymous' ),
__( 'Compare the institution public story against the paperwork it has already released or can be asked to release.', 'two-identities-anonymous' ),
),
'two-identities' => array(
__( 'Ask what identity is being protected, linked, exposed, or misread, and who benefits from that linkage.', 'two-identities-anonymous' ),
__( 'Use the speech and privacy links to verify the civil-liberties stakes before accepting an exposure claim.', 'two-identities-anonymous' ),
__( 'Keep attention on accountable systems, not curiosity about private people.', 'two-identities-anonymous' ),
),
'surveillance-systems' => array(
__( 'Follow the purchase, policy, data source, retention rule, and audit trail before accepting a vendor claim.', 'two-identities-anonymous' ),
__( 'Use the surveillance and data-broker links to check what kind of system the page is talking about.', 'two-identities-anonymous' ),
__( 'Ask who can see the record, who can challenge it, and when it expires.', 'two-identities-anonymous' ),
),
'ai-surveillance' => array(
__( 'Look for training limits, source data, validation, human authority, appeal routes, and error handling.', 'two-identities-anonymous' ),
__( 'Use the AI and oversight links to compare the claim against public risk-management standards.', 'two-identities-anonymous' ),
__( 'Treat confident output as a claim that still needs evidence, not as proof by itself.', 'two-identities-anonymous' ),
),
'false-positives' => array(
__( 'Track how a weak signal becomes a consequence: match, flag, label, retention, sharing, and appeal.', 'two-identities-anonymous' ),
__( 'Use the measurement and oversight links to check error-rate and redress claims.', 'two-identities-anonymous' ),
__( 'Ask what would clear the record for the person or group wrongly caught by the system.', 'two-identities-anonymous' ),
),
'research-archive' => array(
__( 'Open the route map, source note, or issue hub that turns the archive item into something checkable.', 'two-identities-anonymous' ),
__( 'Use the records links to find documents, released files, or public guides that support the next research step.', 'two-identities-anonymous' ),
__( 'Look for what changed: new evidence, corrected language, a stronger source, or a missing record request.', 'two-identities-anonymous' ),
),
'organizations' => array(
__( 'Start with the reader problem, then choose the organization type: litigation, records, local coalition, OSINT lab, AI governance, digital rights, or historical context.', 'two-identities-anonymous' ),
__( 'Verify the official site, current program, jurisdiction, contact route, and last-reviewed date before sharing an entry as usable help.', 'two-identities-anonymous' ),
__( 'Treat controversial, historical, or leaderless entries as context pages with source notes and boundaries, not recommendations or participation paths.', 'two-identities-anonymous' ),
),
'support' => array(
__( 'Check whether the support path produces public work readers can see: pages, records, corrections, accessibility fixes, or preserved source memory.', 'two-identities-anonymous' ),
__( 'Use the consumer and charity links to verify donation, subscription, and privacy claims.', 'two-identities-anonymous' ),
__( 'Watch for support tools that collect more reader data than the mission needs.', 'two-identities-anonymous' ),
),
'about' => array(