Agent thread chat with optimistic UI
#21 adds a direct communication channel between operators and agents. Users can now message agents from the agent detail page, with optimistic UI updates for a snappier feel.
Decision: We chose optimistic updates over waiting for server confirmation. It makes the UI feel faster. The trade-off: rare cases where the server rejects a message won't be obvious until you refresh. We're watching for confusion signals.
Routine execution recovery logic
#22 fixes how Bizbox handles routine_execution issues in blocked state. Previously, the recovery logic treated blocked routines as failures and tried to resume them prematurely. Now, blocked is recognized as a healthy, parked wait state.
Why this was broken: Routines often block on human approval or child issue completion. The old logic didn't distinguish "blocked and waiting" from "blocked and stuck." This change codifies the difference.
Upstream merge and OpenTelemetry metrics
#16 merged upstream PaperClip changes from April 30, 2026 (assisted by Claude Sonnet 4.6).
#14 adds OpenTelemetry metrics, starting with bizbox.issues.human_comments_total — a signal for human intervention frequency.
Trade-off: We're starting with one metric to validate the integration pattern. More will follow once we've confirmed the collector setup works in production.
agentParams refactor and regression fix
#24 fixes a regression introduced in v0.0.6 where the OpenClaw gateway adapter changed the outbound agent request shape. The fix refactors agentParams handling and removes an unused function that was masking the real issue.
Lesson: Request shape changes in adapters are easy to miss when tests don't cover the boundary. We added a test to catch this pattern in the future.
Workflow cleanup
#23 removes the sync-upstream workflow. We're switching to manual upstream merges (with AI assistance) for now.
Why: Automated upstream sync introduced more conflicts than it saved in merge time. Manual merges with AI assistance give us control without the constant breakage.
Decisions
-
Mutation tools behind proposals: We're prioritizing trust and transparency over convenience. Operators see and approve changes before agents make them.
-
Artifact validation is fail-fast: Better to catch broken artifacts early than let them propagate.
-
Blocked routine state is healthy: Routines can wait. Not every blocked issue is a failure.
-
Manual upstream merges: Automation failed here. Human-in-the-loop merges with AI assistance work better for our repo.
Trade-offs
-
Proposal flow adds friction: Every mutation requires approval. This is intentional for now, but we know it slows down agents. Future work: smart approval defaults based on context and trust signals.
-
Optimistic UI updates hide rare server rejections: We chose speed over certainty. Watching for user confusion.
-
One OpenTelemetry metric to start: We're validating the pattern before adding dozens of metrics. Risk: we might miss important signals early.
Open challenges
-
Artifact versioning and metadata: What needs to travel with an artifact? How do we version it? What should the UI surface? Still figuring this out.
-
Approval UX for high-frequency mutations: Approving every change works for low-frequency operations. It won't scale to high-frequency agent work. Need smarter defaults.
-
Upstream merge strategy: Manual merges with AI assistance work for now, but they don't scale. We need a better long-term approach.
Releases
This Build Log is grounded in real repo activity. Every claim links to a PR, issue, release, or ADR. No internal-only context, no invented features, no marketing fluff.
Questions? Join the discussion on GitHub.