From f018247e8e491e0cc084e4baedc09b4751f419f5 Mon Sep 17 00:00:00 2001 From: csbrasil-bot Date: Thu, 24 Sep 2026 23:21:26 +0000 Subject: [PATCH 1/9] chore(docs): regenera bloco derivado (autofix) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rodado pelo autofix: só arquivo gerado, conferido pela lista de permissão. Agent: csbrasil-bot (autofix) Signed-off-by: csbrasil-bot --- ARCH.generated.md | 8 +++---- README.md | 23 ++++++++++--------- STATUS.md | 6 ++--- docs/docs/arquitetura.md | 6 ++--- docs/docs/comecando.md | 23 ++++++++++--------- docs/docs/quality-gates.md | 2 +- docs/docs/stack.md | 2 +- .../current/arquitetura.md | 6 ++--- .../current/comecando.md | 23 ++++++++++--------- .../current/quality-gates.md | 2 +- .../current/stack.md | 2 +- 11 files changed, 53 insertions(+), 50 deletions(-) diff --git a/ARCH.generated.md b/ARCH.generated.md index 3dae6f72a..7998a1b41 100644 --- a/ARCH.generated.md +++ b/ARCH.generated.md @@ -8,9 +8,9 @@ Números atuais das zonas, do quality gate e do `package.json`: | Zona | O que é | Tamanho medido | Regra | |---|---|---|---| -| `public/` | o **jogo** | 96 arquivos `.js`, 49.192 linhas · Three.js `r160` vendorizado | ES modules servidos crus, **zero build**, sem dependência de runtime | +| `public/` | o **jogo** | 98 arquivos `.js`, 50.486 linhas · Three.js `r160` vendorizado | ES modules servidos crus, **zero build**, sem dependência de runtime | | `src/` | o **site** | 20 páginas `.astro`, 4 rotas `/api` · Astro `^7.1.1` | framework é bem-vindo; `service_role` só no servidor | -| `tools/` | o **arnês** | 409 scripts em `tools/eval/`, 76 em `tools/` | node puro: sobe o jogo real sem browser | +| `tools/` | o **arnês** | 417 scripts em `tools/eval/`, 76 em `tools/` | node puro: sobe o jogo real sem browser | **Não existe `public/index.html`.** O HTML do jogo é `src/pages/index.astro`, servido na rota `/`. Servir `public/` estaticamente entrega os arnêses visuais, **não o jogo** — é a pegadinha que custa a primeira hora de todo mundo. @@ -25,10 +25,10 @@ Comandos e scripts atuais do quality gate: ```bash -npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash +npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:campo-contract eval:campomorro-molde eval:parquevida eval:parquecanopy eval:penitenciariavida eval:penitenciariafacade eval:penitenciariapickup eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash ``` -`package.json` tem **251 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. +`package.json` tem **258 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `node -p "Object.keys(require('./package.json').scripts)"` diff --git a/README.md b/README.md index 73b1d6e76..dd5b94cc6 100644 --- a/README.md +++ b/README.md @@ -34,17 +34,17 @@ contra bots, direto na aba. Sem download, sem instalação, sem cadastro. | O que | Quanto | Onde confere | |---|---:|---| -| Código do jogo | 49.192 linhas em 96 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | -| `game.js` | **7.493** linhas | `wc -l public/js/game.js` | -| `main.js` | 3.596 linhas | `wc -l public/js/main.js` | +| Código do jogo | 50.486 linhas em 98 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | +| `game.js` | **7.494** linhas | `wc -l public/js/game.js` | +| `main.js` | 3.597 linhas | `wc -l public/js/main.js` | | Armas com GLB | 26 | `git ls-files 'public/models/weapons/*.glb' \| wc -l` | | GLBs de personagem | 55 | `git ls-files 'public/models/characters/*.glb' \| wc -l` | -| Props em GLB | 173 | `git ls-files 'public/models/props/*.glb' \| wc -l` | +| Props em GLB | 183 | `git ls-files 'public/models/props/*.glb' \| wc -l` | | Clipes de animação versionados | 681 | `git ls-files public/models/anims \| wc -l` | | Personagens jogáveis | 53, em 6 facções | array `CHARACTERS` de `characters.js` | -| Mapas no registro | 17 | objeto `MAPS` de `maps.js` | +| Mapas no registro | 18 | objeto `MAPS` de `maps.js` | | Arnêses visuais em HTML | 15 | `git ls-files 'public/*.html' \| wc -l` | -| Scripts do arnês | 409 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | +| Scripts do arnês | 417 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | | Scripts de pipeline | 76 | `git ls-files 'tools/*.mjs' \| wc -l` | | Tarefas de entrada escritas | 26 | `git ls-files 'docs/issues/[0-9]*.md' \| wc -l` | | Versão | `2.0.0-alpha.279` | `public/js/version.js` e `package.json` (batem) | @@ -89,7 +89,7 @@ arquitetura): `cd docs && npm install && npm start` → Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `dependencies/devDependencies do package.json · REVISION de public/vendor/three.module.js` @@ -279,7 +279,7 @@ projeto. | Regra | Valor | Constante | |---|---|---| | Facções · personagens | 6 · 53 (B 9 · C 9 · E 8 · F 9 · M 9 · U 9) | `CHARACTERS` | -| Mapas no menu | 17 — 2 abrem em rodadas, **15 em captura** | `MAPS` / `ctfMode` | +| Mapas no menu | 18 — 2 abrem em rodadas, **16 em captura** | `MAPS` / `ctfMode` | | Respawn | 2,2 s | `RESPAWN_DELAY` | | Round | 99 s, 3 vitórias | `ROUND_TIME` / `ROUNDS_TO_WIN` | | Captura | alvo = **todas as bandeiras do mapa**, 2 rodadas (rede de segurança 480 s) | `capsToWin = ctfPts.length` / `CTF_ROUNDS_TO_WIN` | @@ -306,6 +306,7 @@ Os mapas registrados, e em que modo cada um abre: | Id | Nome no menu | Abre em | Arquivo em `public/js/` | Linhas | |---|---|---|---|---:| +| `campomorro` | Campinho do Morro | **captura** | `map_campomorro.js` | 815 | | `mansao` | Mansão do Joá | **captura** | `map_mansao.js` | 1.395 | | `amazonia` | Treta na Amazônia | **captura** | `map_amazonia.js` | 1.192 | | `escadao` | Escadão (Morro) | **captura** | `map_escadao.js` | 1.407 | @@ -320,11 +321,11 @@ Os mapas registrados, e em que modo cada um abre: | `upa_24h` | UPA 24h da Treta | **captura** | `map_upa.js` | 325 | | `obras_prefeitura` | Obras da Prefeitura | **captura** | `map_obras.js` | 241 | | `atacadao_treta` | Atacadão da Treta | **captura** | `map_atacadao.js` | 256 | -| `parque_treta` | Parque da Treta | **captura** | `map_parque.js` | 403 | +| `parque_treta` | Parque da Treta | **captura** | `map_parque.js` | 818 | | `velho_oeste` | Sertão da Treta | **captura** | `map_velho_oeste.js` | 1.061 | | `penitenciaria` | CARANDIRU | **captura** | `map_penitenciaria.js` | 1.009 | -**17 mapas registrados** — 2 abrem em rodadas e 15 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 23 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. +**18 mapas registrados** — 2 abrem em rodadas e 16 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 24 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `objeto MAPS de public/js/maps.js` diff --git a/STATUS.md b/STATUS.md index d0f7722d6..84eb066e2 100644 --- a/STATUS.md +++ b/STATUS.md @@ -3,9 +3,9 @@ - **Versão:** `2.0.0-alpha.279` -- **Conteúdo jogável:** 6 facções, 53 personagens, 17 mapas e 26 armas com GLB -- **Código do jogo:** 49.192 linhas em 96 módulos JavaScript -- **Automação:** 251 comandos npm, 409 scripts de avaliação e 76 scripts de pipeline +- **Conteúdo jogável:** 6 facções, 53 personagens, 18 mapas e 26 armas com GLB +- **Código do jogo:** 50.486 linhas em 98 módulos JavaScript +- **Automação:** 258 comandos npm, 417 scripts de avaliação e 76 scripts de pipeline > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `package.json · CHARACTERS · MAPS · public/models/weapons · public/js · tools/` diff --git a/docs/docs/arquitetura.md b/docs/docs/arquitetura.md index 9cf39a0e3..05cafbec4 100644 --- a/docs/docs/arquitetura.md +++ b/docs/docs/arquitetura.md @@ -62,15 +62,15 @@ Tamanho dos arquivos que o `gen-arch.mjs` indexa — bloco gerado, regenerado po | Arquivo | Linhas | |---|---:| -| `public/js/game.js` | 7.493 | -| `public/js/main.js` | 3.596 | +| `public/js/game.js` | 7.494 | +| `public/js/main.js` | 3.597 | | `public/js/characters.js` | 1.099 | | `public/js/glbchars.js` | 851 | | `public/js/vmattach.js` | 628 | | `public/js/weapons.js` | 353 | | `public/js/springs.js` | 260 | -Total de `public/js/`: **49.192 linhas em 96 arquivos**. O índice símbolo→linha, com a tabela de conflito, é outro bloco gerado: `tools/eval/ARCH.md` (`npm run arch`). +Total de `public/js/`: **50.486 linhas em 98 arquivos**. O índice símbolo→linha, com a tabela de conflito, é outro bloco gerado: `tools/eval/ARCH.md` (`npm run arch`). > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: ``git ls-files public/js/*.js | xargs wc -l`` diff --git a/docs/docs/comecando.md b/docs/docs/comecando.md index 6edcd4fda..3550993b1 100644 --- a/docs/docs/comecando.md +++ b/docs/docs/comecando.md @@ -39,17 +39,17 @@ esta página envelhecia no primeiro commit — ver | O que | Quanto | Onde confere | |---|---:|---| -| Código do jogo | 49.192 linhas em 96 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | -| `game.js` | **7.493** linhas | `wc -l public/js/game.js` | -| `main.js` | 3.596 linhas | `wc -l public/js/main.js` | +| Código do jogo | 50.486 linhas em 98 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | +| `game.js` | **7.494** linhas | `wc -l public/js/game.js` | +| `main.js` | 3.597 linhas | `wc -l public/js/main.js` | | Armas com GLB | 26 | `git ls-files 'public/models/weapons/*.glb' \| wc -l` | | GLBs de personagem | 55 | `git ls-files 'public/models/characters/*.glb' \| wc -l` | -| Props em GLB | 173 | `git ls-files 'public/models/props/*.glb' \| wc -l` | +| Props em GLB | 183 | `git ls-files 'public/models/props/*.glb' \| wc -l` | | Clipes de animação versionados | 681 | `git ls-files public/models/anims \| wc -l` | | Personagens jogáveis | 53, em 6 facções | array `CHARACTERS` de `characters.js` | -| Mapas no registro | 17 | objeto `MAPS` de `maps.js` | +| Mapas no registro | 18 | objeto `MAPS` de `maps.js` | | Arnêses visuais em HTML | 15 | `git ls-files 'public/*.html' \| wc -l` | -| Scripts do arnês | 409 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | +| Scripts do arnês | 417 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | | Scripts de pipeline | 76 | `git ls-files 'tools/*.mjs' \| wc -l` | | Tarefas de entrada escritas | 26 | `git ls-files 'docs/issues/[0-9]*.md' \| wc -l` | | Versão | `2.0.0-alpha.279` | `public/js/version.js` e `package.json` (batem) | @@ -66,7 +66,7 @@ E as regras de partida que mais mudam de lugar, todas lidas das constantes de | Regra | Valor | Constante | |---|---|---| | Facções · personagens | 6 · 53 (B 9 · C 9 · E 8 · F 9 · M 9 · U 9) | `CHARACTERS` | -| Mapas no menu | 17 — 2 abrem em rodadas, **15 em captura** | `MAPS` / `ctfMode` | +| Mapas no menu | 18 — 2 abrem em rodadas, **16 em captura** | `MAPS` / `ctfMode` | | Respawn | 2,2 s | `RESPAWN_DELAY` | | Round | 99 s, 3 vitórias | `ROUND_TIME` / `ROUNDS_TO_WIN` | | Captura | alvo = **todas as bandeiras do mapa**, 2 rodadas (rede de segurança 480 s) | `capsToWin = ctfPts.length` / `CTF_ROUNDS_TO_WIN` | @@ -221,6 +221,7 @@ Os mapas registrados hoje, e em que modo cada um abre: | Id | Nome no menu | Abre em | Arquivo em `public/js/` | Linhas | |---|---|---|---|---:| +| `campomorro` | Campinho do Morro | **captura** | `map_campomorro.js` | 815 | | `mansao` | Mansão do Joá | **captura** | `map_mansao.js` | 1.395 | | `amazonia` | Treta na Amazônia | **captura** | `map_amazonia.js` | 1.192 | | `escadao` | Escadão (Morro) | **captura** | `map_escadao.js` | 1.407 | @@ -235,11 +236,11 @@ Os mapas registrados hoje, e em que modo cada um abre: | `upa_24h` | UPA 24h da Treta | **captura** | `map_upa.js` | 325 | | `obras_prefeitura` | Obras da Prefeitura | **captura** | `map_obras.js` | 241 | | `atacadao_treta` | Atacadão da Treta | **captura** | `map_atacadao.js` | 256 | -| `parque_treta` | Parque da Treta | **captura** | `map_parque.js` | 403 | +| `parque_treta` | Parque da Treta | **captura** | `map_parque.js` | 818 | | `velho_oeste` | Sertão da Treta | **captura** | `map_velho_oeste.js` | 1.061 | | `penitenciaria` | CARANDIRU | **captura** | `map_penitenciaria.js` | 1.009 | -**17 mapas registrados** — 2 abrem em rodadas e 15 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 23 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. +**18 mapas registrados** — 2 abrem em rodadas e 16 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 24 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `objeto MAPS de public/js/maps.js` @@ -280,10 +281,10 @@ E os dois quality gates, com a lista exata do que cada um roda — direto do `pa {/* BEGIN:GERADO:scripts — não edite à mão, rode `npm run docs` */} ```bash -npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash +npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:campo-contract eval:campomorro-molde eval:parquevida eval:parquecanopy eval:penitenciariavida eval:penitenciariafacade eval:penitenciariapickup eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash ``` -`package.json` tem **251 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. +`package.json` tem **258 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `node -p "Object.keys(require('./package.json').scripts)"` diff --git a/docs/docs/quality-gates.md b/docs/docs/quality-gates.md index f6cc635e9..592a28fa2 100644 --- a/docs/docs/quality-gates.md +++ b/docs/docs/quality-gates.md @@ -15,7 +15,7 @@ PR (`.github/workflows/ci.yml`). {/* BEGIN:GERADO:invariantes — não edite à mão, rode `npm run docs` */} - `tools/eval/invariants.mjs`: **2.322 linhas**, **68 identificadores de invariante declarados** (`put()`), dos quais **29** têm caminho de `skip()` declarado. -- O arnês inteiro são **409 scripts** em `tools/eval/` (`.mjs` + `.py`), mais **76 scripts** de pipeline em `tools/`. +- O arnês inteiro são **417 scripts** em `tools/eval/` (`.mjs` + `.py`), mais **76 scripts** de pipeline em `tools/`. - Quantas invariantes rodam como **críticas** numa execução **não é derivável do fonte**: depende de qual insumo existe na máquina (o JSON do auditor de viewmodel, um GLB, uma pasta de anims). Esse número só sai rodando o quality gate — e o lugar dele é o cabeçalho do `KNOWN-BUGS.md`, atualizado com saída real. Reproduza: diff --git a/docs/docs/stack.md b/docs/docs/stack.md index a858b8984..a9c034192 100644 --- a/docs/docs/stack.md +++ b/docs/docs/stack.md @@ -28,7 +28,7 @@ a partir do `package.json`, do `docs/package.json` e do próprio Three.js vendor | Esta documentação | **Docusaurus** | `3.6.3` | | Runtime de CI | **Node** | `22` | -Three.js sai de `public/vendor/three.module.js` (**sem CDN, sem npm no runtime**). Astro e Vercel de `package.json` + `astro.config.mjs` + `vercel.json`. Dos scripts de `tools/`, **157** importam Playwright, **58** importam gltf-transform e **10** importam meshoptimizer. +Three.js sai de `public/vendor/three.module.js` (**sem CDN, sem npm no runtime**). Astro e Vercel de `package.json` + `astro.config.mjs` + `vercel.json`. Dos scripts de `tools/`, **158** importam Playwright, **58** importam gltf-transform e **10** importam meshoptimizer. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `dependencies/devDependencies do package.json · REVISION de public/vendor/three.module.js` diff --git a/docs/i18n/en/docusaurus-plugin-content-docs/current/arquitetura.md b/docs/i18n/en/docusaurus-plugin-content-docs/current/arquitetura.md index 24f354fbc..ca4ee1f69 100644 --- a/docs/i18n/en/docusaurus-plugin-content-docs/current/arquitetura.md +++ b/docs/i18n/en/docusaurus-plugin-content-docs/current/arquitetura.md @@ -69,15 +69,15 @@ Size of the files `gen-arch.mjs` indexes — a generated block, regenerated by | File | Lines | |---|---:| -| `public/js/game.js` | 7,493 | -| `public/js/main.js` | 3,596 | +| `public/js/game.js` | 7,494 | +| `public/js/main.js` | 3,597 | | `public/js/characters.js` | 1,099 | | `public/js/glbchars.js` | 851 | | `public/js/vmattach.js` | 628 | | `public/js/weapons.js` | 353 | | `public/js/springs.js` | 260 | -Total in `public/js/`: **49,192 lines in 96 files**. The symbol-to-line index lives in `tools/eval/ARCH.md`. +Total in `public/js/`: **50,486 lines in 98 files**. The symbol-to-line index lives in `tools/eval/ARCH.md`. > Block generated by `node tools/gen-docs.mjs`. Source: ``wc -l public/js/*.js`` diff --git a/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md b/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md index b40ffa823..d3b566c75 100644 --- a/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md +++ b/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md @@ -41,17 +41,17 @@ this page was aging at the very first commit — see | What | How much | Where to check | |---|---:|---| -| Game code | 49,192 lines in 96 files | `git ls-files public/js/*.js \| xargs wc -l` | -| `game.js` | **7,493** lines | `wc -l public/js/game.js` | -| `main.js` | 3,596 lines | `wc -l public/js/main.js` | +| Game code | 50,486 lines in 98 files | `git ls-files public/js/*.js \| xargs wc -l` | +| `game.js` | **7,494** lines | `wc -l public/js/game.js` | +| `main.js` | 3,597 lines | `wc -l public/js/main.js` | | Weapons with GLB | 26 | `git ls-files 'public/models/weapons/*.glb' \| wc -l` | | Character GLBs | 55 | `git ls-files 'public/models/characters/*.glb' \| wc -l` | -| Props in GLB | 173 | `git ls-files 'public/models/props/*.glb' \| wc -l` | +| Props in GLB | 183 | `git ls-files 'public/models/props/*.glb' \| wc -l` | | Versioned animation clips | 681 | `git ls-files public/models/anims \| wc -l` | | Playable characters | 53, in 6 factions | `CHARACTERS` array in `characters.js` | -| Maps in the registry | 17 | `MAPS` object in `maps.js` | +| Maps in the registry | 18 | `MAPS` object in `maps.js` | | Visual harnesses in HTML | 15 | `git ls-files 'public/*.html' \| wc -l` | -| Harness scripts | 409 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | +| Harness scripts | 417 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | | Pipeline scripts | 76 | `git ls-files 'tools/*.mjs' \| wc -l` | | Written entry tasks | 26 | `git ls-files 'docs/issues/[0-9]*.md' \| wc -l` | | Version | `2.0.0-alpha.279` | `public/js/version.js` and `package.json` (match) | @@ -68,7 +68,7 @@ And the match rules that move around the most, all read from the constants in | Rule | Value | Constant | |---|---|---| | Factions · characters | 6 · 53 (B 9 · C 9 · E 8 · F 9 · M 9 · U 9) | `CHARACTERS` | -| Maps in the menu | 17 - 2 open in rounds, **15 in capture** | `MAPS` / `ctfMode` | +| Maps in the menu | 18 - 2 open in rounds, **16 in capture** | `MAPS` / `ctfMode` | | Respawn | 2.2 s | `RESPAWN_DELAY` | | Round | 99 s, 3 wins | `ROUND_TIME` / `ROUNDS_TO_WIN` | | Capture | target = **all flags on the map**, 2 rounds (480 s safety net) | `capsToWin = ctfPts.length` / `CTF_ROUNDS_TO_WIN` | @@ -223,6 +223,7 @@ The maps registered today, and which mode each one opens in: | Id | Menu name | Opens in | File in `public/js/` | Lines | |---|---|---|---|---:| +| `campomorro` | Campinho do Morro | **capture** | `map_campomorro.js` | 815 | | `mansao` | Mansão do Joá | **capture** | `map_mansao.js` | 1,395 | | `amazonia` | Treta na Amazônia | **capture** | `map_amazonia.js` | 1,192 | | `escadao` | Escadão (Morro) | **capture** | `map_escadao.js` | 1,407 | @@ -237,11 +238,11 @@ The maps registered today, and which mode each one opens in: | `upa_24h` | UPA 24h da Treta | **capture** | `map_upa.js` | 325 | | `obras_prefeitura` | Obras da Prefeitura | **capture** | `map_obras.js` | 241 | | `atacadao_treta` | Atacadão da Treta | **capture** | `map_atacadao.js` | 256 | -| `parque_treta` | Parque da Treta | **capture** | `map_parque.js` | 403 | +| `parque_treta` | Parque da Treta | **capture** | `map_parque.js` | 818 | | `velho_oeste` | Sertão da Treta | **capture** | `map_velho_oeste.js` | 1,061 | | `penitenciaria` | CARANDIRU | **capture** | `map_penitenciaria.js` | 1,009 | -**17 registered maps** - 2 open in rounds and 15 in capture. `ctfMode` sets the initial mode; it does not lock it. There are 23 `map_*.js` files on disk, so a file alone does **not** make a map playable. +**18 registered maps** - 2 open in rounds and 16 in capture. `ctfMode` sets the initial mode; it does not lock it. There are 24 `map_*.js` files on disk, so a file alone does **not** make a map playable. > Block generated by `node tools/gen-docs.mjs`. Source: `objeto MAPS de public/js/maps.js` @@ -282,10 +283,10 @@ And the two gates, with the exact list of what each one runs — straight from ` {/* BEGIN:GERADO:scripts — não edite à mão, rode `npm run docs` */} ```bash -npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash +npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:campo-contract eval:campomorro-molde eval:parquevida eval:parquecanopy eval:penitenciariavida eval:penitenciariafacade eval:penitenciariapickup eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash ``` -`package.json` has **251 scripts**; the reason behind each one lives in `SCRIPTS.md`. +`package.json` has **258 scripts**; the reason behind each one lives in `SCRIPTS.md`. > Block generated by `node tools/gen-docs.mjs`. Source: `node -p "Object.keys(require('./package.json').scripts)"` diff --git a/docs/i18n/en/docusaurus-plugin-content-docs/current/quality-gates.md b/docs/i18n/en/docusaurus-plugin-content-docs/current/quality-gates.md index 0b2894db6..782ae6a15 100644 --- a/docs/i18n/en/docusaurus-plugin-content-docs/current/quality-gates.md +++ b/docs/i18n/en/docusaurus-plugin-content-docs/current/quality-gates.md @@ -18,7 +18,7 @@ PR (`.github/workflows/ci.yml`). {/* BEGIN:GERADO:invariantes — não edite à mão, rode `npm run docs` */} - `tools/eval/invariants.mjs`: **2,322 lines**, **68 declared invariant identifiers**, with **29** declared `skip()` paths. -- The harness contains **409 scripts** in `tools/eval/`, plus **76 pipeline scripts** in `tools/`. +- The harness contains **417 scripts** in `tools/eval/`, plus **76 pipeline scripts** in `tools/`. - The number of critical checks in one run depends on the inputs present on that machine; dated results belong in `KNOWN-BUGS.md`. ```bash diff --git a/docs/i18n/en/docusaurus-plugin-content-docs/current/stack.md b/docs/i18n/en/docusaurus-plugin-content-docs/current/stack.md index f82c7d663..fa01e0bcb 100644 --- a/docs/i18n/en/docusaurus-plugin-content-docs/current/stack.md +++ b/docs/i18n/en/docusaurus-plugin-content-docs/current/stack.md @@ -31,7 +31,7 @@ from `package.json`, `docs/package.json` and the vendored Three.js itself. | This documentation | **Docusaurus** | `3.6.3` | | CI runtime | **Node** | `22` | -Three.js comes from `public/vendor/three.module.js`. Of the scripts in `tools/`, **157** import Playwright, **58** import gltf-transform, and **10** import meshoptimizer. +Three.js comes from `public/vendor/three.module.js`. Of the scripts in `tools/`, **158** import Playwright, **58** import gltf-transform, and **10** import meshoptimizer. > Block generated by `node tools/gen-docs.mjs`. Source: `dependencies/devDependencies do package.json · REVISION de public/vendor/three.module.js` From 889274a58154d3de72e3eb5714715b8ae7e7c612 Mon Sep 17 00:00:00 2001 From: csbrasil-bot Date: Thu, 24 Sep 2026 23:27:10 +0000 Subject: [PATCH 2/9] chore(docs): regenera bloco derivado (autofix) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rodado pelo autofix: só arquivo gerado, conferido pela lista de permissão. Agent: csbrasil-bot (autofix) Signed-off-by: csbrasil-bot --- STATUS.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/STATUS.md b/STATUS.md index d37fc91e9..59ac3b9a8 100644 --- a/STATUS.md +++ b/STATUS.md @@ -3,9 +3,9 @@ - **Versão:** `2.0.0-alpha.280` -- **Conteúdo jogável:** 6 facções, 53 personagens, 17 mapas e 26 armas com GLB -- **Código do jogo:** 49.192 linhas em 96 módulos JavaScript -- **Automação:** 251 comandos npm, 409 scripts de avaliação e 76 scripts de pipeline +- **Conteúdo jogável:** 6 facções, 53 personagens, 18 mapas e 26 armas com GLB +- **Código do jogo:** 50.486 linhas em 98 módulos JavaScript +- **Automação:** 258 comandos npm, 417 scripts de avaliação e 76 scripts de pipeline > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `package.json · CHARACTERS · MAPS · public/models/weapons · public/js · tools/` From 937dabb8d53dd9188989da0d29a872e98145cd8d Mon Sep 17 00:00:00 2001 From: csbrasil-bot Date: Thu, 24 Sep 2026 23:36:03 +0000 Subject: [PATCH 3/9] chore(docs): regenera bloco derivado (autofix) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rodado pelo autofix: só arquivo gerado, conferido pela lista de permissão. Agent: csbrasil-bot (autofix) Signed-off-by: csbrasil-bot --- STATUS.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/STATUS.md b/STATUS.md index 24db7a6d7..9e63da356 100644 --- a/STATUS.md +++ b/STATUS.md @@ -3,9 +3,9 @@ - **Versão:** `2.0.0-alpha.281` -- **Conteúdo jogável:** 6 facções, 53 personagens, 17 mapas e 26 armas com GLB -- **Código do jogo:** 49.192 linhas em 96 módulos JavaScript -- **Automação:** 251 comandos npm, 409 scripts de avaliação e 76 scripts de pipeline +- **Conteúdo jogável:** 6 facções, 53 personagens, 18 mapas e 26 armas com GLB +- **Código do jogo:** 50.486 linhas em 98 módulos JavaScript +- **Automação:** 258 comandos npm, 417 scripts de avaliação e 76 scripts de pipeline > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `package.json · CHARACTERS · MAPS · public/models/weapons · public/js · tools/` From 21cbd40929fdb73ea0f3085482169293b36b579d Mon Sep 17 00:00:00 2001 From: csbrasil-bot Date: Thu, 24 Sep 2026 23:58:00 +0000 Subject: [PATCH 4/9] chore(docs): regenera bloco derivado (autofix) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rodado pelo autofix: só arquivo gerado, conferido pela lista de permissão. Agent: csbrasil-bot (autofix) Signed-off-by: csbrasil-bot --- ARCH.generated.md | 8 +++---- README.md | 23 ++++++++++--------- STATUS.md | 6 ++--- docs/docs/comecando.md | 23 ++++++++++--------- docs/docs/quality-gates.md | 2 +- .../current/comecando.md | 23 ++++++++++--------- .../current/quality-gates.md | 2 +- 7 files changed, 45 insertions(+), 42 deletions(-) diff --git a/ARCH.generated.md b/ARCH.generated.md index 5a2288f50..c7f524a22 100644 --- a/ARCH.generated.md +++ b/ARCH.generated.md @@ -8,9 +8,9 @@ Números atuais das zonas, do quality gate e do `package.json`: | Zona | O que é | Tamanho medido | Regra | |---|---|---|---| -| `public/` | o **jogo** | 96 arquivos `.js`, 49.192 linhas · Three.js `r160` vendorizado | ES modules servidos crus, **zero build**, sem dependência de runtime | +| `public/` | o **jogo** | 98 arquivos `.js`, 50.486 linhas · Three.js `r160` vendorizado | ES modules servidos crus, **zero build**, sem dependência de runtime | | `src/` | o **site** | 20 páginas `.astro`, 4 rotas `/api` · Astro `^7.1.1` | framework é bem-vindo; `service_role` só no servidor | -| `tools/` | o **arnês** | 409 scripts em `tools/eval/`, 80 em `tools/` | node puro: sobe o jogo real sem browser | +| `tools/` | o **arnês** | 417 scripts em `tools/eval/`, 80 em `tools/` | node puro: sobe o jogo real sem browser | **Não existe `public/index.html`.** O HTML do jogo é `src/pages/index.astro`, servido na rota `/`. Servir `public/` estaticamente entrega os arnêses visuais, **não o jogo** — é a pegadinha que custa a primeira hora de todo mundo. @@ -25,10 +25,10 @@ Comandos e scripts atuais do quality gate: ```bash -npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash +npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:campo-contract eval:campomorro-molde eval:parquevida eval:parquecanopy eval:penitenciariavida eval:penitenciariafacade eval:penitenciariapickup eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash ``` -`package.json` tem **251 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. +`package.json` tem **258 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `node -p "Object.keys(require('./package.json').scripts)"` diff --git a/README.md b/README.md index c9dab181a..cc3e6c5ca 100644 --- a/README.md +++ b/README.md @@ -34,17 +34,17 @@ contra bots, direto na aba. Sem download, sem instalação, sem cadastro. | O que | Quanto | Onde confere | |---|---:|---| -| Código do jogo | 49.192 linhas em 96 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | -| `game.js` | **7.493** linhas | `wc -l public/js/game.js` | -| `main.js` | 3.596 linhas | `wc -l public/js/main.js` | +| Código do jogo | 50.486 linhas em 98 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | +| `game.js` | **7.494** linhas | `wc -l public/js/game.js` | +| `main.js` | 3.597 linhas | `wc -l public/js/main.js` | | Armas com GLB | 26 | `git ls-files 'public/models/weapons/*.glb' \| wc -l` | | GLBs de personagem | 55 | `git ls-files 'public/models/characters/*.glb' \| wc -l` | -| Props em GLB | 173 | `git ls-files 'public/models/props/*.glb' \| wc -l` | +| Props em GLB | 183 | `git ls-files 'public/models/props/*.glb' \| wc -l` | | Clipes de animação versionados | 681 | `git ls-files public/models/anims \| wc -l` | | Personagens jogáveis | 53, em 6 facções | array `CHARACTERS` de `characters.js` | -| Mapas no registro | 17 | objeto `MAPS` de `maps.js` | +| Mapas no registro | 18 | objeto `MAPS` de `maps.js` | | Arnêses visuais em HTML | 15 | `git ls-files 'public/*.html' \| wc -l` | -| Scripts do arnês | 409 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | +| Scripts do arnês | 417 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | | Scripts de pipeline | 80 | `git ls-files 'tools/*.mjs' \| wc -l` | | Tarefas de entrada escritas | 26 | `git ls-files 'docs/issues/[0-9]*.md' \| wc -l` | | Versão | `2.0.0-alpha.281` | `public/js/version.js` e `package.json` (batem) | @@ -89,7 +89,7 @@ arquitetura): `cd docs && npm install && npm start` → Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `dependencies/devDependencies do package.json · REVISION de public/vendor/three.module.js` @@ -279,7 +279,7 @@ projeto. | Regra | Valor | Constante | |---|---|---| | Facções · personagens | 6 · 53 (B 9 · C 9 · E 8 · F 9 · M 9 · U 9) | `CHARACTERS` | -| Mapas no menu | 17 — 2 abrem em rodadas, **15 em captura** | `MAPS` / `ctfMode` | +| Mapas no menu | 18 — 2 abrem em rodadas, **16 em captura** | `MAPS` / `ctfMode` | | Respawn | 2,2 s | `RESPAWN_DELAY` | | Round | 99 s, 3 vitórias | `ROUND_TIME` / `ROUNDS_TO_WIN` | | Captura | alvo = **todas as bandeiras do mapa**, 2 rodadas (rede de segurança 480 s) | `capsToWin = ctfPts.length` / `CTF_ROUNDS_TO_WIN` | @@ -306,6 +306,7 @@ Os mapas registrados, e em que modo cada um abre: | Id | Nome no menu | Abre em | Arquivo em `public/js/` | Linhas | |---|---|---|---|---:| +| `campomorro` | Campinho do Morro | **captura** | `map_campomorro.js` | 815 | | `mansao` | Mansão do Joá | **captura** | `map_mansao.js` | 1.395 | | `amazonia` | Treta na Amazônia | **captura** | `map_amazonia.js` | 1.192 | | `escadao` | Escadão (Morro) | **captura** | `map_escadao.js` | 1.407 | @@ -320,11 +321,11 @@ Os mapas registrados, e em que modo cada um abre: | `upa_24h` | UPA 24h da Treta | **captura** | `map_upa.js` | 325 | | `obras_prefeitura` | Obras da Prefeitura | **captura** | `map_obras.js` | 241 | | `atacadao_treta` | Atacadão da Treta | **captura** | `map_atacadao.js` | 256 | -| `parque_treta` | Parque da Treta | **captura** | `map_parque.js` | 403 | +| `parque_treta` | Parque da Treta | **captura** | `map_parque.js` | 818 | | `velho_oeste` | Sertão da Treta | **captura** | `map_velho_oeste.js` | 1.061 | | `penitenciaria` | CARANDIRU | **captura** | `map_penitenciaria.js` | 1.009 | -**17 mapas registrados** — 2 abrem em rodadas e 15 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 23 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. +**18 mapas registrados** — 2 abrem em rodadas e 16 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 24 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `objeto MAPS de public/js/maps.js` diff --git a/STATUS.md b/STATUS.md index 114796199..3c45ae3d6 100644 --- a/STATUS.md +++ b/STATUS.md @@ -3,9 +3,9 @@ - **Versão:** `2.0.0-alpha.281` -- **Conteúdo jogável:** 6 facções, 53 personagens, 17 mapas e 26 armas com GLB -- **Código do jogo:** 49.192 linhas em 96 módulos JavaScript -- **Automação:** 251 comandos npm, 409 scripts de avaliação e 80 scripts de pipeline +- **Conteúdo jogável:** 6 facções, 53 personagens, 18 mapas e 26 armas com GLB +- **Código do jogo:** 50.486 linhas em 98 módulos JavaScript +- **Automação:** 258 comandos npm, 417 scripts de avaliação e 80 scripts de pipeline > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `package.json · CHARACTERS · MAPS · public/models/weapons · public/js · tools/` diff --git a/docs/docs/comecando.md b/docs/docs/comecando.md index 36252c81d..e19d47e91 100644 --- a/docs/docs/comecando.md +++ b/docs/docs/comecando.md @@ -39,17 +39,17 @@ esta página envelhecia no primeiro commit — ver | O que | Quanto | Onde confere | |---|---:|---| -| Código do jogo | 49.192 linhas em 96 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | -| `game.js` | **7.493** linhas | `wc -l public/js/game.js` | -| `main.js` | 3.596 linhas | `wc -l public/js/main.js` | +| Código do jogo | 50.486 linhas em 98 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | +| `game.js` | **7.494** linhas | `wc -l public/js/game.js` | +| `main.js` | 3.597 linhas | `wc -l public/js/main.js` | | Armas com GLB | 26 | `git ls-files 'public/models/weapons/*.glb' \| wc -l` | | GLBs de personagem | 55 | `git ls-files 'public/models/characters/*.glb' \| wc -l` | -| Props em GLB | 173 | `git ls-files 'public/models/props/*.glb' \| wc -l` | +| Props em GLB | 183 | `git ls-files 'public/models/props/*.glb' \| wc -l` | | Clipes de animação versionados | 681 | `git ls-files public/models/anims \| wc -l` | | Personagens jogáveis | 53, em 6 facções | array `CHARACTERS` de `characters.js` | -| Mapas no registro | 17 | objeto `MAPS` de `maps.js` | +| Mapas no registro | 18 | objeto `MAPS` de `maps.js` | | Arnêses visuais em HTML | 15 | `git ls-files 'public/*.html' \| wc -l` | -| Scripts do arnês | 409 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | +| Scripts do arnês | 417 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | | Scripts de pipeline | 80 | `git ls-files 'tools/*.mjs' \| wc -l` | | Tarefas de entrada escritas | 26 | `git ls-files 'docs/issues/[0-9]*.md' \| wc -l` | | Versão | `2.0.0-alpha.281` | `public/js/version.js` e `package.json` (batem) | @@ -66,7 +66,7 @@ E as regras de partida que mais mudam de lugar, todas lidas das constantes de | Regra | Valor | Constante | |---|---|---| | Facções · personagens | 6 · 53 (B 9 · C 9 · E 8 · F 9 · M 9 · U 9) | `CHARACTERS` | -| Mapas no menu | 17 — 2 abrem em rodadas, **15 em captura** | `MAPS` / `ctfMode` | +| Mapas no menu | 18 — 2 abrem em rodadas, **16 em captura** | `MAPS` / `ctfMode` | | Respawn | 2,2 s | `RESPAWN_DELAY` | | Round | 99 s, 3 vitórias | `ROUND_TIME` / `ROUNDS_TO_WIN` | | Captura | alvo = **todas as bandeiras do mapa**, 2 rodadas (rede de segurança 480 s) | `capsToWin = ctfPts.length` / `CTF_ROUNDS_TO_WIN` | @@ -221,6 +221,7 @@ Os mapas registrados hoje, e em que modo cada um abre: | Id | Nome no menu | Abre em | Arquivo em `public/js/` | Linhas | |---|---|---|---|---:| +| `campomorro` | Campinho do Morro | **captura** | `map_campomorro.js` | 815 | | `mansao` | Mansão do Joá | **captura** | `map_mansao.js` | 1.395 | | `amazonia` | Treta na Amazônia | **captura** | `map_amazonia.js` | 1.192 | | `escadao` | Escadão (Morro) | **captura** | `map_escadao.js` | 1.407 | @@ -235,11 +236,11 @@ Os mapas registrados hoje, e em que modo cada um abre: | `upa_24h` | UPA 24h da Treta | **captura** | `map_upa.js` | 325 | | `obras_prefeitura` | Obras da Prefeitura | **captura** | `map_obras.js` | 241 | | `atacadao_treta` | Atacadão da Treta | **captura** | `map_atacadao.js` | 256 | -| `parque_treta` | Parque da Treta | **captura** | `map_parque.js` | 403 | +| `parque_treta` | Parque da Treta | **captura** | `map_parque.js` | 818 | | `velho_oeste` | Sertão da Treta | **captura** | `map_velho_oeste.js` | 1.061 | | `penitenciaria` | CARANDIRU | **captura** | `map_penitenciaria.js` | 1.009 | -**17 mapas registrados** — 2 abrem em rodadas e 15 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 23 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. +**18 mapas registrados** — 2 abrem em rodadas e 16 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 24 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `objeto MAPS de public/js/maps.js` @@ -280,10 +281,10 @@ E os dois quality gates, com a lista exata do que cada um roda — direto do `pa {/* BEGIN:GERADO:scripts — não edite à mão, rode `npm run docs` */} ```bash -npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash +npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:campo-contract eval:campomorro-molde eval:parquevida eval:parquecanopy eval:penitenciariavida eval:penitenciariafacade eval:penitenciariapickup eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash ``` -`package.json` tem **251 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. +`package.json` tem **258 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `node -p "Object.keys(require('./package.json').scripts)"` diff --git a/docs/docs/quality-gates.md b/docs/docs/quality-gates.md index 465780e6a..dfb04835c 100644 --- a/docs/docs/quality-gates.md +++ b/docs/docs/quality-gates.md @@ -15,7 +15,7 @@ PR (`.github/workflows/ci.yml`). {/* BEGIN:GERADO:invariantes — não edite à mão, rode `npm run docs` */} - `tools/eval/invariants.mjs`: **2.322 linhas**, **68 identificadores de invariante declarados** (`put()`), dos quais **29** têm caminho de `skip()` declarado. -- O arnês inteiro são **409 scripts** em `tools/eval/` (`.mjs` + `.py`), mais **80 scripts** de pipeline em `tools/`. +- O arnês inteiro são **417 scripts** em `tools/eval/` (`.mjs` + `.py`), mais **80 scripts** de pipeline em `tools/`. - Quantas invariantes rodam como **críticas** numa execução **não é derivável do fonte**: depende de qual insumo existe na máquina (o JSON do auditor de viewmodel, um GLB, uma pasta de anims). Esse número só sai rodando o quality gate — e o lugar dele é o cabeçalho do `KNOWN-BUGS.md`, atualizado com saída real. Reproduza: diff --git a/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md b/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md index 7b80d8874..dcb2eb98f 100644 --- a/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md +++ b/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md @@ -41,17 +41,17 @@ this page was aging at the very first commit — see | What | How much | Where to check | |---|---:|---| -| Game code | 49,192 lines in 96 files | `git ls-files public/js/*.js \| xargs wc -l` | -| `game.js` | **7,493** lines | `wc -l public/js/game.js` | -| `main.js` | 3,596 lines | `wc -l public/js/main.js` | +| Game code | 50,486 lines in 98 files | `git ls-files public/js/*.js \| xargs wc -l` | +| `game.js` | **7,494** lines | `wc -l public/js/game.js` | +| `main.js` | 3,597 lines | `wc -l public/js/main.js` | | Weapons with GLB | 26 | `git ls-files 'public/models/weapons/*.glb' \| wc -l` | | Character GLBs | 55 | `git ls-files 'public/models/characters/*.glb' \| wc -l` | -| Props in GLB | 173 | `git ls-files 'public/models/props/*.glb' \| wc -l` | +| Props in GLB | 183 | `git ls-files 'public/models/props/*.glb' \| wc -l` | | Versioned animation clips | 681 | `git ls-files public/models/anims \| wc -l` | | Playable characters | 53, in 6 factions | `CHARACTERS` array in `characters.js` | -| Maps in the registry | 17 | `MAPS` object in `maps.js` | +| Maps in the registry | 18 | `MAPS` object in `maps.js` | | Visual harnesses in HTML | 15 | `git ls-files 'public/*.html' \| wc -l` | -| Harness scripts | 409 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | +| Harness scripts | 417 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | | Pipeline scripts | 80 | `git ls-files 'tools/*.mjs' \| wc -l` | | Written entry tasks | 26 | `git ls-files 'docs/issues/[0-9]*.md' \| wc -l` | | Version | `2.0.0-alpha.281` | `public/js/version.js` and `package.json` (match) | @@ -68,7 +68,7 @@ And the match rules that move around the most, all read from the constants in | Rule | Value | Constant | |---|---|---| | Factions · characters | 6 · 53 (B 9 · C 9 · E 8 · F 9 · M 9 · U 9) | `CHARACTERS` | -| Maps in the menu | 17 - 2 open in rounds, **15 in capture** | `MAPS` / `ctfMode` | +| Maps in the menu | 18 - 2 open in rounds, **16 in capture** | `MAPS` / `ctfMode` | | Respawn | 2.2 s | `RESPAWN_DELAY` | | Round | 99 s, 3 wins | `ROUND_TIME` / `ROUNDS_TO_WIN` | | Capture | target = **all flags on the map**, 2 rounds (480 s safety net) | `capsToWin = ctfPts.length` / `CTF_ROUNDS_TO_WIN` | @@ -223,6 +223,7 @@ The maps registered today, and which mode each one opens in: | Id | Menu name | Opens in | File in `public/js/` | Lines | |---|---|---|---|---:| +| `campomorro` | Campinho do Morro | **capture** | `map_campomorro.js` | 815 | | `mansao` | Mansão do Joá | **capture** | `map_mansao.js` | 1,395 | | `amazonia` | Treta na Amazônia | **capture** | `map_amazonia.js` | 1,192 | | `escadao` | Escadão (Morro) | **capture** | `map_escadao.js` | 1,407 | @@ -237,11 +238,11 @@ The maps registered today, and which mode each one opens in: | `upa_24h` | UPA 24h da Treta | **capture** | `map_upa.js` | 325 | | `obras_prefeitura` | Obras da Prefeitura | **capture** | `map_obras.js` | 241 | | `atacadao_treta` | Atacadão da Treta | **capture** | `map_atacadao.js` | 256 | -| `parque_treta` | Parque da Treta | **capture** | `map_parque.js` | 403 | +| `parque_treta` | Parque da Treta | **capture** | `map_parque.js` | 818 | | `velho_oeste` | Sertão da Treta | **capture** | `map_velho_oeste.js` | 1,061 | | `penitenciaria` | CARANDIRU | **capture** | `map_penitenciaria.js` | 1,009 | -**17 registered maps** - 2 open in rounds and 15 in capture. `ctfMode` sets the initial mode; it does not lock it. There are 23 `map_*.js` files on disk, so a file alone does **not** make a map playable. +**18 registered maps** - 2 open in rounds and 16 in capture. `ctfMode` sets the initial mode; it does not lock it. There are 24 `map_*.js` files on disk, so a file alone does **not** make a map playable. > Block generated by `node tools/gen-docs.mjs`. Source: `objeto MAPS de public/js/maps.js` @@ -282,10 +283,10 @@ And the two gates, with the exact list of what each one runs — straight from ` {/* BEGIN:GERADO:scripts — não edite à mão, rode `npm run docs` */} ```bash -npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash +npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:campo-contract eval:campomorro-molde eval:parquevida eval:parquecanopy eval:penitenciariavida eval:penitenciariafacade eval:penitenciariapickup eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash ``` -`package.json` has **251 scripts**; the reason behind each one lives in `SCRIPTS.md`. +`package.json` has **258 scripts**; the reason behind each one lives in `SCRIPTS.md`. > Block generated by `node tools/gen-docs.mjs`. Source: `node -p "Object.keys(require('./package.json').scripts)"` diff --git a/docs/i18n/en/docusaurus-plugin-content-docs/current/quality-gates.md b/docs/i18n/en/docusaurus-plugin-content-docs/current/quality-gates.md index b97b6d184..e2387e241 100644 --- a/docs/i18n/en/docusaurus-plugin-content-docs/current/quality-gates.md +++ b/docs/i18n/en/docusaurus-plugin-content-docs/current/quality-gates.md @@ -18,7 +18,7 @@ PR (`.github/workflows/ci.yml`). {/* BEGIN:GERADO:invariantes — não edite à mão, rode `npm run docs` */} - `tools/eval/invariants.mjs`: **2,322 lines**, **68 declared invariant identifiers**, with **29** declared `skip()` paths. -- The harness contains **409 scripts** in `tools/eval/`, plus **80 pipeline scripts** in `tools/`. +- The harness contains **417 scripts** in `tools/eval/`, plus **80 pipeline scripts** in `tools/`. - The number of critical checks in one run depends on the inputs present on that machine; dated results belong in `KNOWN-BUGS.md`. ```bash From 5311c9df0b800ef4e343edc1e193df5464f6c8fa Mon Sep 17 00:00:00 2001 From: csbrasil-bot Date: Fri, 25 Sep 2026 00:21:27 +0000 Subject: [PATCH 5/9] chore(docs): regenera bloco derivado (autofix) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rodado pelo autofix: só arquivo gerado, conferido pela lista de permissão. Agent: csbrasil-bot (autofix) Signed-off-by: csbrasil-bot --- ARCH.generated.md | 8 +- README.md | 23 +-- STATUS.md | 6 +- docs/docs/arquitetura.md | 6 +- docs/docs/comecando.md | 23 +-- .../current/arquitetura.md | 6 +- .../current/comecando.md | 23 +-- tools/eval/ARCH.md | 156 +++++++++--------- 8 files changed, 127 insertions(+), 124 deletions(-) diff --git a/ARCH.generated.md b/ARCH.generated.md index e596dcc49..3f854bc24 100644 --- a/ARCH.generated.md +++ b/ARCH.generated.md @@ -8,9 +8,9 @@ Números atuais das zonas, do quality gate e do `package.json`: | Zona | O que é | Tamanho medido | Regra | |---|---|---|---| -| `public/` | o **jogo** | 96 arquivos `.js`, 49.235 linhas · Three.js `r160` vendorizado | ES modules servidos crus, **zero build**, sem dependência de runtime | +| `public/` | o **jogo** | 98 arquivos `.js`, 50.529 linhas · Three.js `r160` vendorizado | ES modules servidos crus, **zero build**, sem dependência de runtime | | `src/` | o **site** | 20 páginas `.astro`, 4 rotas `/api` · Astro `^7.1.1` | framework é bem-vindo; `service_role` só no servidor | -| `tools/` | o **arnês** | 409 scripts em `tools/eval/`, 80 em `tools/` | node puro: sobe o jogo real sem browser | +| `tools/` | o **arnês** | 417 scripts em `tools/eval/`, 80 em `tools/` | node puro: sobe o jogo real sem browser | **Não existe `public/index.html`.** O HTML do jogo é `src/pages/index.astro`, servido na rota `/`. Servir `public/` estaticamente entrega os arnêses visuais, **não o jogo** — é a pegadinha que custa a primeira hora de todo mundo. @@ -25,10 +25,10 @@ Comandos e scripts atuais do quality gate: ```bash -npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash +npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:campo-contract eval:campomorro-molde eval:parquevida eval:parquecanopy eval:penitenciariavida eval:penitenciariafacade eval:penitenciariapickup eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash ``` -`package.json` tem **251 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. +`package.json` tem **258 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `node -p "Object.keys(require('./package.json').scripts)"` diff --git a/README.md b/README.md index 9eae0ee06..044289517 100644 --- a/README.md +++ b/README.md @@ -34,17 +34,17 @@ contra bots, direto na aba. Sem download, sem instalação, sem cadastro. | O que | Quanto | Onde confere | |---|---:|---| -| Código do jogo | 49.235 linhas em 96 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | -| `game.js` | **7.532** linhas | `wc -l public/js/game.js` | -| `main.js` | 3.600 linhas | `wc -l public/js/main.js` | +| Código do jogo | 50.529 linhas em 98 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | +| `game.js` | **7.533** linhas | `wc -l public/js/game.js` | +| `main.js` | 3.601 linhas | `wc -l public/js/main.js` | | Armas com GLB | 26 | `git ls-files 'public/models/weapons/*.glb' \| wc -l` | | GLBs de personagem | 55 | `git ls-files 'public/models/characters/*.glb' \| wc -l` | -| Props em GLB | 173 | `git ls-files 'public/models/props/*.glb' \| wc -l` | +| Props em GLB | 183 | `git ls-files 'public/models/props/*.glb' \| wc -l` | | Clipes de animação versionados | 681 | `git ls-files public/models/anims \| wc -l` | | Personagens jogáveis | 53, em 6 facções | array `CHARACTERS` de `characters.js` | -| Mapas no registro | 17 | objeto `MAPS` de `maps.js` | +| Mapas no registro | 18 | objeto `MAPS` de `maps.js` | | Arnêses visuais em HTML | 15 | `git ls-files 'public/*.html' \| wc -l` | -| Scripts do arnês | 409 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | +| Scripts do arnês | 417 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | | Scripts de pipeline | 80 | `git ls-files 'tools/*.mjs' \| wc -l` | | Tarefas de entrada escritas | 26 | `git ls-files 'docs/issues/[0-9]*.md' \| wc -l` | | Versão | `2.0.0-alpha.282` | `public/js/version.js` e `package.json` (batem) | @@ -89,7 +89,7 @@ arquitetura): `cd docs && npm install && npm start` → Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `dependencies/devDependencies do package.json · REVISION de public/vendor/three.module.js` @@ -279,7 +279,7 @@ projeto. | Regra | Valor | Constante | |---|---|---| | Facções · personagens | 6 · 53 (B 9 · C 9 · E 8 · F 9 · M 9 · U 9) | `CHARACTERS` | -| Mapas no menu | 17 — 2 abrem em rodadas, **15 em captura** | `MAPS` / `ctfMode` | +| Mapas no menu | 18 — 2 abrem em rodadas, **16 em captura** | `MAPS` / `ctfMode` | | Respawn | 2,2 s | `RESPAWN_DELAY` | | Round | 99 s, 3 vitórias | `ROUND_TIME` / `ROUNDS_TO_WIN` | | Captura | alvo = **todas as bandeiras do mapa**, 2 rodadas (rede de segurança 480 s) | `capsToWin = ctfPts.length` / `CTF_ROUNDS_TO_WIN` | @@ -306,6 +306,7 @@ Os mapas registrados, e em que modo cada um abre: | Id | Nome no menu | Abre em | Arquivo em `public/js/` | Linhas | |---|---|---|---|---:| +| `campomorro` | Campinho do Morro | **captura** | `map_campomorro.js` | 815 | | `mansao` | Mansão do Joá | **captura** | `map_mansao.js` | 1.395 | | `amazonia` | Treta na Amazônia | **captura** | `map_amazonia.js` | 1.192 | | `escadao` | Escadão (Morro) | **captura** | `map_escadao.js` | 1.407 | @@ -320,11 +321,11 @@ Os mapas registrados, e em que modo cada um abre: | `upa_24h` | UPA 24h da Treta | **captura** | `map_upa.js` | 325 | | `obras_prefeitura` | Obras da Prefeitura | **captura** | `map_obras.js` | 241 | | `atacadao_treta` | Atacadão da Treta | **captura** | `map_atacadao.js` | 256 | -| `parque_treta` | Parque da Treta | **captura** | `map_parque.js` | 403 | +| `parque_treta` | Parque da Treta | **captura** | `map_parque.js` | 818 | | `velho_oeste` | Sertão da Treta | **captura** | `map_velho_oeste.js` | 1.061 | | `penitenciaria` | CARANDIRU | **captura** | `map_penitenciaria.js` | 1.009 | -**17 mapas registrados** — 2 abrem em rodadas e 15 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 23 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. +**18 mapas registrados** — 2 abrem em rodadas e 16 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 24 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `objeto MAPS de public/js/maps.js` diff --git a/STATUS.md b/STATUS.md index 614158720..5078c7a2d 100644 --- a/STATUS.md +++ b/STATUS.md @@ -3,9 +3,9 @@ - **Versão:** `2.0.0-alpha.282` -- **Conteúdo jogável:** 6 facções, 53 personagens, 17 mapas e 26 armas com GLB -- **Código do jogo:** 49.235 linhas em 96 módulos JavaScript -- **Automação:** 251 comandos npm, 409 scripts de avaliação e 80 scripts de pipeline +- **Conteúdo jogável:** 6 facções, 53 personagens, 18 mapas e 26 armas com GLB +- **Código do jogo:** 50.529 linhas em 98 módulos JavaScript +- **Automação:** 258 comandos npm, 417 scripts de avaliação e 80 scripts de pipeline > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `package.json · CHARACTERS · MAPS · public/models/weapons · public/js · tools/` diff --git a/docs/docs/arquitetura.md b/docs/docs/arquitetura.md index b373ce702..c228fa824 100644 --- a/docs/docs/arquitetura.md +++ b/docs/docs/arquitetura.md @@ -62,15 +62,15 @@ Tamanho dos arquivos que o `gen-arch.mjs` indexa — bloco gerado, regenerado po | Arquivo | Linhas | |---|---:| -| `public/js/game.js` | 7.532 | -| `public/js/main.js` | 3.600 | +| `public/js/game.js` | 7.533 | +| `public/js/main.js` | 3.601 | | `public/js/characters.js` | 1.099 | | `public/js/glbchars.js` | 851 | | `public/js/vmattach.js` | 628 | | `public/js/weapons.js` | 353 | | `public/js/springs.js` | 260 | -Total de `public/js/`: **49.235 linhas em 96 arquivos**. O índice símbolo→linha, com a tabela de conflito, é outro bloco gerado: `tools/eval/ARCH.md` (`npm run arch`). +Total de `public/js/`: **50.529 linhas em 98 arquivos**. O índice símbolo→linha, com a tabela de conflito, é outro bloco gerado: `tools/eval/ARCH.md` (`npm run arch`). > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: ``git ls-files public/js/*.js | xargs wc -l`` diff --git a/docs/docs/comecando.md b/docs/docs/comecando.md index 69f67f389..bbd2f030f 100644 --- a/docs/docs/comecando.md +++ b/docs/docs/comecando.md @@ -39,17 +39,17 @@ esta página envelhecia no primeiro commit — ver | O que | Quanto | Onde confere | |---|---:|---| -| Código do jogo | 49.235 linhas em 96 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | -| `game.js` | **7.532** linhas | `wc -l public/js/game.js` | -| `main.js` | 3.600 linhas | `wc -l public/js/main.js` | +| Código do jogo | 50.529 linhas em 98 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | +| `game.js` | **7.533** linhas | `wc -l public/js/game.js` | +| `main.js` | 3.601 linhas | `wc -l public/js/main.js` | | Armas com GLB | 26 | `git ls-files 'public/models/weapons/*.glb' \| wc -l` | | GLBs de personagem | 55 | `git ls-files 'public/models/characters/*.glb' \| wc -l` | -| Props em GLB | 173 | `git ls-files 'public/models/props/*.glb' \| wc -l` | +| Props em GLB | 183 | `git ls-files 'public/models/props/*.glb' \| wc -l` | | Clipes de animação versionados | 681 | `git ls-files public/models/anims \| wc -l` | | Personagens jogáveis | 53, em 6 facções | array `CHARACTERS` de `characters.js` | -| Mapas no registro | 17 | objeto `MAPS` de `maps.js` | +| Mapas no registro | 18 | objeto `MAPS` de `maps.js` | | Arnêses visuais em HTML | 15 | `git ls-files 'public/*.html' \| wc -l` | -| Scripts do arnês | 409 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | +| Scripts do arnês | 417 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | | Scripts de pipeline | 80 | `git ls-files 'tools/*.mjs' \| wc -l` | | Tarefas de entrada escritas | 26 | `git ls-files 'docs/issues/[0-9]*.md' \| wc -l` | | Versão | `2.0.0-alpha.282` | `public/js/version.js` e `package.json` (batem) | @@ -66,7 +66,7 @@ E as regras de partida que mais mudam de lugar, todas lidas das constantes de | Regra | Valor | Constante | |---|---|---| | Facções · personagens | 6 · 53 (B 9 · C 9 · E 8 · F 9 · M 9 · U 9) | `CHARACTERS` | -| Mapas no menu | 17 — 2 abrem em rodadas, **15 em captura** | `MAPS` / `ctfMode` | +| Mapas no menu | 18 — 2 abrem em rodadas, **16 em captura** | `MAPS` / `ctfMode` | | Respawn | 2,2 s | `RESPAWN_DELAY` | | Round | 99 s, 3 vitórias | `ROUND_TIME` / `ROUNDS_TO_WIN` | | Captura | alvo = **todas as bandeiras do mapa**, 2 rodadas (rede de segurança 480 s) | `capsToWin = ctfPts.length` / `CTF_ROUNDS_TO_WIN` | @@ -221,6 +221,7 @@ Os mapas registrados hoje, e em que modo cada um abre: | Id | Nome no menu | Abre em | Arquivo em `public/js/` | Linhas | |---|---|---|---|---:| +| `campomorro` | Campinho do Morro | **captura** | `map_campomorro.js` | 815 | | `mansao` | Mansão do Joá | **captura** | `map_mansao.js` | 1.395 | | `amazonia` | Treta na Amazônia | **captura** | `map_amazonia.js` | 1.192 | | `escadao` | Escadão (Morro) | **captura** | `map_escadao.js` | 1.407 | @@ -235,11 +236,11 @@ Os mapas registrados hoje, e em que modo cada um abre: | `upa_24h` | UPA 24h da Treta | **captura** | `map_upa.js` | 325 | | `obras_prefeitura` | Obras da Prefeitura | **captura** | `map_obras.js` | 241 | | `atacadao_treta` | Atacadão da Treta | **captura** | `map_atacadao.js` | 256 | -| `parque_treta` | Parque da Treta | **captura** | `map_parque.js` | 403 | +| `parque_treta` | Parque da Treta | **captura** | `map_parque.js` | 818 | | `velho_oeste` | Sertão da Treta | **captura** | `map_velho_oeste.js` | 1.061 | | `penitenciaria` | CARANDIRU | **captura** | `map_penitenciaria.js` | 1.009 | -**17 mapas registrados** — 2 abrem em rodadas e 15 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 23 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. +**18 mapas registrados** — 2 abrem em rodadas e 16 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 24 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `objeto MAPS de public/js/maps.js` @@ -280,10 +281,10 @@ E os dois quality gates, com a lista exata do que cada um roda — direto do `pa {/* BEGIN:GERADO:scripts — não edite à mão, rode `npm run docs` */} ```bash -npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash +npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:campo-contract eval:campomorro-molde eval:parquevida eval:parquecanopy eval:penitenciariavida eval:penitenciariafacade eval:penitenciariapickup eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash ``` -`package.json` tem **251 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. +`package.json` tem **258 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `node -p "Object.keys(require('./package.json').scripts)"` diff --git a/docs/i18n/en/docusaurus-plugin-content-docs/current/arquitetura.md b/docs/i18n/en/docusaurus-plugin-content-docs/current/arquitetura.md index 97dfebac4..cbdedece7 100644 --- a/docs/i18n/en/docusaurus-plugin-content-docs/current/arquitetura.md +++ b/docs/i18n/en/docusaurus-plugin-content-docs/current/arquitetura.md @@ -69,15 +69,15 @@ Size of the files `gen-arch.mjs` indexes — a generated block, regenerated by | File | Lines | |---|---:| -| `public/js/game.js` | 7,532 | -| `public/js/main.js` | 3,600 | +| `public/js/game.js` | 7,533 | +| `public/js/main.js` | 3,601 | | `public/js/characters.js` | 1,099 | | `public/js/glbchars.js` | 851 | | `public/js/vmattach.js` | 628 | | `public/js/weapons.js` | 353 | | `public/js/springs.js` | 260 | -Total in `public/js/`: **49,235 lines in 96 files**. The symbol-to-line index lives in `tools/eval/ARCH.md`. +Total in `public/js/`: **50,529 lines in 98 files**. The symbol-to-line index lives in `tools/eval/ARCH.md`. > Block generated by `node tools/gen-docs.mjs`. Source: ``wc -l public/js/*.js`` diff --git a/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md b/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md index 79ccf1d3c..a217fa55b 100644 --- a/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md +++ b/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md @@ -41,17 +41,17 @@ this page was aging at the very first commit — see | What | How much | Where to check | |---|---:|---| -| Game code | 49,235 lines in 96 files | `git ls-files public/js/*.js \| xargs wc -l` | -| `game.js` | **7,532** lines | `wc -l public/js/game.js` | -| `main.js` | 3,600 lines | `wc -l public/js/main.js` | +| Game code | 50,529 lines in 98 files | `git ls-files public/js/*.js \| xargs wc -l` | +| `game.js` | **7,533** lines | `wc -l public/js/game.js` | +| `main.js` | 3,601 lines | `wc -l public/js/main.js` | | Weapons with GLB | 26 | `git ls-files 'public/models/weapons/*.glb' \| wc -l` | | Character GLBs | 55 | `git ls-files 'public/models/characters/*.glb' \| wc -l` | -| Props in GLB | 173 | `git ls-files 'public/models/props/*.glb' \| wc -l` | +| Props in GLB | 183 | `git ls-files 'public/models/props/*.glb' \| wc -l` | | Versioned animation clips | 681 | `git ls-files public/models/anims \| wc -l` | | Playable characters | 53, in 6 factions | `CHARACTERS` array in `characters.js` | -| Maps in the registry | 17 | `MAPS` object in `maps.js` | +| Maps in the registry | 18 | `MAPS` object in `maps.js` | | Visual harnesses in HTML | 15 | `git ls-files 'public/*.html' \| wc -l` | -| Harness scripts | 409 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | +| Harness scripts | 417 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | | Pipeline scripts | 80 | `git ls-files 'tools/*.mjs' \| wc -l` | | Written entry tasks | 26 | `git ls-files 'docs/issues/[0-9]*.md' \| wc -l` | | Version | `2.0.0-alpha.282` | `public/js/version.js` and `package.json` (match) | @@ -68,7 +68,7 @@ And the match rules that move around the most, all read from the constants in | Rule | Value | Constant | |---|---|---| | Factions · characters | 6 · 53 (B 9 · C 9 · E 8 · F 9 · M 9 · U 9) | `CHARACTERS` | -| Maps in the menu | 17 - 2 open in rounds, **15 in capture** | `MAPS` / `ctfMode` | +| Maps in the menu | 18 - 2 open in rounds, **16 in capture** | `MAPS` / `ctfMode` | | Respawn | 2.2 s | `RESPAWN_DELAY` | | Round | 99 s, 3 wins | `ROUND_TIME` / `ROUNDS_TO_WIN` | | Capture | target = **all flags on the map**, 2 rounds (480 s safety net) | `capsToWin = ctfPts.length` / `CTF_ROUNDS_TO_WIN` | @@ -223,6 +223,7 @@ The maps registered today, and which mode each one opens in: | Id | Menu name | Opens in | File in `public/js/` | Lines | |---|---|---|---|---:| +| `campomorro` | Campinho do Morro | **capture** | `map_campomorro.js` | 815 | | `mansao` | Mansão do Joá | **capture** | `map_mansao.js` | 1,395 | | `amazonia` | Treta na Amazônia | **capture** | `map_amazonia.js` | 1,192 | | `escadao` | Escadão (Morro) | **capture** | `map_escadao.js` | 1,407 | @@ -237,11 +238,11 @@ The maps registered today, and which mode each one opens in: | `upa_24h` | UPA 24h da Treta | **capture** | `map_upa.js` | 325 | | `obras_prefeitura` | Obras da Prefeitura | **capture** | `map_obras.js` | 241 | | `atacadao_treta` | Atacadão da Treta | **capture** | `map_atacadao.js` | 256 | -| `parque_treta` | Parque da Treta | **capture** | `map_parque.js` | 403 | +| `parque_treta` | Parque da Treta | **capture** | `map_parque.js` | 818 | | `velho_oeste` | Sertão da Treta | **capture** | `map_velho_oeste.js` | 1,061 | | `penitenciaria` | CARANDIRU | **capture** | `map_penitenciaria.js` | 1,009 | -**17 registered maps** - 2 open in rounds and 15 in capture. `ctfMode` sets the initial mode; it does not lock it. There are 23 `map_*.js` files on disk, so a file alone does **not** make a map playable. +**18 registered maps** - 2 open in rounds and 16 in capture. `ctfMode` sets the initial mode; it does not lock it. There are 24 `map_*.js` files on disk, so a file alone does **not** make a map playable. > Block generated by `node tools/gen-docs.mjs`. Source: `objeto MAPS de public/js/maps.js` @@ -282,10 +283,10 @@ And the two gates, with the exact list of what each one runs — straight from ` {/* BEGIN:GERADO:scripts — não edite à mão, rode `npm run docs` */} ```bash -npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash +npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:campo-contract eval:campomorro-molde eval:parquevida eval:parquecanopy eval:penitenciariavida eval:penitenciariafacade eval:penitenciariapickup eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash ``` -`package.json` has **251 scripts**; the reason behind each one lives in `SCRIPTS.md`. +`package.json` has **258 scripts**; the reason behind each one lives in `SCRIPTS.md`. > Block generated by `node tools/gen-docs.mjs`. Source: `node -p "Object.keys(require('./package.json').scripts)"` diff --git a/tools/eval/ARCH.md b/tools/eval/ARCH.md index 00d1c0f96..444d164d3 100644 --- a/tools/eval/ARCH.md +++ b/tools/eval/ARCH.md @@ -9,8 +9,8 @@ | Arquivo | Linhas | Símbolos | |---|---:|---:| -| `public/js/game.js` | 7533 | 278 | -| `public/js/main.js` | 3601 | 294 | +| `public/js/game.js` | 7534 | 278 | +| `public/js/main.js` | 3602 | 294 | | `public/js/glbchars.js` | 852 | 60 | | `public/js/characters.js` | 1100 | 40 | | `public/js/vmattach.js` | 629 | 4 | @@ -23,21 +23,21 @@ Os 15 maiores somam **3179 linhas (42% do arquivo)**. Método grande = PR irrevi | Linhas | Início | Método | | |---:|---:|---|---| -| 822 | 6143 | `_updateBot()` | ⚠️ candidato a extração | +| 822 | 6144 | `_updateBot()` | ⚠️ candidato a extração | | 585 | 622 | `constructor()` | 🔴 append-only | -| 256 | 5317 | `_updatePlayer()` | | +| 256 | 5318 | `_updatePlayer()` | | | 248 | 2284 | `_resetPositions()` | | | 241 | 1305 | `_buildViewModels()` | | -| 158 | 5586 | `_updatePickups()` | | -| 137 | 4713 | `_botCtf()` | | +| 158 | 5587 | `_updatePickups()` | | +| 137 | 4714 | `_botCtf()` | | | 131 | 1993 | `_touchControls()` | | -| 98 | 5219 | `_moveEntity()` | | -| 90 | 7399 | `update()` | 🔴 append-only | -| 87 | 7312 | `_updateHud()` | | +| 98 | 5220 | `_moveEntity()` | | +| 90 | 7400 | `update()` | 🔴 append-only | +| 87 | 7313 | `_updateHud()` | | | 86 | 4428 | `_initCTF()` | | | 85 | 3100 | `_tryShoot()` | | | 79 | 3558 | `_dmgArc()` | | -| 76 | 4856 | `_updateCtfHud()` | | +| 76 | 4857 | `_updateCtfHud()` | | ## Tabela de CONFLITO — resolvida para as linhas de hoje @@ -48,19 +48,19 @@ faixas disjuntas simultaneamente com zero conflito de conteúdo. | Frente | Faixas em `game.js` | Arquivos exclusivos | |---|---|---| | **ARMAS / VIEWMODEL** | `300–305` `362–456` `483–504` `1305–1704` `2861–2867` `2949–3035` `3054–3200` `3245–3298` `3786–3809` `3857–3940` `4012–4028` | `public/js/vmattach.js` `public/js/springs.js` `public/js/weapons.js` `public/js/fparms.js` `public/js/handik.js` `public/js/recoil.js` `public/js/vmlab.js` | -| **BOTS / JOGABILIDADE** | `154–157` `208–208` `234–245` `546–557` `3438–3557` `4367–4427` `4595–4849` `4932–4954` `5317–5572` `5964–5981` `6091–6121` `6143–6964` | — | -| **MAPAS / MUNDO** | `1251–1304` `2284–2531` `4428–4571` `5586–5743` | `public/js/maps.js` `public/js/mapprops.js` `public/js/map_brasilia.js` `public/js/map_havan.js` `public/js/map_piscina.js` `public/js/map_piscinao_ramos.js` `public/js/map_ferrovelho.js` | +| **BOTS / JOGABILIDADE** | `154–157` `208–208` `234–245` `546–557` `3438–3557` `4367–4427` `4596–4850` `4933–4955` `5318–5573` `5965–5982` `6092–6122` `6144–6965` | — | +| **MAPAS / MUNDO** | `1251–1304` `2284–2531` `4428–4571` `5587–5744` | `public/js/maps.js` `public/js/mapprops.js` `public/js/map_brasilia.js` `public/js/map_havan.js` `public/js/map_piscina.js` `public/js/map_piscinao_ramos.js` `public/js/map_ferrovelho.js` | | **GRÁFICOS / FX** | `1719–1728` `1843–1874` `2783–2795` `3810–3848` `3956–4011` | `public/js/bloom.js` `public/js/textures.js` `public/js/vao.js` `public/js/stylize.js` `public/js/gpuparticles.js` | -| **UI / HUD / MENU** | `1207–1250` `2736–2758` `2774–2782` `2796–2802` `3558–3636` `3653–3706` `3722–3785` `7135–7198` `7229–7276` `7312–7398` | `public/js/main.js` `public/style.css` `src/pages/index.astro` | +| **UI / HUD / MENU** | `1207–1250` `2736–2758` `2774–2782` `2796–2802` `3558–3636` `3653–3706` `3722–3785` `7136–7199` `7230–7277` `7313–7399` | `public/js/main.js` `public/style.css` `src/pages/index.astro` | | **ÁUDIO** | — | `public/js/audio.js` | | **PERSONAGENS** | — | `public/js/characters.js` `public/js/glbchars.js` | | **SITE / BACKEND** | — | `src/` `supabase/` | -**🔴 Zonas vermelhas (append-only, qualquer frente pode precisar):** `update()` 7399–7488 · `_dom()` 1207–1250 · `constructor()` 622–1206 +**🔴 Zonas vermelhas (append-only, qualquer frente pode precisar):** `update()` 7400–7489 · `_dom()` 1207–1250 · `constructor()` 622–1206 Nenhuma sobreposição entre frentes — todas as faixas são disjuntas. ✓ -Cobertura: **3768 de 7533 linhas (50%)** do `game.js` têm dono declarado. O resto é território neutro — declare a frente mesmo assim. +Cobertura: **3768 de 7534 linhas (50%)** do `game.js` têm dono declarado. O resto é território neutro — declare a frente mesmo assim.
Índice completo de game.js (todos os símbolos) @@ -243,69 +243,69 @@ Cobertura: **3768 de 7533 linhas (50%)** do `game.js` têm dono declarado. O res | 4367 | `_botSeparation()` | 61 | | 4428 | `_initCTF()` | 86 | | 4514 | `_updateCTF()` | 58 | -| 4572 | `_ctfWin()` | 23 | -| 4595 | `_freeYaw()` | 25 | -| 4620 | `_pullString()` | 23 | -| 4643 | `_walkReach()` | 32 | -| 4675 | `_wpComp()` | 16 | -| 4691 | `_findPathLocal()` | 22 | -| 4713 | `_botCtf()` | 137 | -| 4850 | `_hideCtfHud()` | 6 | -| 4856 | `_updateCtfHud()` | 76 | -| 4932 | `_collide()` | 23 | -| 4955 | `_collideRot()` | 26 | -| 4981 | `_freeSpot()` | 30 | -| 5011 | `_retaAndavel()` | 20 | -| 5031 | `_walkDepth()` | 16 | -| 5047 | `_noteHit()` | 17 | -| 5064 | `_deathFeedback()` | 45 | -| 5109 | `_toggleCamView()` | 11 | -| 5120 | `_syncCamViewVis()` | 8 | -| 5128 | `_ensurePlayerTP()` | 25 | -| 5153 | `_updatePlayerTP()` | 35 | -| 5188 | `_tpDeath()` | 18 | -| 5206 | `_tpRevive()` | 13 | -| 5219 | `_moveEntity()` | 98 | -| 5317 | `_updatePlayer()` | 256 | -| 5573 | `_footstepSurface()` | 13 | -| 5586 | `_updatePickups()` | 158 | -| 5744 | `_wpnMode()` | 5 | -| 5749 | `_botWeapon()` | 10 | -| 5759 | `_municaoInfinita()` | 1 | -| 5760 | `_pickupAllowed()` | 9 | -| 5769 | `_grabNearPickup()` | 10 | -| 5779 | `_grabPickup()` | 35 | -| 5814 | `_assentarNoChao()` | 10 | -| 5824 | `refreshPickupModels()` | 24 | -| 5848 | `_dropWeapon()` | 20 | -| 5868 | `_sumirDrop()` | 36 | -| 5904 | `_spawnY()` | 3 | -| 5907 | `_spawnYaw()` | 5 | -| 5912 | `_pickSpawn()` | 23 | -| 5935 | `_respawnPlayer()` | 29 | -| 5964 | `_losClear()` | 18 | -| 5982 | `_botCall()` | 41 | -| 6023 | `_teamMarkTex()` | 23 | -| 6046 | `_makeTeamMark()` | 16 | -| 6062 | `_syncRemoteWeapon()` | 22 | -| 6084 | `_updateTeamMark()` | 7 | -| 6091 | `_botEye()` | 1 | -| 6092 | `_enemyOf()` | 8 | -| 6100 | `_duelToken()` | 22 | -| 6122 | `_respawnEntity()` | 21 | -| 6143 | `_updateBot()` | 822 | -| 6965 | `_flushTraining()` | 13 | -| 6978 | `_updateBotNN()` | 73 | -| 7051 | `_botShootNN()` | 46 | -| 7097 | `_radarFoot()` | 38 | -| 7135 | `_updateRadar()` | 64 | -| 7199 | `_banner()` | 26 | -| 7225 | `_resultadoDaRodada()` | 4 | -| 7229 | `_showScoreboard()` | 48 | -| 7277 | `_updateWeaponHud()` | 35 | -| 7312 | `_updateHud()` | 87 | -| 7399 | `update()` | 90 | -| 7489 | `dispose()` | 44 | +| 4572 | `_ctfWin()` | 24 | +| 4596 | `_freeYaw()` | 25 | +| 4621 | `_pullString()` | 23 | +| 4644 | `_walkReach()` | 32 | +| 4676 | `_wpComp()` | 16 | +| 4692 | `_findPathLocal()` | 22 | +| 4714 | `_botCtf()` | 137 | +| 4851 | `_hideCtfHud()` | 6 | +| 4857 | `_updateCtfHud()` | 76 | +| 4933 | `_collide()` | 23 | +| 4956 | `_collideRot()` | 26 | +| 4982 | `_freeSpot()` | 30 | +| 5012 | `_retaAndavel()` | 20 | +| 5032 | `_walkDepth()` | 16 | +| 5048 | `_noteHit()` | 17 | +| 5065 | `_deathFeedback()` | 45 | +| 5110 | `_toggleCamView()` | 11 | +| 5121 | `_syncCamViewVis()` | 8 | +| 5129 | `_ensurePlayerTP()` | 25 | +| 5154 | `_updatePlayerTP()` | 35 | +| 5189 | `_tpDeath()` | 18 | +| 5207 | `_tpRevive()` | 13 | +| 5220 | `_moveEntity()` | 98 | +| 5318 | `_updatePlayer()` | 256 | +| 5574 | `_footstepSurface()` | 13 | +| 5587 | `_updatePickups()` | 158 | +| 5745 | `_wpnMode()` | 5 | +| 5750 | `_botWeapon()` | 10 | +| 5760 | `_municaoInfinita()` | 1 | +| 5761 | `_pickupAllowed()` | 9 | +| 5770 | `_grabNearPickup()` | 10 | +| 5780 | `_grabPickup()` | 35 | +| 5815 | `_assentarNoChao()` | 10 | +| 5825 | `refreshPickupModels()` | 24 | +| 5849 | `_dropWeapon()` | 20 | +| 5869 | `_sumirDrop()` | 36 | +| 5905 | `_spawnY()` | 3 | +| 5908 | `_spawnYaw()` | 5 | +| 5913 | `_pickSpawn()` | 23 | +| 5936 | `_respawnPlayer()` | 29 | +| 5965 | `_losClear()` | 18 | +| 5983 | `_botCall()` | 41 | +| 6024 | `_teamMarkTex()` | 23 | +| 6047 | `_makeTeamMark()` | 16 | +| 6063 | `_syncRemoteWeapon()` | 22 | +| 6085 | `_updateTeamMark()` | 7 | +| 6092 | `_botEye()` | 1 | +| 6093 | `_enemyOf()` | 8 | +| 6101 | `_duelToken()` | 22 | +| 6123 | `_respawnEntity()` | 21 | +| 6144 | `_updateBot()` | 822 | +| 6966 | `_flushTraining()` | 13 | +| 6979 | `_updateBotNN()` | 73 | +| 7052 | `_botShootNN()` | 46 | +| 7098 | `_radarFoot()` | 38 | +| 7136 | `_updateRadar()` | 64 | +| 7200 | `_banner()` | 26 | +| 7226 | `_resultadoDaRodada()` | 4 | +| 7230 | `_showScoreboard()` | 48 | +| 7278 | `_updateWeaponHud()` | 35 | +| 7313 | `_updateHud()` | 87 | +| 7400 | `update()` | 90 | +| 7490 | `dispose()` | 44 |
From 1d1c97828f60a192cc16299f2df7c165b4d94d7c Mon Sep 17 00:00:00 2001 From: csbrasil-bot Date: Fri, 25 Sep 2026 02:11:44 +0000 Subject: [PATCH 6/9] chore(docs): regenera bloco derivado (autofix) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rodado pelo autofix: só arquivo gerado, conferido pela lista de permissão. Agent: csbrasil-bot (autofix) Signed-off-by: csbrasil-bot --- ARCH.generated.md | 8 +++---- README.md | 21 ++++++++++--------- STATUS.md | 6 +++--- docs/docs/arquitetura.md | 6 +++--- docs/docs/comecando.md | 21 ++++++++++--------- docs/docs/quality-gates.md | 2 +- .../current/arquitetura.md | 6 +++--- .../current/comecando.md | 21 ++++++++++--------- .../current/quality-gates.md | 2 +- 9 files changed, 48 insertions(+), 45 deletions(-) diff --git a/ARCH.generated.md b/ARCH.generated.md index 775c2f3fd..a27971919 100644 --- a/ARCH.generated.md +++ b/ARCH.generated.md @@ -8,9 +8,9 @@ Números atuais das zonas, do quality gate e do `package.json`: | Zona | O que é | Tamanho medido | Regra | |---|---|---|---| -| `public/` | o **jogo** | 97 arquivos `.js`, 50.569 linhas · Three.js `r160` vendorizado | ES modules servidos crus, **zero build**, sem dependência de runtime | +| `public/` | o **jogo** | 99 arquivos `.js`, 51.438 linhas · Three.js `r160` vendorizado | ES modules servidos crus, **zero build**, sem dependência de runtime | | `src/` | o **site** | 20 páginas `.astro`, 4 rotas `/api` · Astro `^7.1.1` | framework é bem-vindo; `service_role` só no servidor | -| `tools/` | o **arnês** | 422 scripts em `tools/eval/`, 80 em `tools/` | node puro: sobe o jogo real sem browser | +| `tools/` | o **arnês** | 428 scripts em `tools/eval/`, 80 em `tools/` | node puro: sobe o jogo real sem browser | **Não existe `public/index.html`.** O HTML do jogo é `src/pages/index.astro`, servido na rota `/`. Servir `public/` estaticamente entrega os arnêses visuais, **não o jogo** — é a pegadinha que custa a primeira hora de todo mundo. @@ -25,10 +25,10 @@ Comandos e scripts atuais do quality gate: ```bash -npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash eval:campinho-integration eval:parque eval:audiofurollback +npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash eval:campinho-integration eval:parque eval:audiofurollback eval:campo-contract eval:campomorro-molde eval:parquevida eval:parquecanopy eval:penitenciariavida eval:penitenciariafacade eval:penitenciariapickup ``` -`package.json` tem **258 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. +`package.json` tem **265 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `node -p "Object.keys(require('./package.json').scripts)"` diff --git a/README.md b/README.md index 5f859354e..e9920b1c4 100644 --- a/README.md +++ b/README.md @@ -34,17 +34,17 @@ contra bots, direto na aba. Sem download, sem instalação, sem cadastro. | O que | Quanto | Onde confere | |---|---:|---| -| Código do jogo | 50.569 linhas em 97 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | -| `game.js` | **7.532** linhas | `wc -l public/js/game.js` | -| `main.js` | 3.600 linhas | `wc -l public/js/main.js` | +| Código do jogo | 51.438 linhas em 99 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | +| `game.js` | **7.533** linhas | `wc -l public/js/game.js` | +| `main.js` | 3.601 linhas | `wc -l public/js/main.js` | | Armas com GLB | 26 | `git ls-files 'public/models/weapons/*.glb' \| wc -l` | | GLBs de personagem | 55 | `git ls-files 'public/models/characters/*.glb' \| wc -l` | -| Props em GLB | 179 | `git ls-files 'public/models/props/*.glb' \| wc -l` | +| Props em GLB | 183 | `git ls-files 'public/models/props/*.glb' \| wc -l` | | Clipes de animação versionados | 681 | `git ls-files public/models/anims \| wc -l` | | Personagens jogáveis | 53, em 6 facções | array `CHARACTERS` de `characters.js` | -| Mapas no registro | 17 | objeto `MAPS` de `maps.js` | +| Mapas no registro | 18 | objeto `MAPS` de `maps.js` | | Arnêses visuais em HTML | 15 | `git ls-files 'public/*.html' \| wc -l` | -| Scripts do arnês | 422 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | +| Scripts do arnês | 428 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | | Scripts de pipeline | 80 | `git ls-files 'tools/*.mjs' \| wc -l` | | Tarefas de entrada escritas | 26 | `git ls-files 'docs/issues/[0-9]*.md' \| wc -l` | | Versão | `2.0.0-alpha.288` | `public/js/version.js` e `package.json` (batem) | @@ -89,7 +89,7 @@ arquitetura): `cd docs && npm install && npm start` → Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `dependencies/devDependencies do package.json · REVISION de public/vendor/three.module.js` @@ -279,7 +279,7 @@ projeto. | Regra | Valor | Constante | |---|---|---| | Facções · personagens | 6 · 53 (B 9 · C 9 · E 8 · F 9 · M 9 · U 9) | `CHARACTERS` | -| Mapas no menu | 17 — 2 abrem em rodadas, **15 em captura** | `MAPS` / `ctfMode` | +| Mapas no menu | 18 — 2 abrem em rodadas, **16 em captura** | `MAPS` / `ctfMode` | | Respawn | 2,2 s | `RESPAWN_DELAY` | | Round | 99 s, 3 vitórias | `ROUND_TIME` / `ROUNDS_TO_WIN` | | Captura | alvo = **todas as bandeiras do mapa**, 2 rodadas (rede de segurança 480 s) | `capsToWin = ctfPts.length` / `CTF_ROUNDS_TO_WIN` | @@ -306,6 +306,7 @@ Os mapas registrados, e em que modo cada um abre: | Id | Nome no menu | Abre em | Arquivo em `public/js/` | Linhas | |---|---|---|---|---:| +| `campomorro` | Campinho do Morro | **captura** | `map_campomorro.js` | 815 | | `mansao` | Mansão do Joá | **captura** | `map_mansao.js` | 1.395 | | `amazonia` | Treta na Amazônia | **captura** | `map_amazonia.js` | 1.192 | | `escadao` | Escadão (Morro) | **captura** | `map_escadao.js` | 1.407 | @@ -324,7 +325,7 @@ Os mapas registrados, e em que modo cada um abre: | `velho_oeste` | Sertão da Treta | **captura** | `map_velho_oeste.js` | 1.061 | | `penitenciaria` | CARANDIRU | **captura** | `map_penitenciaria.js` | 1.009 | -**17 mapas registrados** — 2 abrem em rodadas e 15 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 23 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. +**18 mapas registrados** — 2 abrem em rodadas e 16 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 24 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `objeto MAPS de public/js/maps.js` diff --git a/STATUS.md b/STATUS.md index 272322062..2db459515 100644 --- a/STATUS.md +++ b/STATUS.md @@ -3,9 +3,9 @@ - **Versão:** `2.0.0-alpha.288` -- **Conteúdo jogável:** 6 facções, 53 personagens, 17 mapas e 26 armas com GLB -- **Código do jogo:** 50.569 linhas em 97 módulos JavaScript -- **Automação:** 258 comandos npm, 422 scripts de avaliação e 80 scripts de pipeline +- **Conteúdo jogável:** 6 facções, 53 personagens, 18 mapas e 26 armas com GLB +- **Código do jogo:** 51.438 linhas em 99 módulos JavaScript +- **Automação:** 265 comandos npm, 428 scripts de avaliação e 80 scripts de pipeline > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `package.json · CHARACTERS · MAPS · public/models/weapons · public/js · tools/` diff --git a/docs/docs/arquitetura.md b/docs/docs/arquitetura.md index 742f5f0b1..10bceb202 100644 --- a/docs/docs/arquitetura.md +++ b/docs/docs/arquitetura.md @@ -62,15 +62,15 @@ Tamanho dos arquivos que o `gen-arch.mjs` indexa — bloco gerado, regenerado po | Arquivo | Linhas | |---|---:| -| `public/js/game.js` | 7.532 | -| `public/js/main.js` | 3.600 | +| `public/js/game.js` | 7.533 | +| `public/js/main.js` | 3.601 | | `public/js/characters.js` | 1.099 | | `public/js/glbchars.js` | 851 | | `public/js/vmattach.js` | 628 | | `public/js/weapons.js` | 353 | | `public/js/springs.js` | 260 | -Total de `public/js/`: **50.569 linhas em 97 arquivos**. O índice símbolo→linha, com a tabela de conflito, é outro bloco gerado: `tools/eval/ARCH.md` (`npm run arch`). +Total de `public/js/`: **51.438 linhas em 99 arquivos**. O índice símbolo→linha, com a tabela de conflito, é outro bloco gerado: `tools/eval/ARCH.md` (`npm run arch`). > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: ``git ls-files public/js/*.js | xargs wc -l`` diff --git a/docs/docs/comecando.md b/docs/docs/comecando.md index 4775c8783..f1cec212a 100644 --- a/docs/docs/comecando.md +++ b/docs/docs/comecando.md @@ -39,17 +39,17 @@ esta página envelhecia no primeiro commit — ver | O que | Quanto | Onde confere | |---|---:|---| -| Código do jogo | 50.569 linhas em 97 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | -| `game.js` | **7.532** linhas | `wc -l public/js/game.js` | -| `main.js` | 3.600 linhas | `wc -l public/js/main.js` | +| Código do jogo | 51.438 linhas em 99 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | +| `game.js` | **7.533** linhas | `wc -l public/js/game.js` | +| `main.js` | 3.601 linhas | `wc -l public/js/main.js` | | Armas com GLB | 26 | `git ls-files 'public/models/weapons/*.glb' \| wc -l` | | GLBs de personagem | 55 | `git ls-files 'public/models/characters/*.glb' \| wc -l` | -| Props em GLB | 179 | `git ls-files 'public/models/props/*.glb' \| wc -l` | +| Props em GLB | 183 | `git ls-files 'public/models/props/*.glb' \| wc -l` | | Clipes de animação versionados | 681 | `git ls-files public/models/anims \| wc -l` | | Personagens jogáveis | 53, em 6 facções | array `CHARACTERS` de `characters.js` | -| Mapas no registro | 17 | objeto `MAPS` de `maps.js` | +| Mapas no registro | 18 | objeto `MAPS` de `maps.js` | | Arnêses visuais em HTML | 15 | `git ls-files 'public/*.html' \| wc -l` | -| Scripts do arnês | 422 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | +| Scripts do arnês | 428 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | | Scripts de pipeline | 80 | `git ls-files 'tools/*.mjs' \| wc -l` | | Tarefas de entrada escritas | 26 | `git ls-files 'docs/issues/[0-9]*.md' \| wc -l` | | Versão | `2.0.0-alpha.288` | `public/js/version.js` e `package.json` (batem) | @@ -66,7 +66,7 @@ E as regras de partida que mais mudam de lugar, todas lidas das constantes de | Regra | Valor | Constante | |---|---|---| | Facções · personagens | 6 · 53 (B 9 · C 9 · E 8 · F 9 · M 9 · U 9) | `CHARACTERS` | -| Mapas no menu | 17 — 2 abrem em rodadas, **15 em captura** | `MAPS` / `ctfMode` | +| Mapas no menu | 18 — 2 abrem em rodadas, **16 em captura** | `MAPS` / `ctfMode` | | Respawn | 2,2 s | `RESPAWN_DELAY` | | Round | 99 s, 3 vitórias | `ROUND_TIME` / `ROUNDS_TO_WIN` | | Captura | alvo = **todas as bandeiras do mapa**, 2 rodadas (rede de segurança 480 s) | `capsToWin = ctfPts.length` / `CTF_ROUNDS_TO_WIN` | @@ -221,6 +221,7 @@ Os mapas registrados hoje, e em que modo cada um abre: | Id | Nome no menu | Abre em | Arquivo em `public/js/` | Linhas | |---|---|---|---|---:| +| `campomorro` | Campinho do Morro | **captura** | `map_campomorro.js` | 815 | | `mansao` | Mansão do Joá | **captura** | `map_mansao.js` | 1.395 | | `amazonia` | Treta na Amazônia | **captura** | `map_amazonia.js` | 1.192 | | `escadao` | Escadão (Morro) | **captura** | `map_escadao.js` | 1.407 | @@ -239,7 +240,7 @@ Os mapas registrados hoje, e em que modo cada um abre: | `velho_oeste` | Sertão da Treta | **captura** | `map_velho_oeste.js` | 1.061 | | `penitenciaria` | CARANDIRU | **captura** | `map_penitenciaria.js` | 1.009 | -**17 mapas registrados** — 2 abrem em rodadas e 15 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 23 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. +**18 mapas registrados** — 2 abrem em rodadas e 16 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 24 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `objeto MAPS de public/js/maps.js` @@ -280,10 +281,10 @@ E os dois quality gates, com a lista exata do que cada um roda — direto do `pa {/* BEGIN:GERADO:scripts — não edite à mão, rode `npm run docs` */} ```bash -npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash eval:campinho-integration eval:parque eval:audiofurollback +npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash eval:campinho-integration eval:parque eval:audiofurollback eval:campo-contract eval:campomorro-molde eval:parquevida eval:parquecanopy eval:penitenciariavida eval:penitenciariafacade eval:penitenciariapickup ``` -`package.json` tem **258 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. +`package.json` tem **265 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `node -p "Object.keys(require('./package.json').scripts)"` diff --git a/docs/docs/quality-gates.md b/docs/docs/quality-gates.md index e021297f3..3f1075ea3 100644 --- a/docs/docs/quality-gates.md +++ b/docs/docs/quality-gates.md @@ -15,7 +15,7 @@ PR (`.github/workflows/ci.yml`). {/* BEGIN:GERADO:invariantes — não edite à mão, rode `npm run docs` */} - `tools/eval/invariants.mjs`: **2.322 linhas**, **68 identificadores de invariante declarados** (`put()`), dos quais **29** têm caminho de `skip()` declarado. -- O arnês inteiro são **422 scripts** em `tools/eval/` (`.mjs` + `.py`), mais **80 scripts** de pipeline em `tools/`. +- O arnês inteiro são **428 scripts** em `tools/eval/` (`.mjs` + `.py`), mais **80 scripts** de pipeline em `tools/`. - Quantas invariantes rodam como **críticas** numa execução **não é derivável do fonte**: depende de qual insumo existe na máquina (o JSON do auditor de viewmodel, um GLB, uma pasta de anims). Esse número só sai rodando o quality gate — e o lugar dele é o cabeçalho do `KNOWN-BUGS.md`, atualizado com saída real. Reproduza: diff --git a/docs/i18n/en/docusaurus-plugin-content-docs/current/arquitetura.md b/docs/i18n/en/docusaurus-plugin-content-docs/current/arquitetura.md index e712ac2b2..c09e9e7a2 100644 --- a/docs/i18n/en/docusaurus-plugin-content-docs/current/arquitetura.md +++ b/docs/i18n/en/docusaurus-plugin-content-docs/current/arquitetura.md @@ -69,15 +69,15 @@ Size of the files `gen-arch.mjs` indexes — a generated block, regenerated by | File | Lines | |---|---:| -| `public/js/game.js` | 7,532 | -| `public/js/main.js` | 3,600 | +| `public/js/game.js` | 7,533 | +| `public/js/main.js` | 3,601 | | `public/js/characters.js` | 1,099 | | `public/js/glbchars.js` | 851 | | `public/js/vmattach.js` | 628 | | `public/js/weapons.js` | 353 | | `public/js/springs.js` | 260 | -Total in `public/js/`: **50,569 lines in 97 files**. The symbol-to-line index lives in `tools/eval/ARCH.md`. +Total in `public/js/`: **51,438 lines in 99 files**. The symbol-to-line index lives in `tools/eval/ARCH.md`. > Block generated by `node tools/gen-docs.mjs`. Source: ``wc -l public/js/*.js`` diff --git a/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md b/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md index dad09e165..810c06023 100644 --- a/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md +++ b/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md @@ -41,17 +41,17 @@ this page was aging at the very first commit — see | What | How much | Where to check | |---|---:|---| -| Game code | 50,569 lines in 97 files | `git ls-files public/js/*.js \| xargs wc -l` | -| `game.js` | **7,532** lines | `wc -l public/js/game.js` | -| `main.js` | 3,600 lines | `wc -l public/js/main.js` | +| Game code | 51,438 lines in 99 files | `git ls-files public/js/*.js \| xargs wc -l` | +| `game.js` | **7,533** lines | `wc -l public/js/game.js` | +| `main.js` | 3,601 lines | `wc -l public/js/main.js` | | Weapons with GLB | 26 | `git ls-files 'public/models/weapons/*.glb' \| wc -l` | | Character GLBs | 55 | `git ls-files 'public/models/characters/*.glb' \| wc -l` | -| Props in GLB | 179 | `git ls-files 'public/models/props/*.glb' \| wc -l` | +| Props in GLB | 183 | `git ls-files 'public/models/props/*.glb' \| wc -l` | | Versioned animation clips | 681 | `git ls-files public/models/anims \| wc -l` | | Playable characters | 53, in 6 factions | `CHARACTERS` array in `characters.js` | -| Maps in the registry | 17 | `MAPS` object in `maps.js` | +| Maps in the registry | 18 | `MAPS` object in `maps.js` | | Visual harnesses in HTML | 15 | `git ls-files 'public/*.html' \| wc -l` | -| Harness scripts | 422 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | +| Harness scripts | 428 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | | Pipeline scripts | 80 | `git ls-files 'tools/*.mjs' \| wc -l` | | Written entry tasks | 26 | `git ls-files 'docs/issues/[0-9]*.md' \| wc -l` | | Version | `2.0.0-alpha.288` | `public/js/version.js` and `package.json` (match) | @@ -68,7 +68,7 @@ And the match rules that move around the most, all read from the constants in | Rule | Value | Constant | |---|---|---| | Factions · characters | 6 · 53 (B 9 · C 9 · E 8 · F 9 · M 9 · U 9) | `CHARACTERS` | -| Maps in the menu | 17 - 2 open in rounds, **15 in capture** | `MAPS` / `ctfMode` | +| Maps in the menu | 18 - 2 open in rounds, **16 in capture** | `MAPS` / `ctfMode` | | Respawn | 2.2 s | `RESPAWN_DELAY` | | Round | 99 s, 3 wins | `ROUND_TIME` / `ROUNDS_TO_WIN` | | Capture | target = **all flags on the map**, 2 rounds (480 s safety net) | `capsToWin = ctfPts.length` / `CTF_ROUNDS_TO_WIN` | @@ -223,6 +223,7 @@ The maps registered today, and which mode each one opens in: | Id | Menu name | Opens in | File in `public/js/` | Lines | |---|---|---|---|---:| +| `campomorro` | Campinho do Morro | **capture** | `map_campomorro.js` | 815 | | `mansao` | Mansão do Joá | **capture** | `map_mansao.js` | 1,395 | | `amazonia` | Treta na Amazônia | **capture** | `map_amazonia.js` | 1,192 | | `escadao` | Escadão (Morro) | **capture** | `map_escadao.js` | 1,407 | @@ -241,7 +242,7 @@ The maps registered today, and which mode each one opens in: | `velho_oeste` | Sertão da Treta | **capture** | `map_velho_oeste.js` | 1,061 | | `penitenciaria` | CARANDIRU | **capture** | `map_penitenciaria.js` | 1,009 | -**17 registered maps** - 2 open in rounds and 15 in capture. `ctfMode` sets the initial mode; it does not lock it. There are 23 `map_*.js` files on disk, so a file alone does **not** make a map playable. +**18 registered maps** - 2 open in rounds and 16 in capture. `ctfMode` sets the initial mode; it does not lock it. There are 24 `map_*.js` files on disk, so a file alone does **not** make a map playable. > Block generated by `node tools/gen-docs.mjs`. Source: `objeto MAPS de public/js/maps.js` @@ -282,10 +283,10 @@ And the two gates, with the exact list of what each one runs — straight from ` {/* BEGIN:GERADO:scripts — não edite à mão, rode `npm run docs` */} ```bash -npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash eval:campinho-integration eval:parque eval:audiofurollback +npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash eval:campinho-integration eval:parque eval:audiofurollback eval:campo-contract eval:campomorro-molde eval:parquevida eval:parquecanopy eval:penitenciariavida eval:penitenciariafacade eval:penitenciariapickup ``` -`package.json` has **258 scripts**; the reason behind each one lives in `SCRIPTS.md`. +`package.json` has **265 scripts**; the reason behind each one lives in `SCRIPTS.md`. > Block generated by `node tools/gen-docs.mjs`. Source: `node -p "Object.keys(require('./package.json').scripts)"` diff --git a/docs/i18n/en/docusaurus-plugin-content-docs/current/quality-gates.md b/docs/i18n/en/docusaurus-plugin-content-docs/current/quality-gates.md index 9fb53cd4b..3dadd47ec 100644 --- a/docs/i18n/en/docusaurus-plugin-content-docs/current/quality-gates.md +++ b/docs/i18n/en/docusaurus-plugin-content-docs/current/quality-gates.md @@ -18,7 +18,7 @@ PR (`.github/workflows/ci.yml`). {/* BEGIN:GERADO:invariantes — não edite à mão, rode `npm run docs` */} - `tools/eval/invariants.mjs`: **2,322 lines**, **68 declared invariant identifiers**, with **29** declared `skip()` paths. -- The harness contains **422 scripts** in `tools/eval/`, plus **80 pipeline scripts** in `tools/`. +- The harness contains **428 scripts** in `tools/eval/`, plus **80 pipeline scripts** in `tools/`. - The number of critical checks in one run depends on the inputs present on that machine; dated results belong in `KNOWN-BUGS.md`. ```bash From 68e97888c1e9c84cdfdd3909d5ddbffe36e28e4f Mon Sep 17 00:00:00 2001 From: csbrasil-bot Date: Fri, 25 Sep 2026 02:49:14 +0000 Subject: [PATCH 7/9] chore(docs): regenera bloco derivado (autofix) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rodado pelo autofix: só arquivo gerado, conferido pela lista de permissão. Agent: csbrasil-bot (autofix) Signed-off-by: csbrasil-bot --- ARCH.generated.md | 8 +++---- README.md | 21 ++++++++++--------- STATUS.md | 6 +++--- docs/docs/arquitetura.md | 6 +++--- docs/docs/comecando.md | 21 ++++++++++--------- .../current/arquitetura.md | 6 +++--- .../current/comecando.md | 21 ++++++++++--------- 7 files changed, 46 insertions(+), 43 deletions(-) diff --git a/ARCH.generated.md b/ARCH.generated.md index 45767e066..b1134d13e 100644 --- a/ARCH.generated.md +++ b/ARCH.generated.md @@ -8,9 +8,9 @@ Números atuais das zonas, do quality gate e do `package.json`: | Zona | O que é | Tamanho medido | Regra | |---|---|---|---| -| `public/` | o **jogo** | 97 arquivos `.js`, 51.100 linhas · Three.js `r160` vendorizado | ES modules servidos crus, **zero build**, sem dependência de runtime | +| `public/` | o **jogo** | 99 arquivos `.js`, 51.969 linhas · Three.js `r160` vendorizado | ES modules servidos crus, **zero build**, sem dependência de runtime | | `src/` | o **site** | 20 páginas `.astro`, 4 rotas `/api` · Astro `^7.1.1` | framework é bem-vindo; `service_role` só no servidor | -| `tools/` | o **arnês** | 425 scripts em `tools/eval/`, 80 em `tools/` | node puro: sobe o jogo real sem browser | +| `tools/` | o **arnês** | 431 scripts em `tools/eval/`, 80 em `tools/` | node puro: sobe o jogo real sem browser | **Não existe `public/index.html`.** O HTML do jogo é `src/pages/index.astro`, servido na rota `/`. Servir `public/` estaticamente entrega os arnêses visuais, **não o jogo** — é a pegadinha que custa a primeira hora de todo mundo. @@ -25,10 +25,10 @@ Comandos e scripts atuais do quality gate: ```bash -npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash eval:campinho-integration eval:parque eval:audiofurollback eval:atacadao +npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash eval:campinho-integration eval:parque eval:audiofurollback eval:campo-contract eval:campomorro-molde eval:parquevida eval:parquecanopy eval:penitenciariavida eval:penitenciariafacade eval:penitenciariapickup eval:atacadao ``` -`package.json` tem **261 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. +`package.json` tem **268 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `node -p "Object.keys(require('./package.json').scripts)"` diff --git a/README.md b/README.md index b58ae39e8..9c2b79660 100644 --- a/README.md +++ b/README.md @@ -34,17 +34,17 @@ contra bots, direto na aba. Sem download, sem instalação, sem cadastro. | O que | Quanto | Onde confere | |---|---:|---| -| Código do jogo | 51.100 linhas em 97 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | -| `game.js` | **7.532** linhas | `wc -l public/js/game.js` | -| `main.js` | 3.600 linhas | `wc -l public/js/main.js` | +| Código do jogo | 51.969 linhas em 99 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | +| `game.js` | **7.533** linhas | `wc -l public/js/game.js` | +| `main.js` | 3.601 linhas | `wc -l public/js/main.js` | | Armas com GLB | 26 | `git ls-files 'public/models/weapons/*.glb' \| wc -l` | | GLBs de personagem | 55 | `git ls-files 'public/models/characters/*.glb' \| wc -l` | -| Props em GLB | 186 | `git ls-files 'public/models/props/*.glb' \| wc -l` | +| Props em GLB | 190 | `git ls-files 'public/models/props/*.glb' \| wc -l` | | Clipes de animação versionados | 681 | `git ls-files public/models/anims \| wc -l` | | Personagens jogáveis | 53, em 6 facções | array `CHARACTERS` de `characters.js` | -| Mapas no registro | 17 | objeto `MAPS` de `maps.js` | +| Mapas no registro | 18 | objeto `MAPS` de `maps.js` | | Arnêses visuais em HTML | 15 | `git ls-files 'public/*.html' \| wc -l` | -| Scripts do arnês | 425 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | +| Scripts do arnês | 431 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | | Scripts de pipeline | 80 | `git ls-files 'tools/*.mjs' \| wc -l` | | Tarefas de entrada escritas | 26 | `git ls-files 'docs/issues/[0-9]*.md' \| wc -l` | | Versão | `2.0.0-alpha.289` | `public/js/version.js` e `package.json` (batem) | @@ -89,7 +89,7 @@ arquitetura): `cd docs && npm install && npm start` → Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `dependencies/devDependencies do package.json · REVISION de public/vendor/three.module.js` @@ -279,7 +279,7 @@ projeto. | Regra | Valor | Constante | |---|---|---| | Facções · personagens | 6 · 53 (B 9 · C 9 · E 8 · F 9 · M 9 · U 9) | `CHARACTERS` | -| Mapas no menu | 17 — 2 abrem em rodadas, **15 em captura** | `MAPS` / `ctfMode` | +| Mapas no menu | 18 — 2 abrem em rodadas, **16 em captura** | `MAPS` / `ctfMode` | | Respawn | 2,2 s | `RESPAWN_DELAY` | | Round | 99 s, 3 vitórias | `ROUND_TIME` / `ROUNDS_TO_WIN` | | Captura | alvo = **todas as bandeiras do mapa**, 2 rodadas (rede de segurança 480 s) | `capsToWin = ctfPts.length` / `CTF_ROUNDS_TO_WIN` | @@ -306,6 +306,7 @@ Os mapas registrados, e em que modo cada um abre: | Id | Nome no menu | Abre em | Arquivo em `public/js/` | Linhas | |---|---|---|---|---:| +| `campomorro` | Campinho do Morro | **captura** | `map_campomorro.js` | 815 | | `mansao` | Mansão do Joá | **captura** | `map_mansao.js` | 1.395 | | `amazonia` | Treta na Amazônia | **captura** | `map_amazonia.js` | 1.192 | | `escadao` | Escadão (Morro) | **captura** | `map_escadao.js` | 1.409 | @@ -324,7 +325,7 @@ Os mapas registrados, e em que modo cada um abre: | `velho_oeste` | Sertão da Treta | **captura** | `map_velho_oeste.js` | 1.061 | | `penitenciaria` | CARANDIRU | **captura** | `map_penitenciaria.js` | 1.009 | -**17 mapas registrados** — 2 abrem em rodadas e 15 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 23 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. +**18 mapas registrados** — 2 abrem em rodadas e 16 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 24 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `objeto MAPS de public/js/maps.js` diff --git a/STATUS.md b/STATUS.md index 1cf916239..7dc4f9785 100644 --- a/STATUS.md +++ b/STATUS.md @@ -3,9 +3,9 @@ - **Versão:** `2.0.0-alpha.289` -- **Conteúdo jogável:** 6 facções, 53 personagens, 17 mapas e 26 armas com GLB -- **Código do jogo:** 51.100 linhas em 97 módulos JavaScript -- **Automação:** 261 comandos npm, 425 scripts de avaliação e 80 scripts de pipeline +- **Conteúdo jogável:** 6 facções, 53 personagens, 18 mapas e 26 armas com GLB +- **Código do jogo:** 51.969 linhas em 99 módulos JavaScript +- **Automação:** 268 comandos npm, 431 scripts de avaliação e 80 scripts de pipeline > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `package.json · CHARACTERS · MAPS · public/models/weapons · public/js · tools/` diff --git a/docs/docs/arquitetura.md b/docs/docs/arquitetura.md index e20742b75..bbb8854fb 100644 --- a/docs/docs/arquitetura.md +++ b/docs/docs/arquitetura.md @@ -62,15 +62,15 @@ Tamanho dos arquivos que o `gen-arch.mjs` indexa — bloco gerado, regenerado po | Arquivo | Linhas | |---|---:| -| `public/js/game.js` | 7.532 | -| `public/js/main.js` | 3.600 | +| `public/js/game.js` | 7.533 | +| `public/js/main.js` | 3.601 | | `public/js/characters.js` | 1.099 | | `public/js/glbchars.js` | 851 | | `public/js/vmattach.js` | 628 | | `public/js/weapons.js` | 353 | | `public/js/springs.js` | 260 | -Total de `public/js/`: **51.100 linhas em 97 arquivos**. O índice símbolo→linha, com a tabela de conflito, é outro bloco gerado: `tools/eval/ARCH.md` (`npm run arch`). +Total de `public/js/`: **51.969 linhas em 99 arquivos**. O índice símbolo→linha, com a tabela de conflito, é outro bloco gerado: `tools/eval/ARCH.md` (`npm run arch`). > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: ``git ls-files public/js/*.js | xargs wc -l`` diff --git a/docs/docs/comecando.md b/docs/docs/comecando.md index b68ae57d5..959d1d6e1 100644 --- a/docs/docs/comecando.md +++ b/docs/docs/comecando.md @@ -39,17 +39,17 @@ esta página envelhecia no primeiro commit — ver | O que | Quanto | Onde confere | |---|---:|---| -| Código do jogo | 51.100 linhas em 97 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | -| `game.js` | **7.532** linhas | `wc -l public/js/game.js` | -| `main.js` | 3.600 linhas | `wc -l public/js/main.js` | +| Código do jogo | 51.969 linhas em 99 arquivos | `git ls-files public/js/*.js \| xargs wc -l` | +| `game.js` | **7.533** linhas | `wc -l public/js/game.js` | +| `main.js` | 3.601 linhas | `wc -l public/js/main.js` | | Armas com GLB | 26 | `git ls-files 'public/models/weapons/*.glb' \| wc -l` | | GLBs de personagem | 55 | `git ls-files 'public/models/characters/*.glb' \| wc -l` | -| Props em GLB | 186 | `git ls-files 'public/models/props/*.glb' \| wc -l` | +| Props em GLB | 190 | `git ls-files 'public/models/props/*.glb' \| wc -l` | | Clipes de animação versionados | 681 | `git ls-files public/models/anims \| wc -l` | | Personagens jogáveis | 53, em 6 facções | array `CHARACTERS` de `characters.js` | -| Mapas no registro | 17 | objeto `MAPS` de `maps.js` | +| Mapas no registro | 18 | objeto `MAPS` de `maps.js` | | Arnêses visuais em HTML | 15 | `git ls-files 'public/*.html' \| wc -l` | -| Scripts do arnês | 425 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | +| Scripts do arnês | 431 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | | Scripts de pipeline | 80 | `git ls-files 'tools/*.mjs' \| wc -l` | | Tarefas de entrada escritas | 26 | `git ls-files 'docs/issues/[0-9]*.md' \| wc -l` | | Versão | `2.0.0-alpha.289` | `public/js/version.js` e `package.json` (batem) | @@ -66,7 +66,7 @@ E as regras de partida que mais mudam de lugar, todas lidas das constantes de | Regra | Valor | Constante | |---|---|---| | Facções · personagens | 6 · 53 (B 9 · C 9 · E 8 · F 9 · M 9 · U 9) | `CHARACTERS` | -| Mapas no menu | 17 — 2 abrem em rodadas, **15 em captura** | `MAPS` / `ctfMode` | +| Mapas no menu | 18 — 2 abrem em rodadas, **16 em captura** | `MAPS` / `ctfMode` | | Respawn | 2,2 s | `RESPAWN_DELAY` | | Round | 99 s, 3 vitórias | `ROUND_TIME` / `ROUNDS_TO_WIN` | | Captura | alvo = **todas as bandeiras do mapa**, 2 rodadas (rede de segurança 480 s) | `capsToWin = ctfPts.length` / `CTF_ROUNDS_TO_WIN` | @@ -221,6 +221,7 @@ Os mapas registrados hoje, e em que modo cada um abre: | Id | Nome no menu | Abre em | Arquivo em `public/js/` | Linhas | |---|---|---|---|---:| +| `campomorro` | Campinho do Morro | **captura** | `map_campomorro.js` | 815 | | `mansao` | Mansão do Joá | **captura** | `map_mansao.js` | 1.395 | | `amazonia` | Treta na Amazônia | **captura** | `map_amazonia.js` | 1.192 | | `escadao` | Escadão (Morro) | **captura** | `map_escadao.js` | 1.409 | @@ -239,7 +240,7 @@ Os mapas registrados hoje, e em que modo cada um abre: | `velho_oeste` | Sertão da Treta | **captura** | `map_velho_oeste.js` | 1.061 | | `penitenciaria` | CARANDIRU | **captura** | `map_penitenciaria.js` | 1.009 | -**17 mapas registrados** — 2 abrem em rodadas e 15 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 23 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. +**18 mapas registrados** — 2 abrem em rodadas e 16 em captura. `ctfMode` **abre** o mapa em captura, não prende: o jogador troca no menu (é a `MOD1`). Há 24 arquivos `map_*.js` em `public/js/` — arquivo no disco **não** implica mapa jogável. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `objeto MAPS de public/js/maps.js` @@ -280,10 +281,10 @@ E os dois quality gates, com a lista exata do que cada um roda — direto do `pa {/* BEGIN:GERADO:scripts — não edite à mão, rode `npm run docs` */} ```bash -npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash eval:campinho-integration eval:parque eval:audiofurollback eval:atacadao +npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash eval:campinho-integration eval:parque eval:audiofurollback eval:campo-contract eval:campomorro-molde eval:parquevida eval:parquecanopy eval:penitenciariavida eval:penitenciariafacade eval:penitenciariapickup eval:atacadao ``` -`package.json` tem **261 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. +`package.json` tem **268 scripts**; o motivo de cada um mora em `SCRIPTS.md` (migrado das chaves `//nome` em 18/08/2026) — é onde está o porquê. > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `node -p "Object.keys(require('./package.json').scripts)"` diff --git a/docs/i18n/en/docusaurus-plugin-content-docs/current/arquitetura.md b/docs/i18n/en/docusaurus-plugin-content-docs/current/arquitetura.md index fa75c4c8f..c12b4be5d 100644 --- a/docs/i18n/en/docusaurus-plugin-content-docs/current/arquitetura.md +++ b/docs/i18n/en/docusaurus-plugin-content-docs/current/arquitetura.md @@ -69,15 +69,15 @@ Size of the files `gen-arch.mjs` indexes — a generated block, regenerated by | File | Lines | |---|---:| -| `public/js/game.js` | 7,532 | -| `public/js/main.js` | 3,600 | +| `public/js/game.js` | 7,533 | +| `public/js/main.js` | 3,601 | | `public/js/characters.js` | 1,099 | | `public/js/glbchars.js` | 851 | | `public/js/vmattach.js` | 628 | | `public/js/weapons.js` | 353 | | `public/js/springs.js` | 260 | -Total in `public/js/`: **51,100 lines in 97 files**. The symbol-to-line index lives in `tools/eval/ARCH.md`. +Total in `public/js/`: **51,969 lines in 99 files**. The symbol-to-line index lives in `tools/eval/ARCH.md`. > Block generated by `node tools/gen-docs.mjs`. Source: ``wc -l public/js/*.js`` diff --git a/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md b/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md index 15ae5d514..9bcda8410 100644 --- a/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md +++ b/docs/i18n/en/docusaurus-plugin-content-docs/current/comecando.md @@ -41,17 +41,17 @@ this page was aging at the very first commit — see | What | How much | Where to check | |---|---:|---| -| Game code | 51,100 lines in 97 files | `git ls-files public/js/*.js \| xargs wc -l` | -| `game.js` | **7,532** lines | `wc -l public/js/game.js` | -| `main.js` | 3,600 lines | `wc -l public/js/main.js` | +| Game code | 51,969 lines in 99 files | `git ls-files public/js/*.js \| xargs wc -l` | +| `game.js` | **7,533** lines | `wc -l public/js/game.js` | +| `main.js` | 3,601 lines | `wc -l public/js/main.js` | | Weapons with GLB | 26 | `git ls-files 'public/models/weapons/*.glb' \| wc -l` | | Character GLBs | 55 | `git ls-files 'public/models/characters/*.glb' \| wc -l` | -| Props in GLB | 186 | `git ls-files 'public/models/props/*.glb' \| wc -l` | +| Props in GLB | 190 | `git ls-files 'public/models/props/*.glb' \| wc -l` | | Versioned animation clips | 681 | `git ls-files public/models/anims \| wc -l` | | Playable characters | 53, in 6 factions | `CHARACTERS` array in `characters.js` | -| Maps in the registry | 17 | `MAPS` object in `maps.js` | +| Maps in the registry | 18 | `MAPS` object in `maps.js` | | Visual harnesses in HTML | 15 | `git ls-files 'public/*.html' \| wc -l` | -| Harness scripts | 425 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | +| Harness scripts | 431 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` | | Pipeline scripts | 80 | `git ls-files 'tools/*.mjs' \| wc -l` | | Written entry tasks | 26 | `git ls-files 'docs/issues/[0-9]*.md' \| wc -l` | | Version | `2.0.0-alpha.289` | `public/js/version.js` and `package.json` (match) | @@ -68,7 +68,7 @@ And the match rules that move around the most, all read from the constants in | Rule | Value | Constant | |---|---|---| | Factions · characters | 6 · 53 (B 9 · C 9 · E 8 · F 9 · M 9 · U 9) | `CHARACTERS` | -| Maps in the menu | 17 - 2 open in rounds, **15 in capture** | `MAPS` / `ctfMode` | +| Maps in the menu | 18 - 2 open in rounds, **16 in capture** | `MAPS` / `ctfMode` | | Respawn | 2.2 s | `RESPAWN_DELAY` | | Round | 99 s, 3 wins | `ROUND_TIME` / `ROUNDS_TO_WIN` | | Capture | target = **all flags on the map**, 2 rounds (480 s safety net) | `capsToWin = ctfPts.length` / `CTF_ROUNDS_TO_WIN` | @@ -223,6 +223,7 @@ The maps registered today, and which mode each one opens in: | Id | Menu name | Opens in | File in `public/js/` | Lines | |---|---|---|---|---:| +| `campomorro` | Campinho do Morro | **capture** | `map_campomorro.js` | 815 | | `mansao` | Mansão do Joá | **capture** | `map_mansao.js` | 1,395 | | `amazonia` | Treta na Amazônia | **capture** | `map_amazonia.js` | 1,192 | | `escadao` | Escadão (Morro) | **capture** | `map_escadao.js` | 1,409 | @@ -241,7 +242,7 @@ The maps registered today, and which mode each one opens in: | `velho_oeste` | Sertão da Treta | **capture** | `map_velho_oeste.js` | 1,061 | | `penitenciaria` | CARANDIRU | **capture** | `map_penitenciaria.js` | 1,009 | -**17 registered maps** - 2 open in rounds and 15 in capture. `ctfMode` sets the initial mode; it does not lock it. There are 23 `map_*.js` files on disk, so a file alone does **not** make a map playable. +**18 registered maps** - 2 open in rounds and 16 in capture. `ctfMode` sets the initial mode; it does not lock it. There are 24 `map_*.js` files on disk, so a file alone does **not** make a map playable. > Block generated by `node tools/gen-docs.mjs`. Source: `objeto MAPS de public/js/maps.js` @@ -282,10 +283,10 @@ And the two gates, with the exact list of what each one runs — straight from ` {/* BEGIN:GERADO:scripts — não edite à mão, rode `npm run docs` */} ```bash -npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash eval:campinho-integration eval:parque eval:audiofurollback eval:atacadao +npm run check:fast # node tools/eval/runner.mjs syntax eval:modgraph eval:analytics eval:online eval:release eval:error-console eval:edgecache eval:webgl eval:webglguard eval:maprotate eval:shaderlog eval:shaderbudget eval:prune eval:vminspect eval:faccao eval:mapid eval:mapjson eval:mapcontrato eval:passosim eval:perfcampo eval:dificuldade eval:qualmapas eval:pickuparma eval:parquewheel eval:redesign eval:matchoptions eval:charvoice eval:screenquery docs:check arch:check audio:check eval:audioalcance eval:audioespacial eval:audioenvelope eval:audioproc eval:audiocapacidade eval:audiofablocal eval:audioeventos eval:audioannouncer eval:audiovoicemix eval:audioprivate eval:audioruntimeassets eval:menumusicreview audio:inventario:autoteste audio:shortlist:autoteste feet:check eval:vmlabhud eval:ctfhud eval:pause eval:ctfround eval:ctfwin eval:switchteam eval:launchwatchdog eval:launchrace eval:spawn eval:regen eval:pegada eval:dmgdir eval:ctflabels anims:check anims:merge:check walls:check media:check menuwalls:check travessao:check eval:medianet eval:posters eval:grafitelayout eval:simclock eval:backendhints eval:geoproxy changelog:check eval:velhooeste eval:penitenciaria eval:mutcega eval:autofix eval:deploygate eval:portaointeiro eval:wfsecret eval:wflocal eval:comentario eval:fixture eval:preload eval:docsautoria eval:netcode eval:sonda eval:noescolha eval:maqfraca eval:qualadapt eval:netcodecbin eval:movimento eval:botsim-golden eval:replaycam eval:abateshud eval:botfaca eval:escadao-home eval:escadao-conflict-home eval:escadao-casa-central eval:escadao-casas-conflito eval:escadao-mirante-abrigo eval:escadao-structure eval:escadao-descent eval:escadao-details eval:corrego-contract eval:corrego-water eval:corrego-superficie eval:skylife ops:test ops:selftest eval:lajes-layout eval:lajes-rooftop eval:lajes-visual eval:lajes-ruas eval:lajes-identidade eval:lajes-roof-overlap eval:lajes-nav eval:lajes-ctf-surface eval:lajes-authored eval:lajes-spatial eval:lajes-gap eval:lajes-circuito eval:lajes-antitrap eval:lajes-vertical eval:lajes-bots eval:lajes-ambiencia eval:lajes-santos eval:lajes-game eval:mappreview eval:lajes-airspace eval:lajes-soundscape eval:lajes-spawn-space eval:sertao eval:sertao-spatial eval:sertao-interiors eval:sertao-wagon eval:sertao-flora eval:sertao-occlusion eval:sertao-fauna eval:calango-quadruped eval:sertao-horizon eval:sertao-distant-birds eval:sertao-integration eval:sertao-livestock eval:sertao-sky-lifecycle eval:amazonia eval:chao eval:miticos-lobisomem eval:mansao eval:dautelemetria eval:mpRoomOptions eval:fxFlash eval:campinho-integration eval:parque eval:audiofurollback eval:campo-contract eval:campomorro-molde eval:parquevida eval:parquecanopy eval:penitenciariavida eval:penitenciariafacade eval:penitenciariapickup eval:atacadao ``` -`package.json` has **261 scripts**; the reason behind each one lives in `SCRIPTS.md`. +`package.json` has **268 scripts**; the reason behind each one lives in `SCRIPTS.md`. > Block generated by `node tools/gen-docs.mjs`. Source: `node -p "Object.keys(require('./package.json').scripts)"` From a94fd856c55765fa23f9644b64502adc19653f79 Mon Sep 17 00:00:00 2001 From: csbrasil-bot Date: Fri, 25 Sep 2026 02:50:47 +0000 Subject: [PATCH 8/9] chore(docs): regenera bloco derivado (autofix) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rodado pelo autofix: só arquivo gerado, conferido pela lista de permissão. Agent: csbrasil-bot (autofix) Signed-off-by: csbrasil-bot --- STATUS.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/STATUS.md b/STATUS.md index 1e7f22b69..8c60df8b1 100644 --- a/STATUS.md +++ b/STATUS.md @@ -3,9 +3,9 @@ - **Versão:** `2.0.0-alpha.290` -- **Conteúdo jogável:** 6 facções, 53 personagens, 17 mapas e 26 armas com GLB -- **Código do jogo:** 51.100 linhas em 97 módulos JavaScript -- **Automação:** 261 comandos npm, 425 scripts de avaliação e 80 scripts de pipeline +- **Conteúdo jogável:** 6 facções, 53 personagens, 18 mapas e 26 armas com GLB +- **Código do jogo:** 51.969 linhas em 99 módulos JavaScript +- **Automação:** 268 comandos npm, 431 scripts de avaliação e 80 scripts de pipeline > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `package.json · CHARACTERS · MAPS · public/models/weapons · public/js · tools/` From 0130c8fe2132c59a6584b8d2d6f3457571f3c4ee Mon Sep 17 00:00:00 2001 From: csbrasil-bot Date: Fri, 25 Sep 2026 03:10:40 +0000 Subject: [PATCH 9/9] chore(docs): regenera bloco derivado (autofix) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rodado pelo autofix: só arquivo gerado, conferido pela lista de permissão. Agent: csbrasil-bot (autofix) Signed-off-by: csbrasil-bot --- STATUS.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/STATUS.md b/STATUS.md index 8b4d9fabb..704ae78cc 100644 --- a/STATUS.md +++ b/STATUS.md @@ -3,9 +3,9 @@ - **Versão:** `2.0.0-alpha.291` -- **Conteúdo jogável:** 6 facções, 53 personagens, 17 mapas e 26 armas com GLB -- **Código do jogo:** 51.100 linhas em 97 módulos JavaScript -- **Automação:** 261 comandos npm, 425 scripts de avaliação e 80 scripts de pipeline +- **Conteúdo jogável:** 6 facções, 53 personagens, 18 mapas e 26 armas com GLB +- **Código do jogo:** 51.969 linhas em 99 módulos JavaScript +- **Automação:** 268 comandos npm, 431 scripts de avaliação e 80 scripts de pipeline > Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `package.json · CHARACTERS · MAPS · public/models/weapons · public/js · tools/`