v1.29.0 — Security in Depth, Reducer Naming, Hostname/Subject Encoding
Released 2026-05-10. GitHub release.
v1.29.0 ships the first-class implementation of Microbus’s security-in-depth story: gencreds and genmanifest are now full-fledged CLI tools that derive each microservice’s interservice ACL and manifest directly from its source code. The release also formalizes a reducer-by-prefix naming convention for agentic workflow state, refines the NATS subject encoding for hostnames and paths, and adds an agent-rule-loading mechanism keyed off the local CLAUDE.md.
An upgrade-v1-29-0 skill ships under .claude/skills/upgrade/ to mechanize the migration.
Highlights
gencredsandgenmanifestshipped. Two new CLI tools undercmd/that scan a microservice’s source code and produce its.creds(NATS user JWT + interservice ACL) andmanifest.yaml. This is the implementation backing the true-to-code interservice ACL claim — the allow-list is derived from the actual call sites, not from configuration.- Reducer-by-prefix naming. Workflow state fields whose names start with
sum*,list*, orset*automatically select the corresponding reducer at fan-in. Anything else gets the default replace-on-write behavior. The convention is enforced at codegen time bygenmanifest. - NATS subject encoding refactor. Hostnames and paths are now encoded into NATS subjects through a single canonical scheme, with explicit handling for “weird” hostname and path characters. See the updated NATS subject layout.
- Local
CLAUDE.mdtriggers secondary rules. Topic-specific rule files (workflows.txt,sequel.txt, etc.) are now loaded contextually based on what the localCLAUDE.mddeclares the microservice does. The agent loads only the rules it needs for the current microservice, keeping the context window tight. - Canonical
ValidateHostnameinhttpx. Hostname validation centralized to one function used across the connector, the HTTP ingress, and metrics — replacing duplicate validators that had drifted apart.
New Features
gencreds (under cmd/gencreds/)
A new CLI that consumes a microservice’s source tree and produces a signed .creds file containing:
- A NATS user JWT identifying the microservice.
- An interservice ACL (
PUBandSUBrules) derived fromconnector.Subscriberegistrations and outbound call sites. - ACL consolidation that collapses overlapping grants into compact form.
Sub-modules: aclbuild, aclconsolidate, aclencode, scan, scan_calls, sign, and a bundle command that wraps a build artifact + its .creds. Operators run gencreds at deploy time; the broker enforces what gencreds produced.
See the dedicated Interservice ACL doc for the security model and Trust-root tier for how :666 grants get audited.
genmanifest (under cmd/genmanifest/)
A new CLI that extracts each microservice’s manifest.yaml from its source code — endpoints, configs, tickers, events, tasks, workflows, all reflected automatically. Replaces the prior hand-maintenance pattern with an extract-from-code workflow:
- Parses
*api/endpoints.goandintermediate.gofor feature definitions. - Validates HTTP method strings, path argument syntax, and reducer-prefix conventions.
- Emits a clean
manifest.yamlready for the codegen pipeline.
Workflow State Reducers — Prefix Naming
Workflow state fields whose names start with a recognized prefix automatically use the corresponding reducer when parallel branches fan in:
| Prefix | Reducer | Behavior |
|---|---|---|
sum* | numeric add | Sums values from each branch |
list* | append | Concatenates arrays from each branch |
set* | union/merge | De-duplicated array union, or field-by-field object merge |
| anything else | replace | Last-write-wins |
The character right after the prefix must be uppercase; summary, listening, setup do not match. Tasks must produce only the delta their branch generates, not the full accumulated value, otherwise fan-in produces duplicates.
The Reducers reference page at agentic-workflows/reducers covers the full mechanics, the delta rule with worked examples, set* semantics (array vs object), and edge cases. The creditflow example was updated to demonstrate the convention; the LLM service’s ChatLoop workflow uses listMessages and sumTokens accordingly.
Local CLAUDE.md → Secondary Rule Triggers
A microservice’s local CLAUDE.md can now declare which topic-specific rule files the agent should load when working in that directory. The convention:
- A workflow-using microservice’s
CLAUDE.mdtriggers.claude/rules/workflows.txt. - A SQL-CRUD microservice’s
CLAUDE.mdtriggers.claude/rules/sequel.txt. - The base
microbus.mdrules are always loaded.
This cuts agent context usage materially on projects with many microservices, since each session only loads the rule subset relevant to the current microservice.
NATS Subject Encoding Refactor
Hostnames and paths now encode into NATS subjects through a single scheme that handles edge cases (uppercase, hyphens, dots, path arguments) consistently. The cmd/schema/encode.go package gains explicit unit-test coverage for “weird” hostnames and paths to lock the encoding behavior.
For most users this is internal — the framework constructs and parses subjects on your behalf. If you have code that builds NATS subjects directly (e.g. for monitoring or ad-hoc subscriptions), refer to the updated NATS subject layout for the exact encoding rules.
Improvements
- Canonical
httpx.ValidateHostname. One function for hostname validation across the framework. The connector, HTTP ingress, and metrics microservice now share the same validator. Subtle inconsistencies between the prior duplicates are gone. - Skill catalog refresh. Removed the obsolete
chart-topologyskill. Updatedhousekeeping,init-project,take-tour,review-microservice,add-task,add-workflow, and thesequelskills to align with the new conventions. Newinit-project/env.yamltemplate. - Per-package
CLAUDE.mdupdates. Refreshed design-rationale notes acrossconnector,httpx,sub,application,cmd/gencreds,cmd/genmanifest, the LLM service, the OpenAPI portal, and example microservices.
Breaking Changes
The migration skill (upgrade-v1-29-0) handles each of these. Manual migration is not recommended.
- Reducer-prefix enforcement. Workflow state fields that participate in fan-in must use the prefix convention or get the replace-on-write default. Pre-1.29 graphs that relied on
graph.SetReducer(field, reducer)continue to work —SetReducerremains the escape hatch — but new code should prefer the prefix convention. .credsregeneration. Every microservice’s.credsshould be regenerated with the newgencreds, since the ACL emission scheme has been polished and the canonicalValidateHostnamemay catch edge cases the old validator missed. The upgrade skill regenerates them in place.manifest.yamlregeneration. Likewise, every microservice’smanifest.yamlshould be regenerated with the newgenmanifestto pick up the reducer-prefix detection and updated emit logic. The upgrade skill walks the project.- Hostname validation strictness. A handful of edge-case hostnames that were silently accepted by older validators may now fail at startup. Conformant hostnames are unaffected.
Migration
From inside a Microbus project, ask Claude Code to “upgrade Microbus”:
The upgrade skill handles the version bump end-to-end:
- Bump
go.modto v1.29.0 andgo mod tidy. - Refresh
.claude/rules/,.claude/skills/, and project-wide framework-managed files. - Re-run
genmanifestfor every microservice; reconcile anymanifest.yamlschema drift. - Re-run
gencredsfor every microservice; regenerate.creds. - Apply the reducer-prefix convention to existing workflow tasks where the rename is mechanical (the skill flags any ambiguous renames for human review).
- Update local
CLAUDE.mdfiles with the secondary-rule triggers where applicable. - Build and run the integration test suite to verify.
After the skill completes, run go vet ./... and go test ./... -count=1. Review any // TODO: comments the skill emitted at sites that needed human judgment.
Documentation
- New: Reducers reference covering the prefix convention, the delta rule,
set*semantics, and edge cases. - New: Trust-Root Tier, Dual-Token Exchange, Perimeter Security, Application Bundling — full security-in-depth model docs.
- Updated: NATS Subject Layout for the new encoding.
- Updated: Building Agentic Workflows and LLM Integration for the reducer prefix.
- Updated: Agentic RAD and Agent Rules for the secondary-rules-trigger pattern.