docs(dual-mode): INV-9 doctrine + honest framing + DooD migration (PR 3/3)#153
Merged
Conversation
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.
Closes #149 — Phase 1 dual-mode network/socket containment, PR 3/3 (stacked on dev; PR1 #151 + PR2 #152 already merged). Doctrine + docs.
What this adds
The constitution and user docs now describe the dual-mode model honestly, and the now-false statements that PR1's default-flip left behind are corrected.
drydock dood/drydock defaultCLI lands in a later slice" parenthetical is replaced with the real commands (they shipped in PR2).dood/contain/defaultcommand-table rows. The old "everything works as on host:docker compose…docker exec…curl localhost" claim — false in contained mode — is corrected.docker/compose/curl localhost/make shell-apistopped working) with the restore path.internalbridge network" Phase 1 description is corrected to bridge + egress-open (nointernal: true).[Unreleased]flags the BREAKING default flip, lists what stops working in contained mode, and gives the restore path.Honest framing (non-negotiable)
Every place the contained posture's security is described pairs it with "Phase 1 does not filter egress / still reaches the internet". No "isolated net", no "sandbox", no claim that contained mode blocks egress. Forbidden-phrase grep ("still threat model A", "containment isn't sandboxing", "not a security feature") is clean across all docs.
Out of scope (tracked separately)
templates/hooks/drydock-session-start.sh) still emits the socket framing unconditionally — it should become mode-aware, but that is agent-awareness work, a separate follow-up (not part of feat(compose): dual-mode network/socket containment — contained-by-default, opt-in DooD #149).dev → mainrelease, confirm a contained container reachesapi.anthropic.comover the bridge NAT on bare Linux. Render tests prove YAML correctness only.Tests & gates
scripts/test.sh: 1099/1099 passing (no code changed; pure regression sanity).shellcheck,shfmt -d,scripts/lint-commits.sh: clean (4 conventional commits).git diffshows zero changes inside the INV-7 block).