Promote gateway real-internet mode & service_mirrors to experimental#128
Merged
Conversation
### Motivation - The gateway nftables policies and mirrored-mode operator output are now wired, so `gateway_portal.real_internet.mode` and `gateway_portal.real_internet.service_mirrors` should be represented as `experimental` rather than `unsupported` in the feature-state registry and docs. - Tests and CLI validation must reflect that mirrored mode validates with a warning instead of failing alpha validation, while truly unsupported flags remain CI-failing. ### Description - Update feature-state registry in `netengine/spec/feature_state.py` to mark `gateway_portal.real_internet.mode` and `gateway_portal.real_internet.service_mirrors` as `experimental` and add explanatory caveats. - Update documentation rows in `docs/spec-alpha-support.md` and `docs/support-matrix.md` to document the promoted experimental state and caveats about remaining real-host integration and DNS aliasing. - Adjust CLI/tests in `tests/test_cli.py` so a spec with `gateway_portal.real_internet.mode: mirrored` validates successfully with `--explain` (shows a warning) and change the JSON CI-failure test to target `upstream_resolver_enabled` which remains `unsupported`. - Adjust spec parsing test in `tests/test_spec_parsing.py` to assert the loader logs an experimental warning for mirrored gateway mode instead of raising `SpecLoadError`. ### Testing - Ran `poetry run pytest tests/test_spec_parsing.py tests/test_cli.py tests/test_gateway_portal.py tests/test_feature_states.py` and those targeted tests passed. - Ran the full suite with `poetry run pytest`; the full run completed but showed 2 unrelated integration failures (`TestFullMVPLifecycle.test_full_mvp_lifecycle` returned `401` for reload and `TestHealthRoute.test_health_does_not_leak_last_error_detail` exposed `last_error`) that pre-existed this change. - No new regressions observed in gateway rule generation or unit tests covering gateway portal behavior.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
gateway_portal.real_internet.modeandgateway_portal.real_internet.service_mirrorsshould be represented asexperimentalrather thanunsupportedin the feature-state registry and docs.Description
netengine/spec/feature_state.pyto markgateway_portal.real_internet.modeandgateway_portal.real_internet.service_mirrorsasexperimentaland add explanatory caveats.docs/spec-alpha-support.mdanddocs/support-matrix.mdto document the promoted experimental state and caveats about remaining real-host integration and DNS aliasing.tests/test_cli.pyso a spec withgateway_portal.real_internet.mode: mirroredvalidates successfully with--explain(shows a warning) and change the JSON CI-failure test to targetupstream_resolver_enabledwhich remainsunsupported.tests/test_spec_parsing.pyto assert the loader logs an experimental warning for mirrored gateway mode instead of raisingSpecLoadError.Testing
poetry run pytest tests/test_spec_parsing.py tests/test_cli.py tests/test_gateway_portal.py tests/test_feature_states.pyand those targeted tests passed.poetry run pytest; the full run completed but showed 2 unrelated integration failures (TestFullMVPLifecycle.test_full_mvp_lifecyclereturned401for reload andTestHealthRoute.test_health_does_not_leak_last_error_detailexposedlast_error) that pre-existed this change.Codex Task