This release includes breaking changes for platform teams planning a safe upgrade.
Published 1d
AI Agents & Assistants
✓ No known CVEs patched
✓ No known CVEs patched in this version
Topics
agent-runtime
agentic-engineering
agentic-loops
agents
ai-agents
ai-assistant
+14 more
ai-coding-assistant
ai-tools
antigravity
autonomous-agents
claude
claude-code
codex
codex-cli
coding-agent
loop-engineering
multi-agent
openclaw
self-hosted
zero-human-company
Summary
AI summaryFixed task JSON output failing to render when no precedent exists.
Full changelog
5dive task need --json returned nothing at all — not a smaller object, not an error, zero bytes — for any gate filed without a matching precedent, which is the overwhelming majority of them. Measured on the rolled 0.15.6 binary.
- one field killed the whole envelope.
precedent_ref:(($pr|select(length>0))|tonumber? // null): with no precedent$pris empty,selectyields empty, and because the// nullbound totonumber?instead of to the whole expression,empty | (tonumber? // null)stayed empty and propagated OUT of the object constructor. jq does not build a smaller object in that situation; it builds nothing. - the discriminator is where
// nullBINDS, not whether a pipe followsselect.(($x|select(length>0)) // null)is safe and(($x|select(length>0)|tonumber?) // null)is safe — both enclose the empty. Only(($x|select(length>0))|tonumber? // null)leaves it uncaught.map(select(...))and[ ... | select(...) ]are comprehensions and never at risk. The fix is one closing paren. - it was a ONE-line point fix, not a 19-site sweep. The ticket was scoped from grep hits on
select(length>0); enumerating the 23 sites insrc/by GUARD SHAPE instead found six safe// nullforms, comprehensions, two streaming intojq -cswhere empty correctly yields[], onemap(select(...))|lengthfalse positive, and exactly one defect. Editing the other eighteen would have been eighteen chances to introduce the bug being removed. - the only case that worked was the rare one, which is why it survived. A gate WITH a precedent rendered fine. Its regression test asserts both directions, so "fix" by deleting the field fails too — and against the pre-fix line 5 of 6 assertions fail, the sole pass being that rare path.
- a shape guard grep rejects the dangerous binding coming back.
- the goal path could never have caught it: it captured the envelope into a
gate_jsonit never read. A capture that is never inspected reads at review time like a checked result and is not one. Now discarded explicitly, matching the objective path, so the exit status is visibly the only thing that call is trusted for.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About 5dive
All releases →Related context
Related tools
Earlier breaking changes
- v0.11.22 council amend now requires constitutional-class motion for constitution changes
- v0.11.9 CLI now only OFFERS a veto to the genesis principal; EXERCISE requires authenticated tap.
- v0.11.5 Raw bench add/rm of the primary council is refused.
- v0.11.5 `council init` now requires sudo and seeds the primary council bench.
- v0.10.7 Changes delegated-push grant to be BUILDER-SCOPED, limiting push permissions.
Beta — feedback welcome: [email protected]