-
Notifications
You must be signed in to change notification settings - Fork 1
feat: add bounded ontology and provenance explorer (v2.13.0) #349
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
30f604f
5b2fc2e
2e7ed08
bf588b7
c5babaa
fe82d1f
d8971b2
f83269a
b369d30
e0b3bd2
977e6b2
2edf3d0
bca21ce
1338e66
a4fe025
bf76b4a
7134626
9f70d71
4ab2970
cddf0dd
6adb039
33be289
551c1c5
82efc9f
e06d85f
770403e
54ae7ab
de927dd
95950af
735447d
c59ca52
0789fe8
fba2220
dd48881
a76d4c4
20ac2b1
fadb146
34e6643
ffcc7c6
bfe5d18
0c85ce3
e6e36ac
a9369a0
a8d4d43
7fa92e3
dbb96e9
961a827
ac730f6
4b9d4d4
a1e4fdd
67dfcf2
cf414d9
8ba2021
799075d
e776550
5b7fed2
1cb9f70
eb84dea
e88f386
539b652
2eb6d13
6e591f4
feb55d0
df12509
129d505
2d18879
dc4bd02
13ad75e
979b429
13e576e
202194a
bfb3760
e31047f
a6af452
499e81e
40286c1
e11b03e
bef4a85
5270bd5
d59d667
dd4b3b8
f6ea738
feb39df
58342f2
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| # 2.13.0 — Ontology provenance explorer | ||
|
|
||
| - Added `GET /api/ontology/neighborhood` as a bounded typed instance graph | ||
| (ADR 0168 / issue #341), distinct from Event Lineage. | ||
| - PostgreSQL stays authoritative; OWL/RDF/JSON-LD is a projection. | ||
| - SKOS broader comes from `corporate_entity.parent_entity_id`; OWL subclass | ||
| is rejected as an instance edge. | ||
| - Hidden endpoints remove the edge with no omitted-count side channel. | ||
| - Catalog metadata is the only source for node truth and timestamps; missing | ||
| labels and unauthorized endpoints are omitted without leaking counts. | ||
| - Neighborhood SQL now bounds traversal from the focus node, and CSV/JSON-LD | ||
| exports remain aligned with the active Buyer search filter. | ||
| - Workspace surface: Keyman **Inspect ontology neighborhood**, exact-value table, | ||
| CSV/JSON-LD export, and Storybook states. No second GNB destination. | ||
| - Session-token removal clears a previously loaded neighborhood. Static catalog | ||
| snapshots hide live refocus. Corporate parents require their own visible-post | ||
| evidence. OWL-Time is cited as a W3C Candidate Recommendation Draft. |
|
seonghobae marked this conversation as resolved.
|
| 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. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| # 2.14.0 — Ontology source-window continuation | ||
|
|
||
| - Added a versioned opaque `src.v2.` AES-GCM cursor so buyers can continue an | ||
| authorized ontology neighborhood beyond the bounded SQL source window | ||
| (ADR 0124/0125 / issue #363); the custom v1 keystream format is rejected. | ||
| - Continuation uses keyset pagination of the recursive candidate window, not | ||
| `OFFSET`. Tamper, scope, version, expiry, and snapshot drift fail closed. | ||
| - `ONTOLOGY_SOURCE_CURSOR_SECRET` is a process secret, never an OIDC or | ||
| orchestrator credential. Missing or short secrets withhold the cursor. | ||
| - The explorer accumulates subsequent pages without losing selected evidence. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -280,7 +280,21 @@ async def process_global_ask_job( | |
| # the task silently and strand the row `running` until orphan | ||
| # recovery (observed live) — every failure settles the job. | ||
| _logger.exception("global ask job failed for job_id=%s", job_id) | ||
| detail = str(exc) or f"job exceeded the {JOB_DEADLINE_SECONDS}s deadline" | ||
| if isinstance(exc, (PermissionError, ConnectionError)): | ||
| # Raised locally with a pre-authored, safe message (permission | ||
| # state / missing config) — never a provider-boundary leak. | ||
| detail = str(exc) | ||
| elif isinstance(exc, asyncio.TimeoutError): | ||
| detail = f"job exceeded the {JOB_DEADLINE_SECONDS}s deadline" | ||
| else: | ||
| # Provider responses/exceptions can carry credentials, gateway | ||
| # diagnostics, or model output (ADR 0123): never persist the | ||
| # raw exception text as a durable `failure_detail`. The | ||
| # traceback just logged keeps it for operator debugging only. | ||
| detail = ( | ||
| "Ask Agent is unavailable: contextual-orchestrator returned " | ||
| "no complete evidence object" | ||
| ) | ||
|
Comment on lines
+283
to
+297
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔍 ConnectionError branch keeps raw exception text The settlement handler keeps Was this helpful? React with 👍 or 👎 to provide feedback. |
||
| async with pool.acquire() as conn: | ||
| await conn.execute( | ||
| """ | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.