1. phpunit.dist.xml → rename to phpunit.xml.dist. PHPUnit's documented lookup order is phpunit.xml then phpunit.xml.dist. The current phpunit.dist.xml is not auto-discovered — running vendor/bin/phpunit with no -c flag only works coincidentally here because there's no competing file. Any contributor or tool (IDE, CI, symfony/phpunit-bridge) invoking PHPUnit with the default config search will silently run with no config (no bootstrap, no APP_ENV=test, no test TOTP secret/env vars) and get failures or, worse, a false-pass. The custom bin/phpunit shim doesn't pass -c either.
2. .gitea/ is not in .dockerignore. All four CI workflow files (which contain secret names and the GitHub sync remote logic) are shipped into the Docker build context and can be COPYed/layered into images. Add .gitea/ (and .github/) to .dockerignore.
3. Docker build context is far too broad..dockerignore only excludes a handful of paths. .git/ is excluded but .phpunit.cache/, .php-cs-fixer.cache, .php-cs-fixer.dist.php, phpunit.*.xml, symfony.lock handling, .editorconfig, Caddyfile(used separately), and bin/composer/bin/dev.sh/bin/franken.sh all still flow in. Should whitelist-only what's needed (the Dockerfile already COPYs an explicit list — make .dockerignore match: *, then un-ignore bin/console, config/, public/, src/, templates/, composer.*, symfony.lock, Caddyfile, .env).
(Related security note: item 3 is what makes item 2 a real exposure rather than cosmetic.)
## Must Fix
These are actively wrong / risky, not just style.
- [ ] **1. `phpunit.dist.xml` → rename to `phpunit.xml.dist`.** PHPUnit's documented lookup order is `phpunit.xml` then `phpunit.xml.dist`. The current `phpunit.dist.xml` is **not** auto-discovered — running `vendor/bin/phpunit` with no `-c` flag only works coincidentally here because there's no competing file. Any contributor or tool (IDE, CI, `symfony/phpunit-bridge`) invoking PHPUnit with the default config search will silently run with **no config** (no bootstrap, no `APP_ENV=test`, no test TOTP secret/env vars) and get failures or, worse, a false-pass. The custom `bin/phpunit` shim doesn't pass `-c` either.
- [ ] **2. `.gitea/` is not in `.dockerignore`.** All four CI workflow files (which contain secret *names* and the GitHub sync remote logic) are shipped into the Docker build context and can be COPYed/layered into images. Add `.gitea/` (and `.github/`) to `.dockerignore`.
- [ ] **3. Docker build context is far too broad.** `.dockerignore` only excludes a handful of paths. `.git/` is excluded but `.phpunit.cache/`, `.php-cs-fixer.cache`, `.php-cs-fixer.dist.php`, `phpunit.*.xml`, `symfony.lock` handling, `.editorconfig`, `Caddyfile`(used separately), and `bin/composer`/`bin/dev.sh`/`bin/franken.sh` all still flow in. Should whitelist-only what's needed (the Dockerfile already COPYs an explicit list — make `.dockerignore` match: `*`, then un-ignore `bin/console`, `config/`, `public/`, `src/`, `templates/`, `composer.*`, `symfony.lock`, `Caddyfile`, `.env`).
(Related security note: item 3 is what makes item 2 a real exposure rather than cosmetic.)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Must Fix
These are actively wrong / risky, not just style.
phpunit.dist.xml→ rename tophpunit.xml.dist. PHPUnit's documented lookup order isphpunit.xmlthenphpunit.xml.dist. The currentphpunit.dist.xmlis not auto-discovered — runningvendor/bin/phpunitwith no-cflag only works coincidentally here because there's no competing file. Any contributor or tool (IDE, CI,symfony/phpunit-bridge) invoking PHPUnit with the default config search will silently run with no config (no bootstrap, noAPP_ENV=test, no test TOTP secret/env vars) and get failures or, worse, a false-pass. The custombin/phpunitshim doesn't pass-ceither..gitea/is not in.dockerignore. All four CI workflow files (which contain secret names and the GitHub sync remote logic) are shipped into the Docker build context and can be COPYed/layered into images. Add.gitea/(and.github/) to.dockerignore..dockerignoreonly excludes a handful of paths..git/is excluded but.phpunit.cache/,.php-cs-fixer.cache,.php-cs-fixer.dist.php,phpunit.*.xml,symfony.lockhandling,.editorconfig,Caddyfile(used separately), andbin/composer/bin/dev.sh/bin/franken.shall still flow in. Should whitelist-only what's needed (the Dockerfile already COPYs an explicit list — make.dockerignorematch:*, then un-ignorebin/console,config/,public/,src/,templates/,composer.*,symfony.lock,Caddyfile,.env).(Related security note: item 3 is what makes item 2 a real exposure rather than cosmetic.)