You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Build one locked application and MCP virtual environment in a pinned uv 0.12.3 multi-stage image.
Route Docker, local tooling, audits, tests, upgrade replay, pre-commit, Dependabot, benchmark tooling, and source-install documentation through that lock.
Remove both hand-maintained requirements files after every supported consumer is converted.
Includes aiohttp 3.14.1→3.14.3 security patch from #671.
Closes#660.
Copy file name to clipboardExpand all lines: AGENTS.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -144,7 +144,7 @@ Also validate when:
144
144
- the user asked for validation
145
145
- the change affects multiple routes, components, or packages
146
146
147
-
Prefer targeted tests first (`scripts/test.sh <dotted.label>`), then `ruff check src`, then the fast suite (`scripts/test.sh`) only when risk justifies it. See the Testing section.
147
+
Prefer targeted tests first (`scripts/test.sh <dotted.label>`), then `uv run --no-sync ruff check src`, then the fast suite (`scripts/test.sh`) only when risk justifies it. See the Testing section.
PYTHONPATH=src uv run --no-sync celery -A config worker --queues interactive --hostname celery-interactive@%h --loglevel DEBUG &
312
+
PYTHONPATH=src uv run --no-sync celery -A config worker --queues celery --beat --scheduler django --hostname celery@%h --loglevel DEBUG
313
313
```
314
314
The interactive worker must be dedicated — **never add `celery` to its `--queues`** or long-running background tasks (Reload calendar, imports) will block user-triggered refreshes.
@@ -330,8 +330,8 @@ Run tests through `scripts/test.sh`, in this priority order:
330
330
3. **Full suite (rarely needed locally):**`scripts/test.sh --full` — all tags, including slow benchmarks/Playwright and live-provider `network` tests. Takes 20+ minutes and produces huge output. Only run it when the user asks or the risk clearly justifies it. Application-impacting PRs run the CI application suite, which excludes `network` tests; documentation-only trigger filtering is owned by `.github/workflows/app-tests.yml`.
| Python behavior |`ruff check src` + targeted test |
100
-
| Model or migration change |`python manage.py check_migration_hygiene --strict` + full test suite |
98
+
| Template or UI logic | Screenshot + `uv run --no-sync ruff check src`|
99
+
| Python behavior |`uv run --no-sync ruff check src` + targeted test |
100
+
| Model or migration change |`uv run --no-sync python src/manage.py check_migration_hygiene --strict` + full test suite |
101
101
|`upstream` → `latest` upstream sync | Full migration sync gate (see PR template) |
102
102
103
103
Never skip validation for migrations, models, auth, permissions, webhooks, Celery tasks, or cache behavior.
@@ -107,6 +107,7 @@ Never skip validation for migrations, models, auth, permissions, webhooks, Celer
107
107
## Style
108
108
109
109
- Python 3.12. Ruff configured in `pyproject.toml` (88-char line limit, migrations excluded).
110
+
- Python dependencies are declared in `pyproject.toml` and locked in `uv.lock`; use uv 0.12.3 and `uv sync --locked` rather than maintaining requirements files.
110
111
- Templates: djlint config in `pyproject.toml`. CSS: Stylelint config in `.stylelintrc`.
111
112
- Tailwind output is committed at `src/static/css/main.css`. Run `npx @tailwindcss/cli -i ./src/static/css/input.css -o ./src/static/css/main.css` after any template or class changes — this uses the version pinned in `package.json`, so it always matches the committed output. Do not use a bare/global `tailwindcss` binary or unpinned `npx`; a version mismatch regenerates the file with a different (larger) utility set and produces spurious diffs.
112
113
- Commit messages: short imperative title, optional 1–3 bullet body, then issue lines.
Visit `http://localhost:8000`. A `demo` / `demodemo` account is provisioned after migrations; set `DEMO_ACCOUNT_ENABLED=False` to disable it. See [CONTRIBUTING.md](CONTRIBUTING.md) before opening a pull request.
501
500
501
+
`pyproject.toml`and `uv.lock` are the dependency source of truth for the app
502
+
and bundled MCP workspace. Use uv 0.12.3 and keep the lockfile in sync; the
503
+
removed requirements files are not maintained in parallel. The MCP package's
504
+
`setuptools>=68`isolated build-backend range is the only build-time resolver
505
+
exception to the runtime lock and is intentionally not pinned as an application
506
+
dependency.
507
+
502
508
## Support the project
503
509
504
510
- Star the repository if you want to help more people find Floppy.
0 commit comments