diff --git a/docs/product/current-state.md b/docs/product/current-state.md index 5c25caf..955c141 100644 --- a/docs/product/current-state.md +++ b/docs/product/current-state.md @@ -1,16 +1,23 @@ # Loomweave — Current State (resume brief) -> Refreshed **2026-06-29** (PDR-0008 — warpline keying-gap fix shipped). Next -> session: start here, then `vision.md` (grant), `roadmap.md` + `metrics.md`, then -> reconcile the tracker IDs below against Filigree. +> Refreshed **2026-07-01** (PDR-0009 — loomweave **1.4.0 shipped** to all +> channels). Prior: 2026-06-29 (PDR-0008 — warpline keying-gap fix). Next session: +> start here, then `vision.md` (grant), `roadmap.md` + `metrics.md`, then reconcile +> the tracker IDs below against Filigree. +> +> **Concurrency note:** this checkpoint folded forward the 2026-06-29 owner-session +> checkpoint (`1823911`) that was committed to local `main` but never pushed (it +> diverged behind this session's release PRs). Its content is preserved here + on +> `origin/main`; the local `1823911` is now superseded and can be dropped. ## The bet right now **The Now horizon is still open — DECIDE has not run.** No new Now bet was picked. The session segments since 2026-06-26 spent on (a) a federation MCP-transport -reliability cycle (PDR-0006) and (b) repo-hygiene cleanup (PDR-0007) — both ahead -of / beside the DECIDE, not consuming it. **The three recorded Now candidates -remain on deck, untouched** (roadmap.md): +reliability cycle (PDR-0006), (b) repo-hygiene cleanup (PDR-0007), and (c) the +2026-07-01 segment — two P2 review fixes then cutting & publishing **1.4.0** +(PDR-0009) — all ahead of / beside the DECIDE, not consuming it. **The three +recorded Now candidates remain on deck, untouched** (roadmap.md): 1. **Incremental-analyze correctness cluster** — defends the north-star directly. Open: clarion-feab311907, clarion-14398b2536, clarion-a65cb18b02 (all confirmed). @@ -46,17 +53,56 @@ The warpline churn-fill (transport **and** keying gap) has now shipped — see intent forward as **clarion-0715faa9d6** (rewrite the shared rename-feed conformance golden against the new shape). Obsolete commit `9c30ce0` preserved in the issue. -- **Repo hygiene:** 7 merged remote branches deleted (PRs #53/#54/#74/#75/#76/#78 - + the stale legis branch); only `feat/warpline-churn-consumer` (open PR #77) plus - historical (`rc4`, `rename/clarion-to-loomweave`) and auto-managed - (`dependabot/*`) branches remain. Resolves the prior checkpoint's open-question #7. +- **This-session housekeeping (execution of PDR-0008, not new decisions):** + PR #77 (warpline transport) merged to `main` `1d2b4fa` by the owner/Bid-1 flow, + concurrent with the keying-gap work; the merged `feat/warpline-churn-consumer` + (#77) + `fix/briefing-blocked-sei-federation-key` (#79) remote branches deleted + + local refs pruned (incl. the disposed `weft/legis-conformance` leftover); stale + "#77 open" product docs corrected on `main` `a138d9a`; the fixed `loomweave` + binary rebuilt from `main` and atomically installed into the local uv tool + (hash `bc4f162b`), live-verified to expose the blocked-entity SEI. Remote now: + `main` + historical (`rc4`, `rename/clarion-to-loomweave`) + auto-managed + `dependabot/*` only. + +## Decided/shipped this session (2026-07-01) + +- **PDR-0009 — loomweave 1.4.0 shipped to all channels** (owner-authorized). 45 + commits had accrued on `main` since `v1.3.1` with no release; two P2 review + fixes (#80) landed, then a minor bump (features shipped → 1.4.0, not a patch): + 20-file lockstep bump + CHANGELOG (#81), tag `v1.4.0` **prepared and held**, then + pushed on explicit owner say-so. **PyPI** (all 3 packages) + **GitHub Release** + (cosign/Rekor-verified) + **crates.io** (all 9 crates) now at 1.4.0. Local + `loomweave` reinstalled to 1.4.0 via uv. +- **P2 review fixes (#80)** — the plugin `anchor_entity_id` trust-boundary strip + (a plugin finding could otherwise forge the trusted anchor → FK-hard-fail the + analyze run or silently mis-anchor) **and** re-vendoring the Wardline taint + golden — the same conformance drift the prior checkpoint flagged (open question + 4b). Fixes the *drift*; the CI blind-spot itself remains (see 4b). +- **Two release-process defects found + fixed** (context, not new bets): the + crates.io publish-order list omitted the new `loomweave-llm` crate → partial + publish; fixed (#83) **and** completed the publish by hand from a `v1.4.0` + worktree. And a date **time-bomb** — two summary-cache tests hardcoded + `created_at: 2026-01-01` read through a 180-day window under the real clock, so + `main` went red on 2026-07-01 with no code change; fixed by pinning the clock + (#84). ## Metric signals -- **No new readings this session** (cleanup + investigation only — no CI runs or - sweeps). Carried unchanged from 2026-06-28: CI floor GREEN on PR #78; - federation MCP-transport correctness = 0 mis-framed stdio clients; north-star - (open collision families) = 0, not re-swept. See `metrics.md`. +- **CI floor GREEN across the 1.4.0 release (2026-07-01)** — the release verify + gate + PRs #80/#83/#84 all passed (Rust + Rust aarch64 + Python + e2e); local + full-workspace nextest **1977 passed** with `WARDLINE_REPO` set. All three + distribution channels published at 1.4.0. See `metrics.md`. +- **CI floor GREEN on PR #79** (`a980ef2`): all 4 CI checks (Rust + aarch64 + + Python + Sprint-1 e2e); locally fmt + workspace clippy (-D warnings) + doc clean, + nextest **1972/1973**. See `metrics.md`. +- **CI blind spot — drift RE-VENDORED, spot REMAINS:** the + `wardline_taint_fact_conformance_oracle` drift flagged 2026-06-29 was re-vendored + this cycle (#80, PDR-0009), so the *drift* is cleared — but the underlying + local-red/CI-green divergence (the oracle skip-cleans when the `~/wardline` + sibling is absent, so a drift still passes CI) is structural and **still open → + promote clarion-72e1c1a07d** (open question 4b). +- North-star (open collision families) = 0, **not re-swept** (this was federation + correctness, not graph identity — no identity/extraction code touched). - **`tools/list` 22 KB budget** — still UNKNOWN, carried from 2026-06-24; not re-measured. ## Open questions / awaiting owner @@ -71,6 +117,13 @@ The warpline churn-fill (transport **and** keying gap) has now shipped — see `reresolve-sei` to heal already-minted NULL rows (operational, cross-product); (b) deep-pagination half now tracked as clarion-obs-acffc4e8a1 (open). 4. **`tools/list` byte budget** — re-measure; may be breached. +4b. **Promote clarion-72e1c1a07d to a guardrail (carried, 2026-06-29).** The + `wardline_taint_fact_conformance_oracle` local-red/CI-green divergence recurred + (flagged 2026-06-26, fired 2026-06-29). The *drift* was re-vendored 2026-07-01 + (#80, PDR-0009) — but that is another manual re-vendor, not a fix: the oracle + still skip-cleans when `~/wardline` is absent, so the next sibling drift passes + CI again. Still needs a CI-visible check or a re-vendor cadence. **Promotion + remains open.** 5. **Adoption metric** — still undecided; telemetry is escalation-gated (local-first). 6. **ESCALATION (carried, outward-facing, gated):** Wardline Amendments 4–9 corpus re-vendor handoff — prepared, not pushed. Do not push without owner sign-off. @@ -85,6 +138,9 @@ The warpline churn-fill (transport **and** keying gap) has now shipped — see ## Where the next session starts -1. **DECIDE:** resolve open question 1 — either accept/merge warpline #77 (+ plan - the keying-gap fix) or pick a new Now from the three candidates. Then set the - north-star successor target, and DISPATCH (PRD + plan) as usual. +1. **DECIDE a new Now** (warpline is shipped **and 1.4.0 is now published to all + channels**, so no release chore is pending — the field is the three recorded + candidates: incremental-analyze correctness cluster / per-provider split / + B.4\* perf). Set the north-star successor target, then DISPATCH (PRD + plan). + The wardline-drift guardrail (open question 4b) is a cheap, in-grant pickup if a + smaller bite is wanted first. diff --git a/docs/product/decisions/0009-ship-and-publish-1.4.0.md b/docs/product/decisions/0009-ship-and-publish-1.4.0.md new file mode 100644 index 0000000..8fb2782 --- /dev/null +++ b/docs/product/decisions/0009-ship-and-publish-1.4.0.md @@ -0,0 +1,76 @@ +# PDR-0009: Ship and publish loomweave 1.4.0 (minor release, all distribution channels) + +- **Date:** 2026-07-01 +- **Status:** accepted — **owner-authorized in-session** (the release + its public + publish are outward-facing one-way doors; both were explicitly directed by the + owner this session: "please push it and verify the package", and later "complete + the 1.4.0 crates.io publish … do this please"). Not a pending escalation — done. +- **PRD:** none (a distribution/packaging milestone, not a fresh PRD-scoped bet; it + ships already-accepted bets — PDR-0005 loomweave-llm extraction, PDR-0006/0008 + warpline federation — plus 1.3.1→1.4.0 accumulated work) +- **Tracker:** no dedicated issue (release chore). Related PRs this cycle: #80 + (P2 review fixes — the immediate trigger), #81 (version bump + CHANGELOG), #82 + (.gitignore), #83 (crates.io publish-order fix), #84 (test time-bomb fix). + +## Context + +45 commits had accumulated on `main` since `v1.3.1` (2026-06-22) with **no release +cut** — including user-facing features (the Warpline churn consumer lighting up +`entity_high_churn_list` / `entity_recent_change_list`; ADR-054 Rust dead-code +reachability roots) and a new workspace crate (`loomweave-llm`, PDR-0005). The +session opened resolving two P2 review findings (#80: the plugin `anchor_entity_id` +trust-boundary strip + re-vendoring the Wardline taint golden — the same +conformance drift the prior checkpoint flagged, open question 4b). With those +landed and the floor green, cutting a release was the natural close. + +Two facts forced the versioning call and the "publish now" decision: +1. **SemVer says minor, not patch.** Features shipped since 1.3.1 → `1.4.0`, not + `1.3.2`. Presented as such (not a coin-flip) and confirmed by the owner. +2. **A tag push is irreversible.** `release.yml` on a `v*` tag publishes to real + PyPI (append-only) + a public GitHub Release. So the tag was *prepared and + held* first (branch → 20-file lockstep bump → CHANGELOG for the 45 commits → + PR #81 → merge → annotated tag at the merged HEAD), and pushed only on explicit + owner say-so. + +## Options + +1. **Don't release; keep accumulating on `main`.** Rejected: 45 commits of shipped + value (incl. a new crate and two user-facing features) unreleased is a widening + gap between `main` and what operators can `uv tool install`; the north-star + ("prefer the graph over grep") only pays off for users on a released build. +2. **Cut a 1.3.2 patch.** Rejected: features shipped → SemVer requires a minor. +3. **Cut & publish 1.4.0 to all channels** (chosen) — minor bump, full lockstep, + published to PyPI + GitHub Release + crates.io, with the tag held until the + owner authorized the irreversible push. + +## The call + +**Option 3 — owner-authorized in-session.** Prepared as a held tag first +(reviewable CHANGELOG, no premature publish), then pushed on the owner's explicit +"push it". PyPI (all three packages) + GitHub Release published cleanly; cosign/ +Rekor asset verification passed. The installed local `loomweave` was reinstalled +to 1.4.0 via uv. + +**Release-process defects surfaced and fixed in the same cycle** (context, not +separate decisions): +- **crates.io partial-publish** — `release.yml`'s hand-maintained publish-order + list never included the new `loomweave-llm` crate, so `cargo publish -p + loomweave-mcp` failed ("no matching package named loomweave-llm found") and left + `loomweave-llm` / `-mcp` / `-cli` unpublished on crates.io (PyPI + GitHub Release + unaffected — separate channels). Fixed the order list (#83) **and** completed the + publish by hand (owner-authorized) from a `v1.4.0` worktree; all 9 workspace + crates now `PRESENT@1.4.0`. +- **Date time-bomb** — two `orientation_pack` summary-cache tests hardcoded + `created_at: 2026-01-01` and read it back through a 180-day freshness window + under the real wall clock, so `main` went red on 2026-07-01 (181 days) with no + code change. Fixed by pinning a fixed clock (#84). + +## Reversal trigger + +Reopen (i.e. cut a `1.4.1` patch) if a **critical regression in 1.4.0** is found on +a released build — a correctness break in the graph/identity surface, a broken +`uv tool install loomweave==1.4.0`, or a plugin that fails to launch from the +published wheels. Metric anchor: the CI-floor guardrail (`metrics.md` §2) must stay +green on `main` post-release; a red floor traced to a 1.4.0-shipped change is the +signal. A published version is never unpublished — the remedy is always a new +patch, never a re-push of `1.4.0`. diff --git a/docs/product/metrics.md b/docs/product/metrics.md index e7a1126..23a94a8 100644 --- a/docs/product/metrics.md +++ b/docs/product/metrics.md @@ -1,7 +1,9 @@ # Loomweave — Metrics -> Bootstrapped 2026-06-11. **Updated 2026-06-28** (checkpoint). Baselines are -> real observed readings; targets are falsifiable (a number/boolean and a date). +> Bootstrapped 2026-06-11. **Updated 2026-07-01** (checkpoint — 1.4.0 release +> CI-floor reading, PDR-0009). Prior: 2026-06-29 (PR #79 reading; wardline-drift +> blind spot). Baselines are real observed readings; targets are falsifiable (a +> number/boolean and a date). ## North star @@ -61,6 +63,26 @@ found by the adversarial 4-corpus QA sweep. walking-skeleton). 131 loomweave-federation tests green locally; fmt + clippy (-D warnings, federation/mcp/cli) + cargo doc clean. (Scoped verification — the federation crate + downstream; not a full-workspace nextest this session.) + - `READING (2026-06-29): GREEN on PR #79` — the briefing-blocked SEI fix + (PDR-0008) merged to `main` `a980ef2`; all 4 CI checks pass (Rust + Rust + aarch64 + Python + Sprint-1 e2e). Locally: fmt + workspace clippy (-D warnings) + + cargo doc (-D warnings) clean; nextest **1972/1973**. **The CI blind-spot + caveat above FIRED this session:** the lone local failure was + `wardline_taint_fact_conformance_oracle` (vendored golden drifted from the live + `~/wardline` sibling — a taint-fingerprint diff), exactly the + local-red / CI-green divergence flagged 2026-06-26. It has now **recurred** → + per that reading's own trigger, promote clarion-72e1c1a07d to a real guardrail + (the vendored-golden drift needs a CI-visible check or a re-vendor cadence). + - `READING (2026-07-01): GREEN across the 1.4.0 release` (PDR-0009) — the + release verify gate + PRs #80 (P2 fixes), #83 (crates.io order), #84 (test + time-bomb) all passed (Rust + Rust aarch64 + Python + Sprint-1 e2e). Locally, + full-workspace `nextest` **1977 passed** with `WARDLINE_REPO=/home/john/wardline` + set (the wardline oracle exercised, not skipped). The 2026-06-29 drift was + **re-vendored** this cycle (#80), so the oracle is green again — but the + CI-invisibility blind spot itself is unfixed (still skip-cleans without the + sibling); clarion-72e1c1a07d promotion stays open. Two release-process defects + fixed in-cycle: crates.io publish-order omitted `loomweave-llm` (#83) and a + `created_at`-vs-real-clock time-bomb reddened `main` on 2026-07-01 (#84). - `TARGET: green on every release/merge — standing, no end date` 3. **MCP context tax under budget**: `tools/list` payload has a CI-enforced 22,000-byte budget.