Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
894 commits
Select commit Hold shift + click to select a range
34a3603
test: require actionable lineage empty state and Space activation
seonghobae Aug 21, 2026
088b1d5
test: require localized lineage empty-state next action
seonghobae Aug 21, 2026
507d520
feat: localize actionable lineage empty state
seonghobae Aug 21, 2026
0db9bd7
feat: make the lineage empty state actionable
seonghobae Aug 21, 2026
c883483
docs: record actionable lineage empty state
seonghobae Aug 21, 2026
86e2134
test: require mobile evidence-card labels
seonghobae Aug 21, 2026
0b0cacd
feat: label mobile lineage evidence cards
seonghobae Aug 21, 2026
f9df5ea
fix: guard lineage dag layout against cycles
seonghobae Aug 21, 2026
0d827fc
fix: keep provider errors behind product boundaries
seonghobae Aug 21, 2026
d58edc8
fix: close provider error leaks at write endpoints
seonghobae Aug 21, 2026
711f027
merge current main into #258
seonghobae Aug 21, 2026
678df0d
fix: keep unauthenticated admin controls out of login
seonghobae Aug 21, 2026
abb99aa
merge concurrent provider error boundary fix
seonghobae Aug 21, 2026
44e8dcf
fix: normalize unexpected provider failures
seonghobae Aug 21, 2026
5158934
fix: normalize summary enrichment failures
seonghobae Aug 21, 2026
f4563df
docs: plan forward-only fast stabilization
seonghobae Aug 21, 2026
0d7fd47
test: reproduce lineage date specificity defect
seonghobae Aug 21, 2026
6f4712d
fix: preserve muted lineage event-date styling
seonghobae Aug 21, 2026
f5e23b5
fix: close remaining provider error leaks
seonghobae Aug 21, 2026
1fad94f
Merge protected main into Event Lineage stack
seonghobae Aug 21, 2026
8314f3c
ci: verify and repair OIDC return fallback
seonghobae Aug 21, 2026
2c84824
fix: validate provider chat response envelopes
seonghobae Aug 21, 2026
c8dcc27
Merge remote-tracking branch 'refs/remotes/origin/feat/analysis-run-n…
seonghobae Aug 21, 2026
7f4a5c9
ci: expose PR 258 repair as a visible exact-head check
seonghobae Aug 21, 2026
e175ecd
ci: run the PR 258 repair through the recognized test workflow
seonghobae Aug 21, 2026
c48d88b
ci: remove completed self-modifying repair workflows
seonghobae Aug 21, 2026
899b44a
Merge branch 'feat/analysis-run-name-evidence-lineage' of https://git…
seonghobae Aug 21, 2026
c135c41
ci: keep tests workflow read-only
seonghobae Aug 21, 2026
6c9f86d
Merge commit 'c135c41ba65e02a5598647adcfc978002f275673' into HEAD
seonghobae Aug 21, 2026
336730f
fix: keep unauthenticated admin controls gated
seonghobae Aug 21, 2026
0e63ba0
fix: align Event Lineage shell with UI UX guide (#350)
seonghobae Aug 21, 2026
7f29b97
docs: record customer master tree/filter scope gap
seonghobae Aug 21, 2026
8bed77e
docs: record customer master tree/filter scope gap (#364)
seonghobae Aug 21, 2026
f51b2bc
docs: decide customer master scope facets
seonghobae Aug 21, 2026
c2816f7
docs: anchor customer scope ADR to merged head
seonghobae Aug 21, 2026
63ce399
fix: style 5W1H compactly and order R&R by ontology hierarchy
seonghobae Aug 21, 2026
765a12c
feat: expose customer master scope facets
seonghobae Aug 21, 2026
6a43dca
docs: record customer master scope implementation
seonghobae Aug 21, 2026
f669916
fix: cluster R&R subsidiary organizations under their parent
seonghobae Aug 21, 2026
ad4403e
feat: expose observed customer hierarchy facets
seonghobae Aug 21, 2026
7974894
docs: record observed hierarchy facet
seonghobae Aug 21, 2026
c8b32c7
fix: keep observed customer navigation fail closed
seonghobae Aug 21, 2026
453fee4
feat: add account_affiliation scope facet (ADR 0125 step 1)
seonghobae Aug 21, 2026
96c0ac3
fix: make post detail popup keyboard accessible
seonghobae Aug 21, 2026
a4ae004
docs: refresh exact-head product gap baseline
seonghobae Aug 21, 2026
5fb4c1f
fix: keep demo scope out of customer master queries
seonghobae Aug 21, 2026
6cdb782
docs: record demo-scope authorization regression
seonghobae Aug 21, 2026
884dc97
fix: recompute observed hierarchy after scope filtering
seonghobae Aug 21, 2026
dac963e
docs: record hierarchy facet filtering fix
seonghobae Aug 21, 2026
1eef321
fix: standardize visible keyboard focus
seonghobae Aug 21, 2026
a9e5e84
docs: record shared focus baseline
seonghobae Aug 21, 2026
aef31c3
merge: reconcile lineage-dag-regression base
seonghobae Aug 21, 2026
302ae73
docs: record active semantic parsing PR
seonghobae Aug 21, 2026
e2ebd15
fix: share post visibility policy SQL
seonghobae Aug 21, 2026
4a17dd3
docs: record shared visibility review repair
seonghobae Aug 21, 2026
cc33aaf
docs: record ontology explorer stabilization
seonghobae Aug 21, 2026
09b47cc
fix: keep modal focus inside visible controls
seonghobae Aug 21, 2026
fbffec4
docs: record modal focus review repair
seonghobae Aug 21, 2026
e6d94c2
docs: record current frontend verification
seonghobae Aug 21, 2026
31bbfe1
feat: implement ADR 0125 scope facets for Customer Master
seonghobae Aug 21, 2026
497ef8b
docs: record full backend verification
seonghobae Aug 21, 2026
d38ef6f
fix: fully contain popup keyboard navigation
seonghobae Aug 21, 2026
a5aa0da
fix: contain focus trap from hidden descendants
seonghobae Aug 21, 2026
47932b9
docs: record popup focus repair
seonghobae Aug 21, 2026
696f8d4
docs: record nested hidden focus repair
seonghobae Aug 21, 2026
d66132a
fix: remove unshipped global ask migration dependency
seonghobae Aug 21, 2026
db30471
Merge commit '8bed77e7e7b91b633bb92d3a82d0187c387206af' into HEAD
seonghobae Aug 21, 2026
67beb79
test: count customer master SQL audit
seonghobae Aug 21, 2026
588dc91
fix: keep disclosure summaries keyboard reachable
seonghobae Aug 21, 2026
f014e85
fix: cap observed customer master entities
seonghobae Aug 21, 2026
ae48aaa
fix: intersect customer scope with authorized entities
seonghobae Aug 21, 2026
d3c3102
feat: expand standards-aligned semantic ontology and retrieval
seonghobae Aug 21, 2026
7a0d025
fix: preserve numbered footnotes and empty table cells (#367)
seonghobae Aug 21, 2026
849986b
Merge remote-tracking branch 'origin/docs/customer-master-scope-adr' …
seonghobae Aug 21, 2026
a3b8591
docs: record R&R role/relationship conflation and catalog gap
seonghobae Aug 21, 2026
74b92eb
fix: exclude demo entities before customer cap
seonghobae Aug 21, 2026
aa24734
feat(frontend): persist workspace navigation state
seonghobae Aug 21, 2026
ee420e0
chore: vendor agent skill sources
seonghobae Aug 21, 2026
b709940
fix: mark AdminPanel's required field for screen readers, not just vi…
seonghobae Aug 21, 2026
99dae67
fix(frontend): clarify VOC filter labels and accessibility
seonghobae Aug 21, 2026
860545f
fix: close knowledge graph boundary gaps (#376)
seonghobae Aug 21, 2026
9f8f4b7
Merge pull request #380 from seonghobae/docs/customer-master-scope-adr
seonghobae Aug 21, 2026
1f12c86
fix: keep migration 0105 excluded from the compose allowlist
seonghobae Aug 21, 2026
67910ed
feat(board): clarify and filter source detail states
seonghobae Aug 21, 2026
e347666
fix(header): disclose authorized corporation and business unit scope
seonghobae Aug 21, 2026
d549516
fix: replay global ask history migration
seonghobae Aug 21, 2026
e1e69d3
fix: enforce writing-state evidence boundaries
seonghobae Aug 21, 2026
e44a216
fix(content): skip writing posts in analysis queue
seonghobae Aug 21, 2026
fb3ea51
fix: normalize source detail state filters
seonghobae Aug 21, 2026
03b0610
Merge remote-tracking branch 'user-fork/feat/board-source-detail-stat…
seonghobae Aug 21, 2026
b5882f7
fix: normalize padded detail state boundaries
seonghobae Aug 21, 2026
a9dcd34
Merge remote-tracking branch 'refs/remotes/user-fork/pr384-current' i…
seonghobae Aug 21, 2026
7f00783
fix: keep writing state and report fields buyer-safe
seonghobae Aug 21, 2026
caf3872
fix: hide unavailable source state filters
seonghobae Aug 21, 2026
cf620ae
feat: preserve source commercial context hints
seonghobae Aug 21, 2026
3113730
feat: preserve source commercial context hints
seonghobae Aug 21, 2026
b6adf3c
feat: expose source lineage evidence
seonghobae Aug 21, 2026
eb7b862
fix: scope source-context demo eligibility
seonghobae Aug 21, 2026
b2fe8b8
fix: gate writing post analysis requests
seonghobae Aug 21, 2026
ce2b72c
Merge branch 'feat/board-source-detail-state-filter' of https://githu…
seonghobae Aug 21, 2026
00c89e4
Normalize writing state in content recovery
seonghobae Aug 21, 2026
67288da
fix: apply source commercial context migration
seonghobae Aug 21, 2026
352f48a
Merge remote-tracking branch 'origin/docs/customer-master-scope-adr' …
seonghobae Aug 21, 2026
5365aae
Align source context migration and evidence tests
seonghobae Aug 21, 2026
1211ded
Merge branch 'feat/board-source-detail-state-filter' of https://githu…
seonghobae Aug 21, 2026
c14b539
Merge branch 'feat/board-source-detail-state-filter' of https://githu…
seonghobae Aug 21, 2026
e5f93ab
docs: refresh product gap exact-head baseline
seonghobae Aug 21, 2026
92efa05
Merge remote-tracking branch 'user-fork/feat/board-source-detail-stat…
seonghobae Aug 21, 2026
2fba326
docs: reconcile merged PR evidence
seonghobae Aug 21, 2026
3f554c0
fix: gate writing-state derived content
seonghobae Aug 21, 2026
c188545
Merge remote-tracking branch 'user-fork/feat/board-source-detail-stat…
seonghobae Aug 21, 2026
ec6a829
Merge pull request #366 from ContextualWisdomLab/feat/customer-master…
seonghobae Aug 21, 2026
fb4bad5
fix: keep source context complete in global ask
seonghobae Aug 21, 2026
f688f0e
Merge remote-tracking branch 'user-fork/feat/board-source-detail-stat…
seonghobae Aug 21, 2026
b5bcbba
Merge remote-tracking branch 'origin/feat/lineage-dag-regression' int…
seonghobae Aug 21, 2026
6a3fd38
docs: record current PR 384 exact head
seonghobae Aug 21, 2026
3e6878d
fix: reconcile customer master scope UI merge
seonghobae Aug 21, 2026
83ace33
Revert "chore: vendor agent skill sources"
seonghobae Aug 21, 2026
671e10c
Merge customer-master scope base into PR384 repair
seonghobae Aug 21, 2026
2ca009b
docs: record PR384 verification baseline
seonghobae Aug 21, 2026
ae4ad1d
test: remove duplicate commercial migration replay
seonghobae Aug 21, 2026
2312564
Merge remote-tracking branch 'origin/docs/customer-master-scope-adr' …
seonghobae Aug 21, 2026
5f6e337
Merge remote-tracking branch 'user-fork/feat/board-source-detail-stat…
seonghobae Aug 21, 2026
1f4e175
Merge remote-tracking branch 'user-fork/feat/board-source-detail-stat…
seonghobae Aug 21, 2026
f1aeae9
docs: track PR384 remote fixture merge
seonghobae Aug 21, 2026
d2d4b92
Merge branch 'feat/board-source-detail-state-filter' of https://githu…
seonghobae Aug 21, 2026
e8637fb
docs: align PR384 baseline with hosted head
seonghobae Aug 21, 2026
ab8d808
fix(chat): remove duplicate linked-post state column
seonghobae Aug 21, 2026
341a852
style(chat): normalize ingestion imports
seonghobae Aug 21, 2026
86e2f4d
fix: preserve identity hints beside lifecycle state
seonghobae Aug 21, 2026
140f91e
fix(semantics): preserve identity hints beside lifecycle state
seonghobae Aug 21, 2026
0cbcede
fix(ui): keep popup layout within three responsive tiers
seonghobae Aug 21, 2026
e793de0
feat: expose explicit semantic project relations
seonghobae Aug 21, 2026
44d4081
Merge remote-tracking branch 'refs/remotes/user-fork/feat/board-sourc…
seonghobae Aug 21, 2026
c8f7c4a
fix(summary): distinguish failed image ingestion
seonghobae Aug 21, 2026
cc0b50a
fix(summary): make image retry action explicit
seonghobae Aug 21, 2026
2a54d5f
fix(api): ignore blank post filter values
seonghobae Aug 21, 2026
f402f8f
test(api): cover blank VOC filters
seonghobae Aug 21, 2026
e4c4a3c
fix: keep observed hierarchy facets on ancestors
seonghobae Aug 21, 2026
1bffa5a
fix: preserve numeric source item hints
seonghobae Aug 21, 2026
13bf132
fix(frontend): skip content fetch for writing posts
seonghobae Aug 21, 2026
fd960ea
fix(queue): include commercial source context
seonghobae Aug 21, 2026
a4ef1e3
merge: preserve commercial context queue fix
seonghobae Aug 21, 2026
a32bbda
fix(api): restore source-state and analysis boundaries
seonghobae Aug 21, 2026
5e37378
feat: expose source context and project-safe summary hints
seonghobae Aug 21, 2026
d5d6668
Merge branch 'feat/board-source-detail-state-filter' of https://githu…
seonghobae Aug 21, 2026
a046da4
fix(api): import shared source visibility predicate
seonghobae Aug 21, 2026
f22475d
fix(security): keep Global Ask SQL static
seonghobae Aug 21, 2026
1412313
fix: use valid semgrep suppression for static SQL
seonghobae Aug 21, 2026
8e92f46
fix: keep writing posts bookmarkable
seonghobae Aug 21, 2026
16fdb09
test: document bookmark visibility seam
seonghobae Aug 21, 2026
82f61e0
fix: fail closed on evolving source contracts
seonghobae Aug 21, 2026
4fdd303
feat: guide empty five-w-one-h evidence
seonghobae Aug 21, 2026
dd44136
fix: protect source metadata during synthetic cleanup
seonghobae Aug 21, 2026
9464b0b
test: cover five-w-one-h guidance fallbacks
seonghobae Aug 21, 2026
ab6af8d
fix: preserve source identity in operator eligibility
seonghobae Aug 21, 2026
fc04099
docs: define source identity evidence boundary
seonghobae Aug 21, 2026
30d6357
fix: requeue incomplete image evidence
seonghobae Aug 21, 2026
d186af5
docs: align image completeness invariant
seonghobae Aug 21, 2026
51aab85
chore: normalize post queue imports
seonghobae Aug 21, 2026
259ce60
chore: clean operator backfill scripts
seonghobae Aug 21, 2026
658edd0
fix: reject writing posts in operator retries
seonghobae Aug 21, 2026
943f011
docs: refresh live gap evidence
seonghobae Aug 21, 2026
877dbf5
fix: supervise post content worker
seonghobae Aug 21, 2026
e41bf17
fix: add explicit post content retry
seonghobae Aug 21, 2026
6e50e01
fix: make explicit post retry scan-free
seonghobae Aug 21, 2026
2e51a77
fix(ui): persist explicit tenant identity metadata (#397)
seonghobae Aug 21, 2026
7882bfc
test: cover scan-free explicit content retry
seonghobae Aug 21, 2026
f3827f4
fix: cast post content retry timestamps
seonghobae Aug 21, 2026
3afdd2e
Merge branch 'feat/board-source-detail-state-filter' of https://githu…
seonghobae Aug 21, 2026
8aba2c8
Merge remote-tracking branch 'origin/stack/board-source-detail-state-…
seonghobae Aug 21, 2026
a6d754a
Merge branch 'feat/board-source-detail-state-filter' of https://githu…
seonghobae Aug 21, 2026
202063b
fix: harden tenant settings audit and edit state (#398)
seonghobae Aug 21, 2026
5fc9434
Merge stacked tenant settings audit fix into source detail branch
seonghobae Aug 21, 2026
7d990ae
docs: finish reader terminology rename
seonghobae Aug 21, 2026
782f73f
fix: KnowledgeGraph evidence-node visibility and backfill field parity
seonghobae Aug 22, 2026
65f0a41
fix: remove dead summary_waiting_for_images variable in read_post_con…
seonghobae Aug 22, 2026
d7ce555
feat: distinguish why R&R catalog links are unresolved (ADR 0141) (#459)
seonghobae Aug 23, 2026
df413d4
fix(lineage): distinguish isolated posts from missing comparison grou…
seonghobae Aug 23, 2026
a251848
test: close ABAC denial-path coverage gaps on 6 post-scoped endpoints…
seonghobae Aug 23, 2026
ebdbf51
feat(lineage): add corpus-wide coverage aggregate to rebuild (#473)
seonghobae Aug 23, 2026
83f1710
test: cover two-project key-event stream separation (case-multi-proje…
seonghobae Aug 23, 2026
785574f
fix: keep Event Lineage and Knowledge Graph titles readable on-graph
seonghobae Aug 23, 2026
fe9f1e3
feat: add evidence-bearing source-reference research (ADR 0133)
seonghobae Aug 23, 2026
941efb1
feat: persist per-post Ask conversation history (ADR 0136)
seonghobae Aug 23, 2026
33a58d0
feat: require cross-post customer identity judgment (ADR 0137)
seonghobae Aug 23, 2026
e726ce6
feat: name reader failures with token-backed exception copy (ADR 0134)
seonghobae Aug 23, 2026
06fc58f
feat: keep analysis-run next actions kind-and-status exact (ADR 0135)
seonghobae Aug 23, 2026
0d2f705
feat: add TEPP temporal-context client beside calibrated measurement
seonghobae Aug 23, 2026
e4667e1
fix: keep stale summaries readable and normalize OWL-Time order
seonghobae Aug 23, 2026
0c194d0
ci: start Valkey and Keycloak in tests and repair invalid search indexes
seonghobae Aug 23, 2026
d5920c8
feat: wire remaining ADR 0133-0137 surfaces into the workspace
seonghobae Aug 23, 2026
68ac356
fix: document safe global Ask eligibility SQL
seonghobae Aug 23, 2026
87f74c6
fix: align customer catalog and API migration contracts
seonghobae Aug 23, 2026
b5d5f02
fix(ask): drop untyped NULL cursor params breaking first history load
seonghobae Aug 23, 2026
4a97a58
docs: mark the docstring-coverage gap-baseline entry closed
seonghobae Aug 23, 2026
eed5ddc
fix(ask): restore atomic rollback for revoked Global Ask citations (#…
seonghobae Aug 23, 2026
2f05c42
fix: preserve explicit temporal milestone order
seonghobae Aug 23, 2026
49eb339
docs: record exact repository coverage gap
seonghobae Aug 23, 2026
41e27b7
docs: record temporal changed-line coverage
seonghobae Aug 23, 2026
5f24b1c
test(frontend): measure production source coverage
seonghobae Aug 23, 2026
d806bb9
perf(ask): batch per-turn reauthorization instead of N+1 queries (#358)
seonghobae Aug 23, 2026
c6d0ae5
feat: preserve planned facility intent as evidence (v2.16.1) (#505)
seonghobae Aug 23, 2026
fc3ea87
fix(db): admit planned facility predicate
seonghobae Aug 23, 2026
e4d692c
fix: enforce planned facility admission (#509)
seonghobae Aug 23, 2026
494ccf5
test: inventory workspace navigation states (#510)
seonghobae Aug 23, 2026
9661df9
docs: enforce public Python docstrings
seonghobae Aug 23, 2026
e6f15c3
fix: require credible planned-facility project evidence
seonghobae Aug 23, 2026
0a1c4ec
fix(lineage): stop hidden-sibling edges from masking isolation_reason…
seonghobae Aug 23, 2026
dacefd6
Merge remote-tracking branch 'origin/feat/board-source-detail-state-f…
seonghobae Aug 23, 2026
037cfe1
docs: bind coverage evidence to measured head
seonghobae Aug 23, 2026
24d7d7d
Merge remote-tracking branch 'origin/feat/board-source-detail-state-f…
seonghobae Aug 23, 2026
0e8f271
Merge remote-tracking branch 'origin/feat/board-source-detail-state-f…
seonghobae Aug 23, 2026
2ff02bb
Merge pull request #512 from ContextualWisdomLab/codex/planned-facili…
seonghobae Aug 23, 2026
cfec2b7
test(frontend): cover application bootstrap
seonghobae Aug 23, 2026
ad9d65f
test(frontend): close evidence error edge cases
seonghobae Aug 23, 2026
d4acebe
test(frontend): cover reader interaction boundaries
seonghobae Aug 23, 2026
011f2cc
test(frontend): cover post API mutations
seonghobae Aug 23, 2026
22ce257
fix(ask): port the #362 citation-rollback fix to per-post Ask history
seonghobae Aug 23, 2026
d02ab8f
docs: remove ADR 0124 trailing blank line (#514)
seonghobae Aug 23, 2026
c922067
test(frontend): cover semantic guidance boundaries
seonghobae Aug 23, 2026
602f8a5
test(frontend): cover knowledge graph navigation
seonghobae Aug 23, 2026
a57631a
fix(frontend): keep unknown run guidance reader-safe
seonghobae Aug 23, 2026
63f3231
refactor(frontend): remove dead admin handoffs
seonghobae Aug 23, 2026
d76ea40
test: cover reader post actions and semantic evidence
seonghobae Aug 23, 2026
e02fd5e
test: close frontend rendering edge coverage
seonghobae Aug 23, 2026
e0bc14a
fix(kg): stop a hidden sibling post from seeding the indirect-relatio…
seonghobae Aug 23, 2026
1f82fb0
test: cover workspace failure and compatibility states
seonghobae Aug 23, 2026
5bd7ef4
fix: classify observed customer hierarchy correctly
seonghobae Aug 23, 2026
0856cfa
test: cover relationship and ticket failure paths
seonghobae Aug 23, 2026
6b79d55
fix: surface unavailable related-post evidence
seonghobae Aug 23, 2026
3de20af
fix: harden workspace navigation recovery
seonghobae Aug 23, 2026
2bc597c
test: close admin state branch coverage
seonghobae Aug 23, 2026
6a5e1d3
test: cover board facets and pagination
seonghobae Aug 23, 2026
041170d
fix: require explicit location evidence in 5W1H (#523)
seonghobae Aug 23, 2026
db437ef
fix(api): GET /api/posts total_count no longer collapses to 0 past th…
seonghobae Aug 23, 2026
9cc5eef
fix: move tenant identity migration to 0176
seonghobae Aug 23, 2026
45db89b
fix(i18n): translate AdminPanel labels into zh/ja/vi, add parity test
seonghobae Aug 23, 2026
b2cc033
fix: gate vision summaries on current persisted evidence (#528)
seonghobae Aug 23, 2026
50cb800
fix(i18n): translate AdminPanel's data-driven endpoint/nav labels
seonghobae Aug 23, 2026
154a13e
fix: name leftover next action and keep saved evaluation scores
seonghobae Aug 23, 2026
884edcd
docs: refresh gap baseline to the live 55-PR queue
seonghobae Aug 23, 2026
d5235ca
docs: add leftover-map length PR 533 to the live queue listing
seonghobae Aug 23, 2026
4ef0e28
feat: remember login return path before OIDC redirect (v2.12.19) (#525)
seonghobae Aug 23, 2026
55d2e59
fix: scope Customer Master relationship_network to real ABAC affiliat…
seonghobae Aug 23, 2026
70dfb5a
fix: guard SourceResearchPanel against a stale postId fetch race
seonghobae Aug 23, 2026
084c3a1
docs: log Event Lineage mega-group entanglement gap
seonghobae Aug 23, 2026
cbe2884
Merge remote-tracking changes into gap-baseline update
seonghobae Aug 23, 2026
171c869
fix(i18n): translate Board and R&R relationship labels into zh/ja/vi
seonghobae Aug 23, 2026
3d93ea9
fix: bootstrap repo-root sys.path in the two operator scripts missing it
seonghobae Aug 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
11 changes: 11 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
.git
.codegraph
.venv
node_modules
frontend/node_modules
frontend/dist
frontend/coverage
**/__pycache__
**/.pytest_cache
**/.ruff_cache
**/.mypy_cache
80 changes: 0 additions & 80 deletions .github/workflows/repair-global-ask-pnpm-v2.yml

This file was deleted.

28 changes: 28 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,15 @@ jobs:
--health-interval 10s
--health-timeout 5s
--health-retries 5
valkey:
image: valkey/valkey:8-alpine@sha256:a038175878d66b9d274fbf8be73c0305e93798b83917647f167e18cef3c71eec
ports:
- 16379:6379
options: >-
--health-cmd "valkey-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
LINEAGEWEAVE_TEST_POSTGRES_ADMIN_DSN: postgresql://postgres:postgres@localhost:5432/postgres
steps:
Expand All @@ -36,6 +45,25 @@ jobs:
with:
persist-credentials: false

- name: Start synthetic Keycloak realm
run: |
docker build --tag lineageweave-keycloak-test docker/keycloak
docker run --detach --name lineageweave-keycloak-test \
--publish 18080:8080 \
--env KEYCLOAK_ADMIN=admin \
--env KEYCLOAK_ADMIN_PASSWORD=admin_dev_only \
lineageweave-keycloak-test start-dev --import-realm
for _ in {1..60}; do
if curl --fail --silent \
http://localhost:18080/realms/lineageweave-demo/.well-known/openid-configuration \
>/dev/null; then
exit 0
fi
sleep 2
done
docker logs lineageweave-keycloak-test
exit 1

- name: Set up Python
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # actions/setup-python@v6
with:
Expand Down
13 changes: 9 additions & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ reimplementing them:
tree assembly (`reconstruct.py`'s `_walk`/`thread_messages` calls).
- [RankWeave](https://github.com/ContextualWisdomLab/RankWeave) for
multi-channel score fusion (`weighted_convex_fuse` in
`reconstruct.py`) and the buyer-facing Rankings port
`reconstruct.py`) and the reader-facing Rankings port
(`rankweave_client.py`) -- never invent a fused score or a theta.
- [TEPP](https://github.com/ContextualWisdomLab/TEPP)'s published wire
contract for calibrated measurement (`tepp_client.py`) -- never
Expand Down Expand Up @@ -127,7 +127,7 @@ contextual-orchestrator owns model discovery and selection.
retaining the original asset and provenance. Recognize image DOM/visual
regions before OCR, descriptions, Keyman extraction, or embeddings. Store
region-level evidence; never show an internal LLM instruction such as
`This post is an image` to a buyer.
`This post is an image` to a reader.

## Source parsing and semantic units

Expand All @@ -146,10 +146,10 @@ contextual-orchestrator owns model discovery and selection.
- Remove presentation-only visual line alignment inside a paragraph (for
example continuation lines manually aligned after `-`, `*`, `1.`, or `.`)
from derived semantic text, while retaining the source body and meaningful
list/heading nesting. A buyer-facing post view must render semantic
list/heading nesting. A reader-facing post view must render semantic
paragraphs, not the authoring application's spacing workaround.
- Image descriptions, OCR text, and region evidence are analysis artifacts,
not buyer-facing prompt instructions. Buyer UI shows the source content and
not reader-facing prompt instructions. The workspace UI shows the source content and
useful captions/evidence only, with provenance where appropriate.

## Pluggable channels: never fake a missing signal
Expand Down Expand Up @@ -208,6 +208,11 @@ A run-bearing analysis-run registry empties only after an unrevoked
(ADR 0020 / v0.87.0). The documented phrase is not a secret. Do not
expose purge on a public HTTP route.

Unauthenticated **Log in** must call `returnUrlFromLocation()` then
`rememberOidcReturnUrl` before `signinRedirect` (ADR 0109) so a
shared `/?post=` link still opens that post. Do not mount tenant admin
settings on the signed-out login shell.

`POST /api/analysis-runs` records Pending lineage only (ADR 0017 /
v2.7.1). TEPP and period-report kinds 422 before any snapshot write.
`POST /api/analysis-runs/{id}/start` reconstructs a Pending lineage
Expand Down
14 changes: 8 additions & 6 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ flowchart LR
| `chunking.py` | Splits a document into meaning-identifiable units (paragraph, sentence, DOM, conversation-turn) plus embedded-image extraction, in document order |
| `embedding_client.py` | Pluggable text-embedding channel (`Null` default, `OpenAiCompatible` real impl) + `chunked_max_similarity` |
| `adjudication_client.py` | Pluggable LLM-judgment channel (`Null` default, `ContextualOrchestrator` real impl) |
| `image_content.py` | Pluggable vision channel: OCR + object recognition/tagging for embedded images (`Null` default, `OpenAiCompatibleVisionClient` real impl). The product popup (`frontend/src/PostBody.tsx`) renders each `data:image` payload in document order so the buyer sees the picture, not the base64 string; GET does not call the vision client. |
| `image_content.py` | Pluggable vision channel: OCR + object recognition/tagging for embedded images (`Null` default, `OpenAiCompatibleVisionClient` real impl). The product popup (`frontend/src/PostBody.tsx`) renders each `data:image` payload in document order so the reader sees the picture, not the base64 string; GET does not call the vision client. |
| `tepp_client.py` | TEPP's published `AnalysisRunRequest` wire contract, pluggable transport |
| `rankweave_client.py` | Fail-closed RankWeave ranking port (`weighted_reciprocal_rank_fuse` in-process; never invent a fused score or a theta) |
| `reconstruct.py` | The pipeline: group → candidate window → score → fuse → thread |
Expand Down Expand Up @@ -301,7 +301,9 @@ config baked in at build time from the same `.env` ports every other
service uses (Vite embeds `import.meta.env.VITE_*` at build time, not
runtime, so these are Docker build args, not container env vars).
`src/App.test.tsx` mocks `react-oidc-context`'s `useAuth` to test the
component's own render logic (login button -> `signinRedirect()`; the
component's own render logic (login button stores a safe return path
then `signinRedirect()`; the signed-out shell never mounts tenant
admin settings; the
A-100 fork DAG shows a branch point and rec-006 as its own root;
`post_admin` can rebuild; fetch posts with the token -> render list ->
click -> popup shows the fetched body and every panel; ask a chat
Expand All @@ -326,7 +328,7 @@ Keymen are affiliated with (`lineageweave/affiliate_tree.py`, loaded by
set of those leaves, not the whole company directory -- a sibling the
post never mentions is omitted. People on the tree are buttons that
reuse `GET /api/keymen/{person_id}/related` so the popup Keyman walk
starts from the affiliation the buyer clicked. A resolved organization
starts from the affiliation the reader clicked. A resolved organization
is the same walk via `GET /api/corporate-entities/{id}/related`. An affiliation that did not resolve to
a `corporate_entity` row stays as its own root (`resolved=false`); that
is the same never-guess-a-parent rule
Expand Down Expand Up @@ -467,15 +469,15 @@ truly have no dated open tickets.

## Phase 6-M2: authorized analysis-run evidence (read projection)

Issue #79's first buyer-visible Milestone 2 slice is a source-redacting
Issue #79's first reader-visible Milestone 2 slice is a source-redacting
read of the #89 registry. `GET /api/analysis-runs` and
`GET /api/analysis-runs/{id}` require `post_read` and apply the scope
in SQL: the requester always sees their own run; a corporate-entity or
process-unit scope is visible only to affiliated accounts; a
thread-group scope is visible only when the account can already see a
post in that group; `all_visible` is requester-only. Hidden runs 404. Detail also lists ABAC-visible post titles in the
run's scope whose `created_at` is at or before `knowledge_cutoff`
(ADR 0016) so a buyer can open a post the run was allowed to know
(ADR 0016) so a reader can open a post the run was allowed to know
without seeing later live rows or hidden bodies. Detail also returns
revision and configuration digest prefixes.
`POST /api/analysis-runs` records a Pending lineage run on a new
Expand Down Expand Up @@ -925,7 +927,7 @@ code. Wired into both `keyman_ingestion.py`'s affiliation loop and
## Standards-complete W3C PROV-O provenance layer

ADR 0011 separates standards-complete provenance from the compact
buyer-facing navigation graph. `lineageweave/prov_o.py` validates
reader-facing navigation graph. `lineageweave/prov_o.py` validates
and materializes all 50 normative PROV-O properties, including
literal-valued times/values and qualified Influence resources.
`migrations/0017_prov_o_standard_relations.sql` stores definitions,
Expand Down
6 changes: 6 additions & 0 deletions CHANGELOG.d/2.12.19-oidc-login-return-remember.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
## 2.12.19 — Remember the login return path

- Log in now stores a validated same-origin return path (ADR 0109)
before the OIDC redirect, so a shared `/?post=` link still opens that
post after callback. Tenant admin settings stay off the signed-out
login shell so the production frontend build type-checks.
3 changes: 3 additions & 0 deletions CHANGELOG.d/2.12.6-frontend-build-gate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## Fixed

- Keep the unauthenticated login surface free of authenticated admin controls and remove unused OIDC imports so TypeScript production builds pass.
4 changes: 4 additions & 0 deletions CHANGELOG.d/2.12.6-provider-error-boundary.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
## Fixed

- Keep contextual-orchestrator, OIDC, RankWeave, TEPP, and durable-ingestion diagnostics behind stable product error boundaries while retaining the original exception for server-side chaining.
- Keep browser 5xx and transport failures behind the same stable client error boundary.
1 change: 1 addition & 0 deletions CHANGELOG.d/2.12.6-related-posts-unavailable.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fixed post details to replace an endless related-post loading state with a fail-closed availability message when lineage evidence cannot be loaded.
5 changes: 5 additions & 0 deletions CHANGELOG.d/2.12.6-remove-self-modifying-repair-workflows.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
## Fixed

- Removed completed repair-only GitHub Actions that could write to feature
branches. Product fixes now require ordinary reviewed commits and the normal
protected Checks path.
32 changes: 32 additions & 0 deletions CHANGELOG.d/2.12.6-temporal-semantic-order.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
### Fixed

- Preserve every explicit earlier-to-later product-introduction relation as
OWL-Time milestone evidence, including a named base product followed by its
multi-stage variant.
- Return persisted older summaries immediately as stale while operator
regeneration performs the dedicated relation extraction.
- Show Knowledge Graph direction and source evidence without relying on hover.
- Add a reproducible full-production-source frontend coverage command using
Vitest's matching V8 provider; the measured gap remains visible instead of
excluding uncovered application files.
- Enforce repository-wide public Python docstrings with an AST contract and
document all 51 public definitions missing on this exact branch head.
- Cover the frontend bootstrap and OIDC return callback at 100%, removing the
only production entrypoint with zero measured coverage.
- Fail closed on unknown analysis-evidence diagnoses and keep untrusted 5xx
payloads behind reader-safe next-action copy.
- Cover Global Search focus/keyboard behavior, Source Research retry and
reader-safe failure states, R&R affiliation navigation, and malformed
Lineage DAG edges without changing production behavior.
- Cover list-filter serialization, bookmark writes, and explicit source
research at the shared frontend API boundary.
- Route empty embedded-image payloads through the existing reader-facing
decode failure instead of rendering an empty body.
- Fail closed on unknown analysis-run kinds/statuses and cover its lifecycle,
reporting, TEPP, FiveW1H, and cyclic-layout guidance boundaries.
- Cover Knowledge Graph zoom limits, keyboard/pointer panning, post selection,
drag-click suppression, and dangling-edge evidence fallback.
- Keep an unknown analysis-run kind or status reader-safe and non-interactive
without crashing the workspace or exposing the backend code.
- Remove unreachable admin handoff screens while preserving direct Board
routing, and cover account scope, shortcuts, and tenant-save outcomes.
8 changes: 8 additions & 0 deletions CHANGELOG.d/2.12.7-lineage-dag-evidence.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
### Changed

- Made the buyer Event Lineage DAG explicitly directional with parent-to-child arrowheads whose paths stop outside node circles.
- Preserved authored graph width behind a keyboard-focusable horizontal scroll region instead of shrinking deep lineages.
- Added visible event dates, a redundant visual/text legend, and an accessible exact-value evidence table for lineage relations, dates, and fused scores.
- Added five-locale buyer copy stating that reconstructed continuation edges do not prove causality or authoritative fact.
- Replaced the internal "seed posts" empty-state language with an actionable five-locale instruction to add eligible source records and rebuild Event Lineage.
- Added synthetic Storybook states for branching, selected-root, isolated-root, and empty lineage surfaces.
7 changes: 7 additions & 0 deletions CHANGELOG.d/2.16.1-planned-facility-relation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## 2.16.1

- Add the fail-closed `lw_plans_to_operate` semantic relationship for planned
facilities backed by the same literal actor/facility evidence, a matching
R&R actor, and an independently extracted project mention (ADR 0142).
- Migration 0138 admits the predicate at the database write boundary on new
and existing Compose volumes.
6 changes: 6 additions & 0 deletions CHANGELOG.d/fivew1h-empty-evidence-guidance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
## Buyer 5W1H evidence guidance

- Explain what to inspect when a 5W1H dimension has no persisted source-grounded
evidence.
- Keep the backend action code internal and provide the guidance in all supported
buyer locales.
4 changes: 4 additions & 0 deletions CHANGELOG.d/global-ask-history-compose-replay.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
### Fixed

- Replay the Global Ask conversation-history migration in the Compose database
initializer so existing volumes create the tables required by Ask history.
4 changes: 4 additions & 0 deletions CHANGELOG.d/image-evidence-queue.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
## Image evidence queue

- Requeue posts whose parent image or visual region VISION evidence is still
unavailable instead of marking them complete from text embeddings alone.
5 changes: 5 additions & 0 deletions CHANGELOG.d/post-content-explicit-retry.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
## Post-content explicit retry

- Added a bounded operator command path for retrying selected terminal-failed
post-content jobs without reopening synthetic, draft, deleted, or writing
posts and without touching analysis-run registries.
7 changes: 7 additions & 0 deletions CHANGELOG.d/source-identity-eligibility.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## Source identity eligibility

- Preserve source system, record identity, stage, and detail-state metadata
when distinguishing imported posts from synthetic Demo seed rows and when
selecting content, summary, Keyman, and Valkey backfill work.
- Reject writing-in-progress posts in direct content, Keyman, and explicit
retry operator paths before they can create derived evidence.
6 changes: 6 additions & 0 deletions CHANGELOG.d/synthetic-seed-source-context.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Synthetic seed cleanup source context

- Require every `source_*` field, including lifecycle markers, system and record
identity, order metadata, and inspection metadata, to be empty before a
Demo-scoped post can be considered synthetic cleanup material.
- Preserve imported rows that carry metadata without author or customer names.
Loading
Loading