- Read
DESIGN.mdbefore changing architecture or behavior. It is the V1 source of truth. - Put a scoped specification in
docs/specs/and an executable plan indocs/plans/before implementation. - Use test-first development for behavior: write a failing test, observe the expected failure, add the minimum code, and run focused plus related tests.
- Keep HTTP Routers thin. Put business behavior outside transport code and introduce an external-I/O boundary only when a real caller needs it.
- Never trust a client-provided identity or resource owner. Authorization is enforced server-side on every resource access.
- Never commit credentials, print secrets in health/error responses, expose internal data services, or mount the Docker Socket outside the future isolated Provisioner.
- Never weaken production permissions or sandbox isolation to make a test easier.
- Use
uvfor Python andpnpmfor Web. Preserve and verifyuv.lockandapps/web/pnpm-lock.yamlwhenever dependencies change. - Before claiming completion, run the verification commands in
README.mdand report any command that could not be executed. - Automated tests and routine verification must never call a real Embedding
model. Mock Embedding paths. Explicit paid smoke may call DeepSeek or
doubao-seed-2-0-lite-260428; starting Context workers against live work is a runtime action, not a model-free test.