feat: add detached mode capabilities - #617
Open
JerrettDavis wants to merge 33 commits into
Open
Conversation
JerrettDavis
marked this pull request as ready for review
June 5, 2026 02:37
JerrettDavis
force-pushed
the
feat/detached-mode-capabilities
branch
from
June 5, 2026 02:45
307b994 to
eb72707
Compare
JerrettDavis
requested review from
DevanshiVyas and
chopratejas
and removed request for
chopratejas
June 10, 2026 17:55
JerrettDavis
force-pushed
the
feat/detached-mode-capabilities
branch
from
June 10, 2026 23:43
9925c67 to
ca1cace
Compare
…capabilities # Conflicts: # e2e/wrap/run.py # headroom/cli/proxy.py # headroom/proxy/server.py # tests/test_cli_proxy_env.py
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
…capabilities # Conflicts: # .github/workflows/ci.yml # headroom/proxy/server.py
Contributor
PR governanceThis PR does not yet satisfy the required template fields:
Please update the PR body, or move the PR back to draft while it is still in progress. |
JerrettDavis
marked this pull request as draft
July 11, 2026 04:41
# Conflicts: # docs/content/docs/meta.json # e2e/wrap/run.py # headroom/proxy/helpers.py # headroom/proxy/server.py # headroom/subscription/tracker.py
…-capabilities-check
Collaborator
Author
|
Maintainer readiness refresh (2026-08-20): confirmed the detached-capabilities branch remains clean, mergeable, and fully green. The capability redaction/degradation behavior and validation narrative remain accurate; the description's exact-head references have been corrected to de0dbad. No merge performed. |
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.
Description\n\nAdds detached-mode capability reporting and degradation behavior for stateless, read-only, and containerized Headroom deployments.\n\nCloses #180\n\n## Type of Change\n\n- [ ] Bug fix (non-breaking change that fixes an issue)\n- [x] New feature (non-breaking change that adds functionality)\n- [ ] Breaking change (fix or feature that would cause existing functionality to change)\n- [x] Documentation update\n- [ ] Performance improvement\n- [ ] Code refactoring (no functional changes)\n\n## Changes Made\n\n- Adds HEADROOM_DETACHED_PROFILE and --detached-profile policy support.\n- Adds runtime capability reporting for local-state dependency, feature state, degradation mode, reason, and strict-mode violations.\n- Exposes capabilities through GET /capabilities, /health, /stats, and Prometheus gauges.\n- Tightens stateless startup behavior so file logging is skipped when filesystem writes are disabled.\n- Uses collision-safe temporary probes so capability detection cannot overwrite workspace files.\n- Redacts workspace paths, backend URL credentials, and internal topology from remote capability projections.\n- Registers HEADROOM_DETACHED_PROFILE in the settings store.\n- Documents detached mode in website docs and wiki pages.\n- Merged current headroomlabs-ai/headroom@main; latest head is de0dbad.\n\n## Testing\n\n- [x] Focused detached-mode tests pass locally\n- [x] Linting passes locally\n- [x] GitHub CI is green on the latest head\n- [x] Documentation updated\n- [x] Manual review performed\n\n### Latest Local Validation\n\n
ext\nuv run --extra dev python -m pytest tests/test_cli_proxy_env.py tests/test_proxy_capabilities.py -q\n81 passed, 1 skipped\nuv run --extra dev ruff check headroom/proxy/capabilities.py headroom/proxy/helpers.py headroom/proxy/server.py headroom/settings_store.py tests/test_cli_proxy_env.py tests/test_proxy_capabilities.py\ngit diff --check\n\n\n## Current Status\n\nThe branch is current with main; public path/backend disclosures and destructive probe collisions are fixed. GitHub CI is green on latest head de0dbad. No self-approval or merge was performed.\n\n## Real Behavior Proof\n\n- Environment: Local isolated worktree using the repository uv environment, merged with current main.\n- Exact command / steps: Ran targeted Ruff checks plus pytest -q tests/test_proxy_capabilities.py tests/test_cli_proxy_env.py after resolving the documentation conflict.\n- Observed result: Ruff passed; 81 tests passed and 1 skipped. Remote capability and health projections redact the workspace path while loopback operator views retain it.\n- Not tested: Live production deployment probes with production credentials; remote and loopback behavior are covered through TestClient regression tests.\n\n## Runtime Rollout Safety\n\n- Rollout-managed feature(s): detached-mode capability and health projections.\n- Minimum rollout channel: normal release after proxy capability and environment tests are green.\n- Stable/default behavior changed: capability responses gain additive detached-mode metadata with remote redaction preserved.\n- Kill switch / disable path: disable detached operation or human-revert the additive capability changes.\n- Unsafe override required: none.\n- Qualification impact: proxy capability, environment, loopback, and remote-redaction tests must remain green.\n- Rollback path: human revert removes the additive projections; no persistent migration is required.\n\n## Review Readiness\n\n- [x] I have performed a self-review\n- [x] This PR is ready for human review\n- [x] GitHub CI is green on the latest head\n- [x] Blocking review findings are resolved; refreshed CI is green\n\n## Checklist\n\n- [x] My code follows the project's style guidelines\n- [x] I have performed a self-review of my code\n- [x] I have commented hard-to-understand areas where appropriate\n- [x] I have made corresponding documentation changes\n- [x] My changes generate no new local warnings\n- [x] I have added or updated tests for the new behavior\n- [x] Focused unit tests pass locally\n- [x] I have updated CHANGELOG.md if applicable\n\n## Screenshots\n\nN/A\n