From c1b290d0b06f606ba01fcb7a0638a9a5b7bed17a Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 23 Aug 2026 16:39:00 +0900 Subject: [PATCH 1/4] docs: refresh product technical gap baseline --- docs/product-technical-gap-baseline.md | 115 +++++++++++++++++++------ 1 file changed, 91 insertions(+), 24 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index e65883463..fe11172c5 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -1,26 +1,93 @@ # Product & Technical Gap Baseline -## 1. Known Parsing & Frontend Display Gaps -- **Footnote Parsing**: `post=00505695-3e61-1fd1-83c5-263f88a9e77a` fails to recognize footnotes (li/oi level errors). -- **Table Parsing**: `post=00505695-3e61-1fd1-80c6-86bb61c8ddc5` completely fails at parsing tables. -- **Indentation**: Incorrect indentation rendering in `post=00505695-7571-1fd1-83c3-d521b187ad5b` and `post=00505695-3e61-1fd1-83c0-497b3c1c455e`. -- **Image/Table OCR**: `post=00505695-7571-1fd1-83dd-3d22a61a5734` fails text recognition for tables inside images, markdown parsing fails, and image OCR description is too shallow for Ontology & Semantics. -- **Math/Superscripts**: `post=00505695-9612-1fe1-83a7-e30153323f25` fails to parse superscripts like m^3 properly. Needs strict Ontology grammar for math formulas. -- **Missing UI Elements**: DAG (Directed Acyclic Graph) view is currently missing from the frontend for `post=00505695-7571-1fd1-83c5-895ed333cdbc`. - -## 2. LLM Extraction & Knowledge Graph Gaps -- **Multiple Project Extraction**: (Resolved) LLM prompt updated to request key_events as objects with project_name, separating events correctly. -- **5W1H Missing**: (Resolved) LLM prompt updated to explicitly request 5W1H evidence items in the JSON output array. -- **R&R and Keyman Missing**: (Resolved) LLM prompt updated to explicitly instruct using actual stated names rather than collective titles. -- **Entity Resolution / Searxng**: Abbreviations like "한전" and "한국전력" are not mapped properly using Searxng and KG corroboration. -- **Meso-level Team Mapping**: (Resolved) Checked extraction logic; `team` mapping logic is present and correct, but LLM needed better explicit instruction which is covered by R&R resolution. -- **Base64 Image Omni-modal**: Current text-only embedding fails on images. Omni-modal LLM processing is required for images to capture layout, font size, colors, and spatial meaning. - -## 3. General Architecture Gaps -- **DB Architecture**: Ensure PostgreSQL is strictly used (no file DBs), 3rd normal form is maintained, and Hot Partitions are handled. DB locks must be managed (or use read/write replicas). -- **Zotero Integration**: Papers and standards referenced by TEPP must be synced via Local Zotero API (http://localhost:23119/api/) and cited using APA 7th edition in docstrings. -- **Testing**: We need actual testing of Psychometrics (Fast-MLSIRM parameter calibration, RMSE of estimates, Fixed-Item Parameter Calibration, CAT) against synthetic/demo data. -- **Security & Compliance**: PII masking cannot break the system. Need SOC 2 and CSAP compliance alternatives to blind PII masking. -- **LLM Orchestration**: Ensure ALL LLM calls route through `contextual-orchestrator` utilizing API keys (BYTEZ, NVIDIA, OPENROUTER, OPENAI) with auto model discovery and optimal reasoning effort allocation (Fugu/Conductor/TRINITY research). - -*This document is continuously updated by the hourly automated agent loop.* +> Audit date: 2026-08-23. This repository records synthetic fixtures and +> aggregate, non-identifying runtime evidence only. Open PRs and local checks +> are not protected-default-branch release evidence. + +## 1. Exact-head and governance evidence + +The protected default branch was +`ef6f5a5ffcb467bd935dc1e53acc0029669b0bd7` when this baseline was refreshed. +The current acceptance queue was re-fetched immediately before this update: + +| Repository | PR | Exact head | State | Remaining gate | +| --- | ---: | --- | --- | --- | +| LineageWeave | #392 | `a73d98850f985d0996bfbc4f2b1f17787710f206` | open, blocked | independent review and required protected checks | +| LineageWeave | #387 | `55a13f3473789a9481061ca2cd1f9ea042fc5902` | open, blocked, changes requested, auto-merge armed | current-head approval and Strix rerun after the central scope fix | +| LineageWeave | #405 | `0ac80616cb723a7810acae7c945fb12721a6cf7c` | open, blocked, changes requested | independent current-head approval | +| LineageWeave | #421 | `33ec5cd521bcf861db64b9f0c1faac3b3bf4deff` | open, blocked | terminal Strix result and independent review | +| LineageWeave | #426 | `11a60b370d7b5783733febb593e8f91678cc403d` | open, blocked, review required, auto-merge armed | independent current-head approval; current checks are terminal-success | +| LineageWeave | #468 | `48c7ec09d282e96b411e1060ea4ef1a769893ef9` | open, blocked | current-head protected checks and independent review | +| ContextualWisdomLab/.github | #1248 | `3f78370f3ad01409c7b2fcfb63dfb66862098fa6` | open, blocked | protected checks and independent review for the Strix scope repair | + +PR #464 merged into its stacked base as +`df413d4e58c1d05545e7970ac8cb95f197821419`. That stack-local merge does not +prove release on the default branch. + +Central PR #1248 fixes the root cause of PR #387's partial-scope false positive +by including trusted-base `backend/app/auth.py` context in backend Python Strix +scopes. Local evidence is `test_strix_quick_gate: PASS`, shell syntax success, +and `git diff --check`; the protected merge is not yet claimed. + +The organization scheduler is the single review/repair control plane. Its +`*/15 * * * *` queue sweep and `0 * * * *` heartbeat satisfy the hourly loop +requirement without a duplicate repository-local scheduler. + +## 2. Buyer-visible capability baseline + +Substantially present in source or active PRs: + +- PostgreSQL-backed import, normalized provenance, cutoff-aware analysis runs, + source revisions, lineage reconstruction, and explicit unavailable states. +- Authenticated workspace navigation, post detail, Korean summaries, 5W1H, + R&R/Keyman, evidence citations, chat, customer hierarchy, and lineage DAG. +- Semantic paragraph/list/table/image-region units that preserve the source + representation and provenance instead of flattening it into one body string. +- Contextual-orchestrator boundaries for adjudication, extraction, summaries, + chat, embeddings, and VISION; null channels remain unavailable and are + dropped from score fusion. +- W3C PROV-O projection through normalized provenance tables, with the + knowledge graph retained as an explicit navigation projection. + +These statements describe source capability, not authenticated production +corpus acceptance or protected release. + +## 3. Open product and technical gaps + +| Gap | Current evidence | Acceptance requirement | +| --- | --- | --- | +| Protected release | The listed work remains on open or stacked PR heads | Terminal exact-head checks, no unresolved threads, independent approval, and a protected merge SHA | +| 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/description work exists in PR #405 | Orchestrator-backed rendered workflow, original/derived asset provenance, and honest unsupported states | +| Semantic source rendering | Paragraph/table/list parsing exists across active stacks | Authenticated browser evidence that semantic units render without authoring-layout artifacts | +| Scientific measurement | TEPP and fast-mlsirm adapters are present or under review | Persisted accepted envelopes, calibration/recovery evidence, and no invented theta | +| Accessibility and responsive UX | Unit coverage exists for major buyer surfaces | Keyboard, screen-reader, mobile, and authenticated Playwright acceptance on the exact release head | +| External integrations | SearXNG, Zotero, calendar, and downstream consumer contracts are bounded | Provider conformance, failure/reconciliation behavior, and provenance-bearing integration evidence | +| 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 | + +## 4. Evidence boundaries + +- Never add a real record, title, name, identifier, screenshot, log, benchmark + artifact, or documentation example to this repository. +- Attendance or co-occurrence is not responsibility, project, customer, or + affiliation evidence. Preserve uncertainty and provenance. +- Missing transport, model capability, accepted envelope, or persistence is + unavailable/failed evidence, never a placeholder result. +- Local green tests, bot statuses, auto-merge, and warning-only checks do not + prove a protected merge. +- Re-fetch base/head SHAs, checks, review threads, approvals, rulesets, and the + merge SHA immediately before any lifecycle claim. + +## 5. Next acceptance loop + +1. Complete protected review and merge of central PR #1248, then rerun Strix + on PR #387 at the same exact head and verify the false finding is absent. +2. Re-fetch current heads, latest checks, unresolved threads, and independent + reviews for PRs #392, #405, #421, #426, and #468 before any merge claim. +3. Run frontend lint/test/build/Storybook, backend tests, and authenticated + browser/accessibility checks on the exact candidate release head. +4. Reproduce buyer cases with synthetic fixtures or authorized aggregate + runtime evidence, preserving `unavailable` explicitly. +5. Fix only evidence-backed failures and repeat the protected merge gate. Do + not self-approve, force merge/push, bypass protection, or transfer stale + review/check evidence across heads. From 1ae0aa9dbe1d462af7cba18723acc77c0fe8e5d3 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sun, 23 Aug 2026 16:40:33 +0900 Subject: [PATCH 2/4] docs: record armed acceptance queue --- docs/product-technical-gap-baseline.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index fe11172c5..01f9482de 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -12,12 +12,12 @@ The current acceptance queue was re-fetched immediately before this update: | Repository | PR | Exact head | State | Remaining gate | | --- | ---: | --- | --- | --- | -| LineageWeave | #392 | `a73d98850f985d0996bfbc4f2b1f17787710f206` | open, blocked | independent review and required protected checks | +| LineageWeave | #392 | `a73d98850f985d0996bfbc4f2b1f17787710f206` | open, blocked, auto-merge armed | independent review and required protected checks | | LineageWeave | #387 | `55a13f3473789a9481061ca2cd1f9ea042fc5902` | open, blocked, changes requested, auto-merge armed | current-head approval and Strix rerun after the central scope fix | -| LineageWeave | #405 | `0ac80616cb723a7810acae7c945fb12721a6cf7c` | open, blocked, changes requested | independent current-head approval | -| LineageWeave | #421 | `33ec5cd521bcf861db64b9f0c1faac3b3bf4deff` | open, blocked | terminal Strix result and independent review | +| LineageWeave | #405 | `0ac80616cb723a7810acae7c945fb12721a6cf7c` | open, blocked, changes requested, auto-merge armed | independent current-head approval | +| LineageWeave | #421 | `33ec5cd521bcf861db64b9f0c1faac3b3bf4deff` | open, blocked, auto-merge armed | terminal Strix result and independent review | | LineageWeave | #426 | `11a60b370d7b5783733febb593e8f91678cc403d` | open, blocked, review required, auto-merge armed | independent current-head approval; current checks are terminal-success | -| LineageWeave | #468 | `48c7ec09d282e96b411e1060ea4ef1a769893ef9` | open, blocked | current-head protected checks and independent review | +| LineageWeave | #468 | `48c7ec09d282e96b411e1060ea4ef1a769893ef9` | open, blocked, auto-merge armed | current-head protected checks and independent review | | ContextualWisdomLab/.github | #1248 | `3f78370f3ad01409c7b2fcfb63dfb66862098fa6` | open, blocked | protected checks and independent review for the Strix scope repair | PR #464 merged into its stacked base as From bcd881c83cae71ec28509fa1b06de84a488c9616 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Sat, 22 Aug 2026 18:18:22 +0900 Subject: [PATCH 3/4] fix(frontend): repair the inherited login/admin-panel build break Two TypeScript build errors on main (blocking every open PR's "Frontend lint, test, build" check, including this repo's own review bot's ability to approve them): - App.tsx imported rememberOidcReturnUrl/returnUrlFromLocation from oidcReturnUrl.ts but never called them -- the login button built its own unsanitized returnUrl inline instead of using the safe helper (oidcReturnUrl.ts's isSafeReturnUrl guard against an open-redirect- shaped value) or persisting it as the sessionStorage/localStorage fallback restoreOidcReturnUrl (already wired up on the callback side in main.tsx) reads when the OIDC state round-trip drops it. - The unauthenticated login screen unconditionally rendered when destination === "admin" -- accessToken is string | undefined here (always undefined while unauthenticated), a real type error, and the render was unreachable through normal navigation (destination only changes via the authenticated nav) -- dead code, removed. uv run --frozen python -m pytest -q: 753 passed, 17 skipped. pnpm run test: 140 passed. pnpm run lint / build: clean. --- frontend/src/App.test.tsx | 3 +++ frontend/src/App.tsx | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/frontend/src/App.test.tsx b/frontend/src/App.test.tsx index 7462abd2c..70eb27590 100644 --- a/frontend/src/App.test.tsx +++ b/frontend/src/App.test.tsx @@ -41,6 +41,9 @@ describe("App, unauthenticated", () => { state: expect.objectContaining({ returnUrl: expect.stringMatching(/^\//) }), }), ); + // Persisted as a fallback in case the OIDC state round-trip is dropped + // (see oidcReturnUrl.ts's restoreOidcReturnUrl, consumed in main.tsx). + expect(window.sessionStorage.getItem("lineageweave.oidc.returnUrl")).toMatch(/^\//); }); }); diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 6fba0dd41..1b5b351ab 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -4610,7 +4610,8 @@ export default function App({ showLabPanels = false }: { showLabPanels?: boolean
- {destination === "admin" ? : null}