-
v1.1.0 Stable
released this
2026-08-13 20:58:49 +00:00 | 13 commits to main since this release[1.1.0] — 2026-08-13
Fixed — a mapping construct in OKF frontmatter no longer degrades into a string
okf.parse_frontmattergives the mapping class no expressible form by design
(T2). Two routes escaped that: they parsed "successfully" into the wrong type
instead of raising. Both are closed, and both nowFAIL_SECUREthrough
okf.import_bundle(door C).route was now sources:- uri: https://e.com/astring 'uri: https://e.com/a'— WARNOKFFrontmatterError— FAIL_SECUREsources:- uri:string 'uri:'— WARNOKFFrontmatterError— FAIL_SECUREattester: resource: attesters/x.pystring 'resource: attesters/x.py'— WARNOKFFrontmatterError— FAIL_SECUREThe security consequence was the same in each: a pointer parked in a degraded
mapping rides through in a key theresourceallowlist never inspects, and mode-b
import_bundlewrites the merged concept verbatim. The first route was documented
atdocs/LIMITATIONS.md:43; the inline second colon was found by measurement
while closing it, and is the reason this release names two routes rather than one.
Neither shape is conformant OKF — a well-formed bundle does not produce them; a
malformed or hostile one can.What closed is the type confusion, not pointer-smuggling as a class. T3 still
inspectsresourceand nothing else, so an honest string under another key rides
through exactly as before:attester: attesters/sql_equality.pyis WARN, while
the same path underresource:FAIL_SECUREs. The string is still scanned like any
other frontmatter value under T1. Nothing about that changed here.The boundary is where YAML puts it, ground-truthed against PyYAML 6.0.3 rather
than reasoned:": "and a trailing":"are exactly the two shapes where a plain
scalar becomes a mapping, and they are refused. A colon carrying neither a space nor
a line end opens no mapping —domain:securityandhttps://e.com:8443/astill
parse — and a quoted scalar (- "uri: x") is still a scalar. Quotes are retained
rather than stripped; that divergence from YAML is unchanged and now pinned.This is a behaviour change inside the freeze, not a break of it. No exported
name moved. A document that disposedWARNon1.0.0may disposeFAIL_SECURE
here — the1.0.0entry says exactly this is a fix, not a break. A consumer whose
bundles carry an unquoted": "in a frontmatter value will now see those concepts
refused at import; quote the value, and it parses.Suite 792 → 802: 13 rows added (4 rejected shapes, 7 admitted ones, 2 through
import_bundle), 3 retired (the two that pinned the defect, and the one-key row
in the block-list table). 129/129 classes, 6/6 documented gaps, 35 limitations —
all unchanged.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)