One binary, fail2ban-tools (like the licence manager), serving node-intrusion-prevention.{status,banned,ban,unban} and fail2ban_settings over the Go SDK. Nothing else in the module changes: the jails, jail.local, the actions and the service are the same resources.
Same behaviour: fail2ban-client through sudo -n where the runtime is not root, the same parsing of its listings, an address and a jail name checked before anything reaches the daemon.
Tests: the eight TypeScript tests ported, one more for the served names, and an opt-in FAIL2BAN_LIVE=1 test that reads the real daemon. Run on the control node: five jails, 463 bans held, sshd's settings read back.
The controller's catalogue check passes over this branch except the two resolver tests that fail on main too (catalog #247).
Independent of the node-backup PRs; merge in either order.
Go is the default for module code.
- **One binary, `fail2ban-tools`** (like the licence manager), serving `node-intrusion-prevention.{status,banned,ban,unban}` and `fail2ban_settings` over the Go SDK. Nothing else in the module changes: the jails, `jail.local`, the actions and the service are the same resources.
- **Same behaviour:** fail2ban-client through `sudo -n` where the runtime is not root, the same parsing of its listings, an address and a jail name checked before anything reaches the daemon.
- **Tests:** the eight TypeScript tests ported, one more for the served names, and an opt-in `FAIL2BAN_LIVE=1` test that reads the real daemon. Run on the control node: five jails, 463 bans held, sshd's settings read back.
The controller's catalogue check passes over this branch except the two resolver tests that fail on main too (catalog #247).
Independent of the node-backup PRs; merge in either order.
Go is the default for module code. One binary, fail2ban-tools, serving the node-intrusion-prevention
seat's four verbs and fail2ban_settings over the SDK, with the same parsing and the same tests; read
back against the control node's live daemon.
Deliverynovox/mesh-catalog@d9120c6848c3 — held since 2026-10-06T23:05:28Z
Held for a person: merged without a passing check: only a person decides that it goes on — mesh-delivery.release with why lets it go on.
Delivery plan — builds fail2ban → ace, g14, novox, shanks; no bus step
tier 0: fail2ban
ace: receives fail2ban
g14: receives fail2ban
novox: receives fail2ban
shanks: receives fail2ban
Transitions
2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#53 merged; its head was not heard by this owner, so it is made from the forge's word
2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/mesh-catalog@d9120c6848c3` — **held** since 2026-10-06T23:05:28Z
Held for a person: merged without a passing check: only a person decides that it goes on — `mesh-delivery.release` with why lets it go on.
**Delivery plan** — builds fail2ban → ace, g14, novox, shanks; no bus step
- tier 0: fail2ban
- ace: receives fail2ban
- g14: receives fail2ban
- novox: receives fail2ban
- shanks: receives fail2ban
**Transitions**
- 2026-10-06 23:05 (new) → proposed (announced): novox/mesh-catalog#53 merged; its head was not heard by this owner, so it is made from the forge's word
- 2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Go is the default for module code.
fail2ban-tools(like the licence manager), servingnode-intrusion-prevention.{status,banned,ban,unban}andfail2ban_settingsover the Go SDK. Nothing else in the module changes: the jails,jail.local, the actions and the service are the same resources.sudo -nwhere the runtime is not root, the same parsing of its listings, an address and a jail name checked before anything reaches the daemon.FAIL2BAN_LIVE=1test that reads the real daemon. Run on the control node: five jails, 463 bans held, sshd's settings read back.The controller's catalogue check passes over this branch except the two resolver tests that fail on main too (catalog #247).
Independent of the node-backup PRs; merge in either order.
Delivery
novox/mesh-catalog@d9120c6848c3— held since 2026-10-06T23:05:28ZHeld for a person: merged without a passing check: only a person decides that it goes on —
mesh-delivery.releasewith why lets it go on.Delivery plan — builds fail2ban → ace, g14, novox, shanks; no bus step
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.