Skip to content

fix: Chief gets a face, Hunt Plan speaks tribe, finish the #798 rename - #804

Merged
quadseven merged 1 commit into
mainfrom
fix/chief-face-hunt-plan-words-finish-rename
Jul 31, 2026
Merged

fix: Chief gets a face, Hunt Plan speaks tribe, finish the #798 rename#804
quadseven merged 1 commit into
mainfrom
fix/chief-face-hunt-plan-words-finish-rename

Conversation

@quadseven

Copy link
Copy Markdown
Owner

Size: S

Why

Three things visible in one screenshot of a grug email.

1. Chief had no face

Elder's inline review leads with its portrait. Chief's board section was the one
persona talking without one.

grug_chief.png verified live as a real image/png. Drum, Haunt, Totem and
Teller have no asset
- grug.lol returns the SPA index.html for those paths,
so a 200 there is not proof and an <img> would render a broken image rather
than a portrait. Chief only, until those assets exist.

2. #798 renamed the check titles and stopped there

Every renamed persona kept saying its old name in the one place a human reads it:

where was now
nudge.py body Grug Pulse see this PR sleep... Grug Drum beat for this PR
nudge.py summary Pulse nudge - PR quiet Drum nudge
sentinel x2 Grug Sentinel notice: Grug Haunt notice:
warder x3 Grug Warder count the marks Grug Totem count the marks

Markers and config keys deliberately unchanged. The nudge marker in particular
is how that module finds its own prior comments - renaming it would make it
blind to them and double-post. Display renames, key stays (ADR-0002).

3. The plan gate did not read the plan

check_scope_fence tested only that ## Out of scope existed. Paste the
template, leave it blank, gate passes.

That is the same "an unfilled template should NOT pass" defect already fixed for
bullets in #20 and enforced by check_why's word floor. Scope-fence was the one
check in the module still testing presence rather than content. An empty fence
is worse than no fence - it reads as the author having considered scope and
found nothing to exclude.

Non-empty is the whole bar, deliberately. A first attempt required 3+ words
and the existing suite rejected it: Deferred. and Not now. are real answers,
and a gate that demands padding gets padding.

Check rows also now read as tribe rather than jira:

| why hunt            | pass | ## Why has 5 words
| what good look like | pass | 3 bullets
| how big             | pass | Size: M
| where stop          | fail | ## Out of scope is empty - name what this does NOT touch
| which ticket        | warn | no `closes #N` link in body
| ticket done         | pass | no linked issues

Display only. CheckResult.name is load-bearing - _ADVISORY_CHECKS keys
off it to decide blocking-vs-warn, and Chief's issue-time remedy text keys off
it too. Renaming the values would silently make issue-link blocking. Pinned by
a test.

Acceptance criteria

  • Chief's advisory carries a portrait, verified as a real image not an SPA fallback
  • No persona speaks a retired name in user-facing text
  • Markers and config keys unchanged, so no double-posting
  • An empty ## Out of scope fails the gate
  • A terse but real fence (Deferred.) still passes
  • Check rows show caveman labels while keys stay machine-readable
  • The advisory/blocking split still keys off the real name
  • Every check has a display name, so none renders as a bare key

Out of scope

  • Portraits for Drum, Haunt, Totem and Teller. The assets do not exist; adding
    <img> tags would render broken images. Worth doing when the art exists.
  • Renaming the pulse/warder/sentinel module directories and config keys.
    Those are historical keys per ADR-0002 and changing them is a migration, not a
    rename.
  • Raising ## Why's 5-word floor, or any other threshold. Only the empty-section
    hole is closed here.

Verification

  • 1840 passed, 2 skipped
  • Hunt Plan table and Chief advisory both rendered and inspected by hand
  • Portrait URLs probed for content-type, not just status code

Part of #791.

Three things the operator spotted in one screenshot.

1. CHIEF HAD NO PORTRAIT. Elder's inline review leads with its face;
   Chief's board section was the one persona talking without one.
   grug_chief.png verified live as a real image/png. Drum/Haunt/Totem/
   Teller have NO asset - grug.lol returns the SPA index.html for those
   paths, so an <img> would render broken, not a portrait. Chief only.

2. #798 RENAMED THE CHECK TITLES AND STOPPED. Every persona kept saying
   its old name in the one place a human reads it:
     nudge.py       'Grug Pulse see this PR sleep...'  -> Grug Drum
     nudge.py       summary 'Pulse nudge - PR quiet'   -> Drum nudge
     sentinel x2    'Grug Sentinel notice: ...'        -> Grug Haunt
     warder   x3    'Grug Warder count the marks'      -> Grug Totem
   Markers and config keys deliberately unchanged - the nudge marker in
   particular is how the module finds its own prior comments, and
   renaming it would double-post. Display renames, key stays (ADR-0002).

3. THE PLAN GATE DID NOT READ THE PLAN. check_scope_fence tested only
   that '## Out of scope' EXISTED, so pasting the template and leaving
   it blank passed - the same 'unfilled template should NOT pass' defect
   already fixed for bullets in #20 and enforced by check_why's word
   floor. Scope-fence was the one check still testing presence.

   NON-EMPTY is the whole bar. A first pass required 3+ words and the
   existing suite rejected it: 'Deferred.' and 'Not now.' are real
   answers, and a gate that demands padding gets padding.

   Check rows also now read as tribe rather than jira - why hunt / what
   good look like / how big / where stop / which ticket / ticket done.
   DISPLAY only: CheckResult.name is load-bearing (_ADVISORY_CHECKS keys
   off it to decide blocking-vs-warn, and the issue-time remedy text
   keys off it), so renaming the values would silently make issue-link
   blocking. Pinned by a test.

Claude-Session: https://claude.ai/code/session_01Weq76G5TQhR9ogo4zCK1Gd
@quadseven
quadseven merged commit 5e7b8ad into main Jul 31, 2026
18 checks passed
@quadseven
quadseven deleted the fix/chief-face-hunt-plan-words-finish-rename branch July 31, 2026 03:26
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