Skip to content

docs: archive superseded records, rootless-backend reference, evaluations (#40, #41) - #44

Merged
steffenmaechtel merged 5 commits into
masterfrom
feature/docs
Aug 24, 2026
Merged

docs: archive superseded records, rootless-backend reference, evaluations (#40, #41)#44
steffenmaechtel merged 5 commits into
masterfrom
feature/docs

Conversation

@steffenmaechtel

Copy link
Copy Markdown
Owner

What's in here

Docs-only branch: status corrections, a new docs/_archive/ structure, a
living design reference carried out of the archive, and evaluation records
for the open research issues #40 and #41.

Status corrections

  • design/ddev-e2e-test.md said "PLANNED — not implemented" but the suite
    shipped with 0.0.21 (make e2e-ddev, DD0–DD14, camino + bare-origin
    tiers, first green CI run 2026-08-23). Status now reflects that, records
    the two as-built deltas (golden image via save/load tar instead of
    docker commit; weekly CI schedule still pending) and marks the phase
    table complete.
  • design/project-history-summary.md gains the 0.0.20 (dev-owned mode),
    0.0.21 (real-ddev e2e suite, TUI mode line, prompt-free wrapper) and
    0.0.22 (headless ecosystem mode, root-equivalent audit, skills-only
    .claude migration) rows — problem → decision, sourced from the tag
    ranges.

docs/_archive/

Superseded or purely historical records move out of the live tree
(_archive/design/, _archive/security/ — mirroring the structure):

  • design: container-tools, ddev-sandbox, docker-rootless, improve-docs,
    plan-ui-tui-opencode, ux-improvement, ddev-as-user-issues
  • security: proof-1/2/3 (pre-soft-model era analyses)

All inbound links and code-comment pointers updated (wrapper.md,
conventions.md, ddev-working.md, install.sh, update.sh, wrapper, ui.sh,
setup-container-backend.sh, kit-mode.tsx, tests incl. tests/ux).
docs/README.md + AGENTS.md describe the new layout;
_archive/README.md states the convention.

rootless-backend.md (new living reference)

docker-rootless.md was archived wholesale, but its current sections are
live design reference the code points at. New design/rootless-backend.md
holds them, rewritten for the soft-only model: selection & defaults,
provisioning reference (subuid/subgid allocation, linger, router ports),
host impact, podman-CLI path, ddev gate. setup-container-backend.sh and
both e2e runners now point at the living doc; the archived original stays
untouched as history.

Evaluations (#40, #41)

New docs/evaluate/ section: one record per tool/addon, per-area indexes,
verdict vocabulary. All five evaluable repos verified against pinned local
clones; verdicts:

  • Evalute other sandbox tools #40 container tools: bubblewrap — conflicting (mount-namespace
    boundary excludes ddev's shared filesystem; confirms the pre-0.0.11
    outcome); opencode-sandbox — conflicting as default (breaks ~/.ddev,
    image pulls, DOCKER_HOST; fail-open confirmed in code), interesting only
    as a per-project network fence; Docker sbxnot applicable (local
    microVMs replace the kit's model; WSL2 KVM blocker; closed source).
  • Evaluate DDEV Plugins to run opencode inside DDEV #41 ddev addons: trebormc/ddev-opencode — conflicting (parallel
    model: second opencode home, config drift, in-container passwordless
    sudo); trebormc/ddev-ai-ssh — not applicable (foreign-agent sidecar
    infra the one-owner model does not need); e0ipso/
    ddev-assistant-opencode — conflicting (agent inside the app container
    inverts the separation goal — though notably the kit's soft-layer config
    would apply; correction from source: the full
    ~/.local/share/opencode incl. auth.json is mounted).

Cross-cutting: every hard boundary lands on the layer the kit
deliberately leaves soft for ddev.

Testing

Docs link check green; ShellCheck + full unit suite green (code changes
are comment-path updates only).

Closes #40
Closes #41

…0.0.22

ddev-e2e-test.md header said 'PLANNED — not implemented' but the suite
shipped with 0.0.21 (make e2e-ddev, run-ddev.sh, DD0-DD14, camino +
bare-origin tiers, first green CI run 2026-08-23). Status now reflects
that, records the two as-built deltas (golden image save/load tar
instead of docker commit v1; weekly CI schedule still pending) and the
phase table is marked complete.

project-history-summary.md gains the 0.0.20 (dev-owned mode, #23/#24),
0.0.21 (real-ddev e2e suite, TUI mode line, prompt-free wrapper) and
0.0.22 (headless ecosystem mode #42, root-equivalent audit #37,
skills-only .claude migration) rows — problem -> decision, sourced from
the tag ranges.
Move legacy/superseded documents out of the live tree (mirroring the
subfolder structure — _archive/design/, _archive/security/):

- design/: container-tools (implemented; how-to is the user doc),
  ddev-sandbox (superseded by ddev-working), docker-rootless (superseded
  in parts), improve-docs (docs overhaul landed), plan-ui-tui-opencode
  (implemented), ux-improvement (decided; conventions.md is living),
  ddev-as-user-issues (planning record; issues realized via e2e suite)
- security/: proof-1/2/3 (analyses of the pre-soft-model era;
  security-model.md is current)

All inbound links and code-comment pointers updated to the _archive
paths (wrapper.md, conventions.md, ddev-working.md, ddev-e2e-test.md,
install.sh, update.sh, wrapper, ui.sh, setup-container-backend.sh,
kit-mode.tsx, tests incl. tests/ux). docs/README.md and AGENTS.md
describe the new layout; _archive/README.md states the convention.
Link check, ShellCheck, and the full unit suite pass.
…e archive

docker-rootless.md was archived wholesale, but its current sections
(selection defaults, provisioning reference incl. subuid/subgid
allocation, host impact, podman-CLI path, ddev gate) are live design
reference the code points at. New docs/design/rootless-backend.md holds
them, rewritten for the soft-only model (ACL rationale dropped, e2e
proofs referenced). setup-container-backend.sh + both e2e runners now
point at the living doc instead of _archive; docs/README.md lists it.
Archived original stays untouched as history.
…ddons (#41)

New docs/evaluate/ section: one record per tool/addon plus per-area
indexes and a verdict vocabulary. container-tools/ evaluates bubblewrap
(conflicting — the mount-namespace boundary excludes ddev's shared
filesystem), opencode-sandbox (conflicting as default; interesting only
as a per-project network egress fence) and Docker sbx (not applicable —
local-microVM alternative model, replaces the kit, WSL2 KVM blocker).
ddev-addons/ evaluates trebormc/ddev-opencode (parallel model, config
drift, in-container sudo), trebormc/ddev-ai-ssh (foreign-agent sidecar
infra the one-owner model does not need) and
e0ipso/ddev-assistant-opencode (agent inside the app container — inverts
the separation goal, though notably the kit's soft-layer config would
apply). Cross-cutting: every hard boundary lands on the layer the kit
deliberately leaves soft for ddev.
All five evaluable repos now checked out under github/ (workspace) —
re-verify each record against the pinned commits and stamp the source
lines:

- bubblewrap @ 2f55bae: setuid-deprecation + userns claims hold; note
  the new upstream --not-a-security-boundary fail-open flag
- opencode-sandbox @ 328c963: hooks, config keys and explicit fail-open
  (Windows + swallowed setup errors) confirmed in src/
- ddev-opencode @ b972091: sleep-infinity sidecar, DDEV_UID user,
  passwordless-ALL sudoers line, auth.json-only credential mount, ro
  host config deep-merge cascade, vendored sshd confirmed
- ddev-ai-ssh @ cf26f3e: eval ForceCommand, PermitRootLogin no,
  per-project ed25519 keys confirmed
- ddev-assistant-opencode @ 5cb552b: correction — the FULL
  ~/.local/share/opencode is mounted (auth.json included), secret
  posture even weaker than first recorded

docker-sbx stays research-only (closed source, no repo).

@steffenmaechtel steffenmaechtel left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed

@steffenmaechtel
steffenmaechtel merged commit 9586119 into master Aug 24, 2026
3 checks passed
@steffenmaechtel
steffenmaechtel deleted the feature/docs branch August 24, 2026 20:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Evaluate DDEV Plugins to run opencode inside DDEV Evalute other sandbox tools

1 participant