{
  "id": "wnd-contact-rules",
  "version": "0.1.0",
  "note": "An address is published only if its local part is one of these. Everything else found on a page is counted and dropped unread. The list is organisational role names in the languages this corpus spans; it is deliberately conservative, and it is published so that a reader can see exactly what was let through.",
  "second_rule": "The address's domain must share its second-level label with the site it was found on (myparaluman.com beside myparaluman.ph is the same house; reportlocal.org on another organisation's page is not). This is what removes analytics pseudo-addresses, form placeholders and other people's projects, none of which are a way to reach anybody.",
  "storage_rule": "Organisation pages are frozen GZIPPED, because a home page is one to two megabytes of script bundle and eleven megabytes of that is payload rather than evidence. The SHA-256 recorded is of the ORIGINAL bytes; the gate decompresses and re-verifies it, so the anchoring is exactly as strong.",
  "third_rule": "A local part equal to the site's own second-level label counts as a role address too — anj@anj.org.br is the association, not a person.",
  "role_local_parts": [
    "admin",
    "ask",
    "comms",
    "communication",
    "communications",
    "contact",
    "contactez",
    "contacto",
    "contacts",
    "contato",
    "correspondence",
    "desk",
    "editor",
    "editorial",
    "editors",
    "email",
    "enquiries",
    "enquiry",
    "general",
    "hello",
    "help",
    "hey",
    "hi",
    "imprensa",
    "info",
    "information",
    "inquiries",
    "kontakt",
    "letters",
    "mail",
    "media",
    "media-enquiries",
    "mediaenquiries",
    "news",
    "newsroom",
    "office",
    "pitches",
    "prensa",
    "press",
    "press-office",
    "presse",
    "pressoffice",
    "reachus",
    "redacao",
    "redaccion",
    "redaccion",
    "redaktion",
    "secretaria",
    "secretariat",
    "submissions",
    "support",
    "team",
    "tips",
    "webmaster"
  ],
  "bytes_not_retained_rule": {
    "threshold": 10,
    "what": "A fetched page carrying ten or more addresses that are NOT role addresses is a directory of people's contact details. Those bytes are not retained: the URL, the retrieval time, the SHA-256 of what came back and the counts are recorded, and the file is kept neither in this repository nor in the vault bundle.",
    "why": "The pages are public, so this is not secrecy. It is that freezing a staff directory into a git repository and shipping it in a downloadable bundle makes it materially easier to scrape than the publisher made it, which is not a thing this section will do to twenty-three colleagues. The hash is kept so that anyone can re-fetch the page and check our count against it.",
    "cost": "A real cost, stated rather than hidden: for a page held this way the count is an assertion about bytes we no longer have, not a number a reader can re-derive from this repository."
  },
  "linkedin_rule": {
    "company_and_school_pages": "Published when the organisation links to it from its own frozen page. A LinkedIn company page is a public corporate profile and a route, like a contact page.",
    "personal_profiles": "Published ONLY when the profile slug matches the name of an author in this corpus, letter for letter once punctuation is removed. Everything else is dropped unread. The rule exists because a site template ships stock profiles: three of the four /in/ links on one organisation's page belong to people with nothing to do with it, and publishing them as that newsroom's staff would have been a fabrication.",
    "what_a_profile_link_is": "A public professional page, which is a route, not a contact detail. It is not permission to message anybody about anything."
  },
  "never_published": "Any address whose local part is not on this list — including anything that could be a person's name. No personal contact detail for any natural person appears anywhere in this section's data."
}
