The AI-Native Workplace Summit 2026

From Vibe Coding
to Verifiable Agents

Memory, traces, and feedback loops for agents you can actually trust at work.

Auxten Wang · Technical Director @ ClickHouse · 16 Sep 2026

Why me?

I build databases.
I also run work through agents.

1
Creator of chDB, acquired by ClickHouse in 2024
2
Technical Director at ClickHouse
3
One person, too many products, several always-on agents

Auxten Wang

@auxten · auxten.com

chDB ClickHouse
A real bill
$20,000

I spent it on coding-agent tokens.

What I bought was not code. It was six expensive lessons.

600+PANDAS APIS
7,500+TESTS
~200KLINES IN THE PR
Source: chDB DataStore development; github.com/chdb-io/chdb/pull/496
The uncomfortable part

It worked.
I couldn't tell you why.

My agent once wrote a social reply that earned 50+ likes. I understood every word.

I had no idea why people loved it.

RESULT
50+
people approved
EXPLANATION
?
The project

Make 600+ behaviors match.

Change one import. Existing pandas code should behave the same—while ClickHouse does the heavy work underneath.

1 lineMIGRATION
4.2×GEOMEAN SPEEDUP*
sales_report.py
# before
import pandas as pd

# after
import chdb.datastore as pd

result = (
    pd.read_parquet("sales.parquet")
      .query("amount > 1000")
      .groupby("region")
      .sum()
)
* 50M-row benchmark, 10 real-world scenarios; results vary by workload.
Lesson 1 · An oracle

Verifiable means:
something else says you're right.

Real notebookGitHub / Kaggle
Swap one importpandas → DataStore
Run bothsame inputs
Compare all outputvalues · type · order
Do not ask the model whether its answer is correct.
Build a system that can tell.
Lesson 2 · The shortcut

Agents cheat.

A test fails because row order differs. The fastest way to green?

the tempting “fix”
actual.sort_values(...)
expected.sort_values(...)
assert_equal(actual, expected)

Test passes

The incompatible behavior is now hidden.

Our rule

Never normalize away a difference. Fix it—or mark an explicit, reviewed XFAIL.

Lesson 3 · Durable rules

Put rules in the repo.
Then keep deleting them.

+
Architecture decisions
+
Forbidden shortcuts
+
What “done” actually means
CLAUDE.md / AGENTS.md
Signal
high
Rule #147
maybe
Rule #498
noise
Am I adding another button to the iPhone?
Lesson 4 · Break the shared blind spot

Bring in someone with zero memory.

Daily agent

Knows the history. Knows every workaround. Eventually learns to step around every rough edge.

Fresh reviewer

No project context. Asked to be critical, rational, and evidence-driven. Sees what insiders stopped seeing.

Creators and reviewers need different context.

Lesson 5 · Deterministic control

Files carry context.
JSON carries decisions.

DISCOVERIMPLEMENT TESTREVIEW

Agents write artifacts to disk. The next agent reads only what it needs.

APPROVE · REJECT · ESCALATE are structured—not guessed from prose.

$ python scripts/auto_loop.py

Task: real Prophet notebook
Generated: 18 mirror tests
✓ 7569 passed
Review: IMPROVE

{
  "decision": "IMPROVE",
  "reason": "weak assertion",
  "rollback_on_failure": true
}
I did not have the words yet

We were building three systems.

Memory

Keep the right knowledge across runs.

Traces

Record what happened and why.

Feedback loops

Turn failures into better behavior.

Every lesson survived a switch of agent framework.

The handoff problem

Every handoff loses context.

Days of architecture decisions, rejected ideas, naming rules, and weird edge cases…

Then the next agent starts from a README.

Build sessionrich implicit context
−30%
Operations agentplease explain it again
The obvious fix

A Markdown file is write-only memory.

+
Easy to append
×
No ranking by relevance
×
No expiry or contradiction handling
×
No answer to “why did you recall this?”
memory.md
# Things to remember
- User likes vegetarian food
- Use Firebase for new apps
- Never use approach B
- Prefer short reports
- Temporary workaround...
- Another exception...
- Another rule...
A memory needs a lifecycle

Bad memory is worse than no memory.

One vegetarian week

becomes a permanent identity: “the user never eats meat.”

One discarded Firebase idea

keeps returning in every architecture review.

L0

Working memory · current task state

SESSION
L1

Episodic memory · what happened and when

DECAYS
L2

Semantic memory · reviewed facts and decisions

REVISED
Retrieval, not stuffing

Recall is one SQL query.

vector similaritykeywords time decaypast usefulness
~10 msLOCAL RECALL
1QUERY
chDB

ClickHouse, inside your process.

Think of it as SQLite for analytical data: one package, no database server.

pip install chdb

memory = recall(task, project, user)
Measured on the ClickMem local demo; latency varies by hardware and corpus.
Enterprise memory

Give the digital teammate a name, boundary, and history.

Entra Agent IDwho is acting?
Purview policieswhat may it see?
OneLake / ADLSfiles where they live
chDB / ClickHouserecall + history
Treat an agent like a new hire: its own identity, access, memory—and manager.
Microsoft Agent 365 and Foundry terminology as of Sep 2026.
The visibility problem

I had no idea what was running.

Bugs, deployments, scheduled jobs, reports—everything landed in one chat.

No run record. No owner. No final state.

“The agent is working on it.”

?
Did it receive the task?
?
Which tools did it call?
?
Did it finish—or disappear?
A minimum reliability contract

First, acknowledge.
Then, always return.

1 · Accepted

Before any model call, persist the task and return an acknowledgement.

2 · Terminal state

Every run ends as success, failure, timeout, or cancelled.

agent.run 17.2s
model.plan 2.1s
tool.search 4.7s
retry #1 429
tool.write 1.3s
model.answer 3.8s
run.success
Three views, three owners

Do not mix the loops.

Developer loop

Microsoft Foundry tracing, Application Insights, or Langfuse. Debug one run.

Organization loop

Agent 365 + Entra Agent ID. Inventory, access, activity, lifecycle.

Analysis loop

Your own SQL and evaluations. Find patterns across thousands of runs.

OpenTelemetryshared GenAI + agent span semantics

Instrument once.
Choose the views you need.

Foundry traces are stored in Azure Monitor Application Insights; Agent 365 provides organization-level governance.
The moment it clicked

A trace is just a wide table.

I opened one bad run and saw the missing context, failed tool call, retries, latency, and token cost.

Then I stopped debugging one run at a time.

Langfuse ClickHouse
questions the trace store can answer
SELECT tool, countIf(status='error')
FROM spans GROUP BY tool;

SELECT skill, sum(tokens)
FROM spans GROUP BY skill;

SELECT quantile(0.95)(latency_ms)
FROM spans WHERE name='memory.recall';
The honest cost slide

Full visibility creates a lot of data.

Compress

Columnar storage makes repetitive span attributes cheap.

Tier

Keep hot detail. Aggregate older runs. Apply explicit TTLs.

Redact

Remove secrets, credentials, and personal data before export.

“Trace everything” is not a privacy policy.
Microsoft Foundry guidance recommends redacting sensitive content before it reaches telemetry.
Close the loop

The agent reviews the agent.

1 · Observe

Collect traces and outcomes.

2 · Find bad cases

Hallucinations, loops, weak decisions.

3 · Improve

Rules, skills, tests, prompts.

Periodic, evidence-driven, reviewable.

The supervisor catches laziness, hallucinations, and fake tests—but never approves irreversible actions for itself.

Not just for coders

The 8 a.m. patrol.

One read-only agent checks ads, analytics, subscriptions, releases, and model errors.

Its real job is to tell me whether to panic.

DAILY ANOMALY REPORT · 08:17

Nothing critical.

3 medium anomalies.

engagedSessions ↓72%
but sessions, users, and events are normal.

Likely a tracking artifact—not an outage.

Production failures become tests

Every bad trace is the start of an eval set.

Bad runreal production case
Labelexpected + failure type
Replayprompt · model · tool change
Gateship only if it holds

Groundedness

Did the answer follow evidence?

Safety

Did policy hold under pressure?

Business outcome

Did the actual task succeed?

Microsoft Foundry includes built-in evaluators and supports custom business-specific evaluations.
The payoff

My agent found a bug in its own runtime.

1
Diagnosed an infinite restart loop
2
Wrote a one-line fix and two tests
3
Opened the pull request under its own identity
Merged

fix: avoid restart loop on plugin metadata updates

One rule classified install timestamps as a no-op before the catch-all restart rule.

✓ 3 human reviewers approved
Do not automate the wrong thing

Closed loop does not mean closed oversight.

No silent self-editing

Rules and skills change only through reviewable diffs.

No shared superuser

Each agent gets its own identity and least privilege.

No universal architecture

A solo setup is not a 5,000-agent tenant design.

Containment gives an agent room to act without giving it room to ruin everything.
One picture

Identity around the agent.
Evidence around every run.

Copilot Studio
/ Foundryagent + tools
OpenTelemetryruns · tools · models
App Insights / Agent 365debug + govern
Langfuse / ClickHouseanalyze + evaluate
Entra Agent IDidentity + authority
MemorychDB local · ClickHouse at scale
Feedback loopbad case → eval → reviewed change
Start this afternoon

Three changes. No grand platform rewrite.

01
Turn on tracing. Capture one complete run from accepted to terminal state.
02
Give memory a schema. Replace one append-only Markdown list with rows, provenance, and status.
03
Pick 10 bad cases. Make them the first regression set before changing model or prompt.

Do this before adding another agent.

Three takeaways

Do not hire a teammate who…

forgets everything

Memory needs retrieval, lifecycle, and provenance.

leaves no record

Every run needs identity, spans, and a final state.

never learns

Failures should become evaluations and reviewed changes.

Prompt engineering is the entry ticket.
System engineering is the moat.

Thank you

Questions?

@auxten · auxten.com

github.com/chdb-io/chdb github.com/auxten/clickmem zhuanlan.zhihu.com/p/2011796810969158285
chDB ClickHouse