Skip to content

hive_contract reads an interior edge to . as an ENTRY into the hive and refuses a live add_edges the boot only warns about #602

Description

@mmeyerlein

What happens

A live mutation that draws an edge from an interior node of a sealed hive to the hive's own root — add_edges with to: "." and a constant set_hop: {"route": "error"} — is refused by the hive_contract validator:

sends hop.route='error' into hive <member>, which does not accept that lane

The very same edge ships in templates/member (the catch-all ./channels -> . on error, GH #598) and instantiates at boot with a warning at most. So the boot path and the mutation path disagree about one edge: an edge from inside a hive to . is an exit (the message leaves through the hive's rim), but the validator reads it as an entry into the hive and checks the hive's accepts list against it.

Measured (2026-09-06, GH #598 rewire of two running colonies)

Ask

hive_contract should classify an edge by direction the way the router does: from interior, to == "." (or the hive's own path) is an exit and is checked against emits, not accepts. A regression test: the shipped member catch-all edge, applied as a live add_edges to a grown member, must commit, and the same body must still be refused when it truly enters a hive that does not accept the lane.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions