{
  "schema_version":"0.1",
  "control_id":"MNT09",
  "reviewed_on":"2026-09-16",
  "status":"implemented_external_destination_inventory",
  "network_evidence_ref":"public/external-network-observations.json",
  "human_review_worklist_ref":"public/external-human-review-worklist.json",
  "human_review_fixture_ref":"public/external-human-review-fixtures.json",
  "groups":[
    {"id":"internal_test_origin","use_class":"internal_origin","state":"internal_only","authority":"local test harness","audience":"software tests only","privacy_boundary":"Must never be presented as a public destination or receive user data.","hooks":["platform.access.changed"],"review_trigger":"Authentication or test-origin behavior changes.","replacement_path":"Replace the origin and its registry entry in the same release; keep it nonpublic.","urls":["https://app.local"]},
    {"id":"synthetic_quarantine_destinations","use_class":"synthetic_fixture","state":"test_only","authority":"synthetic safety fixtures","audience":"automated safety checks only","privacy_boundary":"These strings test quarantine behavior and must never become navigable public links.","hooks":["student.external_link.changed","minor.safeguard.changed"],"review_trigger":"Link quarantine, shortening, or unknown-domain handling changes.","replacement_path":"Retain equivalent shortened-link and unknown-domain rejection fixtures before removing either value.","urls":["https://bit.ly/example-safe-fixture","https://unknown.example.invalid/project"]},
    {"id":"approved_destination_fixture","use_class":"synthetic_fixture","state":"test_only","authority":"official NASA education destination used by a fixture","audience":"automated safety checks only","privacy_boundary":"Fixture approval does not authorize unrestricted student browsing or data transfer.","hooks":["student.external_link.changed","minor.safeguard.changed"],"review_trigger":"Approved-domain policy or NASA education routing changes.","replacement_path":"Review the official destination and update the fixture, allowlist contract, and registry together.","urls":["https://www.nasa.gov/learning-resources/"]},
    {"id":"prompt_handoff","use_class":"prompt_handoff","state":"active","authority":"external AI platform","audience":"general and grant-research users choosing to leave the site","privacy_boundary":"Open only a blank external service; never append drafts, identifiers, or personal information to the URL.","hooks":["platform.access.changed","privacy.expectation.changed"],"review_trigger":"Platform address, terms, access, or privacy behavior changes.","replacement_path":"Keep prompts copyable without the platform, then replace or remove the optional handoff link.","urls":["https://chatgpt.com/"]},
    {"id":"project_source","use_class":"public_navigation","state":"active","authority":"project-origin website","audience":"general and research users","privacy_boundary":"No site-held personal information is appended to the destination.","hooks":["research.parent.changed","privacy.expectation.changed"],"review_trigger":"Project ownership, destination, security, or source relationship changes.","replacement_path":"Preserve the cited project identity and recovery record; update both literal URL forms together.","urls":["https://genesis3.org","https://genesis3.org/"]},
    {"id":"citation_resolver","use_class":"citation_resolver","state":"active","authority":"DOI persistent-identifier resolver","audience":"research users","privacy_boundary":"Only a published DOI is transferred; no user draft or identifier is appended.","hooks":["research.parent.changed","privacy.expectation.changed"],"review_trigger":"Resolver conventions, cited identifier, or research parentage changes.","replacement_path":"Preserve each DOI as the stable identifier and provide a compatible resolver or plain-text citation.","urls":["https://doi.org/10.1002/andp.19053221004","https://doi.org/10.1002/andp.19163540702","https://doi.org/10.1103/PhysRev.47.777","https://doi.org/10.1103/PhysicsPhysiqueFizika.1.195","https://doi.org/10.1002/j.1538-7305.1948.tb01338.x","https://doi.org/10.1147/rd.53.0183","https://doi.org/10.1002/cpa.3160130102","https://doi.org/10.1103/RevModPhys.47.773","https://doi.org/10.1103/RevModPhys.75.715","https://doi.org/10.1023/A:1026654312961","https://doi.org/10.1017/S0140525X99002149"]},
    {"id":"official_funding_destinations","use_class":"public_navigation","state":"active","authority":"official United States agency, registration, or funding service","audience":"adult applicants, educators, and researchers","privacy_boundary":"Eligibility, registration, submissions, and personal data remain on the official service; minors require a trusted adult and the site does not collect application data.","hooks":["funding.opportunity.changed","student.external_link.changed","privacy.expectation.changed"],"review_trigger":"Program, eligibility, deadline, ownership, registration, privacy, or destination changes.","replacement_path":"Prefer the responsible agency's current official index; remove stale opportunities until reviewed instead of redirecting to an unofficial intermediary.","urls":["https://nspires.nasaprs.com/external/solicitations/summary.do","https://pamspublic.science.energy.gov/","https://sam.gov/content/entity-registration","https://science.nasa.gov/researchers/sara/grant-solicitations/","https://science.osti.gov/grants","https://science.osti.gov/hep/Funding-Opportunities","https://seedfund.nsf.gov/","https://simpler.grants.gov/search","https://www.grants.gov/applicants/applicant-registration","https://www.nasa.gov/stmd-the-nasa-innovative-advanced-concepts-niac/","https://www.nsf.gov/focus-areas/physics","https://www.nsf.gov/funding","https://www.nsf.gov/policies/pappg"]},
    {"id":"student_learning_destinations","use_class":"public_navigation","state":"active","authority":"official NASA or Society for Science education service","audience":"students with teacher, guardian, or trusted-adult guidance","privacy_boundary":"The site sends no student data; accounts, applications, contact, and eligibility review stay under trusted-adult supervision.","hooks":["student.external_link.changed","funding.opportunity.changed","minor.safeguard.changed"],"review_trigger":"Ownership, age terms, contact path, program rules, privacy, or destination changes.","replacement_path":"Remove the link until an official, age-appropriate destination passes safeguarding and privacy review.","urls":["https://www.nasa.gov/learning-resources/for-kids-and-students/","https://www.societyforscience.org/","https://www.societyforscience.org/stem-outreach-programs/stem-research-grants/"]}
  ],
  "change_rule":"Adding, removing, moving, or changing an external URL requires this registry, its source surface, hooks, audience and privacy boundary, replacement path, and change register to change in the same bounded release.",
  "verification":{"checker":"scripts/check-external-dependencies.mjs","command":"pnpm check:site","network_scope":"source inventory only"},
  "limitations":["Source validation does not make network requests or prove that a destination is reachable, current, safe, authoritative, or unchanged after release.","External availability and policy review require a capable network environment and, for student or funding destinations, appropriate human review."],
  "successor_path":"Run old and new inventories together until every literal destination, use class, audience boundary, review hook, and historical fixture has equivalent or stricter coverage."
}
