Hi! Sharing findings and offering fixes from the jerryfane/tendwire fork, where we run tendwire in production against a live herdr — partly as thanks for your recent contribution to luminexord/herdres, which we've deployed. Two things you may want:
1. herdr 0.7.5 breaks three tendwire integration points (production-verified)
If anyone runs tendwire against herdr 0.7.5, these bite immediately:
agent.get no longer resolves terminal-id targets → every command.submit fails pre-send with an authoritative HerdrErrorResponse ('could not resolve the private send target'). agent.list still publishes terminal_id → pane_id, so a fallback lookup restores sends. Our fix: jerryfane/tendwire@264fbf2 (small, self-contained, cherry-pickable).
pane turn removed from the CLI — the herdr_turn_adapter path still works; only bare-CLI consumers break.
- Event-stream changes: pane-scoped status subscriptions are strictly validated (the old subscribe shape is rejected with an id-less error envelope, which strict envelope validation treats as fatal → the stream silently dies), and the generic refresh signal moved to a new
pane.updated event. Without handling both, agent-status transitions (and therefore pending_decision observation) are lost. Our fix: jerryfane/tendwire@8ffff6d (subscription model with 0.7.4 fallback + id-less envelope tolerance). One hard-won caveat baked into its tests: route pane.updated to turn refresh ONLY — letting it re-project worker meta changed stable-key derivation and broke downstream identity consumers for hours in prod.
Also possibly relevant beyond 0.7.5: herdr observations can retain edge terminal-framing bytes (e.g. a trailing U+0001) in observed instruction text — anything fingerprinting/matching instruction text should strip edge C0/C1 controls (jerryfane/tendwire@138d53c).
Happy to open a clean compat-only PR against your main with the first and third items adapted, if useful — say the word.
2. FYI: Goal-13-style Phase 2 ('submissions are never turns') is implemented and live on the fork
The fork also carries a full implementation of the observation-authoritative turn model (submission ledger + delayed fail-closed 1:1 linker + migration + staged flag rollout), running in production since today. It's a large divergence (11 commits) so we're not proposing it as a PR — but if the design interests you it's all on jerryfane/tendwire main with the acceptance-test suite, and we'd gladly walk through it.
Thanks again for the delta-sync/final-delivery fix on herdres — it slotted straight into an open issue of ours (luminexord/herdres#171) and shipped same-day.
🤖 Generated with Claude Code
Hi! Sharing findings and offering fixes from the jerryfane/tendwire fork, where we run tendwire in production against a live herdr — partly as thanks for your recent contribution to luminexord/herdres, which we've deployed. Two things you may want:
1. herdr 0.7.5 breaks three tendwire integration points (production-verified)
If anyone runs tendwire against herdr 0.7.5, these bite immediately:
agent.getno longer resolves terminal-id targets → everycommand.submitfails pre-send with an authoritative HerdrErrorResponse ('could not resolve the private send target').agent.liststill publishesterminal_id → pane_id, so a fallback lookup restores sends. Our fix: jerryfane/tendwire@264fbf2 (small, self-contained, cherry-pickable).pane turnremoved from the CLI — the herdr_turn_adapter path still works; only bare-CLI consumers break.pane.updatedevent. Without handling both, agent-status transitions (and therefore pending_decision observation) are lost. Our fix: jerryfane/tendwire@8ffff6d (subscription model with 0.7.4 fallback + id-less envelope tolerance). One hard-won caveat baked into its tests: routepane.updatedto turn refresh ONLY — letting it re-project worker meta changed stable-key derivation and broke downstream identity consumers for hours in prod.Also possibly relevant beyond 0.7.5: herdr observations can retain edge terminal-framing bytes (e.g. a trailing U+0001) in observed instruction text — anything fingerprinting/matching instruction text should strip edge C0/C1 controls (jerryfane/tendwire@138d53c).
Happy to open a clean compat-only PR against your main with the first and third items adapted, if useful — say the word.
2. FYI: Goal-13-style Phase 2 ('submissions are never turns') is implemented and live on the fork
The fork also carries a full implementation of the observation-authoritative turn model (submission ledger + delayed fail-closed 1:1 linker + migration + staged flag rollout), running in production since today. It's a large divergence (11 commits) so we're not proposing it as a PR — but if the design interests you it's all on jerryfane/tendwire main with the acceptance-test suite, and we'd gladly walk through it.
Thanks again for the delta-sync/final-delivery fix on herdres — it slotted straight into an open issue of ours (luminexord/herdres#171) and shipped same-day.
🤖 Generated with Claude Code