myfeeds.sgit.ai v0.1.8

myfeeds.sgit.ai / Provenance

ai-generated, unreviewed what this means

Provenance

Release history

Every release of this site: the version, the date, what it did, and what an earlier version got wrong where one did. A version log that reads as an unbroken sequence of improvements is a version log that is lying.

Each entry is also served as data at /versions/<version>.json, indexed by /versions/index.json, so a script can check a claim about a release without rendering a page. The version badge in the navigation links to the entry for the version you are looking at, not to this page generally.

v0.1.8 · 2026-09-15 · as data

the image count in the last release was three different things added together, and the renderer could not document its own syntax

v0.1.7 reported 70 images as missing and said re-running the archiver would fix it. Both halves were wrong. Of the 105 images the recovered posts reference from the dead domain, 89 are here and 16 were never captured by the Internet Archive at all — re-running finds nothing. The other 51 were never part of that site: the persona briefings embed screenshots from the original publishers' own image hosts, which no archive of mvp.myfeeds.ai could ever have held. Three different things were being counted as one, and the one that made the number look bad was the group that was never a loss.

Corrects. v0.1.7's release note and board card 010 both said 70 images were missing and that a re-run would recover them. The honest figures are 89 recovered, 16 never archived and 51 that were never this site's to recover. The wrong text stays on the card with the correction above it. Separately, two renderer defects found by this site's own prose: a code span containing markdown had that markdown rewritten — a board card explaining that image syntax had never been handled turned its own example into a link and broke the build — and the check that catches literal markdown then flagged the correct rendering of a code span as a defect. A renderer that cannot document its own syntax is one that will quietly rewrite any example anybody ever writes in it.

Changes

v0.1.7 · 2026-09-15 · as data

the recovered posts get their images back, which took fixing two unrelated bugs and resolving a conflict with the authoring contract

Every architecture post in the library had been showing raw markdown where its images should be, since the recovery. Two independent causes. The archiver had been run with --skip-assets, so no image had ever been downloaded. And the inline-markdown renderer had never handled image syntax at all: its link rule required non-empty link text, and ![](url) has none, so the pattern matched nothing and the source fell through to the page. Neither failed loudly; both were visible only to a human looking at a page.

Corrects. A decision from v0.1.3. The archive pages said images were 'left exactly as written rather than silently repaired, because a rewritten archive is no longer evidence'. The principle is right and the application was wrong: it produced an archive nobody could read, which is not evidence either. Images are now served from this repository with the original URL kept in each image's title — rewritten AND recorded. Separately, pointing an <img src> at the local copies broke the authoring contract, because a declarative reference to a vault path 404s inside a sandboxed frame before the bridge installs; the validator caught it before it shipped. Images are emitted as links that JavaScript upgrades, which passes the contract, works in a vault, works on the static mirror, and degrades to a working link with scripting disabled.

Changes

v0.1.6 · 2026-09-15 · as data

the site says who wrote it, the corpus grows to three articles and starts asking questions back, and the ontology's first rule becomes that it does not have to be right

Three changes that belong together. The ontology's first rule is now that it does not have to be correct — it has to be wrong in ways a human can see and correct — which outranks every other rule here and changes what the system is for. Every page now states that it was written by a model and not yet read by a person, at the top rather than in a footnote, because a site arguing that automated selection must be checkable cannot itself be an unmarked pile of model output. And the corpus grew from one article to three, which was immediately enough for it to start contradicting its own ontology.

Corrects. Two things this release found by having more than one article. With one article the audience ontology looked serviceable; with three, the founder receives everything and seven concerns have never fired once. Neither is necessarily a defect — a concern about funding programmes cannot fire on a newsroom that has not published one — and that ambiguity is exactly why they are published as questions for a human rather than auto-corrected. Separately, review.py's first diagnosis named the wrong culprit: a max-of-counts heuristic pointed at the concern that fires most, which is not the one that fired on the article that should not have been delivered. It now reports the whole distribution and lets a reader find it.

Changes

v0.1.5 · 2026-09-15 · as data

the six audiences, the two ontologies and the join between them — and the first run of the formula finding three defects in its own audience side

The machinery the site had been arguing for now exists as data and as a runnable tool. Six audiences defined as roles with a stated appetite rather than a tone of voice, each converting news into a different currency; an article ontology and an audience ontology, every verb carrying a named inverse that reads as a sentence both ways, with the banned verbs listed and the reason given; and join/v1, the published formula where the two meet, executed by admin/tools/join.py rather than described. The worked example is a real verified article from pt.newsroom.sgit.ai, and the debug view shows every concern tried, not only the ones that fired.

Corrects. Nothing from an earlier release, but the first run of join/v1 corrected three things in the audience ontology written hours earlier, and the page shows the before and after rather than the fix alone: a concern matching on Source fired for every article that freezes its sources and put the security practitioner at the top of a story about stage names at a startup event; one entity satisfying two overlapping concerns scored twice and put the executive above the founder on an event story; and a concern called 'something more likely or more expensive' fired on any event at all. Concerns can now be qualified, rank counts each entity once, and the practitioner is correctly withheld.

Changes

v0.1.4 · 2026-09-15 · as data

a committed .pyc broke the staleness check on every push, which is the gitignore fix from v0.1.0 coming back around

v0.1.3 validated clean, committed clean, and failed CI. The cause was a Python bytecode cache file tracked in the repository: v0.1.0 had to negate the Python .gitignore's build/ rule to track the generator at all, and the negation un-ignored __pycache__ along with it. Python rewrites those bytes on every import, so CI's 'a fresh build must be byte-identical to the committed tree' check failed regardless of what the release contained. The gate behaved correctly — deploy is gated on validate, so nothing shipped and the live site went on serving v0.1.2 rather than half a release.

Corrects. v0.1.3 was announced as shipped. It was committed and pushed; it never deployed, and the site served v0.1.2 throughout. The failure was in the repository's own hygiene rather than in anything the release changed, which is the least interesting kind of outage and the easiest to repeat: the assertion added here exists so the next one fails at the desk instead of in CI.

Changes

v0.1.3 · 2026-09-14 · as data

the site finds out what MyFeeds actually is, recovers the MVP that proved it, and gains a back office to keep the evidence in

Versions v0.1.0 to v0.1.2 argued that the valuable half of a feed reader is the record of what you read. That was written with no access to any MyFeeds source material and it was wrong about the project it claimed to describe. MyFeeds is a pipeline that decomposes one opaque LLM call — read fifty articles, pick five for this persona — into four inspectable stages with a semantic knowledge graph between them, so a recommendation carries a provenance trail instead of a shrug. The site now argues that, from the primary sources: fifteen posts recovered out of the Internet Archive, the open-source engine, and the investor material. The four superseded pages stay up with a banner rather than being deleted.

Corrects. The whole argument of v0.1.0 through v0.1.2. It was a plausible thesis about feed readers in general and not a description of this project, and it was asserted on a site named after the project. The pages stay up, marked, because deleting them would remove the only evidence that this site corrects itself rather than quietly rewriting. Separately: v0.1.2's validator reported 19 pages passing while the build produced 38 — it maintained its own idea of what existed. It now reads the build's published inventory.

Changes

v0.1.2 · 2026-09-14 · as data

the site went live, so the three pages that said it had not are corrected above the claims rather than instead of them

v0.1.1 shipped the deploy workflow and said, in its own release note, that it made the site deployable rather than deployed. It deployed it. Switching GitHub Pages on for this repository — which is what the new deploy job does with actions/configure-pages and the CNAME file — was the missing step, and the certificate that had never been issued for the host was issued within minutes. verify-live.sh reports myfeeds.sgit.ai serving v0.1.1. This release corrects every page that claimed otherwise, closes board card 004 with what actually blocked it, and records one bookkeeping gap the deploy left behind.

Corrects. v0.1.1's release note ends 'this release makes the site deployable; it does not make it deployed', and v0.1.0's says nothing is served yet. The first was wrong within ten minutes of being written — the deploy job it added is precisely what made the site deployed. Both entries stay as written; this is the correction above them.

Changes

v0.1.1 · 2026-09-14 · as data

the site gets the deploy workflow every other *.sgit.ai site has, and the four version and provenance practices it was missing

v0.1.0 shipped a build gate and called it done, which was wrong: it never published anything. This release replaces it with the estate's shared deploy-pages pipeline (validate, tag, publish to GitHub Pages) taken from the sibling sites rather than reinvented, moves version ownership to admin/build/version.txt so that workflow can read it, and closes four gaps against sgit.ai/docs/guidance: the version badge is now a link to that version's own details, versions are served as data, app.json denies by default with its reason written down, and every page is one click from the bytes it was rendered from.

Corrects. v0.1.0 described a four-step release ending in a live check, and shipped neither a deploy workflow nor anything to check with. The description was accurate about the intent and wrong about the repository.

Changes

v0.1.0 · 2026-09-14 · as data

the argument, the read-state contract, and the team that runs it

First release. The thesis that feeds are replaceable and reading is not, read-state/v1 published as a contract before any implementation, the vault layout, the build order, and the seven-role dev team the site is run by — generated from the ROLE.md files rather than described beside them. Nothing is served yet: the subdomain does not resolve (board card 004).

Changes

The log lives in VERSION_LOG in admin/build/build_pages.py and is owned by the Historian; the version number itself is owned by admin/build/version.txt, because that is the file the deploy workflow shared across the *.sgit.ai sites reads. The version in the navigation, the entry here, and the version the live site serves have to agree — DevOps exists because on two occasions elsewhere in this estate the first two agreed and the third did not.