DEV Community

Bizbox for Citro

Posted on

Bizbox Build Log — Week of 2026-05-31

Bizbox Build Log — Week of 2026-05-31

Headline: Two big bets landed in the same week — Workflows arrived as a proper first-class primitive, and the ClickUp human-approval loop closed end-to-end. The pieces are all there; now we stabilise.

This is your weekly look at everything that shipped, the choices we made, the trade-offs we accepted, and the things we're still wrestling with. Pull up a chair.


Shipped this week

Workflows are now a first-class Bizbox primitive — PR #86 · v2026.603.0

The biggest drop this week. @DennisDenuto landed Workflows as a company-scoped concept that sits alongside issues and routines — not shoehorned into either. What that means in practice:

  • Google ADK-backed execution — workflow pipelines run as ADK agents, with phase state persisted as run records.
  • Human handoffs baked in — pipelines can pause and wait for a human before resuming.
  • Deliverables that survive — artefacts from each run are persisted and surfaced in the UI.
  • A pipeline graph in the UI — topologically ordered, showing live phase state and console output.

This is the foundation. More on what we can build on top of it below.


Workflow human-handoffs now route through ClickUp — PR #91 · v2026.605.0

The day after Workflows landed, @angelofallars wired up the last kilometre: when ADK Python code calls input() inside a pipeline, Bizbox now intercepts that call and sends a ClickUp message to collect the human reply — instead of blocking the process forever. A few things that were fixed along the way:

  • input() monkey-patching now works consistently across Python environments (was silently failing in some setups).
  • Failed workflow runs no longer submit deliverables. You only see artefacts from runs that actually completed.

ClickUp awaiting-human bridge adapter ships as a pure plugin — PR #78 · v2026.601.0

This one technically crossed the line on the last day of May (23:56 UTC, 31 May), so it's in scope. @ralphbibera ported the ClickUp transport and adapter as a genuine plugin — implementing the AwaitingHumanBridgeAdapter registry interface — without touching bridge core at all.

What that gives you: ClickUp works through the same provider-agnostic layer as any future provider (Slack, Discord, whatever comes next). The core doesn't know ClickUp exists.

Included: send/poll/reaction transport, message templates for request_confirmation and ask_user_questions interactions, brain_is_thinking reactions while waiting, terminal / reactions on resolution, and full test coverage.


Google ADK instructions no longer ship YAML frontmatter — PR #87 · v2026.602.1

A quiet but important fix. AGENTS.md uses YAML frontmatter for metadata and discovery. That frontmatter was leaking into the instruction payload passed to the Google ADK runtime — producing malformed inputs. @ralphbibera stripped it at the adapter layer. If you were seeing odd ADK behaviour this week, this was probably it.


Suggested task deduplication — PR #88 · v2026.602.0

@adPalafox fixed a subtle papercut: accepting the same suggested task bundle more than once used to create duplicate child issues. Now the system fingerprints each bundle and reuses existing child issues on repeat accepts. Test coverage included.


CI now uses runner Chrome for Playwright — PR #84 · v2026.601.0

CI was timing out on headless browser jobs because Playwright was downloading its own browser binary mid-run. @ralphbibera switched to the pre-installed Chrome on the runner — same coverage, less flakiness. Mirrors what upstream Paperclip did in their PR #6967.


Docs refreshed for Workflows and Google ADK — PR #93 · v2026.605.0

Top-level documentation updated to reflect the new Workflows primitive and Google ADK adapter support. If you've been pointing people at the docs for onboarding, give them a refresh.


June 2026 Monthly Deep Dive draft merged — PR #83 · v2026.602.0

@adPalafox merged the June Deep Dive draft covering the full story of how the awaiting-human bridge evolved from ClickUp polling to a provider-agnostic approval layer. It's at community/deep-dives/2026-06.md in the repo and going through the review chain now.


Releases

Five releases cut this week:

Version Date Notable
v2026.601.0 2026-06-01 Awaiting-human bridge config, retry/dedupe, Google ADK adapter, ClickUp plugin, CI Chrome fix
v2026.602.0 2026-06-02 Suggested task deduplication, June Deep Dive docs
v2026.602.1 2026-06-02 Fix: strip AGENTS.md frontmatter for ADK
v2026.603.0 2026-06-03 Workflows first-class primitive + ADK pipeline runs
v2026.605.0 2026-06-05 Workflow ClickUp handoff, fixed input() patching, docs refresh

Decisions

Workflows as a separate primitive, not an extension of issues or routines.
The team chose to introduce Workflow as its own company-scoped entity rather than layering pipeline semantics onto existing issue or routine concepts. The call: pipeline graphs, multi-phase execution, and deliverable persistence don't map cleanly onto the issue lifecycle or cron-triggered routines. A clean new primitive was worth the added surface area.

Bridge core stays provider-agnostic; adapters register via the registry.
When the ClickUp awaiting-human bridge was first developed, ClickUp was hardcoded into core files. That approach was explicitly invalidated before this week: the strict rule is that bridge core must not know about any transport. ClickUp (and any future providers) plug in through AwaitingHumanBridgeAdapter. The ClickUp plugin was rewritten from scratch to honour this constraint.

Failed workflow runs must not produce deliverables.
Deliverables from a failed run are ambiguous and likely misleading. The decision was to suppress them entirely — a run must complete successfully to submit artefacts.

Monkey-patch input() at the ADK layer for human handoffs.
Rather than requiring ADK pipeline authors to use a custom API for human prompts, the team intercepts the standard Python input() call. This keeps pipeline code idiomatic. The risk (cross-environment patching reliability) was accepted and addressed with the fix in PR #91.


Trade-offs

Plugin registration is explicit — it doesn't auto-discover.
The ClickUp adapter has to be registered in server/src/index.ts after external adapter loading completes. This is intentional (predictable startup order, no magic) but means adding a new transport always requires a code change in that file. A future auto-discovery mechanism would remove the friction.

ADK input() patching is fragile by nature.
Monkey-patching works — and the cross-environment edge cases are now fixed — but it's still a low-level override that could break if ADK changes how it invokes user code. The team accepted this because the alternative (requiring explicit API calls in every pipeline) hurts adoption. Monitoring is the safeguard.

Workflow as a new primitive increases product surface area.
More primitives mean more concepts for users to learn. The team weighed this against the complexity of extending issues/routines and chose clarity over brevity. Whether the new primitive surface makes sense to users will surface in community questions.

Release CI pipeline gate is currently broken (see Open Challenges).
Releases were still published this week despite repeated Release CI failures on master. At some point, bypassing the gate becomes a risk if a bad build slips through. This is an accepted short-term state while the root cause is investigated.


Open challenges

🔴 Release CI failing on master — eight consecutive failures spanning all five releases
The Release workflow has failed on every master merge this week — eight consecutive failures spanning all five releases (v2026.601.0 through v2026.605.0). The regression appears to predate this week; root cause is not yet confirmed. Releases were published despite each failure. This is a significant signal: if the release gate is routinely bypassed, a bad build could slip through. If you're looking for a high-impact investigation, this is it.

🟡 PR #90 — Reviewer routing for ClickUp approval handoffs is drafted but stalled
PR #90 adds primaryReviewerUserId and secondaryReviewerUserId to the ClickUp awaiting-human approval flow, enabling named reviewer mentions in outbound notifications. It's drafted but CI is failing on the feat-approval-scheme branch. The feature is needed for any team using named approvers in ClickUp workflows. Blocked until CI is green.

🟡 Pre-existing test failures: agent-permissions and company-portability routes
agent-permissions-routes.test.ts is reporting socket hang up, and company-portability-routes.test.ts is returning 200 where 403 is expected. Both were called out as pre-existing in PR #78. They're not new this week, but they're unresolved and they add noise to every CI run. Someone should own a fix.


Build Log produced from GitHub API data for zesthq/bizbox, 2026-05-31 → 2026-06-06. 8 PRs merged, 5 releases.

Top comments (0)