{"name":"Signal Vault","version":1,"description":"A finite public research archive and bot honeypot.","totalDocuments":12,"canonical":"https://ghost-observatory.pages.dev/honeypot","observations":"https://ghost-observatory.pages.dev/api/honeypot","documents":[{"position":1,"url":"https://ghost-observatory.pages.dev/honeypot/archive/01-crawler-identity","title":"AI crawler identity: claims and evidence","summary":"How to interpret a crawler name without mistaking a declared identity for proof."},{"position":2,"url":"https://ghost-observatory.pages.dev/honeypot/archive/02-open-telemetry","title":"Open crawler telemetry: JSON and CSV exports","summary":"Public aggregate data for studying automated requests to the observatory."},{"position":3,"url":"https://ghost-observatory.pages.dev/honeypot/archive/03-crawl-manifests","title":"Machine-readable crawl manifests and resource indexes","summary":"A compact inventory of the archive, public datasets, and research notes."},{"position":4,"url":"https://ghost-observatory.pages.dev/honeypot/archive/04-robots-canaries","title":"Robots exclusion and a reserved archive canary","summary":"A decoy resource for observing requests to a robots-disallowed path."},{"position":5,"url":"https://ghost-observatory.pages.dev/honeypot/archive/05-canonical-urls","title":"Canonical URLs and finite archive boundaries","summary":"Why one permanent address per document keeps a crawl interpretable."},{"position":6,"url":"https://ghost-observatory.pages.dev/honeypot/archive/06-html-link-discovery","title":"HTML link discovery without JavaScript","summary":"Archive navigation is present in the first server-rendered response."},{"position":7,"url":"https://ghost-observatory.pages.dev/honeypot/archive/07-search-notifications","title":"Search discovery with sitemaps and IndexNow","summary":"How the observatory announces public pages when they change."},{"position":8,"url":"https://ghost-observatory.pages.dev/honeypot/archive/08-agent-retrieval","title":"AI agent retrieval and task context","summary":"A fetched research page does not reveal the task that brought a client here."},{"position":9,"url":"https://ghost-observatory.pages.dev/honeypot/archive/09-privacy-minimization","title":"Privacy-minimized request observations","summary":"The experiment records route and classification fields, not visitor profiles."},{"position":10,"url":"https://ghost-observatory.pages.dev/honeypot/archive/10-measurement-limits","title":"Request counts, sampling, and missing observations","summary":"How to read a quiet dashboard without inventing crawler activity."},{"position":11,"url":"https://ghost-observatory.pages.dev/honeypot/archive/11-reproducible-crawls","title":"Reproducible crawl graphs and archive coverage","summary":"A small, inspectable corpus for comparing fetch patterns over time."},{"position":12,"url":"https://ghost-observatory.pages.dev/honeypot/archive/12-archive-boundary","title":"Archive boundary and public research resources","summary":"The final document in the Signal Vault crawl path."}],"license":"https://creativecommons.org/licenses/by/4.0/"}