Skip to content

chore(deps): regenera os 3 locks que o bump do #825 deixou para trás - #863

Merged
marceloterra1983 merged 6 commits into
mainfrom
claude/graphify-fail-closed-profitbridge-f46f0c
Aug 27, 2026
Merged

chore(deps): regenera os 3 locks que o bump do #825 deixou para trás#863
marceloterra1983 merged 6 commits into
mainfrom
claude/graphify-fail-closed-profitbridge-f46f0c

Conversation

@marceloterra1983

Copy link
Copy Markdown
Owner

O quê

O #825 subiu Roslynator 4.12.9→4.16.1 e SonarAnalyzer 10.4.0.108396→10.33.0.1635 no Directory.Packages.props e atualizou 19 dos 24 ficheiros de lock. Estes três ficaram com as versões antigas.

Por que importa

Os locks ficavam inconsistentes com o props já commitado, e qualquer restore os regenerava — deixando o checkout compartilhado ~/profitbridge permanentemente sujo. Efeito colateral concreto: o cron de sincronização do grafo registrava pull pulado: worktree sujo a cada 30 minutos e nunca atualizava.

Nota

Conteúdo idêntico ao que o restore produz — nenhuma versão escolhida à mão. Não há validação de lock na CI (nenhum --locked-mode), então isto era consistência, não build quebrado.

🤖 Generated with Claude Code

ProfitBridge Terminal Fixture and others added 6 commits August 26, 2026 20:49
…orktree

Sem consulta ao grafo nos últimos 30 min (mtime de graphify-out/cache/
last_query_stamp), o 1º Read/Grep/Glob — e Bash leitor — que alcança src/,
docs/surfaces/ ou docs/architecture/*.md é negado com a mensagem de triagem:
graphify para arquitetura, Serena para símbolo. Serena (mcp__serena__*) e
graphify query|path|explain nunca bloqueiam. Grep/Glob sem path contam como
raiz. O deny é stat/mtime puro no merge .py e não depende do binário.

Motivação medida: aviso no início da conversa não gruda (3/307 sessões);
o nudge do hook converteu 12% (30/241, 25-26/08); Serena estava em 1/502.

- pin do binário migra do script para ~/.config/profitbridge/graphify.pin
  (regravado pelo upgrade diário em ~/ops); pin quebrado avisa e o deny
  continua — nunca degrada em silêncio
- com carimbo fresco o nudge oficial é suprimido (anti-saturação)
- hooks/post-checkout: worktree nova recebe graph.json+manifest.json do
  checkout primário (sem cache/ — nasce sem carimbo de propósito) +
  graphify update em background + config Serena de
  serena-project-template.yml (csharp+typescript+python, triagem no
  initial_prompt, modos não-interativos)
- docs: AGENTS.md/CLAUDE.md/GRAPHIFY.md trocam a regra do "3º arquivo"
  pelo deny no 1º; incorpora docs/knowledge/SERENA.md e index.md do #855
  (supersede aquele PR) com a triagem e a isenção do Serena

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
O portão cobria só o Claude Code: Codex, Grok e Cursor liam src/ sem passar
por ele. O guard passa a falar os três dialetos de recusa — permissionDecision
(Claude Code), {"decision":"deny"} (Grok/Cursor) e exit 2 + stderr, que todos
honram — e classifica a chamada pelo FORMATO da entrada, não pelo nome da
ferramenta, que diverge entre agentes (Read/read_file, Bash/run_terminal_command).

Codex: mecanismo provado com hook: PreToolUse Blocked. Fica inerte até o dono
aprovar o hook uma vez; sem trusted_hash o Codex o ignora em silêncio, e o
doutor detecta exatamente esse estado. Grok: instalado, protocolo documentado,
NÃO verificado (a CLI não inicia neste host).

Adesão é versionar o guard, não usar graphify: qlmed/app usa graphify e segue
livre. O lançador em ~/ops não contém política — acha o repo e delega.

Serena continua disponível e nunca obrigatório, e agora é isento por nome: o
heurístico de varredura casava com find_symbol e bloqueava justamente a
ferramenta que esta política manda usar. Edit/Write também isentos, para a
política ser a mesma em todo agente.

graphify-serena-doctor.sh verifica pin, hooks, grafo, config do Serena em todos
os checkouts e a triagem nos documentos; --fix repara o reparável (encontrou e
consertou 4 defeitos reais na primeira execução) e reporta o que exige uma
pessoa. Cron diário 06:41.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…closed-profitbridge-f46f0c

# Conflicts:
#	docs/knowledge/GRAPHIFY.md
#	docs/knowledge/SERENA.md
#	scripts/dev/graphify-hook-guard-merge.py
O hook foi aprovado no codex interativo e a entrada pre_tool_use ficou gravada
no config.toml. Reteste sem --dangerously-bypass-hook-trust: hook: PreToolUse
Blocked, comando não executado. Doutor: 39 ok, 0 quebrados.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…closed-profitbridge-f46f0c

# Conflicts:
#	docs/knowledge/GRAPHIFY.md
O #825 subiu Roslynator 4.12.9→4.16.1 e SonarAnalyzer 10.4.0.108396→10.33.0.1635
no Directory.Packages.props e atualizou 19 dos 24 ficheiros de lock. Estes três
ficaram com as versões antigas, inconsistentes com o props já commitado — e
qualquer restore os regenerava, deixando o checkout compartilhado permanentemente
sujo e fazendo o cron de sincronização pular o pull a cada 30 minutos.

Conteúdo idêntico ao que o restore produz; nenhuma versão escolhida à mão.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@marceloterra1983
marceloterra1983 merged commit 8b2bab6 into main Aug 27, 2026
13 checks passed
@marceloterra1983
marceloterra1983 deleted the claude/graphify-fail-closed-profitbridge-f46f0c branch August 27, 2026 01:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant