v1.16.0
1.16.0 - 2026-08-22
The evidence this Standard rests on gets an address - and the release found that some of it was resting on nothing.
Do you need to do anything?
No. No check was added, none was removed, the spine stays at 34, and the Standard stays at 0.15. All six reference-family plugins were graded before and after. Every one came back byte-identical.
Installing changes nothing either way. Files moved inside the repository. The npm tarball ships the gate and STANDARD.md; the plugin install carries the whole tree. Both paths carry them as before.
One exception, if you pin the GitHub Action to a tag. action.yml's example now reads @v1.16.0. Pin a released tag or a commit sha - the example is an example, not a recommendation to track.
One thing worth re-reading
If you used the README's tier model to decide what Bronze requires, read it again. It described the Universal tier as U1-U9, U11-U13, 12 checks. The tier actually ships 16: U1-U9 and U11-U17. Six lines above it, the same section stated the spine correctly, which is how the error survived - the wrong count and its wrong list agreed with each other perfectly.
Four Universal checks therefore had no description anywhere in the README:
U14agent-restricted-fields- a plugin-shipped agent declares none ofhooks,mcpServersorpermissionMode; Claude Code refuses those on plugin-shipped agents for security reasons, so an author who writes one gets no signal it was ignored.U15agents-dir-registerable- every.mdunderagents/is a registered subagent, because the runtime loads every file it finds there. A strayREADME.mdships as a live phantom subagent.U16metadata-placement- a governance key sits undermetadata, not at the frontmatter top level where nothing reads it. The vocabulary itself stays open; only placement is checked.U17catalogue-manifest-shape- amarketplace.jsonyou ship parses, carries apluginsarray, and does not mix skill sources with plugin sources.
If your standard pin is 0.15, all four already apply to you as errors. Nothing about the gate changed in this release; only what the README told you about it.
Eight public files carried a stale version of that list. All are corrected, and scripts/check-doc-enumerations.mjs now expands every check range in the documentation and compares it against the registry, so prose and gate cannot drift apart again without the suite failing.
Why this release exists
The tier ladder is defined by what Claude Code and Codex support. That makes every tier boundary a claim about software this project does not control.
Those claims used to live scattered across one skill's private folder and three separate directories. No artifact recorded which vendor fact any boundary actually depended on.
What is new
A foundation/ folder holding what the Standard rests on, in three layers: verified first-party sources, the machine-checkable claims, and the conclusions drawn from them. Every source record carries what was read, which version, when, and by what method - because "confirmed on the 19th" describes a page-read and a live experiment identically while distinguishing neither.
tier-basis.md, which records, per tier boundary, the vendor fact it depends on and whether that fact is pinned anywhere. A boundary with no evidence gets a row reading unverified, never an omitted row. An absent row reads as "no boundary here"; an unverified row reads as "a boundary nobody has grounded", which is the finding.
What it found, stated plainly
Every pinned claim in this repository sources from a Claude Code page. There is no pinned claim for any Codex fact and none for any Cowork fact - so the Convergent tier, which is defined as what both agents support in different formats, has pinned evidence for one of them.
The Codex hook event list in our capability matrix was missing an event. The vendor documents eleven; this repository recorded ten. Found by opening the reference and counting.
Two shipped checks accommodate Cowork behaviour the vendor documents nowhere. They are almost certainly correct and they have no expiry, so if that behaviour changed, nothing here would notice.
None of these is fixed in this release. Each is filed, because a boundary resting on nothing is a finding to record, and moving a tier is its own decision with its own migration window.
On the review
Two adversarial waves, a four-lens panel, and a direct probe of the panel's own fixes returned more than thirty findings between them. Several were defects in the fixes for earlier findings - including one that would have blocked every future release the moment a vendor re-rendered a documentation page.
That is recorded in full rather than summarized away, in the release packet's findings ledger, and it is the reason this release took the shape it did.