{"v": 1, "site": "api.newsroom.sgit.ai", "release": "v0.2.5", "version": "v0.2.14", "docs": [{"u": "about/", "t": "About, licence, contact", "k": "page", "x": "What this site and repository are, who is responsible, the licence, how to reach the people behind it, and the disclosure about how it is written.", "h": [], "i": 0}, {"u": "adopt/", "t": "Adopt it", "k": "page", "x": "Three ways in: put the meter on your own pages today; run a newsroom like newsroom.sgit.ai; pilot it with the people who built it. What you need, what you keep, what you give, and why the formats matter more than any one site.", "h": [["three-ways-in", "Three ways in"], ["what-you-need", "What you need"], ["what-you-keep-what-you-give", "What you keep, what you give"], ["why-the-formats-matter-more-than-the-site", "Why the formats matter more than the site"], ["contributing", "Contributing"]], "i": 1}, {"u": "agents/", "t": "For agents", "k": "engineering", "x": "The brief for the agents that keep this repository and the newsroom: what the API is, the rules, where everything is, how a change is made and reviewed, how the newsroom consumes a release, and what never to do. Written for people too.", "h": [["what-this-is-in-three-lines", "What this is, in three lines"], ["read-these-first", "Read these first"], ["the-rules", "The rules"], ["where-things-are", "Where things are"], ["how-the-newsroom-consumes-a-release", "How the newsroom consumes a release"], ["changing-this-site", "Changing this site"], ["what-never-to-do", "What never to do"]], "i": 2}, {"u": "docs/components/", "t": "The components", "k": "page", "x": "The served files by group, what each is for, where it came from, and which are frozen: SG Meter and its versions, the component base, the reading lists, subscribe, the vault layer and the pane, search and ask, the wire reader, the vendored vault library, the passkey lab.", "h": [["sg-meter-assets-components-sg-meter-v1", "SG Meter: assets/components/sg-meter/v1/"], ["the-component-base-assets-components-base-v1-v1-0-v1-0-0-sg-", "The component base: assets/components/base/v1/v1.0/v1.0.0/sg-component.js"], ["reading-lists-for", "Reading lists: for/"], ["subscribe-and-the-share-assets-subscribe-js", "Subscribe and the share: assets/subscribe.js"], ["the-vault-layer-assets-newsroom-vault-js-assets-door-js-asse", "The vault layer: assets/newsroom-vault.js, assets/door.js, assets/vault-pane/"], ["search-and-ask-assets-search", "Search and ask: assets/search/"], ["the-wire-reader-wire", "The wire reader: wire/"], ["the-vendored-libraries-assets-vendor", "The vendored libraries: assets/vendor/"], ["assets-vendor-sg-vault", "assets/vendor/sg-vault/"], ["the-passkey-lab-passkey-lab-js-lab-css-vectors-json", "The passkey lab: passkey/lab.js, lab.css, vectors.json"], ["what-is-not-here-on-purpose", "What is not here, on purpose"]], "i": 3}, {"u": "docs/hosting/", "t": "The hosting model", "k": "page", "x": "How the reader code is served and consumed: a versioned prefix per release, never edited in place; the CORS header a cross-origin import needs; what stays on the page's origin (state, data, addresses); data-root; pinning, the manifest, rollback; CSP.", "h": [["the-address-of-a-file", "The address of a file"], ["what-a-cross-origin-host-needs", "What a cross-origin host needs"], ["what-stays-on-the-page-s-origin", "What stays on the page's origin"], ["data-root", "data-root"], ["pinning-the-manifest-rollback", "Pinning, the manifest, rollback"], ["content-security-policy", "Content-Security-Policy"], ["what-a-different-host-changed", "What a different host changed"]], "i": 4}, {"u": "docs/", "t": "Reference", "k": "page", "x": "The reference for the SGit Newsroom API: the contracts, the reader's state and every input and output, the components and what each file is, the hosting model, pinning and the manifest, the reading-list link grammar, events.", "h": [["pages", "Pages"], ["the-element-in-brief", "The element, in brief"], ["events", "Events"], ["versions", "Versions"]], "i": 5}, {"u": "docs/reading-list-link/", "t": "The reading-list link", "k": "page", "x": "The grammar of a reading list in a link, field by field, with the limits the parser enforces, how a list opens as a visitor persona, and what is deliberately not in it.", "h": [["what-opens", "What opens"], ["the-make-page", "The make page"], ["what-is-deliberately-not-in-it", "What is deliberately not in it"], ["for-a-site-that-adopts-it", "For a site that adopts it"]], "i": 6}, {"u": "for-developers/", "t": "For developers", "k": "page", "x": "Add the reading meter to a page with a pinned, versioned import and a JSON config; the custom element's views; the data your site publishes; the hosting model and CORS; the tests you can run against your own pages.", "h": [["1-put-the-meter-on-a-page", "1. Put the meter on a page"], ["2-the-element-s-views", "2. The element's views"], ["3-the-data-your-site-publishes", "3. The data your site publishes"], ["4-the-reader-s-own-newsroom-lists-personas-the-vault-search", "4. The reader's own newsroom: lists, personas, the vault, search"], ["5-the-hosting-model-and-what-a-different-host-changes", "5. The hosting model, and what a different host changes"], ["6-pin-a-release-verify-it-roll-it-back", "6. Pin a release, verify it, roll it back"], ["7-run-the-tests-against-your-pages", "7. Run the tests against your pages"], ["where-everything-is", "Where everything is"]], "i": 7}, {"u": "for-evaluators/", "t": "For evaluators", "k": "page", "x": "The architecture, the trust boundaries, what leaves the browser, the review's findings as public issues, the release manifest, the proof of the move, the pipeline, and how to verify every claim yourself.", "h": [["the-architecture-in-four-sentences", "The architecture in four sentences"], ["trust-boundaries", "Trust boundaries"], ["what-leaves-the-browser", "What leaves the browser"], ["the-accepted-gaps-written-down", "The accepted gaps, written down"], ["the-review-findings-findings-each-a-public-issue", "The review: 18 findings, each a public issue"], ["supply-chain", "Supply chain"], ["the-proof-of-the-move", "The proof of the move"], ["the-pipeline", "The pipeline"], ["verify-it-yourself", "Verify it yourself"], ["licence-and-provenance", "Licence and provenance"]], "i": 8}, {"u": "for-publishers/", "t": "For publishers, editors and executives", "k": "page", "x": "What a reader gets, what the newsroom keeps, what it costs to adopt, what is live and taking money, and what is honestly not there yet. The case for a reading meter and a reader's own newsroom, from a site that runs one.", "h": [["what-a-reader-gets", "What a reader gets"], ["a-meter-not-a-wall", "A meter, not a wall"], ["read-as-who-you-are-today", "Read as who you are today"], ["send-five-articles-not-five-links", "Send five articles, not five links"], ["an-account-that-travels-with-no-sign-in", "An account that travels, with no sign-in"], ["write-back-one-tap", "Write back, one tap"], ["industry-news-as-an-inbox", "Industry news as an inbox"], ["what-the-newsroom-keeps-and-what-it-never-holds", "What the newsroom keeps, and what it never holds"], ["keeps", "Keeps"], ["never-holds", "Never holds"], ["what-it-costs-to-adopt", "What it costs to adopt"], ["a-static-site", "A static site"], ["two-small-data-files", "Two small data files"], ["a-payment-link", "A payment link"], ["a-vault-for-the-lane-optional", "A vault for the lane, optional"], ["a-pinned-release", "A pinned release"], ["the-numbers-from-a-live-site", "The numbers from a live site"], ["what-is-honestly-not-there-yet", "What is honestly not there yet"], ["the-thinking-behind-it", "The thinking behind it"], ["the-future-of-news-is-a-story-vault-not-a-paywall", "The future of news is a story vault, not a paywall"], ["sell-the-graph", "Sell the graph"], ["paying-the-fact-creator", "Paying the fact creator"], ["going-live-with-the-reading-meter", "Going live with the reading meter"], ["starting-a-pilot", "Starting a pilot"]], "i": 9}, {"u": "how-to/add-the-meter/", "t": "Add the meter to a page", "k": "page", "x": "Put the reading meter on your site: the element at the foot of each page, the balance chip in the nav, the JSON config written once by your build, the pinned import, the account pages, and the article feed the picks read.", "h": [["1-the-element-where-the-charge-happens", "1. The element, where the charge happens"], ["2-the-chip-in-the-navigation", "2. The chip, in the navigation"], ["3-the-config-once", "3. The config, once"], ["4-the-import", "4. The import"], ["5-the-account-pages", "5. The account pages"], ["6-the-feed", "6. The feed"], ["7-check-it", "7. Check it"], ["what-to-read-before-going-live", "What to read before going live"]], "i": 10}, {"u": "how-to/", "t": "How-to guides", "k": "page", "x": "One task each: add the meter to a page; make a reading-list link; open the newsroom as a persona; set up the subscribe lane; take a release and roll one back; run the tests; make a release.", "h": [], "i": 11}, {"u": "how-to/make-a-release/", "t": "Make a release", "k": "page", "x": "For maintainers: the rules while the files are frozen, the version file, cutting a release directory and its manifest, the checks, the pull request with a person and an agent reviewer, the deploy, the tag and the live check, then the consumers.", "h": [["the-rules-while-the-files-are-frozen", "The rules, while the files are frozen"], ["1-change-and-test", "1. Change, and test"], ["2-version-and-cut", "2. Version and cut"], ["3-the-pull-request", "3. The pull request"], ["4-merge-deploy-tag-check", "4. Merge, deploy, tag, check"], ["5-the-consumers", "5. The consumers"], ["what-never-happens", "What never happens"]], "i": 12}, {"u": "how-to/persona-link/", "t": "Open the newsroom as a persona", "k": "page", "x": "Persona links, persona pages and links.json: how a link opens the site as a founder, a journalist, a security lead, a builder or a board member, what a visitor persona is, and how a site defines its presets.", "h": [["the-links", "The links"], ["what-happens", "What happens"], ["defining-the-presets", "Defining the presets"], ["what-a-persona-does-afterwards", "What a persona does afterwards"]], "i": 13}, {"u": "how-to/reading-list-link/", "t": "Make a reading-list link", "k": "page", "x": "Send someone a set of articles as one link, by hand from the grammar or with the make page; what they see when they open it; how a site adds the two pages.", "h": [["with-the-make-page", "With the make page"], ["by-hand", "By hand"], ["what-the-recipient-sees", "What the recipient sees"], ["for-a-site", "For a site"]], "i": 14}, {"u": "how-to/run-the-tests/", "t": "Run the tests", "k": "page", "x": "The eleven test files, what each covers, how the harness serves a newsroom checkout and routes this host to the working tree, the three engines, which tests need Chromium, and how to run them against your own pages.", "h": [["set-up", "Set up"], ["run", "Run"], ["what-each-file-covers", "What each file covers"], ["in-ci", "In CI"]], "i": 15}, {"u": "how-to/subscribe-lane/", "t": "Set up the subscribe lane", "k": "page", "x": "How shares, subscriptions and notes reach a newsroom without a server: a key pair, a write-only lane in an encrypted vault on an SG/Send host, the contact file at /.well-known/, and reading the lane with the key alone.", "h": [["what-you-need", "What you need"], ["the-contact-file", "The contact file"], ["what-arrives", "What arrives"], ["reading-the-lane", "Reading the lane"], ["the-pieces-on-this-host", "The pieces on this host"]], "i": 16}, {"u": "how-to/take-a-release/", "t": "Take a release, roll one back", "k": "page", "x": "For a site that consumes the API: pin one release in one file, generate every URL from it, keep a copy of the manifest, check every page against it, and roll back by changing the line. The newsroom's procedure as the worked example.", "h": [["1-pin", "1. Pin"], ["2-generate-every-url-from-the-pin", "2. Generate every URL from the pin"], ["3-gate-it", "3. Gate it"], ["4-verify-the-live-host", "4. Verify the live host"], ["5-roll-back", "5. Roll back"], ["taking-a-new-release", "Taking a new release"]], "i": 17}, {"u": "index.html", "t": "A newsroom's reader, as an API", "k": "page", "x": "The reading meter, pay-after-you-read, personas, reading lists in a link, the reader's vault: the code a newsroom's reader runs, open source, served from one host, live on newsroom.sgit.ai and taking money.", "h": [["what-your-readers-get-what-you-keep-what-it-costs", "What your readers get, what you keep, what it costs"], ["add-the-meter-to-a-page-in-ten-lines", "Add the meter to a page in ten lines"], ["read-the-map-the-review-and-the-proof", "Read the map, the review and the proof"], ["what-is-live-today", "What is live today"], ["pay-by-depth-after-you-read", "Pay by depth, after you read"], ["a-newsroom-of-your-own", "A newsroom of your own"], ["from-me-to-you-in-a-link", "From me to you, in a link"], ["your-account-between-devices", "Your account, between devices"], ["how-it-works-in-one-picture", "How it works, in one picture"], ["open-source-and-why-that-is-the-point", "Open source, and why that is the point"], ["where-to-go-next", "Where to go next"], ["reference", "Reference"], ["how-to-guides", "How-to guides"], ["the-review", "The review"], ["the-articles", "The articles"], ["releases", "Releases"], ["for-agents", "For agents"]], "i": 18}, {"u": "docs/contracts/", "t": "The contracts", "k": "page", "x": "The fourteen contracts other sites, pages and agents program against: the meter config, a charged page, persona links, the reading-list link, article numbers, the return page, the export, the share, the envelope, the contact file, the wire's vault, events, a component, the import's rules.", "h": [], "i": 19}, {"u": "docs/state/", "t": "State, inputs and outputs", "k": "page", "x": "Where a reader's data lives (localStorage on the page's origin), everything that comes in, and every channel by which anything leaves the browser.", "h": [], "i": 20}, {"u": "review/", "t": "The map, and the review", "k": "engineering", "x": "Everything a reader runs on newsroom.sgit.ai, mapped before the move and reviewed line by line: the numbers, the eighteen findings as issues, the accepted gaps.", "h": [], "i": 21}, {"u": "review/map/", "t": "The map as a graph", "k": "engineering", "x": "The map of the reader code as a layered graph: the site, the pages, the views, the files, the contracts and the findings anchored to them.", "h": [], "i": 22}, {"u": "review/proof/", "t": "The proof of the move", "k": "engineering", "x": "The live site serves the same bytes before and after the move, by hash: every file, the frozen copies, and every page once normalised.", "h": [], "i": 23}, {"u": "versions/", "t": "Versions", "k": "engineering", "x": "Every version of this repository that landed on dev, newest first, with the reader-code release each one serves and what changed, in a line.", "h": [], "i": 24}, {"u": "releases/", "t": "Releases", "k": "engineering", "x": "Every release of the reader code served from api.newsroom.sgit.ai, its date, its notes, its manifest of paths and hashes, and the files that differ from the newsroom's bytes and why.", "h": [["v0.2.5", "v0.2.5 · 2026-10-15"], ["v0.2.0", "v0.2.0 · 2026-10-14"], ["v0.1.0", "v0.1.0 · 2026-10-13"]], "i": 25}, {"u": "articles/", "t": "The articles behind it", "k": "page", "x": "The newsroom.sgit.ai articles that designed, built and reviewed this API, curated for publishers, for the reader's own newsroom, and for the engineering.", "h": [], "i": 26}], "chunks": 1001, "what": "The search index of api.newsroom.sgit.ai, built by site/build.py from the pages it writes; ranked in the browser by this API's own search component."}
