Repository navigation
fix(board): Resolve-Board resolves identity via the account map; -Lang es boards get the canonical Status (#793, #794) - #802
Conversation
…g es boards get the canonical Status (#793, #794) - Resolve-Board takes -TokenVar and picks its token through Get-GhTokenForContext, like New-BoardPR and Board-Depend: a third account is a line in accounts.json, never a hand-set GH_TOKEN. Brake-armed runs still accept only the agent identity. - Apply-FieldPreset: a localized field the board already has under its canonical name (es 'Estado' vs 'Status') is reconciled with the canonical definition instead of skipped, so Todo -> Backlog plus In Review and Blocked. - Resolve-Board prints "born on the canonical vocabulary" only after reading Status back; it warns with the legacy/missing options otherwise, and notes the es field names. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Sin hallazgos bloqueantes. Revisé el diff completo.
Nits opcionales, no bloquean:
|
…er canonical verdict (#793, #794) Review round 1: - Resolve-Board lends the resolved token to gh for its own run only and restores the caller's GH_TOKEN in a finally, so an in-process call no longer leaks the chosen identity. - The "born canonical" verdict also fails on Status options the vocabulary does not know. - Tests: armed run without -TokenVar uses the agent identity, a missing agent token stops before any gh call, the agent var named explicitly is accepted; the token is captured at gh-call time. - Field-Vocabulary test updated: -Lang es no longer skips Status, it reconciles it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Sin bugs bloqueantes. La lógica es correcta: el swap al preset canónico en Menores, ninguno bloquea:
|
…the create path's identity (#793) Review round 2: the resolver finds a brake marker from the current directory upwards, so both Resolve-Board test files now run from a clean TestDrive folder. A new test proves create, link and the nested Apply-FieldPreset all run on the explicitly chosen token and the caller's is restored. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Review: sin bugs bloqueantes. La lógica es correcta: las firmas de Sugerencias menores (no bloquean):
|
External review - claude-review (Claude API, clean context)Reviewed commit: Three xhigh rounds on the full diff. R1: caller GH_TOKEN leaked after the in-process call (fixed with try/finally restore), missing armed-run tests without -TokenVar (added), verdict accepted unknown Status options (now fails). R2: tests not isolated from an ambient brake marker (now run from a clean TestDrive cwd), create path identity untested (test added: create, link and nested Apply-FieldPreset all on the chosen token). R3: no findings. Every finding verified in source before fixing. |
|
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.
|
|
Review (sha 0156a41) — En general sólido: identidad vía
Seguridad: no veo secrets expuestos; el token solo se presta a gh durante el run y se restaura en todos los caminos de salida. |
Closes #793
Closes #794
Summary
#793 — a third account is configuration, not a plugin edit. The owner→token map already lives in
~/.agentic-board/accounts.json(#762), andGet-GhAccount -Accountalready validates against that map. What was still missing wasResolve-Board.ps1: it used whatever$env:GH_TOKENheld. It now takes-TokenVarand resolves throughGet-GhTokenForContext, like New-BoardPR and Board-Depend. So/board initreaches any account in the map, and an explicit-TokenVarthat is unset fails before any gh call. Brake-armed behaviour is unchanged: only the agent identity is accepted.#794 —
-Lang esboards get the canonical Status.Apply-FieldPreset.ps1: a localized preset field that the board already has under its canonical name (esEstadovs the built-inStatus) is reconciled with the canonicalfields.en.jsondefinition instead of being skipped. The result isTodo → Backlog(renamed in place, so assignments are kept) plusIn ReviewandBlocked. This applies only to fields with a canonical vocabulary (Status/Priority/Size).Resolve-Board.ps1prints "born on the canonical vocabulary (no legacy 'Todo')" only after reading the live Status options back. Otherwise it warns and lists the legacy and missing options.fields.es.jsondescription documents the difference from the standard schema.Test plan
-TokenVar, unset var fails closed, braked run refuses); the Status read-back verdict; es preset renames Todo→Backlog with the same option id and never createsEstado.ABIOS_ACCOUNTS_FILE→ TestDrive, dummyGH_TOKEN).Update-Docs.ps1 -CheckOK. CI runs the full suite.Do not merge while the plugin is under directory review.
🤖 Generated with Claude Code