diff --git a/docs/product/current-state.md b/docs/product/current-state.md index 92298ca..48e0c31 100644 --- a/docs/product/current-state.md +++ b/docs/product/current-state.md @@ -1,70 +1,70 @@ -# Plainweave Current State Checkpoint: 2026-06-28 (PDR-015; prior PDR-013, PDR-014) · (commit recorded below) +# Plainweave Current State Checkpoint: 2026-06-28 (PDR-016; prior PDR-015) · (commit recorded below) ## The bet right now **Harden + build out, under the soft-launch / RC posture** (owner-stated: Plainweave is published but has no users yet, so iteration is cheap). The active theme is -**production-readiness hardening**: PDR-014 retired 3 of the 5 named blockers; PDR-015 this -session closed the peer-facts MCP/CLI parity gap and added cross-member regression coverage. -The carried **coverage-completeness** frontier remains the genuine north-star mover but is -owner-gated / sibling-paced. Metric: production-readiness (surface parity + regression); -north-star (completeness) unchanged. +**production-readiness hardening**. This session hardened the ratified operator web UI +(PDR-013) — two WCAG AA a11y fixes — and **delivered the full 1.2 line to `origin/main`** +(owner-directed). Metric: production-readiness (surface parity + regression + a11y guardrails); +north-star (coverage completeness) unchanged — owner-/sibling-gated. ## In flight -- **Release `1.2.0`** — `release/1.2.0` branch is cut (CHANGELOG still `[Unreleased]`); the - version question (refold 1.1.0 vs ship 1.2.0) is effectively **resolved to 1.2.0**. - Remaining: finalize the CHANGELOG version/date, and the PyPI publish (held, owner-gated). -- **Peer-facts CLI parity — DELIVERED + merged to `main`** (PDR-015): - `plainweave wardline-peer-facts` / `requirements-enrichment` reuse `PlainweaveMcpSurface`; - `make ci` green (378 tests, 91.14% cov); `wardline scan` clean. Lacuna's tour gained - `plainweave+wardline` / `plainweave+warpline` cells (sibling repo, Lacuna PDR-0015) — - **two clean-checkout prerequisites remain owner-side** (see escalations). -- **Operator web UX overhaul — landed concurrently** (`main`: `9f00ae0`, `4c12d7f` — UI/a11y - overhaul, site-kit tokens, design review). NOT a decision of this session and has **no PDR - from this vantage**; recommend its own `/product-checkpoint` so its rationale + reversal - trigger are recorded. +- **Release `1.2.0`** — `origin/main` now carries the entire 1.2 line (peer-facts CLI parity + PDR-015 + the operator web UX/a11y overhaul PDR-016 + design-review docs). The version + decision is **1.2.0** (owner-reaffirmed this session: "still as 1.2"). Remaining: finalize + the CHANGELOG version/date and reconcile the `release/1.2.0` branch (it predates these merges + and now lags `main`), then the **PyPI publish (held, owner-gated)**. +- **Operator web UI UX + a11y overhaul — DELIVERED to `main` + now carries a PDR** (PDR-016): + site-kit tokens + this session's two a11y review fixes (visited-primary contrast restored to + AA; toast auto-dismiss moved to `base.html` so it fires on every page). Closes the + "web overhaul needs a PDR" gap PDR-015 flagged. +- **Peer-facts CLI parity — DELIVERED, now on `origin/main`** (PDR-015): + `plainweave wardline-peer-facts` / `requirements-enrichment`; `make ci` green (378 tests, + 91.14% cov); `wardline scan` clean. - **Peer-facts sibling wiring** — 3 owner-gated handoff prompts (`docs/handoffs/`) not yet dispatched: Warpline consumer, Wardline scan-identity metadata, Warpline interface-lock item-schema ratification. +- **Lacuna tour** — two clean-checkout prerequisites remain (sibling repo, Lacuna PDR-0015): + the packaging bug below blocks `uv tool install`, and `docs/tour.md` needs a clean-tree + regen (a `legis govern` leg byte-locks tree-cleanliness; concurrent dirt left it `[WARN]`). - **Deferred perf/hint** (unchanged, acceptable at pre-alpha scale): `plainweave-706d80dc8e`, `plainweave-3edcd19943` (P3); semantic-similarity hint `plainweave-02376962ab` (PDR-003). ## Open questions / blocked-on-owner (escalations) -- **Push `main` + finalize `release/1.2.0` + publish.** `main` is well ahead of - `origin/main` and now carries peer-facts CLI parity + the web overhaul. Pushing - `foundryside-dev/plainweave` is outward-facing (needs `tachyon-beep`, `gh auth switch`); - finalizing 1.2.0 + the held PyPI publish are owner calls. -- **Lacuna tour — two clean-checkout prerequisites** (the new cells are correct but not - reproducibly green on a fresh clone until): (1) **install the updated plainweave** — - blocked by a pre-existing wheel-build packaging bug (`force-include` double-adds - `web/static/.gitkeep`), filed as observation **`plainweave-obs-6a7255ffbe`**; (2) - regenerate `docs/tour.md` on a clean tree (a pre-existing `legis govern` leg bakes - tree-cleanliness into the byte-locked doc; concurrent dirt left it `[WARN]`). Both recorded - in Lacuna PDR-0015. -- **Hand off the 3 peer prompts** to the sibling owners (Warpline/Wardline) — owner-gated. -- **Cross-member coverage completeness** (carried, most pressing north-star mover) — Rust - public surface untagged upstream on Loomweave; owner-gated (sibling obligation). -- **Carried:** `vision.md` authority-grant metadata still missing (a vision edit, owner-gated); - publishing a headline north-star number remains owner-gated (PDR-002/009). +- **Finalize `release/1.2.0` + publish to PyPI** — held, owner-gated (publication is an + authority-grant escalation, PDR-002/PDR-012). _(The "push `main`" half of this escalation + was RESOLVED this session — the owner directed the merge to remote `main`.)_ +- **Lacuna tour — two clean-checkout prerequisites:** (1) fix the **wheel-build packaging bug** + (`[tool.hatch.build.targets.wheel.force-include]` double-adds `web/static/.gitkeep`), + observation **`plainweave-obs-6a7255ffbe`** (P2), then install plainweave; (2) regenerate + `docs/tour.md` on a clean tree. +- **Hand off the 3 peer prompts** to the sibling owners (Warpline / Wardline) — owner-gated. +- **Cross-member coverage completeness** (carried, the most pressing north-star mover) — the + Rust public surface is untagged upstream on Loomweave; owner-gated (sibling obligation). +- **Carried vision edits (owner-gated):** `vision.md` authority-grant metadata still missing; + "Serves" still does not name human operators (PDR-013); publishing a headline north-star + number remains owner-gated (PDR-002/009). ## Last checkpoint did (this session) -- **Delivered peer-facts CLI parity** (PDR-015, accepted): two CLI subcommands reusing the MCP - surface; folded in two owner-directed sibling-contract fixes (rejected-trace enrichment + - root-aware doctor remediation). `make ci` green (378 tests, 91.14% cov); merged to `main`. -- **Built the Lacuna cross-member tour demos** (Lacuna PDR-0015): `plainweave+wardline` - (full resolved/unseen) + `plainweave+warpline`, each asserting the no-silent-clean invariant. -- **Ran an adversarial multi-lens review** (ultracode workflow): fixed 4 real findings - (temp-dir cleanup, per-conjunct drop-tests, PEP8); rejected 4 false positives. Filed the - packaging-bug observation; recorded the 2 tour prerequisites. +- **Adversarially reviewed two owner-supplied web a11y findings** (did not rubber-stamp — + confirmed CSS specificity, WCAG contrast math, and the htmx confirm-flow trace), then **fixed + both** (`a15adb1`): visited primary links restored to AA contrast; success-toast auto-dismiss + moved to `base.html` so confirm-step flows and the requirement dossier no longer leave it + stuck. 0 false positives. +- **Merged `feat/lacuna-peer-facts-tour-cli-parity` → `origin/main` via PR #5** (owner-directed + push as `tachyon-beep`): brought the web overhaul + docs + peer-facts checkpoint + a11y fixes + to `main`. CI gate green (378 tests, 91.14% cov, 37s); branch deleted. +- **Recorded PDR-016**, closing the web-overhaul-needs-a-PDR gap PDR-015 left open. ## Next session, start here -**Owner calls on the release + push escalations** (finalize 1.2.0 + the held publish + push -`main`), then close the two Lacuna-tour prerequisites (fix the packaging bug → install -plainweave → clean-tree `make tour`). Also: **checkpoint the concurrent web UX overhaul** so -it carries a PDR. Then continue **harden + build** (remaining blockers: Loomweave-owned -identity resolution, Legis fact emission, Filigree contract tests) or pivot to -coverage-completeness if the owner wants product movement. +**Owner calls on the release escalation** — finalize the `1.2.0` CHANGELOG version/date, +reconcile/retire the `release/1.2.0` branch against `main`, then the held PyPI publish. Then +close the two **Lacuna-tour prerequisites** (fix the packaging bug → install plainweave → +clean-tree `make tour`). Then continue **harden + build** (remaining production blockers: +Loomweave-owned identity resolution, Legis fact emission, Filigree contract tests) or pivot to +**coverage-completeness** if the owner wants north-star movement. diff --git a/docs/product/decisions/PDR-016-web-ux-a11y-overhaul-delivered.md b/docs/product/decisions/PDR-016-web-ux-a11y-overhaul-delivered.md new file mode 100644 index 0000000..3d52183 --- /dev/null +++ b/docs/product/decisions/PDR-016-web-ux-a11y-overhaul-delivered.md @@ -0,0 +1,72 @@ +# PDR-016: Operator web UI UX + a11y overhaul hardened and delivered to main + +Date: 2026-06-28 Status: accepted Author: agent (product checkpoint; a11y review + merge driven this session) Owner sign-off: EXPLICIT (owner supplied the two a11y review findings to evaluate, then directed "commit these and merge back to remote main … still as 1.2, we haven't published it yet") +Related: PDR-013 (operator web UI ratified as a standing bet — this hardens it, it is not a new bet), PDR-015 (the concurrent 1.2 line this rode in on), PDR-002 / PDR-012 (publication owner-gated — the held PyPI publish) + +## Context + +PDR-013 ratified the operator web UI as a standing product bet. Since then a **UX + +a11y overhaul** (commit `9f00ae0`: site-kit design-token adoption, contrast / focus-ring / +target-size fixes) and its design-review docs (`4c12d7f`) landed on the +`feat/lacuna-peer-facts-tour-cli-parity` branch carrying **no PDR**. PDR-015's checkpoint +flagged this explicitly as a decision-without-provenance gap and asked the next checkpoint +to record the overhaul with a rationale + reversal trigger. This checkpoint does that, and +folds in this session's a11y review-fix work and the delivery to `main`. + +## Options considered + +1. The two owner-supplied a11y review findings — **adversarially verify** before fixing vs + accept-as-given. Verified (CSS specificity math, WCAG contrast computation, the htmx + confirm-flow trace); both confirmed real, **0 false positives**. +2. Toast-dismiss fix scope — reorder within `review.html` (fixes the 3 review-page + confirm flows only) vs **move to `base.html`** (covers every page, including the + requirement dossier, which loads no page script of its own). Chose `base.html`. +3. Recording — **record the overhaul** as accepted hardening (close the PDR-015 gap) vs + leave it unrecorded. +4. Release posture — publish 1.2 now vs **hold**. Owner explicitly held publish. + +## The call + +- **Both a11y findings accepted and fixed** (`a15adb1`): + - *Visited primary anchors:* the global `a:visited` rule (specificity 0,1,1) outspecified + `.btn--primary` (0,1,0), flipping the "New requirement" link's text to `--link` on the + brass fill (~1.7:1 — a WCAG AA failure) once visited. Re-asserted `--text-on-accent` for + anchor primaries at higher specificity. Plain `