diff --git a/README.md b/README.md index 632f9b5a3..22633f79d 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,10 @@ This is a **demo prototype**: it ships with synthetic sample data only (`lineageweave/fixtures.py`) and no connection to any real dataset or organization. +The supporting [product requirements](docs/product-requirements.md) define +the product outcomes, non-goals, ecosystem boundaries, and release evidence; +ADRs remain normative for architecture and policy. + ## Why Given a pile of records with no native cross-record link, no single cheap diff --git a/docs/adr/README.md b/docs/adr/README.md index 1016add4c..0892f8b93 100644 --- a/docs/adr/README.md +++ b/docs/adr/README.md @@ -9,6 +9,7 @@ decision from them. | Supporting document | Normative ADR | |---|---| +| [`product-requirements.md`](../product-requirements.md) | Product requirements projection across the ADR set; ADRs remain normative | | [`product-technical-gap-baseline.md`](../product-technical-gap-baseline.md) | Product/technical traceability projection across the ADR set; ADRs remain normative | | [`lineage-bi-research-notes.md`](../lineage-bi-research-notes.md) | [0084](0084-lineage-research-grounding.md), [0062](0062-semantic-unit-embedding.md), [0064](0064-lineage-evidence-and-tree-assembly.md), [0024](0024-rankweave-fusion-fail-closed.md), [0165](0165-quantity-script-display.md), [0167](0167-rankweave-ranking-channel-evidence.md), [0169](0169-ask-batched-lineage-graph.md), [0202](0202-ask-event-time-filter.md) | | [`PROV_O_IMPLEMENTATION.md`](../PROV_O_IMPLEMENTATION.md) | [0065](0065-prov-o-provenance-boundary.md) | diff --git a/docs/product-requirements.md b/docs/product-requirements.md new file mode 100644 index 000000000..8c0719da8 --- /dev/null +++ b/docs/product-requirements.md @@ -0,0 +1,187 @@ +# LineageWeave Product Requirements (PRD) + +**Status:** Supporting product contract. ADRs remain normative for architecture +and policy. +**Product boundary:** LineageWeave reconstructs and presents evidence-bearing +record lineage and semantic neighborhoods; it does not own source records or +perform psychometric/statistical estimation. + +## 1. Product outcome + +An authorized user can turn scattered, timestamped records into navigable +Event Lineage, inspect a distinct typed ontology/provenance neighborhood, and +follow every material claim back to permitted evidence. Missing providers, +hidden evidence, and unresolved semantics remain explicit unknowns rather than +invented facts, scores, weights, or identities. + +## 2. Users and next actions + +| User | Need | Product next action | +|---|---|---| +| Evidence reviewer | Understand how one record continues another | Open an Event Lineage edge, inspect channel evidence, then open its source records | +| Operations analyst | Find projects, people, organizations, events, and commitments | Open the typed semantic neighborhood or operations case, then inspect cited evidence | +| Measurement consumer | Read calibrated reports without confusing them with facts | Open the TEPP/fast-mlsirm provenance and model status; retry only when the authority is available | +| Administrator | Operate imports, rebuilds, retention, and integrations safely | Use authorized controls and audit status; never infer completion from a queued job | +| Integrator | Reuse LineageWeave standalone or as a module | Depend on published APIs/contracts and inject external services at their owned boundary | + +## 3. Functional requirements + +### PRD-FR-1 — Event Lineage + +- Reconstruct bounded post-to-post parentage from independent channels. +- Keep Event Lineage separate from ontology/KG edges. +- Persist reconstruction profile and participating channel evidence. +- Drop unavailable channels and fail closed on malformed calibrated weights. +- Never label an inferred lineage edge causal or authoritative without + separate evidence. + +Acceptance: synthetic unrelated records remain separate roots; every visible +edge exposes the same authorized endpoints and evidence through API and UI. + +### PRD-FR-2 — Ontology and semantic layer + +- Publish one canonical repository-case OWL/RDFS/SKOS vocabulary with a + dereferenceable lowercase compatibility vocabulary. +- Project typed Post, Person, CorporateEntity, Team, Project, and governed + relationship evidence from PostgreSQL without creating a second mutable + source of truth. +- Preserve truth status, valid/system time, provenance, and evidence + references. +- Validate DB-to-RDF projections with SHACL, including complete reified + ProjectMention subject/predicate/object chains. +- Keep SKOS broader/narrower distinct from OWL subclass semantics. + +Acceptance: Turtle, JSON-LD, N-Triples, SHACL, API payloads, persisted IRIs, +and rendered labels agree on term kind, direction, namespace, and provenance. + +### PRD-FR-3 — Bounded ontology exploration + +- Apply RBAC/ABAC, source eligibility, and knowledge cutoff before graph + assembly. +- Remove edges whose endpoint is hidden and reveal no hidden totals. +- Use deterministic bounded traversal and an opaque integrity-protected + keyset cursor for continuation. +- Provide graph interaction and an exact-value alternative with the same + authorized content. + +Acceptance: tamper, scope drift, snapshot drift, unsupported terms, and +dangling endpoints fail closed; fixed input produces stable page boundaries. + +### PRD-FR-4 — Semantic source and retrieval + +- Preserve source representation and derive ordered paragraph, list, table, + formula, conversation-turn, and image-region semantic units. +- Route embeddings, LLM, and VISION through contextual-orchestrator. +- Apply authorization/time/process scope before ranking and again before + response delivery. +- Keep internal post citations separate from external public citations. + +Acceptance: a semantic-only term can retrieve an authorized unit; private +content never becomes an external query or citation. + +### PRD-FR-5 — Evidence operations + +- Show persisted operational cases, actions, commitments, delivery status, + and similar-VOC evidence with extractive citations. +- Preserve controls during loading and retry; discard responses from an + earlier navigation scope. +- Distinguish pending, unavailable, failed, incomplete, and succeeded states. + +Acceptance: each state tells the user the next valid action and never displays +stale evidence from a previously opened post. + +### PRD-FR-6 — Measurement boundary + +- Consume TEPP accepted/completed wire contracts and fast-mlsirm outputs; do + not reimplement their arithmetic. +- Use only provenance-bearing estimated weights anchored by independent + lineage evidence. +- Keep calibrated measurement, reconstruction relevance, and external truth + verification as distinct constructs. + +Acceptance: missing/mismatched authority produces an unavailable state and no +theta, weight vector, or completed-measurement claim. + +### PRD-FR-7 — Ecosystem contracts + +- contextual-orchestrator owns model discovery, protocol translation, + reasoning effort, and LLM/VISION/embedding routing. +- Keyverse owns identity; Naruon owns calendar/email projections; RankWeave + owns ranking fusion; ThreadWeave owns reference threading; TEPP and + fast-mlsirm own measurement. +- LineageWeave remains independently runnable and importable. + +Acceptance: provider failure is visible at the owning boundary; no local +vendor selector, duplicate identity store, or psychometric substitute appears. + +## 4. Quality and governance requirements + +- Synthetic/non-identifying repository artifacts only; authorized runtime PII + is protected by RBAC, ABAC, audit, purpose limitation, and retention rather + than destructive mask-in-place behavior. +- PostgreSQL objects use normalized multiword names, idempotent replayable + migrations, short transactions, and hot-partition-aware access paths. +- Public APIs have bounded inputs, stable typed responses, and provenance- + preserving failure states. +- WCAG 2.2 AA, keyboard/touch parity, responsive layouts, reduced motion, + design tokens, Storybook edge states, and screenshot review apply to every + customer-facing surface. +- Public functions/classes carry docstrings; changed behavior has statement, + branch, edge-case, integration, and rendered acceptance evidence. +- Protected delivery requires exact-head terminal checks, zero unresolved + review threads, independent approval, and a protected-main merge SHA. + +## 5. Non-goals + +- Owning or mutating an upstream system's source-of-truth records. +- Implementing calibrated mathematical/psychometric models in LineageWeave. +- Treating co-occurrence, attendance, similarity, or model output as a verified + organization, customer, project, causal, or authoritative relationship. +- Exposing arbitrary SQL, Cypher, SPARQL UPDATE, provider credentials, prompts, + hidden counts, or raw private evidence. +- Selecting models or weights with name-based guesses, fixed provider order, + heuristics, or rule-of-thumb constants. + +## 6. Release evidence + +A release claim requires one exact protected-main head that proves: + +1. repository-wide backend/frontend/security/docstring/coverage gates; +2. migration replay and PostgreSQL integration; +3. deterministic ontology publication and SHACL/PROV-O contracts; +4. authenticated aggregate runtime acceptance without identifying artifacts; +5. Storybook edge-state tests plus desktop/mobile screenshots; +6. external provider unavailable/failure/recovery behavior; and +7. synchronized PRD, ADR, architecture, API, changelog, and product-gap + baseline. + +## 7. Traceability + +- Product/data boundary: ADR 0001, ADR 0089. +- Knowledge Graph, ontology, and provenance: ADR 0004, ADR 0011, ADR 0065, + ADR 0184, ADR 0207. +- Semantic units and retrieval: ADR 0047, ADR 0062, ADR 0102. +- LLM/model boundary: ADR 0070, ADR 0072, ADR 0076, ADR 0079. +- Measurement: ADR 0003, ADR 0145, ADR 0200, ADR 0205. +- UX and publication: ADR 0118, ADR 0159. +- Current delivery gaps and exact heads: + [`product-technical-gap-baseline.md`](product-technical-gap-baseline.md). + +## 8. Ecosystem product-authority register + +Repository names below preserve their canonical case. A missing standalone +PRD is not filled by inference; the listed product/architecture source is the +current boundary until that repository adopts one. + +| Repository | Product authority read | LineageWeave relationship | +|---|---|---| +| `ContextualWisdomLab/TEPP` | `docs/product/prd-v0.4-approved.md` | Versioned measurement request/result consumer; never reads TEPP storage or computes its models | +| `ContextualWisdomLab/contextual-orchestrator` | No standalone PRD; `docs/product_planning.md`, `docs/architecture.md` | Provider-neutral LLM/VISION/embedding gateway and model/orchestration owner | +| `ContextualWisdomLab/fast-mlsirm` | `docs/PRD.md` | Pinned domain-neutral measurement dependency; not temporal-event authority | +| `ContextualWisdomLab/keyverse` | `docs/PRD.md` | Production OIDC/JWKS/identity control plane; local demo Keycloak is not Keyverse | +| `ContextualWisdomLab/RankWeave` | No standalone PRD; `README.md`, `ARCHITECTURE.md` | Store-agnostic ranking/fusion dependency; caller owns channels and authorization | +| `ContextualWisdomLab/ThreadWeave` | `docs/PRD.md` | Deterministic reference-thread assembly dependency; LineageWeave owns records and persistence | +| `ContextualWisdomLab/DiskSage` | No standalone PRD; `docs/superpowers/specs/2026-07-10-disksage-design.md` | Prospective storage-policy boundary; no current runtime integration | +| `ContextualWisdomLab/wardnet` | No standalone PRD; `README.md`, `docs/architecture.md` | Prospective gateway/network-policy boundary; no current runtime integration | +| `ContextualWisdomLab/naruon` | Scoped `docs/topic-intelligence/PRD.md` only | Owns observed calendar/email projections; LineageWeave owns commitments and combined display | +| `ContextualWisdomLab/LineageWeave` | This PRD, with ADRs normative | Evidence BI/orchestration, lineage, semantic projection, API, and UI owner | diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 692cbccaa..dcf693837 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -1,7 +1,7 @@ # Product & Technical Gap Baseline -> Dashboard delivery snapshot: 2026-08-25 19:55 KST. Protected `main` was -> `3f4734806bdc7ef5843f36c7dbbcceb62cd51b9e`. This local branch is not +> Dashboard delivery snapshot: 2026-08-25 20:41 KST. Protected `main` was +> `48f013a28e0b0fe51951d4df9bf3f9a3532df173`. This local branch is not > protected-main release evidence. ## Operations Dashboard PRD/TRD traceability @@ -59,15 +59,18 @@ only aggregate, non-identifying evidence to this repository. ### Exact open-PR boundary -At this snapshot there were 7 open PRs and 17 open issues. Exact observed heads -were `#616 10d289cd`, `#615 dadf2ccd`, `#614 416fd19d`, `#613 024fb6ab`, -`#612 2c50d8b6`, `#579 b782e5f7`, and `#387 d6b74f53`. All were blocked on -hosted gates and/or independent review. These observations are not merge -readiness. Re-fetch exact heads, +At this snapshot there were 5 open PRs and 14 open issues. Exact observed heads +were `#621 cca022a8` (this PR's observed parent), `#620 4bc7aeac`, +`#619 29e01dc2`, `#618 df9d6cb1`, and `#387 ceb2c1d4`. PR #579 closed without +merge and is not protected delivery. +PRs #612, #614, #615, and #616 reached protected `main`; the superseded baseline +PR #613 closed without merge and its PRD is recreated by this branch. The open +heads remain blocked on hosted gates and/or independent review. These +observations are not merge readiness. Re-fetch exact heads, unresolved threads, checks, approvals, rulesets, and merge SHA before any lifecycle claim. -> Audit snapshot: 2026-08-25 19:55 KST (refreshed by the autonomous merge +> Audit snapshot: 2026-08-25 20:41 KST (refreshed by the autonomous merge > loop). This repository records synthetic fixtures and aggregate, > non-identifying runtime evidence only. Open PRs and local checks are not > protected-default-branch release evidence. Identifying post identifiers, @@ -76,21 +79,19 @@ lifecycle claim. ## 1. Exact-head and governance evidence -The protected default branch was `3f4734806bdc7ef5843f36c7dbbcceb62cd51b9e` -when this baseline was refreshed. The live queue contained 7 open PRs and 17 +The protected default branch was `48f013a28e0b0fe51951d4df9bf3f9a3532df173` +when this baseline was refreshed. The live queue contained 5 open PRs and 14 open issues. The exact-head inventory below supersedes older per-PR snapshots elsewhere in this document; those older rows remain useful historical delivery context only. | PR | Exact observed head | Merge/check state at this snapshot | | ---: | --- | --- | -| #616 | `10d289cd` | narrows global Ask to exact resolved embedding identity; hosted gates and independent review remain required | -| #615 | `dadf2ccd` | removes a resolved calendar placeholder's duplicate live-region role; hosted gates and independent review remain required | -| #614 | `416fd19d` | Dashboard/Ask/Similar-VOC, disjoint failed-analysis metrics, and post-isolated pagination are composed with current main; same-head hosted gates and independent review remain required | -| #613 | `024fb6ab` | exact-head baseline refresh awaits hosted gates and independent review; its snapshot does not supersede this later live inventory | -| #612 | `2c50d8b6` | focused graph navigation no longer falls back to stale global graph state; hosted gates and independent review remain required | -| #579 | `b782e5f7` | interaction-map coordinate persistence is composed with protected main; hosted gates and independent review remain required | -| #387 | `d6b74f53` | channel evidence and delivery repairs are composed, but independent exact-head review remains required | +| #621 | `cca022a8` (observed parent) | this row is written by #621 itself, so its commit necessarily advances after the snapshot is encoded; re-fetch the live head before governance use | +| #620 | `4bc7aeac` | refreshes temporal-topic and capacity gaps; hosted gates and independent review remain required | +| #619 | `29e01dc2` | documents the fixed-alias, repository-owned Similar-VOC eligibility fragment for the narrow Semgrep rule; focused tests and Semgrep passed, while hosted gates and independent review remain required | +| #618 | `df9d6cb1` | separates SHACL class/property term kinds and corrects the corporate-entity UI fixture; current `main` is composed, while hosted gates and independent review remain required | +| #387 | `ceb2c1d4` | channel evidence is composed with protected main and focused tests pass, but independent exact-head review remains required | No row above is merge evidence. Immediately before any lifecycle action, re-fetch the head, unresolved threads, formal reviews, rulesets, and same-head @@ -352,36 +353,38 @@ this file per §3.5 of the prior snapshot). | #289 | Activate the optional lineage LLM channel through a bounded asynchronous rebuild | #434 | | #336 | Replace pseudo-CalDAV feed with a Naruon-owned calendar projection | Contract on `main` (#355); operator consume wiring in historical branch `feat/naruon-calendar-buyer-wiring-v2170` | | #338 | Evidence-bounded email/project lineage contract for Naruon consumption | #355 | -| #341 | Heterogeneous ontology and provenance explorer separate from Event Lineage | #349 | +| #341 | Heterogeneous ontology and provenance explorer separate from Event Lineage | Protected `main` via #349; issue closed | | #358 | Batch reauthorize persisted post-Ask evidence without N+1 queries | Ask stack | | #359 | Centralize Global Ask session storage access | Ask stack | -| #363 | Continue ontology neighborhoods beyond the bounded source window | Ask / ontology | -| #372 | Reconcile lowercase and repository-case public namespace IRIs | #426 Pages stack; #492 is merged into that branch, not protected `main` | +| #363 | Continue ontology neighborhoods beyond the bounded source window | Protected `main` via #349; issue closed | +| #372 | Reconcile lowercase and repository-case public namespace IRIs | Protected `main` via #616; issue closed, with term-kind hardening on #618 | ## 5. Open product and technical gaps | Gap | Current evidence | Acceptance requirement | | --- | --- | --- | -| Protected release | 8 open PRs at snapshot; the queue is split between mergeable exact-main heads and older conflicting work, while the former #607 is preserved inside #606 | Terminal exact-head checks, no unresolved threads, independent exact-head approvals, protected squash-merge SHA | -| Evidence-grounded operations workspace | #606 delivered the initial consumer and Dashboard to protected `main`; #614 adds governed semantic Ask, live Similar VOC, disjoint pending/failed analysis metrics, full Storybook state inventory, and current desktop/mobile screenshot evidence. Authorized-corpus backfill acceptance remains unavailable | Clear #614 normally on its exact head, perform authenticated authorized-corpus acceptance with aggregate evidence, and confirm a protected merge SHA | +| Protected release | 5 open PRs at snapshot; #618–#621 are current-main follow-ups, while #387 retains independent-review gates and #579 closed without merge | Terminal exact-head checks, no unresolved threads, independent exact-head approvals, protected squash-merge SHA | +| Evidence-grounded operations workspace | Protected-main #614 delivers governed semantic Ask, live Similar VOC, disjoint pending/failed analysis metrics, full Storybook state inventory, and current desktop/mobile screenshot evidence. Authorized-corpus backfill acceptance remains unavailable | Perform authenticated authorized-corpus acceptance with aggregate evidence and retain fail-closed no-match behavior | | Shared frontend gate | The ADR 0109 login repair is on protected `main`; eight older branches carried the defect and received the same verified repair this loop (#521–#560) | Keep every future branch cut from post-repair bases; re-verify with frontend lint/test/build before push | | Identifying baseline regression | `main` gap file listed real post identifiers; separately, closed #506 and pre-existing public history contain a private runtime source-table identifier, while current `main` and #507 trees are clean | Land this non-identifying rewrite, then coordinate ADR 0001 history remediation with security/privacy owners; do not reproduce the value, force-push, or delete evidence ad hoc | | Authorized-corpus runtime | Repository tests use synthetic fixtures; private records remain outside git | Authenticated runtime validation returning only aggregate, non-identifying evidence | | Image understanding | Region, OCR, and description work exists across active heads (#405, #419), but current runtime acceptance has not yet proved table-image structure, complete region coverage, or summary/image readiness together | Orchestrator-backed rendered workflow, original/derived asset provenance, region-before-OCR processing, and honest unsupported states; reconcile ADR 0052's image-bearing summary readiness with ADR 0098 before changing sequencing | | Semantic source rendering | Paragraph, table, list, formula, and indentation work exists across stacks (#394, #427, #448–#450); #515 adds synthetic backend/frontend parity for deterministic rows/cells, footnote boundaries, and encoded scripts | Land the #427 → #515 stack, then gather authenticated browser evidence that list nesting, continuation alignment, and formula units render without authoring-layout artifacts | | Event and project semantics | Multi-project mentions, project-bound actions, 5W1H, requester/processor, and semantic relations exist in ADR 0036/0052/0100/0111/0129 and active stacks | Aggregate authenticated evidence must show distinct projects and events, explicit requester/processor and real R&R, normalized relative time, and product/entity relations without promoting attendance or co-occurrence | -| Knowledge Graph readability | The black evidence-node root cause is an undefined-token fallback; the design-token repair and long-label/evidence-table coverage are present on #490, not protected `main` | Deliver the token repair through protected `main`, then verify light/dark contrast, keyboard graph navigation, full labels, and evidence tables in the authenticated rendered surface | +| Knowledge Graph readability | The black evidence-node root cause is an undefined-token fallback; the design-token repair and long-label/evidence-table coverage remain only on closed, unmerged #490, not protected `main` | Recreate the token repair on a current base and deliver it through protected `main`, then verify light/dark contrast, keyboard graph navigation, full labels, and evidence tables in the authenticated rendered surface | | Source-code lookup UX | Source state/detail codes remain evidence-bearing machine values and current detail presentation is dense | Catalog-backed display labels with raw-code provenance, compact 5W1H/source-detail hierarchy, keyboard access, and no unsupported customer/project binding | | Calendar / Naruon | #355 delivered the projection contract; v2.17.0 wires operator consumption without forwarding the end-user token. Naruon producer, provider/consumer fixtures, and protected merge remain open (#336) | Verify observed events against the published schema without invented events; keep commitments available when the channel is unwired | | SKOS organization aliases | Catalog binding and chip caption live on #480 / #482 | One catalog row per corroborated org; companion caption is hint-only until bound | | Event Lineage evidence | Channel evidence and Allen relations live on #387 / #484 | Persist channel scores, explain them in the popup, never invent a fused score | -| Scientific measurement | Durable accepted TEPP receipts are protected; TEPP #237 head `9b96c1ae` publishes the strict independent criterion-anchor contract, while LineageWeave #614 accepts only an exact accepted snapshot/cutoff/run/pair-count match and fails closed on duplicate sets. Neither current head is protected delivery yet. #387 removes inferred/default persistence weights, but several older reconstruction tests still pass hand-authored numeric dictionaries that are not estimator evidence | Land TEPP #237 before #614 through their protected gates, then replace remaining reconstruction-test constants with provenance-bearing fast-mlsirm estimates over synthetic fixtures. Retain true-parameter RMSE recovery as the acceptance bar | +| Scientific measurement | Durable accepted TEPP receipts and LineageWeave #614's exact accepted snapshot/cutoff/run/pair-count consumer are protected; TEPP #237 remains open, so no registered producer artifact exists yet. #387 removes inferred/default persistence weights, but several older reconstruction tests still pass hand-authored numeric dictionaries that are not estimator evidence | Land TEPP #237 through its protected gate, then replace remaining reconstruction-test constants with provenance-bearing fast-mlsirm estimates over synthetic fixtures. Retain true-parameter RMSE recovery as the acceptance bar | | Asynchronous authorization | Protected `main` rebuilds Global Ask worker scope after the bearer token leaves the request; #468 now persists exact Keyverse organization/process-unit scope in 3NF child tables and intersects it with current affiliations | Land #468 through the protected gate; prove a second affiliation and a revoked process unit cannot widen delayed-job evidence | -| Planned-facility intent | Planned-facility relationship intent rides on open #490 (`d0cad030`), whose earlier stack-only merges were not protected delivery | Settle #490 exact-head checks plus independent approval, then land through protected `main` before a release claim | +| Planned-facility intent | Planned-facility relationship intent remains only on closed, unmerged #490; earlier stack-only merges were not protected delivery | Recreate the evidence-backed slice on a current base and land through protected `main` before a release claim | | Accessibility and responsive UX | #602 delivered base post-detail modal semantics; #605 adds selected-post refocus, collapsed/hidden/inert/CSS-invisible focus exclusion across both modal types, readable evidence separators, focused tests, and desktop/mobile Storybook screenshots | Land #605 through the protected gate, then complete screen-reader and authenticated Playwright acceptance on the exact release head | | Design tokens and repeated objects | Token extraction started; sanitized Figma Event Lineage desktop/mobile frames exist, while other repeated product surfaces remain incomplete | Tokens in CSS + Storybook stories for board, popup, DAG, Ask, calendar, forms, charts; same-viewport Figma/runtime visual comparison before release | -| External integrations | Search, Zotero, calendar, Keyverse, orchestrator, RankWeave, ThreadWeave, TEPP, disksage, wardnet | Provider conformance, failure/reconciliation behavior, and provenance-bearing integration evidence | +| Frontend delivery performance | A current production build succeeds but emits Vite's >500 kB chunk warning (`539.27 kB` minified); raising the warning limit would conceal rather than reduce delivery cost | Measure module contribution on an exact head, split one real route/surface boundary with native dynamic import, then prove the warning is absent and loading/error states remain accessible | +| External integrations | Search, Zotero, calendar, Keyverse, orchestrator, RankWeave, ThreadWeave, TEPP, DiskSage, wardnet | Provider conformance, failure/reconciliation behavior, and provenance-bearing integration evidence | | MSA / modular reuse | LineageWeave must run standalone and as a consumer of org packages | Do not reimplement RankWeave/TEPP/orchestrator/ThreadWeave/Keyverse; fix upstream and PR there | +| Product contract authority | This branch recreates the first LineageWeave PRD after superseded #613 closed without merge and records an exact-case ecosystem authority register; TEPP, fast-mlsirm, keyverse, and ThreadWeave have standalone PRDs, while contextual-orchestrator, RankWeave, DiskSage, and wardnet currently rely on product-planning/architecture documents and naruon has only a scoped Topic Intelligence PRD | Land the LineageWeave PRD, keep ADRs normative, and add standalone PRDs in each owning repository before making cross-product release claims beyond its documented boundary | | Release quality | Local focused/full suites have passed on individual PR heads | Repository-wide coverage, docstrings, Storybook, security, browser, and release evidence on one exact head | | PII | Masking would paralyze the product; ADR 0001 forbids identifying artifacts in git | ABAC + authorized runtime; synthetic fixtures in git; no mask-in-place that drops names the operator must read | | Database | PostgreSQL, 3NF, snake_case ≥ two words, hot-partition and lock policy | No file DBs; read/write split if lock management fails; whitelist every migration | @@ -416,7 +419,7 @@ of leverage; open connector PRs there when the defect is upstream: 5. **fast-mlsirm** — GRM/GPCM/CAT/FIPC recovery tests (#451–#454) must stay true-parameter RMSE. 6. **ThreadWeave** — tree assembly. 7. **Naruon** — calendar and email/project lineage projection (#336, #338, #355). -8. **disksage / wardnet** — storage and network policy as needed. +8. **DiskSage / wardnet** — storage and network policy as needed. 9. **ContextualWisdomLab/.github** — required review workflows (OpenCode, Strix, Noema) and the LineageWeave hourly caller (#1259). If stacked PRs miss central review or coverage-evidence fails on pnpm 9 (`--trust-lockfile` is pnpm 11.3) or a missing Vitest coverage provider, fix the org workflow (#1258), not a local bypass. ## 8. Public ontology publication boundary @@ -456,17 +459,13 @@ Process every open PR in ascending number order, considering leverage; for each: check reviews → repair → re-verify Checks → merge → continue. Checks and review latency are never blockers — keep working while they settle. -1. **Unblock Strix org-wide** by landing ContextualWisdomLab/.github#1320 - (trusted event visibility), then reconciling ContextualWisdomLab/.github#1263 - (fallbacks executable), and rerun failed Strix jobs across the queue. -2. Merge ascending from #258 once each head shows terminal green required - checks plus current-head independent approval. The leftover-map ladder - (#518–#564) merges in ascending order. -3. Keep the shared ADR 0109 repair verified on #521–#560 heads (done this - loop; frontend lint/test/build passed locally before each push). -4. After PRs drain below a handful, resume operator-visible gaps from §5 in - leverage order: Event Lineage evidence (#387/#274), Naruon calendar - (#355/#336), SKOS aliases (#480/#482), ontology explorer (#349/#341). +1. Revalidate Strix after protected ContextualWisdomLab/.github#1320, reconcile + .github#1263, and land the atomic hourly LineageWeave caller in .github#1288. +2. Merge #387 and #618–#621 only after each exact head shows terminal + green required checks plus current-head independent approval. +3. After the queue drains, resume user-visible gaps from §5 in leverage order: + Event Lineage evidence (#387/#274), Naruon calendar (#355/#336), and + authenticated operations/ontology publication acceptance. 5. Rename remaining `[Buyer Gap]` issue titles to neutral product-object naming per repository convention (no "Buyer" for internal objects). 6. Keep psychometric tests as true-parameter recovery (RMSE); never fixture