Week of September 6 – September 13, 2026
The Release Went Out, the Fix Stayed Home
By Kin Lane · Sent September 14, 2026
This is the sixth issue of The Specification Layer.
This newsletter window: September 6 through September 13. Thirty-two specification repositories and twenty-five feeds, all read clean for the sixth consecutive week — no source errored. 139 pull requests merged. 10 releases cut. 26 posts published. Nineteen of the thirty-two specifications did not move at all — the highest quiet count I have recorded. Separately, the two release-path dependencies I added last week merged 15 more.
Three weeks ago I made a prediction and said I would be graded on it. Time to collect.

The Lead: OpenAPI 3.2.1 Shipped — and the Defect Could Not Ride Along
On August 31 I wrote that the v3.2.1 milestone had been 10 of 10 closed for two weeks against a September 30 due date, and that either it ships in the next four weeks or a finished board sits unshipped and I report that instead.
OAS 3.2.1 released September 10, twenty days early. The first OpenAPI release in almost a year — 3.2.0 shipped September 2025.
And the chain that got it there is the chain this newsletter has been reporting week by week, which is the most satisfying thing I have got to write since I started:
| Sep 3 | build-infra cuts v1.0.0, its first tag, live on the TDC call |
| Sep 6 | SpecRef comes back after nine days down, unblocking bibliography resolution |
| Sep 8–11 | build-infra v1.0.1 and v1.0.2; OpenAPI bumps to each |
| Sep 10 | 3.2.1 ships |
Three weeks of infrastructure work that produced no specification text at all, and then a release. I spent two issues reporting that work as it happened without knowing whether it would pay off. It paid off.
Now the part I have to be honest about
Last week I reported that the OpenAPI validation schema’s version pattern used \d, which under Python and .NET regex engines matches any Unicode digit — so openapi: 3.2.৪, written with BENGALI DIGIT FOUR, validates as a legal version string. @karenetheridge fixed it on August 31 in #5529 and #5530, changing \d to [0-9]. I noted the published schemas still carried the defect.
A release shipped nine days later. So I went to check whether the fix rode along.
It did not. I fetched every 3.2 schema the OAI publishes this morning:
| Published schema | openapi pattern |
|---|---|
oas/3.2/schema/2025-09-17 |
^3\.2\.\d+(-.+)?$ |
oas/3.2/schema/2025-11-23 |
^3\.2\.\d+(-.+)?$ |
v3.2-dev branch (unpublished) |
^3\.2\.[0-9]+(-.+)?$ |
Here is the part that makes this interesting rather than a gotcha. Before writing a word about it I went and read the OAI’s own contribution rules, because the standing rule in this newsletter is that when the published check comes back yes, the reporting bar goes up. CONTRIBUTING.md says:
Schema changes are made on the same branch, but can be released independently. … Patch releases cannot contain changes that require a schema update.
And the patch-release criteria are editorial changes and “clarifications or additions that do not change the meaning of the specification.”
So 3.2.1 could not have carried the schema fix. Not an oversight, not a miss — a documented policy working exactly as written. The specification prose and the machine-readable schema ship on separate tracks, which is why the OAI publishes dated schemas (2025-09-17, 2025-11-23) that do not line up with specification version numbers at all.
The consequence is still real, and it is worth naming precisely: a defect can be fixed in the repository, and a release everyone reads as “the new version” can go out, and the machine-readable artifact your validator actually downloads is unchanged. If you validate OpenAPI documents in Python or .NET today, against the current published 3.2 schema, 3.2.৪ still passes. The fix exists. It is not where your tooling looks.
That seam — between the document humans read and the schema machines fetch — is invisible from the outside, and it is the kind of thing I would never have found by reading a release announcement.
The vote took three and a half minutes
Not a criticism, just a fact worth recording, because the OAI’s written process has real numbers in it. From CONTRIBUTING.md: “Patch-level releases require majority approval by TSC members. (Max voting period 3 days).”
PR #5549, “Release for 3.2.1”, from @lornajane:
- created 16:51:33
- approved by @miqui, @mikekistler and @karenetheridge — all three at 16:52
- merged 16:55:01
Three minutes, twenty-eight seconds from open to merged. Three days is a ceiling, not a floor, and a majority arrived inside a minute, so nothing here breaks the written rule. It is simply a striking thing to see next to the other release vote that happened in the same organisation the same week, which took a day, cleared a higher bar, and still has not shipped. That one is below.

🎙 From the Room: Overlay Bi-Weekly, September 8
Second week of this section. The Overlay Specification had been in The Quiet Ones for five consecutive weeks with a milestone board that had not been touched since December 2025. This week it merged six pull requests, every one of them by a person and not a bot. I sat in on the bi-weekly to find out what changed.
Overlay is deliberately the guinea pig. The group’s own framing, from the call: there was general agreement in the broader community to use Overlay as the test subject for the whole new build infrastructure, on the reasoning that it is a smaller group than the main OpenAPI project and can absorb the breakage. That is why Overlay’s sudden burst of activity is entirely plumbing — #379 “Prepare for new Build Infra” from @lornajane removes every previous script and dependency in favour of the shared package, and @baywet’s #394 follows it through CI. The milestone boards were not touched at all — I checked the stored updated_at values against last week’s harvest and they are byte-identical: Release 2.0 last modified December 16 2025, Release 1.2 on July 28, Release 1.3 in May.
Six merges, zero specification change. The repository woke up; the specification did not.
They merged it live and then built the document on the call. #379 went in during the meeting, and the release was then rehearsed locally end to end — yarn install --immutable, yarn test, yarn validate-markdown, yarn build — and it worked. The reaction, and I wrote this one down because it is the whole argument for the three weeks of infrastructure work: “we just built that everybody. This is fun. Why don’t we do this every week?”
And then the sentence that explains why specification releases are so consistently painful. Paraphrasing closely: Overlay deploys once a year or less, so something always breaks; the old process was a sequence of scripts where, when one failed, you had to go find the script and work out what it did; and releases only ever happen live on a video call, at the end of a working day, with everyone watching. “I’ve never had a good experience doing this.”
That is not a complaint about tooling. It is a structural observation about the specification layer that applies far beyond Overlay: a release path exercised once a year is a release path that is broken every time you use it. Every project in this newsletter that releases rarely has this problem, and none of them can see it, because the failure only appears on the day it matters most.
Two smaller things worth recording. Overlay does not have the automated main→dev→version branch sync that OpenAPI uses — it is an available option the project has deliberately not enabled, on the grounds that it was a nightmare on the bigger repo. And the new build makes Unix assumptions: a Windows participant found things breaking and planned to retry under WSL, with the group leaning toward simply telling Windows contributors to use WSL.
The vote that has not closed. At 15:53 during that call, @lornajane opened issue #392, “VOTE: Approve release of OpenAPI Overlay Specification v1.2”. @baywet noted immediately that a minor release needs two thirds of the TSC — four people. Five approvals landed within a day: @lornajane, @earth2marsh, @mikekistler, @miqui and @ralfhandl.
The issue is still open and 1.2 has not shipped. @mikekistler’s approval came with a condition: he wants to hear the group’s thinking on discussion #5538, “Terminology: relative URI reference”, before anyone pushes the button.
So the Overlay 1.2 milestone that has read 7 of 7 closed through six consecutive issues of this newsletter is now, genuinely, one terminology discussion away from shipping. That is the closest it has been, and it is the first time I can point at what is actually holding it.
Method note, same as last week: quotes are from my notes of the call, speaker attribution is reconstructed from content rather than captured speaker by speaker, and anything carrying a claim was checked against the repository record — the vote, the approvals, the merged pull requests and the milestone timestamps above are all links you can open. The group also discussed whether its written release-approval terms match how releases actually run, and expects to revise that text to be more workable. I am reporting that they are revisiting it, and not characterising any particular release, because that is what I can evidence.
The split
| Who merged it | Count | Share |
|---|---|---|
copybara-service[bot] |
29 | 21% |
dependabot[bot] |
12 | 9% |
renovate[bot] |
8 | 6% |
oai-spec-publisher[bot] |
7 | 5% |
github-actions[bot] |
1 | 1% |
| All bots | 57 | 41% |
| Actual people | 82 | 59% |
Six readings: 59% machine, 54%, 72%, 59%, 36%, 41%.
Last week I warned that the human-majority headline was an artifact of adding two young, fast-moving repositories. Same split this week, and the picture is better:
| Merges | Human | Human share | |
|---|---|---|---|
| TRACE + PDPP | 44 | 41 | 93% |
| The other thirty | 95 | 41 | 43% |
| All thirty-two | 139 | 82 | 59% |
The established layer went from 32% human to 43% — its best reading in three weeks, and this time it is real work, not a reporting artifact. Overlay merged six and all six were people. FDC3 merged fourteen with ten by people. OpenAPI, OpenTelemetry and CALM all landed genuine human changes. The layer came back.

📐 The Description Layer
What is actually in 3.2.1, from the release notes, because “no significant changes” undersells it: corrections to the table of Style Examples used in parameter encoding; new notes on prohibited in/style/explode combinations (in: cookie, style: form, explode: false with arrays or objects; style: form, explode: true with arrays or objects in encoding objects); corrections to how encoding objects work including prefixEncoding and itemEncoding; clarification of how paths are matched when a template variable contains a /; and an ABNF for the encoding/<name>/contentType field. Editorial in the governance sense, load-bearing if you implement parameter serialisation.
JSON Schema merged nothing at all. First fully silent week I have recorded from that repository, and it ends a five-week run in which @RedZapdos123 was the only human merging there. The action is at the IETF: draft-ietf-jsonschema-json-schema is at revision -03, dated August 26, with an informational RFC expected around 2027.
Arazzo merged five and all five were bots — three publisher syncs and two dependency bumps. Every piece of 1.2’s actual content remains an open pull request: SOAP has been open since July 27, alongside GraphQL, Protocol Buffer RPC and actor-in-the-loop.
AsyncAPI merged one dependabot bump, its 3.0.0 board frozen at 25/28 for a sixth week. GraphQL merged nothing. Moonwalk merged nothing — sixth consecutive week, last merge March 31 2025. There is still no OpenAPI 4.
Protocol Buffers merged 26, of which 23 were copybara, and the substance is memory-safety hardening: an in-place map reallocation that halves peak memory when it triggers, an overflow check in bounded ZeroCopyInputStream parsing, a buffer-underflow guard in GzipInputStream::BackUp, and 0-length packed field handling in Java Lite. gRPC shipped v1.84.0 on September 11.

📡 Events, Telemetry and the Data Plane
OpenTelemetry stabilised something, and the three-week arc is the model I wish every specification followed.
- August 24 — #5265 clarified
maxExportBatchSizebehaviour on the Periodic exporting MetricReader, explicitly “based on feedback and findings from prototype implementations.” - September 11 — #5291 marks it stable, and the pull request lists the three prototype implementations that merged in between, in Go, Java and JavaScript.
Ambiguity found by implementers, clarified in the document, built three times independently, then declared stable with the evidence attached. Three weeks, in public, with links. That is what a healthy specification loop looks like and it is rarer than it should be.
A requirement got relaxed, deliberately. #5294 from @carlosalberto makes global Propagators recommended rather than required, bringing them in line with global TracerProvider, MeterProvider and LoggerProvider. The PR states plainly that this is not considered a breaking change because the specification is relaxing a hard requirement, so existing implementations keep working. A body that can loosen a MUST on purpose, and say why, is a body paying attention to its own consistency.
#5280 also lets language SDKs expand the scope of the service resource detector, and @cijothomas and @herin049 filled in more Python compliance-matrix entries.
And OpenTelemetry is asking for help on a genuinely hard problem. Their September 11 post on environment variable context propagation puts it well: a trace does not always cross a network boundary. A workflow runner starts a shell, the shell launches a build tool, the build tool starts test processes. There is no HTTP header to carry context through that chain. If you run CI at any scale, this is the specification to go and read.
OTLP merged one renovate bump. CloudEvents, OpenMetrics, xDS and Envoy merged nothing — CloudEvents stable at 1.0.2 since 2022, finished rather than dead, as always.

🔐 Identity, Policy, Supply Chain
The EU Cyber Resilience Act’s first hard deadline landed on September 11, and the specifications that encode compliance evidence merged nothing.
OpenSSF published a community guide to the September 11 deadline for manufacturers and a practitioner’s guide recap noting vulnerability reporting obligations to ENISA arriving that day, with the full weight of the law in December 2027. The Linux Foundation published how OSPOs are preparing. This is the sixth consecutive week OpenSSF has led with CRA content.
In the same seven days: SPDX, OCI Image, OCI Runtime, OCI Distribution, in-toto Attestation, OSV Schema, SLSA, TUF and Notary Project all merged nothing. Sigstore merged one dependabot bump. Nine of the ten supply-chain specifications recorded no change in the week the regulation that makes machine-readable software inventory mandatory hit its first enforcement date.
I want to be careful about what that does and does not mean. These are mostly mature specifications — SPDX is an ISO standard, in-toto and SLSA shipped major work in August — and a quiet week is not a dead project. Compliance on September 11 runs on what was already published, not on what merged that week, and that is arguably the system working. But if you expected a regulatory deadline to show up as a burst of specification activity, the honest answer from the repository record is that it shows up as blog posts and guidance, and not one line of specification text.
SPDX’s 3.0.2 milestone remains at 33/38 against a 2026-04-30 due date, now more than four months past, for a sixth week.
TRACE merged 27 and 26 were people, and the shape of the week is a specification being attacked by its own maintainers: reject a malformed signature field with the documented error rather than a crash, validate signed decision enums, require cnf.jwk confirmation keys to actually carry key material, add non-JCS signature rejection controls. Two stand out for intellectual honesty. #310 states that profile floors are specification choices, not regulatory derivations — a spec explicitly declining to claim its thresholds come from law. And #315 corrects a “can’t fake hardware” claim in its own sandbox adapter documentation. Walking back your own security marketing inside your own docs is a good sign.
PDPP merged 17 and cut six releases, v1.11.1 through v1.12.0, though the week was mostly site and packaging work rather than specification text.
SPIFFE and OpenFeature merged nothing.

💹 Financial Services Data Standards
FDC3 came back, and so did the maintainer I have now written about three times.
Fourteen merges, ten by people. @julianna-ciq — who merged 28 in one week in August, then 1, then nothing for two weeks — is back with five: conformance tests for addEventListener, tests for omitted metadata in proxy requests, validation of retained context response invariants, an ESLint 10 upgrade, and a trace-ID fix in the example apps.
I have amended my “FDC3 rests on very few people” thesis twice now. The third data point says the load rotates rather than rests: this week @Roaders landed #1983, making the context argument of raiseIntent optional, which is his second normative interface refinement in three weeks after newInstance. Apps that raise an intent only to get a result no longer have to pass fdc3.nothing explicitly; the proxy substitutes it, so the wire protocol is unchanged. Schema, interface, reference docs and conformance tests moved together again.
Governance moved too: @Yannick-Malins removed himself from MAINTAINERS.md and retired the FDC3 Identity & Security Working Group meeting. A working group being formally wound down is worth noting; it is the kind of change that never makes an announcement.
The FDC3 3.0 board went from 29/42 to 32/48 — three closed, six added. Project news, not specification news.
CALM shipped cli-v1.59.0 — the sixth consecutive week its tooling has released while the CALM schema has not changed. But this week the tooling is doing something interesting: @jpgough-ms landed a five-slice run adding OIDC-driven auth to calm-hub with VS Code plugin login, a GitHub API response cache and observability dependencies, and @rocketstack-matt shipped calm-lab, an in-browser learning lab running on the real CALM engine rather than a simulation. A standard that gives you somewhere to learn it without installing anything is doing adoption work most specifications never attempt.
🏛 From the Foundations
The SpecRef governance thread moved, and it is going somewhere. Last week I said I would follow issue #959 — the maintainer asking who should own the bibliography service’s domain, hosting and credentials long term. Two substantive replies arrived inside this window. @xfq proposed designating a legal entity to hold the assets — domain, cloud accounts, CDN, trademarks — with a separate SpecRef steering committee, and noted the entity could be W3C or another candidate. Then @ianbjacobs: “I would like the nascent W3C OSS program to be able to accommodate the governance needs of a multi-SDO community. I’d love to have a discussion about needs/requirements.”
That is a concrete institutional offer to host a shared dependency for a community that spans multiple standards bodies, made in public, ten days after the outage. Worth following to a conclusion.
SpecRef itself merged eight pull requests, all operational hardening — a /health endpoint for Clever Cloud’s checks, deployment documentation, structured logging with pino “so that whatever takes the process down leaves a trace”, configurable IP filtering, serving the full 27MB bibliography dump as a gzip stream instead of building it as one enormous string, caching and pre-compression, and a robots.txt confining crawlers to /bibrefs. A service that spent years as somebody’s side project got a fortnight of real operations work because it fell over. That is the usual price.
CNCF graduated Karmada at KubeCon Shanghai, announced September 7 — multi-cluster, multi-cloud Kubernetes orchestration reaching production maturity. CNCF also welcomed new silver members including SoftBank and Crusoe, and China Merchants Bank won the end-user case study contest for lifting accelerator utilisation from 35% to over 60%.
Mandy Chessell closed out her four-part Egeria series, and LF Decentralized Trust shipped Hyperledger Cacti v3 for cross-chain interoperability.

🤫 The Quiet Ones
Nineteen of thirty-two — the highest count in six weeks of doing this, and almost the entire increase is the supply chain going dark at once. The series now reads 12, 19, 16, 13, 15, 19.
Finished, not dead — stable, shipped, carrying load: CloudEvents (1.0.2 since 2022), OCI Image (last merge 2017), OCI Runtime, OCI Distribution, TUF, Notary Project, xDS.
Quiet and worth watching: JSON Schema (first silent week, and the work has moved to the IETF), SLSA and in-toto (one and two weeks after major landings), SPDX (second silent week, overdue board), OSV Schema, SPIFFE, OpenFeature, OpenMetrics, GraphQL, AsyncAPI community.
Silence that is the answer to the question I get asked most: Moonwalk, sixth consecutive week.
Overlay is not in this list for the first time since I started counting — though as the section above explains, what it merged was build tooling, not specification.

📡 Channel Health
All twenty-five working feeds returned for the sixth consecutive week. Volume recovered to 26 items from 17.
This week’s finding is a good one. OpenAPI shipped its first release in almost a year, and its own announcement feed said nothing. openapis.org/feed has been silent since July 22 — eight weeks — and 3.2.1 came and went inside that silence. If you follow the OpenAPI Initiative through the channel it publishes for exactly this purpose, you do not know there is a new version of OpenAPI.
Protocol Buffers, re-verified this morning: protobuf.dev/news/v34/ returns 200; /news/v35/ and /news/v36/ both 404. Four consecutive weeks.
Unchanged since issue one: Sigstore publishes no feed on any path, Envoy’s blog host does not resolve, and OpenSSF’s working feed remains /feed/ while /blog/feed/ and /blog/rss/ answer 200 with zero items.
The dormancy leaderboard, longest first: in-toto (May 2023) · CloudEvents (July 2024) · Notary Project (June 2025) · OCI (April 2026) · SLSA (May 2026) · gRPC (June 2026) · GraphQL (June 2026) · Prometheus/OpenMetrics (June 2026) · Protocol Buffers (July 2026) · OpenAPI Initiative (July 2026) · AsyncAPI (August 2026).
How This Was Made
Every number above came from one harvest run against the GitHub REST and GraphQL APIs and twenty-five feeds, over September 6 to September 13, 2026. Merged pull requests are counted by merged_at inside the window. Bot attribution is by author login. Milestone percentages, descriptions and updated_at timestamps are GitHub’s own values, read live and stored week over week — which is how I can say Overlay’s boards were untouched rather than merely unchanged.
Where this issue makes a claim about what a pull request did, I opened it and read its file list, diff or body. The schema finding is every published 3.2 schema fetched from spec.openapis.org this morning and compared against v3.2-dev, then read against the OAI’s own CONTRIBUTING.md before I wrote a sentence about it — the rule that a patch release cannot carry a schema update is theirs, quoted, and it is the reason the story is a seam and not a failure. The 3.2.1 vote timings are the pull request’s creation, review and merge timestamps. Overlay’s vote, its five approvals and its open condition are issue #392.
Meeting material is from my notes of the Overlay bi-weekly on September 8. Speaker attribution is reconstructed from content rather than captured speaker by speaker, so anything carrying a claim was corroborated against the repository record; where the group’s discussion could not be evidenced against an artifact, I have described what they are doing rather than characterised anyone’s conduct.
Standing rules, applied throughout: a merge to a specification repository’s default branch is not a change to a published specification — check which artifact it lands in and whether that artifact is published. Milestones and planning boards are project news, never specification news. The registry is a source of findings, never a boundary on them. And report the specifications’ dependencies, not just the specifications: OAI/build-infra and specinfra/specref merged 15 pull requests between them this week and are counted separately from the 139, because a build tool and a bibliography service are not specifications, but either one can stop a release dead.
