docs(okf): run the §12 re-check against Google OKF v0.2 — three corrections, floor unchanged
§12 says "When Google bumps OKF, each plugin re-checks conformance." Google bumped 2026-07-25; commons ruled the trigger catalog's to pull and the plugin owners' to perform. This is the pull. Held: upstream has NOT moved (git ls-remote answers 3fcbb9f, identical to the mirror the 0.3 round read; SPEC last touched 2026-07-24 in 780fe9d). All seven upstream anchors resolve exactly, quotes verbatim. The §3 floor is conformant with upstream §11. No floor change -> the convention stays at 0.3. Corrected: 1. §14 said "OKF SPEC v0.1" while linking blob/main/okf/SPEC.md, which has served v0.2 since 2026-07-24 — a reader following our own reference got v0.2 under a v0.1 label. 2. §3 attributed to upstream a rule upstream does not state: "upstream binds the index.md requirement to the bundle root alone", cited to commons' method-spec.md. Google requires index.md NOWHERE (SPEC :117 "Optional", :504 "MAY appear in any directory", :759 consumers MUST NOT reject for missing index files). Three rungs, not two; ours is highest either way, so only the attribution was wrong. 3. §4 now names v0.2's second breaking change (# Citations -> sources). Measured 2026-08-03: no marketplace emitter writes # Citations; the one live exposure is a plan, not code — ms-ai-architect's brief still names an upstream v0.1 example as the template to copy. Suites 120/120, 0 fail. check-versions 12/12 OK. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01THEvHPWM11RupX24wBGKLu
This commit is contained in:
parent
de52caf964
commit
552784e262
2 changed files with 76 additions and 8 deletions
|
|
@ -494,6 +494,47 @@ protocol; 🟢 is reserved for the independent gate-verified step (operator veri
|
|||
clean: **no fixture was migrated**, deliberately — the 9 body-text fixtures are now the coverage
|
||||
for the transitional path. _(catalog session, økt 9.)_
|
||||
|
||||
- **2026-08-03** — **The §12 re-check against Google OKF v0.2 was run. Three corrections, no floor
|
||||
change, so the convention stays at 0.3.**
|
||||
|
||||
§12 says «When Google bumps OKF, each plugin re-checks conformance.» Google bumped on 2026-07-25.
|
||||
commons ruled the trigger **catalog's to pull and the plugin owners' to perform**
|
||||
(`portfolio-optimiser-commons/STATE.md:120`, plan doc `docs/plan/2026-07-31-okf-versjonsakse-sjekk.md:66-67`);
|
||||
this entry is the pull.
|
||||
|
||||
**What held.** Upstream has **not moved**: `git ls-remote` on `GoogleCloudPlatform/knowledge-catalog`
|
||||
answers `3fcbb9f` — identical to the local mirror the 0.3 round read. `okf/SPEC.md` was last touched
|
||||
2026-07-24 (`780fe9d` = the v0.2 migration, #227). All **seven** upstream anchors this document
|
||||
cites resolve exactly where it says, quotes verbatim (§4.1:168, :193-196, :302, :467-469, §8:509-510,
|
||||
§12:773-775, §13.1:802-804). The §3 floor is conformant with upstream §11: upstream requires a
|
||||
parseable frontmatter block and a non-empty `type`; this convention requires the same `type` and
|
||||
adds `index.md` per level, which §11 permits because it forbids only *rejecting* a bundle for a
|
||||
missing index. **Nothing about the floor changed, so the convention version does not move.**
|
||||
|
||||
**Three corrections, each measured, none of them upstream's fault:**
|
||||
|
||||
| # | Where | Was | Is |
|
||||
|---|---|---|---|
|
||||
| 1 | §14 references | «OKF SPEC **v0.1**» pointing at `blob/main/okf/SPEC.md` | `main` has served **v0.2** since 2026-07-24 — label and link had disagreed for 10 days |
|
||||
| 2 | §3 superset paragraph | «**upstream** binds the `index.md` requirement to the bundle root alone», cited to `method-spec.md:81-85` | three rungs: upstream requires it **nowhere** (`:117`, `:504`, `:759`); **commons'** method-spec binds the root alone; ours binds every level |
|
||||
| 3 | §4 recommended fields | only v0.2's *first* breaking change named | the second (`# Citations` → `sources`, §13.1:806-808) now named, with its measured exposure |
|
||||
|
||||
Correction 2 is the defect class this re-check exists to catch: **a claim about upstream sourced
|
||||
from a sibling's derived document.** The direction matters — it made upstream look *stricter* than
|
||||
it is, so the superset claim was never at risk; only the attribution was wrong. Nothing downstream
|
||||
changes, but the sentence misstated a third party in a public document.
|
||||
|
||||
**Measured for correction 3 (2026-08-03):** no marketplace emitter writes `# Citations` — grepped
|
||||
across linkedin-studio, okr and ms-ai-architect. The one live exposure is a **plan, not code**:
|
||||
ms-ai-architect's design brief still names an upstream **v0.1** example as the template to copy,
|
||||
carrying both `timestamp` and `# Citations` (`docs/okf-second-brain-brief-2026-06.md:56`). That is
|
||||
their call to make, and it is in the trigger message they received.
|
||||
|
||||
**Trigger sent** to the three consumers of §2 (linkedin-studio, okr, ms-ai-architect) and the
|
||||
outcome reported to commons, who had closed the track from their side. What the plugin owners own
|
||||
is conformance of their **own** bundles; what the catalog owns is the axis, the trigger and this
|
||||
document. _(catalog session, økt 18.)_
|
||||
|
||||
## Distilled architecture notes (OKF round, 2026-07)
|
||||
|
||||
Durable conclusions from the cross-repo round (full working context retained by the catalog session):
|
||||
|
|
|
|||
|
|
@ -74,12 +74,23 @@ file path minus `.md`.
|
|||
- **MUST (consumers)** — preserve unknown frontmatter keys, tolerate unknown `type` values, tolerate
|
||||
broken cross-links.
|
||||
|
||||
This is a **superset** of upstream OKF, not a restatement of it. The difference is deliberate and
|
||||
sits in one place: upstream binds the `index.md` requirement to the **bundle root alone** — a nested
|
||||
directory without its own `index.md` is not an error there (`method-spec.md:81-85`) — whereas the
|
||||
MUST above binds **every** level. §8 permits a plugin to go further than the floor; this is the
|
||||
catalog exercising that, and a reader must not take it as upstream's requirement restated. okr's
|
||||
`okf-check.mjs` (§7) is the reference implementation of *these* semantics.
|
||||
This is a **superset** of upstream OKF, not a restatement of it — and it is a superset of **two**
|
||||
contracts, which this document through 0.3 collapsed into one. There are three rungs, not two:
|
||||
|
||||
1. **Upstream requires `index.md` nowhere.** Its structure diagram marks the file `# Optional`
|
||||
(`okf/SPEC.md:117`), §8 opens «An `index.md` file MAY appear in any directory, including the
|
||||
bundle root» (`:504`), and §11 forbids a consumer to reject a bundle for «Missing `index.md`
|
||||
files» (`:759`). Read at `3fcbb9f`.
|
||||
2. **A sibling contract binds the requirement to the bundle root alone** — commons'
|
||||
`method-spec.md:81-85`: a missing root `index.md` is an error, «this binds the **root alone**»,
|
||||
and a nested directory without its own `index.md` is not an error.
|
||||
3. **The MUST above binds every level.** Highest rung; ours.
|
||||
|
||||
§8 permits a plugin to go further than the floor, and this is the catalog exercising that. A reader
|
||||
must not take the MUST as upstream's requirement restated — **nor attribute rung 2 to Google, which
|
||||
does not state it** (through 0.3 this paragraph did, citing `method-spec.md` for a sentence that
|
||||
said "upstream"; corrected 2026-08-03 against `3fcbb9f`). okr's `okf-check.mjs` (§7) is the
|
||||
reference implementation of *these* semantics.
|
||||
|
||||
## 4. Recommended fields (warnings, not errors)
|
||||
|
||||
|
|
@ -94,6 +105,16 @@ marker whose name depends on the bundle's `okf_version` (below). Supply where ch
|
|||
(`:804`). The gate therefore asks each bundle for the marker its own version names, and never
|
||||
nags a correct bundle of either version. An absent or non-version-shaped `okf_version` gets
|
||||
the legacy floor: absence is echoed, not failed (§3), so it still needs a defined list.
|
||||
- **v0.2's *other* breaking change does not reach this floor — but it reaches a template.** Upstream
|
||||
also superseded the body `# Citations` list with frontmatter `sources`: consumers «SHOULD read
|
||||
`sources` and MAY still parse a legacy `# Citations` body list for v0.1 documents»
|
||||
(`okf/SPEC.md` §13.1:806-808, read at `3fcbb9f`). `sources` is recommended here, never required,
|
||||
so the §3 floor is untouched whichever form a bundle carries. **Measured 2026-08-03: no
|
||||
marketplace emitter writes `# Citations`.** The live exposure is a *plan*, not code —
|
||||
ms-ai-architect's design brief still names an upstream v0.1 example as the template to copy,
|
||||
carrying both `timestamp` and a `# Citations` section (`ms-ai-architect`
|
||||
`docs/okf-second-brain-brief-2026-06.md:56`). A bundle built from that template would be
|
||||
v0.1-shaped on **both** retired fields, which is conformant but ages the day it is written.
|
||||
- **Canonical name is `resource`** (the OKF spec's name) — **not** `source`.
|
||||
- A field that would break a plugin's invariant may be omitted. Example: linkedin-studio omits
|
||||
`timestamp` (its serializer is pure/deterministic — a timestamp would break round-trip) and
|
||||
|
|
@ -282,8 +303,14 @@ commands?) + **maintenance reliability** — **not** against formal OKF conforma
|
|||
|
||||
## 14. References
|
||||
|
||||
- **OKF SPEC v0.1:** `github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md`
|
||||
(12 June 2026, "a starting point, not a finished standard").
|
||||
- **OKF SPEC:** `github.com/GoogleCloudPlatform/knowledge-catalog/blob/main/okf/SPEC.md`. **`main`
|
||||
has served v0.2 since 2026-07-24** (`780fe9d`, "okf: migrate format and tooling to Open Knowledge
|
||||
Format v0.2"; the SPEC was last touched at `3fcbb9f` the same day, and upstream had not moved
|
||||
when this was re-checked on 2026-08-03). Every upstream anchor in this document was read at
|
||||
`3fcbb9f`. Upstream publishes **no tags**, so the v0.1 text — the version this convention targets
|
||||
on the `okf_version` axis (§12) — is reachable only through history.
|
||||
_(Through 0.3 this entry read "OKF SPEC v0.1" while pointing at `main`; label and link had
|
||||
disagreed since the upstream bump. A reader following it got v0.2 under a v0.1 label.)_
|
||||
- **Per-plugin design notes:** linkedin-studio `docs/okf-convergence-brief.md`; okr
|
||||
`docs/okf-second-brain-note-2026-06.md`; ms-ai-architect `docs/okf-second-brain-brief-2026-06.md`.
|
||||
- **Shared checker (the cross-plugin gate):** `catalog/scripts/okf-check.mjs` (+ `okf-frontmatter.mjs`,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue