§ 1 — WORK

From symptom to decision

Every entry reads symptom → cause → decision → result, with links you can check.

W01 · 2026.01 – 2026.03

MIT — Meeting-based organizational knowledge

  • LangGraph
  • Function Calling
  • HITL
  • FastAPI
  • Neo4j
SYMPTOM
Meeting notes drift from reality fast. We needed an agent that tracks meetings and decisions, but an agent that freely invites members or deletes meetings makes changes that are hard to undo.
CAUSE
A planner/executor split with an evaluator gate was slow and bloated the context. Autonomy came less from the model than from how tools were exposed and when the agent re-decides.
DECISION
Moved to ReAct and put a human-approval (HITL) gate only on mutating tool calls. Replaced the per-turn time lookup tool with the current time injected into the system prompt. Proposed a shared domain glossary for the team.
RESULT
Owned the agent part through the final demo, then evaluated prompts quantitatively with LLM-as-a-Judge after the project.

W02 · 2026.07

One cache file, two different Codex products

  • Debugging
  • Rust
  • Caching
  • Open source
SYMPTOM
With the same setup, Codex subagent tools appeared in some sessions and vanished in others.
CAUSE
Two processes on the same binary received different model catalogs because of their originator, and kept overwriting one shared cache file. The cache key lacked the request's identity.
DECISION
Went past the symptom report (#33559) and narrowed the cause into its own issue (#33593), tracing the seven PRs that produced the state.
RESULT
An issue with repro, cause, and fix direction, plus a devlog write-up.

W03 · 2023.03 – now

RPM — Rapid node Package Manager

  • Rust
  • CLI
  • Package resolution
  • Spec-driven
SYMPTOM
I couldn't really know what a Node package manager does without building one.
CAUSE
Implementing install, resolution, and script running in Rust taught me that behavior drifts as changes pile up unless it is pinned down in a spec first.
DECISION
Define behavior such as the workspace lockfile in spec documents first, and use the repo to experiment with validation gates and agent-assisted development.
RESULT
My longest-running personal project, since 2023.

W04 · 2022 – 2026

socket-store / react-socket-store

  • TypeScript
  • React
  • WebSocket
  • npm
SYMPTOM
Code that turned WebSocket messages into React state was scattered across components.
CAUSE
Mixing framework-agnostic message handling with React bindings in one package makes both hard to change.
DECISION
Split a core (socket-store) from a React adapter (react-socket-store), wired subscriptions through useSyncExternalStore, and documented version compatibility.
RESULT
Two libraries published on npm, with a docs site.

OPEN SOURCE

EXPERIMENTS