Comment by o8vm

20 days ago

Thank you — this is very helpful feedback.

You’re absolutely right that I led with terminology instead of value. A simpler way to describe it is:

Hibana helps prevent protocol drift bugs in distributed systems. You describe the interaction once as a global choreography, and each role gets a projected local API. Because steps are affine (consumed once), invalid transitions like skipping, reusing, or taking the wrong branch are rejected by the type/protocol model.

So the practical goal is fewer hidden state-machine bugs, with one global source of truth for interaction order.

I appreciate the suggestion, and I’ll explain it this way in the next write-up.

Examples would help.

  • Here is an example of how a protocol defined in Hibana can confine even an AI agent’s behavior within an explicit interaction flow.

    https://github.com/hibanaworks/hibana-agent

    From an AMPST perspective, the key idea is this: one global choreography is projected into role-local protocols (Agent/Browser/Human), with affine progression (each step is consumed exactly once).

      const LOOP_BODY: g::Program<LoopBodySteps> = g::seq(
          g::send::<Agent, Browser, BrowserAction, 0>(),
          g::send::<Browser, Agent, BrowserObservation, 0>(),
      );
      
      const ADD_TO_CART_APPROVAL: g::Program<AddToCartApprovalSteps> = g::seq(
          g::send::<Agent, Human, RequestApproval, 0>(),
          g::seq(
              g::send::<Human, Agent, ApprovalDecision, 0>(),
              g::route::<0, _>(
                  g::route_chain::<0, AddToCartArm>(ADD_TO_CART_ARM)
                      .and::<SkipAddToCartArm>(SKIP_ADD_TO_CART_ARM),
              ),
          ),
      );
    

    So even AI-agent behavior is confined by protocol structure: illegal traces (skip/reorder/reuse/wrong branch) are unrepresentable, not merely blocked by ad hoc runtime checks.

    As another example, we’re also preparing `hibana-quic` (a QUIC implementation built with Hibana) for public release. It already passes interop tests with neqo.