ops-bridge/tests
tegwick 22138474b8 fix(manager): pin local forwards to 127.0.0.1 so port collisions fail loudly
An unbound `-L port:host:port` listens on every loopback family. When another
process already holds the IPv4 port, the IPv6 bind still succeeds and
ExitOnForwardFailure does not fire: the tunnel comes up on [::1] while every
client resolving 127.0.0.1 reaches the other process instead.

This is how the local State Hub cache impersonated the primary from
2026-07-08 onward — both on port 8000, separated only by IP family.

Refs CUST-WP-0067-T02, ADR-010

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 2583210@bnt-lap001
Assistant-Session: f2bff2d5-e9b2-4338-92ca-10282a927006
2026-08-24 22:10:07 +02:00
..
__init__.py feat: implement OpsBridge CLI (BRIDGE-WP-0001) 2026-03-12 01:40:08 +00:00
conftest.py feat(directive): implement BRIDGE-WP-0004 AccessManagementDirective alignment 2026-05-15 09:38:29 +02:00
test_audit.py feat(directive): implement BRIDGE-WP-0004 AccessManagementDirective alignment 2026-05-15 09:38:29 +02:00
test_catalog_cli.py feat(BRIDGE-WP-0003): MCP server, /bridge-status skill, cross-mode coverage enforcement 2026-03-12 11:33:16 +01:00
test_catalog_integration.py feat(BRIDGE-WP-0003): MCP server, /bridge-status skill, cross-mode coverage enforcement 2026-03-12 11:33:16 +01:00
test_catalog_loader.py feat(BRIDGE-WP-0003): MCP server, /bridge-status skill, cross-mode coverage enforcement 2026-03-12 11:33:16 +01:00
test_catalog_models.py feat(BRIDGE-WP-0003): MCP server, /bridge-status skill, cross-mode coverage enforcement 2026-03-12 11:33:16 +01:00
test_catalog_resolver.py feat(BRIDGE-WP-0003): MCP server, /bridge-status skill, cross-mode coverage enforcement 2026-03-12 11:33:16 +01:00
test_catalog_validator.py feat(BRIDGE-WP-0003): MCP server, /bridge-status skill, cross-mode coverage enforcement 2026-03-12 11:33:16 +01:00
test_cleanup.py feat(restart): route reverse tunnels through stale-forward cleanup 2026-06-21 20:12:13 +02:00
test_cli.py feat(restart): route reverse tunnels through stale-forward cleanup 2026-06-21 20:12:13 +02:00
test_config.py Reject duplicate local_port among local forwards; document the two meanings 2026-08-19 19:31:19 +02:00
test_coverage_completeness.py test(BRIDGE-WP-0003): add sentinel self-validation for meta-test + MCP section in README 2026-03-12 21:19:58 +01:00
test_diagnostics.py Fixing bridge to haskelseed 2026-06-14 19:46:06 +02:00
test_health.py feat: implement OpsBridge CLI (BRIDGE-WP-0001) 2026-03-12 01:40:08 +00:00
test_integration.py feat(directive): implement BRIDGE-WP-0004 AccessManagementDirective alignment 2026-05-15 09:38:29 +02:00
test_manager.py fix(manager): pin local forwards to 127.0.0.1 so port collisions fail loudly 2026-08-24 22:10:07 +02:00
test_mcp.py feat(restart): route reverse tunnels through stale-forward cleanup 2026-06-21 20:12:13 +02:00
test_models.py feat(directive): implement BRIDGE-WP-0004 AccessManagementDirective alignment 2026-05-15 09:38:29 +02:00
test_skill.py feat(BRIDGE-WP-0003): MCP server, /bridge-status skill, cross-mode coverage enforcement 2026-03-12 11:33:16 +01:00
test_state.py feat(BRIDGE-WP-0003): MCP server, /bridge-status skill, cross-mode coverage enforcement 2026-03-12 11:33:16 +01:00