Plainweave 1.2.0
Closes the CLI/MCP parity gap for the 1.1 peer-facts producers (they shipped MCP-only),
delivers the operator web UX + accessibility overhaul, hardens three federation seams,
ships the plainweave-workflow agent skill, and fixes the wheel build. Additive and
backward-compatible; the new surfaces are advisory and verdict-free like the rest of
Plainweave.
Added
plainweave wardline-peer-facts [--json] [--limit N] [--offset N]— surfaces the
fullweft.plainweave.wardline_peer_facts.v1envelope over the CLI (previously MCP-only),
reusing the existing MCP surface. Reads.wardline/*-findings.jsonlonly (no store
required); an absent.wardline/reportsfreshness: unavailable, never clean.plainweave requirements-enrichment <entity_ref>... [--json]— surfaces the full
weft.plainweave.requirements_enrichment.v1envelope over the CLI (previously MCP-only).
Accepts a SEI or a dotted locator; preserves the no-silent-clean contract
(present/absent/unavailable— an identity gap isunavailable, neverabsent).
Now consumed live by Warpline as the 4thconsult_federationmember (Warpline PDR-0008;
validated end-to-end, Plainweave PDR-017).- Frozen degraded-state contract for
weft.plainweave.loomweave_catalog.v1— the
Loomweave catalog producer'sunavailable-adapter envelope is now pinned by a structural
validator + golden routed through the same oracle as live output (no-silent-clean: an
unavailable adapter never returns a clean-empty page). Seam-hardening, no behavior change
(PDR-018, production blocker #3). - Contract test for the Filigree seam — pins
open_linked_workas reserved-but-never-
emitted by the local-only producer (absence is the in-bandlinked_work_facts_unavailable
warning), thefiligree_issuetrace opacity + canonical relations, and the dossier's
advisory boundary (PDR-018, production blocker #5). plainweave-workflowskill pack — a federation-standard agent skill (SKILL.md+
reference sheets) authored in-package (src/plainweave/skills/), shipped as package data
and dogfooded into the repo's.claude/+.agents/skill trees. Documents the
read/author/verify workflow, the doctrine invariants (advisory-only, no-silent-clean,
enrich-only, zero minted SEIs), and the cross-member peer-facts seams.
Changed
- Operator web UI — UX + accessibility overhaul (PDR-016) — adopted the site-kit design
tokens and fixed contrast, focus-ring, and target-size; restored readable visited primary
anchors (a globala:visitedrule had out-specified.btn--primary, dropping the link to
a ~1.7:1 WCAG AA failure once visited); and now dismiss toasts on every page (moved to
base.htmlso script-less pages such as the requirement dossier are covered too).
Fixed
- Loomweave read-path trace enrichment now honors the
local_onlyauthority boundary
(RED-2) — the read path no longer reaches past the local store when the boundary is set. requirements_enrichmentnow dropsrejectedtrace links before building the view — a
reviewed-and-rejected binding no longer reads as requirement coverage (present); a
rejected-only entity that resolves locally readsabsent. (Folded in from a sibling
product's contract work.)plainweave doctorWardline-findings remediation is now root-aware (cd <root> && wardline scan .when the inspected root is not the cwd). (Folded in from a sibling
product's contract work.)- ADR-006 now documents that the preflight producer emits 8 of its 11 fact kinds and why the
other three are superseded (dedicated wardline producer) or sibling-gated (Filigree); added
the previously-missing behavioral coverage for theorphaned_entity_linkfact (PDR-018,
production blocker #4). - Wheel build (PDR-017) — removed a redundant
[tool.hatch.build.targets.wheel.force-include]block that re-mappedweb/templates+
web/static(already vendored by thesrc/plainweavesrc-layout), colliding on
web/static/.gitkeepand breakinguv build. The wheel now builds with each web asset
shipped exactly once, so a cleanuv tool installagain advertises every CLI verb — this
was darkening Warpline's requirements federation member in practice.