Console
The state of the newsroom right now. Every number on this page counts files in this repository.
- O aviso tem de falar da telemetria antes de ela ligar —
redacao/correio/dinis.humano/assuntos/bloqueados/004__o-aviso-tem-de-falar-da-telemetria-antes-de-ela-ligar.md - Decidir os três tipos novos da ontologia —
redacao/correio/dinis.humano/assuntos/abertos/002__decidir-os-tipos-novos-da-ontologia.md - Decidir o pedido de acesso à ANACOM —
redacao/correio/dinis.humano/assuntos/abertos/003__decidir-o-pedido-de-acesso-a-anacom.md - Decidir se o grafo passa a ser a linguagem visual do site —
redacao/correio/dinis.humano/assuntos/abertos/005__o-grafo-como-linguagem-visual-do-site.md - Decidir onde ficam as fichas de proveniência —
redacao/correio/dinis.humano/assuntos/abertos/006__onde-ficam-as-fichas-de-proveniencia.md - Decidir o modo escuro —
redacao/correio/dinis.humano/assuntos/abertos/007__modo-escuro.md - Decidir se a carteira fica no cabeçalho do leitor —
redacao/correio/dinis.humano/assuntos/abertos/008__a-carteira-no-cabecalho-do-leitor.md - Decidir quão magra a edição pode parecer —
redacao/correio/dinis.humano/assuntos/abertos/009__quao-magra-a-edicao-pode-parecer.md - O leitor de PDF diz que o diploma é digitalizado quando o que lhe falta é uma dependência —
redacao/correio/dinis.humano/assuntos/abertos/010__o-leitor-de-pdf-mente-quando-lhe-falta-uma-dependencia.md - Decidir a segunda entrega do ChatGPT sobre políticas, item a item —
redacao/correio/dinis.humano/assuntos/abertos/011__decidir-a-segunda-entrega-de-politicas.md - Acesso à página da ANACOM, que devolve 403 —
redacao/correio/pesquisa.pt/assuntos/bloqueados/003__acesso-a-anacom.md - A fila de acrescento não tem credenciais —
redacao/correio/bastidores.pt/assuntos/bloqueados/002__a-fila-de-acrescento-nao-tem-credenciais.md - Publish decision · paper issue 004 —
redacao/issues/004-entrega-chatgpt-politicas.json - Publish decision · paper issue 007 —
redacao/issues/007-entrega-chatgpt-politicas-2.json - Mail from @Arranque · MVP v0.1.0 construído; o que é real, o que não é, e o que precisa da sua decisão —
redacao/correio/dinis.humano/entrada/001__sessao-de-arranque__o-que-foi-construido.eml
The pipeline
| Stage | Now | Detail | Owner | State |
|---|---|---|---|---|
| 1 · Fetch & freeze | 92 files | 1 dated snapshot(s), every SHA-256 re-verified each build | pesquisa | running |
| 2 · Extract | 312 nodes | 942 edges, 29 Portuguese verbs each with a reading | pesquisa | running |
| 3 · Deliveries | 12/23 excerpts | found in the frozen bytes · 5 items approved by the editor | pesquisa | running |
| 4 · Write | 5 with prose | 6 article folders exist | redacao | running |
| 5 · Verify | 9 claims | re-read against the frozen copy and marked | verificacao | running |
| 6 · Publish | 5 published | the editor of record writes this line, and nothing else can | editor | running |
Stage 6 is the only one that cannot be moved
by any agent. estado: publicado is the editor of record's line; gate 11 fails the
build if it appears without their name and a date.
Departments · who may write where
| Department | Writes only in | Refuses | Wrong when |
|---|---|---|---|
| Research Pesquisa No claim without bytes we hold. | fontes/congeladas/<data>/ dados/registo.json dados/*.json extraídos das fontes | Reading a source over the network at publish time; citing a page nobody froze; tidying a messy source value into a cleaner one. | A claim cannot be walked back to a SHA-256 in the register. |
| Reporting Redação Every sentence stands on a registered source. | conteudo/*.md | A claim with no source; an adjective about a named party; prose more certain than the snapshots are. | A claim in the text has no source mark, or one the register does not know. |
| Verification Verificação Publish the record, never the verdict. | dados/verificacoes/*.json | Editing the story. Marking a claim confirmed without re-reading it. | A story reaches the editor with claims nobody reopened. |
Reads every page before it goes live, and is the named person answerable for what this publication says.
- Put a story into «publicado». No automated run can.
- Decide a removal under the notice.
- Clear an item that is «parado» (blocked).
Gate 12 reads each run record and fails the build if a department wrote outside its own folder. That check is what makes this a newsroom rather than a script with role names in the comments.
The agent team · 5 roles, 17 board cards, 8 messages
Three pages, generated by build/newsroom_team.py from
dados/agentes.json and the mail folder. The roles are defined in the shape
teams.sgit.ai publishes for a
ROLE.md, and they coordinate under
Email-FS-lite — files
in a folder, one commit per cycle, no broker and no API.
Board · 9 issues
Rendered from redacao/issues/*.json. The same
issues appear on each agent's board, placed there by a published formula
and not by hand. The reader-facing version of this board is
A mesa, in Portuguese.
Articles · 6 folders, 5 published
| Date | Title | Section | State | Evidence | Files |
|---|---|---|---|---|---|
| 2026-09-14 | O Governo anunciou 25 milhões de euros para adoção de IA na Administração Pública | politicas | publicado | 1 src · 2 ok | json prov |
| 2026-09-14 | O regulador foi designado e o instrumento de designação não está na página de IA do Go | instituicoes | publicado | 2 src · 2 ok | json prov |
| 2026-09-14 | Quantas das startups ativas em Portugal são empresas de IA, e porque nenhum conjunto d | empresas | procurado | 1 src · 0 ok | json prov |
| 2026-09-14 | O Plano Nacional de Centros de Dados foi aprovado por resolução, e esta redação conseg | politicas | publicado | 1 src · 2 ok | json prov |
| 2026-09-14 | O Conselho de Ministros aprovou a entrada de Portugal nas Gigafábricas de IA europeias | politicas | publicado | 1 src · 2 ok | json prov |
| 2026-09-14 | A agenda nacional de IA integra 32 iniciativas, e o diploma que a aprova continua sem | politicas | publicado | 2 src · 1 ok | json prov |
Each article is a folder at
artigos/<yyyy>/<mm>/<dd>/<slug>/ holding the prose, the claim
record and the provenance. dados/historias.json is derived from those folders and is
never hand-edited.
Sections · coverage
| Section | State | Graph | Articles | Sources | First open question |
|---|---|---|---|---|---|
| As empresas seccoes/empresas/seccao.json | has data | 78 nodes | 1 article(s) | 1 frozen · 1 pending | Qual é o número de startups ativas que vem de uma FONTE e não de um relatório? |
| Os protagonistas seccoes/protagonistas/seccao.json | has data | 70 nodes | 0 article(s) | 1 frozen | Esta secção é a que tem mais risco para pessoas reais. Qualquer alargamento das categorias detidas exige mudar o aviso P |
| As instituições seccoes/instituicoes/seccao.json | has data | 11 nodes | 1 article(s) | 2 frozen · 1 pending | Onde está o ato de designação da autoridade nacional para o Regulamento de IA? |
| As políticas seccoes/politicas/seccao.json | empty, and says so | 0 nodes | 4 article(s) | 2 frozen | Como é que se ENCONTRA o endereço do PDF de um diploma no Diário da República sem o construir por adivinhação? |
| Os casos de uso seccoes/casos-de-uso/seccao.json | has data | 35 nodes | 0 article(s) | 1 frozen | O léxico corre sobre prosa inglesa porque a fonte é inglesa. Quando houver fontes portuguesas, precisa de padrões portug |
| O código aberto seccoes/codigo-aberto/seccao.json | empty, and says so | 0 nodes | 0 article(s) | 0 frozen | Qual é a fonte primária? Um índice de repositórios não é um registo; um registo de financiamento que nomeie software abe |
| A diáspora seccoes/diaspora/seccao.json | empty, and says so | 0 nodes | 0 article(s) | 0 frozen | Onde é que a nacionalidade ou o percurso de alguém está PUBLICADO por uma fonte primária, e não inferido? Sem resposta a |
| Os eventos seccoes/eventos/seccao.json | has data | 19 nodes | 0 article(s) | 3 frozen | Que outros eventos portugueses publicam programa e lista de oradores de forma congelável? |
Runs
| When | Prompt | Model | Folders | Gates | Version |
|---|---|---|---|---|---|
| 2026-09-14T12:00:00Z | 00-bootstrap.md — construir o MVP v0.1.0 | Claude Opus 5 (Claude Code, sessão remota) | build/, dados/, fontes/congeladas/, redacao/, assets/, admin/, .github/ | green | v0.1.0 |
| 2026-09-14T23:07:00Z | Ligar as entidades: uma página por nó do grafo e a menção em prosa a virar ligação. | Claude Opus 5 (Claude Code, sessão remota) | admin/, api/, artigos/, assets/, aviso/, backoffice/, briefs/, build/, casos-de-uso/, codigo-aberto/, dados/, diaspora/, empresas/, entidades/, entregas/, equipa/, eventos/, ficheiros/, grafo/, index.html, index.md, instituicoes/, llms.txt, metodo/, politicas/, protagonistas/, proveniencia/, redacao/, registo/, sitemap.xml, sobre/ | green | v0.4.0 |
| 2026-09-14T23:30:00Z | O trabalho dos agentes, derivado dos registos — e a recusa de o escrever. | Claude Opus 5 (Claude Code, sessão remota) | admin/, api/, artigos/, assets/, aviso/, backoffice/, briefs/, build/, casos-de-uso/, codigo-aberto/, dados/, diaspora/, empresas/, entidades/, entregas/, equipa/, eventos/, ficheiros/, grafo/, index.html, index.md, instituicoes/, llms.txt, metodo/, politicas/, protagonistas/, proveniencia/, redacao/, registo/, sitemap.xml, sobre/ | green | v0.5.0 |
| 2026-09-15T00:10:00Z | A mesa como uma sala: o quadro Kanban, as bancadas e a carga de cada uma. | Claude Opus 5 (Claude Code, sessão remota) | admin/, api/, artigos/, assets/, briefs/, build/, dados/, redacao/, backoffice/, entidades/, index.html, llms.txt, sitemap.xml, index.md | green | v0.6.0 |
| 2026-09-15T00:45:00Z | Ver a equipa de agentes de forma visual nos bastidores, com o quadro de cada um; montar o sistema de correio entre agentes a partir do Email-FS-lite; abrir uma ponte para o editor falar com os bastidores a partir do site por uma fila de acrescento de cofre; a observabilidade pelo padrão dos cofres dos jogos; e um painel de conversa sobre o conteúdo. | Claude Opus 5 (Claude Code, sessão remota) | admin/, api/, assets/, build/, dados/, redacao/, backoffice/, llms.txt, sitemap.xml, index.md | green | v0.7.0 |
| 2026-09-15T00:55:00Z | Abrir as páginas num navegador de verdade: o quarto portão. | Claude Opus 5 (Claude Code, sessão remota) | admin/, api/, artigos/, assets/, backoffice/, briefs/, build/, dados/, entidades/, redacao/, index.html, llms.txt, sitemap.xml, index.md | green | v0.7.0 |
| 2026-09-15T01:20:00Z | Corrigir a competência que uma execução agendada segue. | Claude Opus 5 (Claude Code, sessão remota) | .claude/, admin/, backoffice/, build/, index.html | green | v0.7.1 |
| 2026-09-15T01:30:00Z | Integrar o dev, rever o trabalho do outro agente à procura de defeitos, ver o que isso afeta no trabalho desta sessão, e lançar. | Claude Opus 5 (Claude Code, sessão remota) | admin/, api/, artigos/, assets/, build/, dados/, redacao/, backoffice/, entidades/, index.html, llms.txt, sitemap.xml, index.md | green | v0.8.0 |
| 2026-09-15T02:15:00Z | Clonar o cofre da revisão de desenho, rever o brief do agente de desenho, e começar a implementar as recomendações, documentando em detalhe o que foi feito a partir daquele cofre. | Claude Opus 5 (Claude Code, sessão remota) | admin/, api/, artigos/, assets/, build/, dados/, redacao/, backoffice/, entidades/, index.html, llms.txt, sitemap.xml, index.md | green | v0.9.0 |
| 2026-09-15T02:40:00Z | Language rule with a gate, guidance, agent mandates rendered from the register, the versions table in English, and the sibling transfer. | Claude Opus 5 (Claude Code, remote session) | .claude/, admin/, agents/, api/, artigos/, assets/, backoffice/, briefs/, build/, dados/, docs/, entidades/, fontes/, redacao/, index.html, llms.txt, sitemap.xml, index.md | green | v0.9.0 |
| 2026-09-15T03:15:00Z | Pull the design vault and see the design updates and proposed components; plus: the top-level menu must not move between the site and the back office, put the budget spend on its own page instead of a popup, and look at layout bugs like the one in the screenshot. | Claude Opus 5 (Claude Code, remote session) | admin/, api/, artigos/, assets/, build/, carteira/, dados/, redacao/, backoffice/, entidades/, index.html, llms.txt, sitemap.xml, index.md | green | v0.11.0 |
| 2026-09-15T03:20:00Z | Language rule with a gate, guidance, agent mandates from the register, the release history as markdown, and the sibling transfer. | Claude Opus 5 (Claude Code, remote session) | .claude/, admin/, agents/, api/, artigos/, assets/, backoffice/, briefs/, build/, dados/, docs/, entidades/, fontes/, redacao/, index.html, llms.txt, sitemap.xml, index.md | green | v0.10.0 |
| 2026-09-15T05:45:00Z | The VoiceDebrief-style chat: a right-hand column with a vertical rail, resizable, with the key and the settings in localStorage. | Claude Code, remote session | admin/, api/, artigos/, assets/, backoffice/, dados/, entidades/, redacao/, index.html, llms.txt, sitemap.xml, index.md | green | v0.11.0 |
| 2026-09-15T07:15:00Z | The chat's API paths were 404ing on every page but the front one; plus gate 34 over assets/ and the gate messages in English. | Claude Code, remote session | admin/, api/, artigos/, assets/, backoffice/, build/, dados/, entidades/, ficheiros/, redacao/, index.html, llms.txt, sitemap.xml, index.md | green | v0.13.0 |
| 2026-09-15T08:30:00Z | Guidance and gates for three Claude Code sessions working on this repository at once: avoid what can be avoided, detect what cannot. | Claude Code, remote session | admin/, api/, artigos/, backoffice/, build/, dados/, docs/, entidades/, redacao/, index.html, llms.txt, sitemap.xml, index.md | green | v0.15.0 |
| 2026-09-15T10:15:00Z | Put the initial prompt and the guidance links in .claude/, and get the guidance onto the site as real pages. | Claude Code, remote session | .claude/, admin/, api/, artigos/, assets/, backoffice/, build/, dados/, docs/, entidades/, redacao/, index.html, llms.txt, sitemap.xml, index.md | green | v0.20.0 |
| 2026-09-15T11:45:00Z | dados/ is Portuguese leaking into the backend and the API, which should be English in preparation for more language editions. | Claude Code, remote session | admin/, api/, build/, dados/, docs/, redacao/, backoffice/, artigos/, entidades/, index.html, llms.txt, sitemap.xml, index.md | green | v0.22.0 |
Recent commits
| Commit | When | Subject |
|---|---|---|
| 0248723 | 2026-09-18 08:23 | site v0.23.5: um cartao de perguntas para o summit, e o primeiro conteudo nascido em ingles |
| 09cef76 | 2026-09-15 23:37 | site v0.23.4: o console muda-se para /newsroom/, e /admin/ sobrevive de tres linhas que ninguem aqui pode edit |
| a105c4e | 2026-09-15 23:19 | site v0.23.3: a superficie de operacoes deixa de falar portugues nos enderecos |
| a3831fe | 2026-09-15 16:01 | site v0.23.2: as regras de lancamento deixam de viver na cabeca de uma sessao, e o editor tambem e entrevistad |
| e600138 | 2026-09-15 15:53 | site v0.23.1: o editor ganha uma pagina que lhe faz as perguntas, e chega o metodo das entrevistas |
| bc94ec8 | 2026-09-15 12:15 | atualiza a tabela de commits da consola e o manifesto |
| 1e1ff1c | 2026-09-15 12:15 | site v0.23.0: as mensagens passam a dizer onde as coisas estão, e a regra que permitiu corrigi-las |
| 41d6bfc | 2026-09-15 10:35 | site v0.22.0: a migração para inglês, mapeada e ensaiada — e parada num muro que não lhe compete subir |
| 6eb06d8 | 2026-09-15 10:19 | site v0.21.0: uma sessão que começa aqui passa a aterrar em alguma coisa, e o guia ganha endereços |
| da241f0 | 2026-09-15 10:15 | site v0.20.0: uma sessão que começa aqui passa a aterrar em alguma coisa, e o guia ganha endereços |
| 2f9521d | 2026-09-15 10:12 | atualiza a tabela de commits da consola e o manifesto |
| 512ddf2 | 2026-09-15 10:12 | site v0.20.0: os endereços dos bastidores passam a inglês, sem nada deixado atrás a dizê-lo |
Run it yourself
python3 build/tudo.py # THE WHOLE BUILD, IN ORDER, THEN THE THREE GATES python3 build/tudo.py --fetch # the same, going to the network for the sources first python3 build/tudo.py --so-portoes # gates only, no rebuild python3 build/tudo.py --render # plus the browser gate (needs playwright installed) # what build/tudo.py runs, in this order — the order is load-bearing python3 build/extract.py [--fetch] # fetch, freeze, hash, register, extract, diff python3 build/graph.py # ontology, graph, triples, manifest, source publishers python3 build/entidades.py # dados/entidades.json + a page per entity ← before any page python3 build/comentarios.py # agent activity per article, derived from the records python3 build/artigos.py # article folders -> pages + derived index python3 build/build.py # every reader-facing page python3 build/paginas_extra.py # /api/ and /proveniencia/ python3 build/api.py # api/v1/ — every path is a file on disk python3 build/newsroom.py # this console python3 build/chrome.py # llms.txt, sitemap.xml, index.md python3 build/gates.py # gates 1-15 — must print OK python3 build/gates_artigos.py # gates 16-25 — must print OK node admin/build/validate.js # the site gate — must print OK node admin/build/render.mjs # the browser gate — opt-in, see below # build/entregas.py is run per delivery, not per build: python3 build/entregas.py --fetch # freeze delivery sources, check every excerpt
Use build/tudo.py. The order matters and
it is not obvious: entidades.py must run before anything that writes a page, because
the pass that turns a name in prose into a link reads the file it produces — run out of order,
nothing breaks, the site just quietly has fewer links than it should. The command list in
CLAUDE.md is older than half these steps, and CLAUDE.md is the rules
file: it is in the deny list on purpose, and editing the rules to match the code is backwards. So
the real order lives in an executable file, where it cannot go stale without something failing.
Run --render before shipping anything that
touches assets/components/. The other three gates read files and read HTML; none
of them executes anything. A component that throws on load passes all three and reaches the
reader as an empty box — which looks like a design choice. The browser gate opens each component in
a real Chromium and fails on a console error, a failed request, a component that never reaches
data-estado="pronto", or a page that overflows at 390px. It is opt-in because it needs
a browser and this repository has no node dependencies; when CI has one, it becomes a gate without
a line of it changing.
Without --fetch the first two run against the
copies already frozen and touch no network. That is how the site is rebuilt from a clone, years
later, to exactly the same pages.
Elsewhere in the estate
| Site | What is there |
|---|---|
| newsroom.sgit.ai | The parent publication and the argument this site is an instance of. The commissioning brief for pt.newsroom lives there, not here. |
| newsroom.sgit.ai/portugal/ | Where this method was proven before it was copied: the ingestion path, the gates, the biography posture and the notice all come from there. |
| newsroom.sgit.ai/pt-newsroom/ | The front-page design this site builds, rendered at full size from its own sources. |
| sgit.ai | The platform: the vault layer and the shipped CLI. Research deliveries arrive as sgit vaults, and a read key is the only credential that may be recorded. |
| coding.sgit.ai | How the code in this repository is meant to be written and reviewed. |
| graphs.sgit.ai | The published grammar this site's ontology obeys: every edge a verb with a distinct named inverse, and a path that reads aloud. |
121 markdown documents in this repository are readable at documents.
build/newsroom.py from the files in this
repository; nothing here is hand-written. The machine-readable index of the publication is at
llms.txt. Source: github.com/SGit-AI/SGit-AI__Website__Newsroom__PT · file:
newsroom/index.html · version v0.23.6.