Use this file as the fast entry point for AI agents working in this repository.
docker-library is a library of 100+ Docker Compose application packages under apps/.
Each app is independent and should be runnable with docker compose up.
Read in this order:
docs/vision.mddocs/architecture.mddocs/code_owner.mddocs/w9-env-spec.mddocs/runtime-app-spec.mddocs/ai-sdlc/README.mddocs/upstream-spec.md.github/copilot-instructions.md
- Treat each
apps/<app>directory as one deployable unit. - Start app work with
libs app-info --app <app> --json. It returns version, database lifecycle, ports, images, credentials, and tests in one call; open app files only for details it does not cover. - Keep changes minimal and app-local unless the task is explicitly cross-cutting.
- Prefer official images or trusted upstream images.
- If
docker-compose.ymlreferences./src/..., the file must exist. - Follow env conventions. The canonical
W9_*reference isdocs/w9-env-spec.md(semantics + decision rules); usemetadata/templates/new-app/.env.tmplfor layout. Read both before editing.envordocker-compose.yml. - Runtime/scaffold apps follow
docs/runtime-app-spec.md(entrypoint hooks + optionalDATABASE_URL). - Validate by deployment when the task changes runnable behavior.
libs app-deployauto-selects a free 9000-9999 host port on conflict and returnsbase_url; pass that URL tolibs app-tests --base-url. - Quick network checks use a 2s per-attempt budget with at most 2 retries. If a target URL is unreachable locally, switch to the remote host's egress instead of extending local timeouts.
- After a successful app update or new app with substantive changes, run
libs appstore-sync --app <app>to push it to the test server's websoft9 store. Preflight thewebsoft9container with a <= 10s check and skip the sync when it is absent. - When
.secrets/remote.envexists, prefer remote-first for all runtime, deployment, debugging, and validation work; do not default to local container execution unless the user explicitly asks for local reproduction. - When changing
skills/commands.manifest.json, command adapter templates, or skill-command mappings, runmake build-ai-commandsand include generated updates under.opencode/command/,.github/prompts/, and.codex/prompts/in the same change.
- Translatable env keys are
W9_*_SETandW9_LOGIN*. - When a task adds or changes such keys, ensure
i18n/translation.jsongets the key. - New keys may stay
["", ""]; translations are filled by humans, not AI. - Do not edit downstream repos. i18n checks cover only this repo's
translation.json; downstream sync workflows were removed.
- Issue is the work unit.
- AI does research, implementation, and routine validation.
- Owner only decides demand and final E2E result.
- Use the quality gates in
docs/ai-sdlc/05-quality-gates.md.
- Apps:
apps/ - App metadata:
metadata/maintenance.yaml,metadata/archive.yaml - Shared skills:
skills/ - Template:
metadata/templates/ - Scripts:
ci/scripts/ - Process docs:
docs/ai-sdlc/ - CI:
.github/workflows/
- Run
make test; suites live incli/tests,tests/build,tests/skills - Test contract:
docs/test.md - Manual walkthrough:
docs/runbook.md
- Check upstream version and release notes first.
- Classify the candidate using
docs/ai-sdlc/02-maintenance-policy.md. - Update only what is required for the target version.
- Produce a short test report using
docs/ai-sdlc/06-test-report-format.md.