HC / FIELD BRIEF
Prototype · OKF runtime context projection · back to the detailed RFC why a BQAA trace becomes OKF the next agent can look up

What was active-customer revenue in Germany last quarter — and can I trust the number?

Without this path a finance agent can pick the superseded Customer revenue (legacy) metric, or talk as if the number is verified. A live BQAA trace ranked Active-customer revenue first, excluded the legacy metric, and recorded the receipt as unproven. Derived OKF in Knowledge Catalog is how the next agent finds that — uses the current metric, skips legacy, and reports the number as unproven.

derived / demo · observer-only · nothing attested Authored cymbal-finance-core untouched Static viewer · browser makes no GCP calls

What this demo is asking. This demo takes context an agent already earned the hard way and, via BQAA observation, projects it into derived OKF so the next agent can discover it; it is not human-in-the-loop or customer-sentiment promotion, and it is not trusting BQAA as truth. BQAA stays observer-only; trust here means process integrity of what was observed (opaque IDs, fail-closed lookup, no overclaim), and the number is still unproven.

Loading the committed observe snapshot and CLI transcript…

1 / 4

Keys: → / N next · ← / P back · 1–4 jump · deep link #beat=1#beat=4

Walkthrough · the CLI tape

The same four beats, recorded as one terminal session against the committed trace. Nothing was re-run for this page.

  1. Ask. The agent is asked for Germany last-quarter revenue — and whether the number can be trusted. The demo then takes what that agent earned the hard way and, via BQAA observation, projects it into derived OKF for the next agent to discover; not human-in-the-loop or sentiment promotion, not BQAA as truth.
  2. Observe. The live trace ranked Active-customer revenue first and excluded the superseded legacy metric; the receipt is unproven.
  3. Publish. One command turns that telemetry into derived OKF, the handle a Catalog entry would expose.
  4. Next agent. The next agent looks up that handle, uses the current metric, skips legacy, and reports the number as unproven.

The junk-ref FAIL_CLOSED exit 2 near the end is expected fail-closed behaviour, not a crashed demo. The tape, cast, and transcript are a pre-merge recording against SDK PR 474 HEAD 476d37dc; the on-tape “do not merge” note is from recording time, and PR 474 has since merged (2026-09-03). Plaintext: cli/okf-bqaa-cli-transcript.txt · asciinema: cli/okf-bqaa-cli.cast · gif: cli/okf-bqaa-cli.gif · presenter notes: WALKTHROUGH.md.

Prior fixture clip · okf-bqaa-e2e.mp4 · not this run

Prior fixture clip, recorded before the observe run and before the CLI path existed. Not this run. It shows the earlier fixture-replay version of this UI adapting the synthetic Germany trace in the browser. Kept for history only.

How this was built / IDs

This is where a reviewer verifies the run. Everything below is copied from the committed CLI outputs; the browser recomputes none of it.

Live observeokf_rfc_demo · 2026-09-03T04:10:36Z
agentokf_rfc_observe_agent · google-adk
session_idf21ee192-d989-4c38-894f-66b6b82eaf18
trace_id · first invocatione-c7214361-4017-43d7-af4e-cddfe51b09a4
loading snapshot…
Table · model180 agent_events rows
tabletest-project-0728-467323.okf_rfc_demo.agent_events
modelgemini-3.8-flash · Vertex global
event_count180 · multi-turn, one session · not padded
SDK PR 474 (merged) · full export ↗
Handlesfrom the CLI run
context_refokf:env-observe#674153c572f6
publication_idsha256:53bd1651c43f69d53f591e4f91e3ccdda4640d8b36cb1dce1ac97328ffa39a77
adapterokf-bqaa-adapter:v0 · python examples/okf_bqaa_adapter/run.py
BigQuery ↗
Authoredcymbal-finance-core · pinned golden · untouched
observation_id
snapshot_id
publication_id
golden
Derivedbqaa-derived-cymbal-demo · pinned from CLI
observation_idsha256:85ea62a96e5076a292572a996f0408865c4c56aac696bbeb79a73bbc5eda8af6
snapshot_idsha256:f18befd010ff7e3d1fe140303626a82dc985c986846093f73643e7d0eea92b75
publication_idsha256:53bd1651c43f69d53f591e4f91e3ccdda4640d8b36cb1dce1ac97328ffa39a77
pinned from CLI · okf-bqaa-adapter:v0
Live observe run · okf_rfc_demoderived / demo · observer-only · nothing attested
table
test-project-0728-467323.okf_rfc_demo.agent_events
agent
okf_rfc_observe_agent · google-adk · gemini-3.8-flash · Vertex global
session_id
f21ee192-d989-4c38-894f-66b6b82eaf18
trace_id
e-c7214361-4017-43d7-af4e-cddfe51b09a4 · first of 12 invocations
event_count
180 · histogram and six sample rows in live/observe/snapshot.json; full export on SDK PR 474 (merged 2026-09-03; the export was attached before the merge)
adapter
okf-bqaa-adapter:v0 · python examples/okf_bqaa_adapter/run.py · stdlib, no GCP · recorded against SDK PR 474 pre-merge HEAD 476d37dc9d4210a335c2f77e78003f6a5ebe2878; PR 474 merged 2026-09-03T16:54:58Z as 4f54b5c0506d…, so the adapter now lives on the SDK main branch
context_ref
okf:env-observe#674153c572f6
publication_id
sha256:53bd1651c43f69d53f591e4f91e3ccdda4640d8b36cb1dce1ac97328ffa39a77
receipt
UNVERIFIABLE · rcpt-observe-noexec · nothing ATTESTED
Catalog
no entry created on this CLI path · no DML · Dataplex okf-derived-germany is a prior consume-experiment leftover
ran_at
2026-09-03T04:10:36Z
180 events by type · snapshot.jsonhistogram Σ 180

histogram loads with the snapshot

Fail-closed lookup. run.py --lookup REF resolves against mapping.json, which binds exactly one context_ref. Unbound refs exit 2 with FAIL_CLOSED on stderr. The in-page “try a ref” box on beat 4 applies the same rule with Object.hasOwn, so constructor, toString and __proto__ fail closed too. No store, no network.

Commands on the tape.

python3 examples/okf_bqaa_adapter/run.py
python3 examples/okf_bqaa_adapter/run.py --lookup 'okf:env-observe#674153c572f6'
python3 examples/okf_bqaa_adapter/run.py --lookup 'okf:env-junk#deadbeef'   # FAIL_CLOSED, exit 2
What is real here, and what is not
  • Real, live GCP (before this page was built): ADK agent okf_rfc_observe_agent on gemini-3.8-flash (Vertex global) ran a multi-turn session, f21ee192-d989-4c38-894f-66b6b82eaf18, and the BigQueryAgentAnalyticsPlugin wrote 180 rows to test-project-0728-467323.okf_rfc_demo.agent_events. The full 180-row export lives on SDK PR 474 (merged 2026-09-03); this page carries a trimmed snapshot (histogram, identities, six sample rows) plus live.json.
  • Real, stdlib CLI: python examples/okf_bqaa_adapter/run.py (okf-bqaa-adapter:v0) read that export and emitted 8 derived files with observation / snapshot / publication ids; --lookup resolved okf:env-observe#674153c572f6 and failed closed (exit 2) on a junk ref. The transcript, asciinema cast, gif and mp4 in cli/ are that run. The identities on this page are copied from the CLI's live_identities.json; the browser recomputes none of them.
  • Real, authored fixture: Phase 0 golden identities for cymbal-finance-core, display-only, never read or written by the adapter.
  • Derived views, not writes: the Catalog handle on beat 3 is what a Knowledge Catalog entry would expose. This CLI path wrote nothing to Knowledge Catalog and issued no DML; there is no real Catalog pin for publication sha256:53bd1651…. The Dataplex entry okf-derived-germany is a leftover of the prior consume experiment and is labelled as such.
  • Prior, labelled, not this run: the earlier live-GCP consume experiment (okf_rfc_consume_agent, 14 rows, stub tool) stays collapsed under beats 1 and 4 as a prior experiment; it is not the adapter input. The Germany trace traces/bqaa-germany.json stays SYNTHETIC, hashing-only, never the source of truth. The old okf-bqaa-e2e.mp4 is a prior fixture clip.
  • Honest by construction: the receipt on the observe run is UNVERIFIABLE (rcpt-observe-noexec): nothing was executed as a sanctioned computation and nothing is ATTESTED. The number itself is unproven, and the page says so. The Phase 4 ATTESTED shape shown in beat 4 is non-normative.
  • Never emitted on agent-facing payloads: concept_version_id, bundle paths, principal, SQL / query text, parameter values, raw destination table names. The lookup result carries only context_ref, publication_id and a derived/demo label.
  • This browser: fetches same-origin static files and Google Fonts only. No BigQuery, no Dataplex, no model call, no adapter run.
Run it locally

Static files, no build. From the repo root: python3 -m http.server 8000 then open http://localhost:8000/rfc/demo/. Check the viewer against the committed snapshot and transcript with python3 rfc/demo/tools/check_cli_viewer.py. To reproduce the CLI run itself, check out SDK PR 474 at 476d37dc and run python examples/okf_bqaa_adapter/run.py (stdlib, no GCP). See README.md.