Repository navigation
/board work step 5d/5e: let a repo-declared expert merge instead of always asking the user to confirm - #804
Conversation
…#797) Board-Work.ps1 -MergeAuthority show|expert|user|auto reads or records who decides the merge. Detection is deterministic and file-only: config mergeAuthority, or an approved FICHA.md plus .claude/agents/experto.md. Repos that declare nothing keep the user confirmation flow; the review gate always runs. A declared expert also makes grouped PRs the default, while a recorded preferGroupedPRs still wins. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Review PR #804 (merge authority por experto, #797) El diseño es claro y la detección es determinista, con buenos fallbacks (draft de FICHA, experto ausente, valor ilegible). Hallazgos:
Tests: la cobertura de la unidad es buena (en lo que se ve), pero falta el caso del punto 1 (la autoridad no debe cambiar por archivos que añade el propio PR). |
… repos (#797) An unreadable config.json or an unrecognised mergeAuthority value now reads as user instead of deferring to the files. -PreferGroupedPRs auto records the word in a repo that declares an expert, so it beats the expert default. The FICHA approval regex accepts underscore emphasis, and the step-5d doc test is anchored on the step-5d block. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Review PR #804 (merge authority / experto) 🔴 Seguridad: el PR puede autoconcederse el derecho a mergear. 🟡 Aprobación débil. Cualquier línea 🟡 Condiciones del merge solo en prosa. Las condiciones de 🟢 Menores
Lo demás (fail-closed ante valores ilegibles, read-back tras escribir, cobertura de detección) está bien resuelto. |
…797) At step 5d the checkout is the PR under review, so a PR that adds an approved FICHA.md, loosens experto.md or writes mergeAuthority=expert could grant itself the merge. Get-MergeAuthority -GitRef reads the declaration as committed on the default branch; opt-outs still count from anywhere. The unreadable-config e2e test now uses content that carries no opt-out. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Review (revisión estática del diff; no ejecuté los tests): no encontré bugs bloqueantes.
|
…797) The contract now loads experto.md and FICHA.md from the same ref as the grant, and a PR touching the rules of the merge is always propose. An empty experto.md is no expert in either read mode, and an unparseable committed config.json gets its own warning. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Review (sha 97cdb98) Sin bloqueantes. El diseño falla cerrado (valor ilegible, config sin parsear o ref sin resolver dan Observaciones menores, no bloqueantes:
|
A committed mergeAuthority array no longer unrolls into a grant or into "nothing declared". A repo that declares nothing gets the plain default even when its default branch cannot be resolved. New e2e tests prove Board-Work reads the declaration from the default branch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Review PR #804 (merge authority / experto) Diseño sólido: falla cerrado, el grant se lee de la rama por defecto (no del PR), los opt-outs cuentan desde cualquier fuente, y hay read-back al escribir config. No encontré bugs bloqueantes. Observaciones menores:
Por lo demás, OK para mergear tras considerar el punto 1. |
…onsistency (#797) The FICHA approval regex no longer crosses a newline, so a blank Aprobada field followed by a dated line stays a draft. A lone FICHA.md or experto.md gets no warning when the default branch cannot be resolved, local opt-outs are reported before the ref is touched, and warnings name the right source. The contract says to fetch first and drops its remaining always-confirm absolutes. Tests cover multi-line files on the ref, origin/HEAD pointing at master, lone FICHA silence, and reset LASTEXITCODE before each e2e run. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Review (sha 320aadc): sin bloqueantes. Leí el diff de los scripts, el contrato y la cabecera de los tests. No ejecuté la suite. Lo bueno: falla cerrado (valores ilegibles, arrays y config sin parsear dan Observaciones menores, no bloqueantes:
|
AllowUnreviewed under an expert is propose, the judge receives the default-branch definition and FICHA directly, the pre-expert auto caveat is stated in step 5, and a missing origin/HEAD has a remedy. Tests pin lone experto.md silence, an unparseable committed config's warning, and the posture wiring. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Sin hallazgos bloqueantes. La resolución falla cerrada (opt-outs desde cualquier fuente, el grant solo desde la rama por defecto, lectura de config no parseable → Nota menor (no bloqueante): |
#797) A committed config.json whose root is an array no longer unrolls into a grant. An empty experto.md is named as empty on both routes, the local-only warning no longer rides on a files grant, and both read modes treat an empty file the same. show prints the plan line only when a FICHA exists. The contract treats a failed fetch as user and re-checks after every fix loop. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Sin hallazgos: la autoridad de merge falla cerrada (config ilegible, valores no reconocidos, arrays raíz y ref no resoluble resuelven a |
External review - claude-review (Claude API, clean context)Reviewed commit: 8 rounds at xhigh effort, split per file once the diff outgrew one call. Real defects found and fixed: fail-open on unreadable/garbage/array config; the grant, the expert and FICHA were read from the PR checkout (now the default branch; a PR touching the merge rules is always propose); a FICHA approval regex that crossed newlines; empty experto.md; misleading warnings; doc absolutes; test gaps. Round 8: all four parts patch is correct, zero findings. |
|
On hold: waiting for the Anthropic plugin directory review. Do not merge yet. The agentic-board plugin is in its first review in the Anthropic plugin directory, and the directory tracks Batch waiting together: #799, #800, #801, #802, #803, #804.
|
|
Revisión del PR #804 (sha 7870bd3): sin hallazgos bloqueantes.
Nit menor (opcional): en |
Closes #797