The landing page says "open core" now, and this repo finally has a LICENSE - #1
Conversation
… reserved" The landing page told visitors Signetry was "Source-available" with a bare "© 2026" and no licence file anywhere in this repository. Both are now wrong: every integration surface is Apache-2.0, the engine is BUSL-1.1 with a 2030-08-31 conversion date, and LICENSING.md promises that a public Signetry repo without a LICENSE is a bug. This repo was one of those bugs. - LICENSE: Apache-2.0. It is a static page; there is nothing here to restrict. - index.html: § III is now "Open core. Installed from source." and its lead names both licences and the conversion date. The install tag reads "BUSL-1.1 · not on PyPI" instead of "© 2026 · not on PyPI", and the footer links to LICENSING.md. - .foot .rights had no `a` rule, so the new footer link would have rendered default-blue against a warm palette. Added one matching .foot nav a. - README: the repo page was blank. How to preview, what belongs here, and the two things this page is meant to survive — no JavaScript, and a narrow screen. Verified by rendering the page in headless Chrome and reading back the footer and § III crops, not just by grepping the source.
index.html has no build step, so every version on it is a hand-maintained claim. Four had drifted: core v0.6.0 -> v0.7.0 (registry row, hero ref line, and the install command) reviewer v0.1.2 -> v0.2.0 plugins — -> v0.2.2 The install command is the one that actually cost something: a visitor who copied it installed a release behind. And `plugins` printed an em dash, which everywhere else in this project means "not measured" — here it was standing in for "we forgot", which is exactly the substitution the project exists to prevent. `action @v1` and `eval v0.2.3` were already correct. `action` deliberately prints a moving major pin rather than its newest semver (v0.4.0) because that is how the Marketplace consumes it. reviewer is shown as v0.2.0 to match the convention the rest of the table follows. It also carries a `v1` moving tag and an action.yml, so `@v1` would be defensible; noted on the PR rather than decided here.
The four stale versions in the previous commit went unnoticed because nothing
checked them. This adds the check, as a stdlib-only script with no dependencies.
One rule per kind of value the page prints:
vX.Y.Z must equal the repository's newest semver tag, compared numerically —
sorting these as strings ranks v0.9.0 above v0.10.0.
@vn a deliberately moving major pin. The tag must exist; it is not compared
against the newest release.
— asserts no release exists, and fails if the repository has any tag. An
em dash means "not measured" everywhere else here and must not quietly
stand in for "we forgot".
docs not a version. Skipped.
The schedule is the part that matters. Drift here is almost never caused by a commit
to this repository — it is caused by another repository cutting a release, which fires
no event here at all. A push-only check would have sat green through all four of the
drifts it now catches. The push and pull_request runs only catch a bad hand-edit.
Two things learned building it, both encoded in the code:
The first version of the row parser used `href=...(.*?)<span class="rt">` with DOTALL.
A `Signetry/signetry` link *above* the table paired with core's cell, shifting every
repo/version pairing by one and dropping core's row entirely — so it reported three
drifts while silently not checking the fourth. Rows are now matched within a single
anchor. A checker that passes while checking nothing is worse than no checker.
Because that failure was silent, the row count is asserted rather than assumed: if
the markup changes so a row stops matching, the run errors instead of quietly
checking fewer claims. Both guards were confirmed against deliberately broken input
before being trusted — a moved href trips the count guard, a stray link outside the
table no longer shifts the pairings, and a row with no version cell is reported.
|
Pushed two more commits while auditing the page for this relicense. The page was making four stale claims (a2cbdc1)
The install command is the one that cost something real: anyone who copied it got a release behind. And
Nothing was checking them (1e7f630)
The schedule is the actual check, not the push trigger. Drift here is almost never caused by a commit to this repo — it's caused by another repo cutting a release, which fires no event here at all. A push-only check would have sat green through all four of these. Push/PR runs only catch a bad hand-edit. Two things worth flagging, because both are the failure mode this project cares about: The first version of the checker was quietly broken. The row parser used Because that failure was silent, the row count is now asserted rather than assumed. If the markup changes so a row stops matching, the run errors instead of checking fewer claims. Both guards were confirmed against deliberately broken input before I trusted the green: a moved One decision for youI set Both pass the checker ( Also note this repo had no CI at all before this — |
reviewer ships an action.yml and carries a v1 moving tag, so the useful thing to print is the ref you would put in a workflow — not its newest semver. Same reason the action row prints @v1 rather than v0.4.0. The checker treats @vn as a deliberately moving pin: the tag must exist, but it is not compared against the newest release. So this stays green while reviewer keeps cutting semver tags underneath v1, which is the point of a major pin.
The landing page told visitors Signetry was "Source-available" with a bare
© 2026, and this repo had noLICENSEfile at all — whichLICENSING.mdexplicitly calls a bug.What changed on the page
© 2026 · not on PyPIBUSL-1.1 · not on PyPI© 2026 Binay DalaiLICENSING.md; states contributors keep the same licence rights as everyone elseLICENSEis Apache-2.0. It is a static page — there is nothing here to restrict.A styling bug caught before it shipped
.foot .rightshad noarule, so the new footer link would have rendered in default browser blue against a warm ink/wax palette. Added a rule matching.foot nav arather than papering over it with an inline style.README.md— the repo page was blankZero-dependency single-file site, so: how to preview it (
python3 -m http.server), what belongs here (presentation only — governance behaviour goes upstream tocore), and the two things this page is meant to survive that are easy to break by accident — no JavaScript, and a narrow screen.Verification
Not just grepped — rendered. Headless Chrome at
1440×9000, then cropped and read back both changed regions:BUSL-1.1 · not on PyPItagPlus an
HTMLParserpass over the file: unbalanced: none, unclosed at EOF: none, and the new CSS rule confirmed inside<style>.Not fixed here — reported instead
The page shows
core@v0.6.0in the hero ref line, the install command, and the registry table. Core is at v0.7.0 (the Homebrew formula pins v0.7.0). Out of scope for a relicense PR, but worth its own one-line change.The new footer link points at
LICENSING.md, which does not exist onmainyet — it lands inSignetry/signetry#31. Merge that first.