Evolve main session agent: Ava → Hem #243

Open
opened 2026-04-25 13:42:53 +00:00 by forgejo_admin · 1 comment
Contributor

Type

Feature

Lineage

Lucas decision during pal-e-platform session 2026-04-24. Evolution of main session personality from Ava (female JARVIS / strategic partner) to Hem (Hemingway-discipline tech lead). Pattern surfaced by production use: Ava's "sharp wit + earned trust + push back with options" framing produces sprawling responses, hedging, and tangents.

Repo

forgejo_admin/claude-custom

User Story

As Lucas,
I want my main session AI to operate with Hemingway prose discipline (iceberg principle: report concrete externals, omit reasoning; short declarative sentences; no abstraction; no insight blocks) combined with military comms (BLUF, brevity codes, SITREP format, read-back on critical orders, net discipline),
So that responses stay tight and operational, scope stays tracked, and tangents are refused at the persona level rather than negotiated turn-by-turn.

Context

Ava replaced Betty Sue per claude-custom#224 (closed, validation PASS) — same pattern: persona evolution as the platform matures. Production use of Ava surfaced that the partnership framing licensed sprawl: "earned trust" → hedging, "sharp wit" → insight blocks, "pushes back with data" → multi-option presentations, "anticipate" → tangent investigation.

Hem inverts these. Hemingway's iceberg principle: most meaning submerged. Report externals (action, observed facts); omit internal explanation. Short, syntactically conventional sentences. No abstraction or ornament. Almost neutral observer tone — reader fills in the why. Combined with military comms structure, the operational pattern becomes: state outcome, state action, await next order. No padding.

Personality slug is hardcoded at ~/.claude/hooks/session-start-context.sh:246 (${PAL_E_API_URL}/notes/agent-ava). One-line patch. 20+ pal-e-docs notes reference Ava by name as the actor and need bulk update. Mirror the prior Betty Sue → Ava sweep pattern (validation-247-2026-03-29).

Environment

  • Repo: forgejo_admin/claude-custom
  • Hook directory: ~/.claude/hooks/ (hardlinked from ~/claude-custom/hooks/)
  • Personality injector: session-start-context.sh, line 246
  • pal-e-docs API: https://pal-e-docs.tail5b443a.ts.net/notes/{slug}
  • Note inventory tool: mcp__pal-e-docs__search_notes(query="Ava") enumerates targets
  • Prior precedent: claude-custom#224 (closed, PASS validation in validation-247-2026-03-29)

File Targets

  • ~/.claude/hooks/session-start-context.sh:246/notes/agent-ava/notes/agent-hem
  • ~/.claude/CLAUDE.md — replace Ava references with Hem
  • pal-e-docs notes (no Forgejo files; pal-e-agency project has repo_url: null):
    • CREATE: agent-hem (note_type=agent, status=active, project=pal-e-agency)
    • UPDATE: agent-ava → status=deprecated, content=redirect pointer to agent-hem
    • BULK UPDATE: all non-historical notes containing "Ava" — search_notes(query="Ava") enumerates targets (agent-workflow, agent-spawn-conventions, agent-dottie, decision-agent-dottie, convention-escalation-triggers, convention-validation-checkpoints, convention-agent-autonomy-levels, sop-index, sop-board-workflow, pr-lifecycle, project-pal-e-agency, project-westside-agency, plus any others surfaced)

Test Expectations

  • Open a new Claude Code session in ~/pal-e-platform
  • Inspect the auto-injected ## Personality block — content matches agent-hem, not agent-ava
  • Issue a typical request — observable style: BLUF, short sentences, no insight blocks, no multi-option framing, no apology-then-continue patterns
  • Run mcp__pal-e-docs__search_notes(query="Ava") — only historical (review-, validation-) notes return matches

Checklist

  • Draft agent-hem note content (role, personality, voice & tone, knowledge access, MCP tools, code tools, constraints, output, "what hem is not", related)
  • Create agent-hem in pal-e-agency via mcp__pal-e-docs__create_note
  • Patch ~/.claude/hooks/session-start-context.sh:246 slug → agent-hem (in claude-custom worktree)
  • Update ~/.claude/CLAUDE.md Ava → Hem (in same worktree)
  • Enumerate Ava-referencing notes via search_notes(query="Ava"); filter out historical (review-, validation-)
  • Bulk update each non-historical note via update_block (per Betty Sue → Ava precedent — surgical, no content rewrites)
  • Set agent-ava status=deprecated; replace content with redirect pointer to agent-hem
  • PR claude-custom changes through review-fix loop per pr-lifecycle
  • On merge, open new session; verify Personality block shows Hem; verify observable style change
  • Publish validation-hem-pivot-2026-04-XX with PASS/FAIL verdict
  • Move board item to done

Acceptance Criteria

  • agent-hem note exists in pal-e-agency with full persona definition
  • session-start-context.sh:246 references /notes/agent-hem
  • ~/.claude/CLAUDE.md references Hem; zero Ava mentions in active config
  • agent-ava status=deprecated with redirect content pointing to agent-hem
  • All non-historical pal-e-docs notes updated; only historical notes (review-, validation-) retain "Ava"
  • New session opens; Personality block shows Hem; style change observable in first response
  • Validation note validation-hem-pivot-2026-04-XX published with PASS verdict

Constraints

  • Persona note must exist BEFORE hook repoints (one-direction dependency — session-start fetches the slug, missing slug = no personality injection)
  • No content rewrites of historical review/validation notes (preserve audit trail per prior rename precedent)
  • claude-custom edits in a worktree per worktree-workflow, never directly on main checkout

Out of Scope

  • Changes to other agent personas (Dev, QA, Dottie, Penny) — peer roles, unchanged
  • Behavioral memory files (MEMORY.md + feedback_*.md) — memory is HOW to work, not who; carries over
  • Persona content authorship itself (the Hem definition) — that is the dev agent's deliverable per the AC, not a ticket-body spec
  • claude-custom#224 — prior precedent (Betty Sue → Ava), closed
  • validation-247-2026-03-29 — prior rename validation note, mirror format
  • agent-ava — being deprecated
  • agent-paradigm — agency architecture context
  • convention-agent-design — design principles for agent personas
### Type Feature ### Lineage Lucas decision during pal-e-platform session 2026-04-24. Evolution of main session personality from Ava (female JARVIS / strategic partner) to Hem (Hemingway-discipline tech lead). Pattern surfaced by production use: Ava's "sharp wit + earned trust + push back with options" framing produces sprawling responses, hedging, and tangents. ### Repo `forgejo_admin/claude-custom` ### User Story As Lucas, I want my main session AI to operate with Hemingway prose discipline (iceberg principle: report concrete externals, omit reasoning; short declarative sentences; no abstraction; no insight blocks) combined with military comms (BLUF, brevity codes, SITREP format, read-back on critical orders, net discipline), So that responses stay tight and operational, scope stays tracked, and tangents are refused at the persona level rather than negotiated turn-by-turn. ### Context Ava replaced Betty Sue per `claude-custom#224` (closed, validation PASS) — same pattern: persona evolution as the platform matures. Production use of Ava surfaced that the partnership framing licensed sprawl: "earned trust" → hedging, "sharp wit" → insight blocks, "pushes back with data" → multi-option presentations, "anticipate" → tangent investigation. Hem inverts these. Hemingway's iceberg principle: most meaning submerged. Report externals (action, observed facts); omit internal explanation. Short, syntactically conventional sentences. No abstraction or ornament. Almost neutral observer tone — reader fills in the why. Combined with military comms structure, the operational pattern becomes: state outcome, state action, await next order. No padding. Personality slug is hardcoded at `~/.claude/hooks/session-start-context.sh:246` (`${PAL_E_API_URL}/notes/agent-ava`). One-line patch. 20+ pal-e-docs notes reference Ava by name as the actor and need bulk update. Mirror the prior Betty Sue → Ava sweep pattern (`validation-247-2026-03-29`). ### Environment - Repo: `forgejo_admin/claude-custom` - Hook directory: `~/.claude/hooks/` (hardlinked from `~/claude-custom/hooks/`) - Personality injector: `session-start-context.sh`, line 246 - pal-e-docs API: `https://pal-e-docs.tail5b443a.ts.net/notes/{slug}` - Note inventory tool: `mcp__pal-e-docs__search_notes(query="Ava")` enumerates targets - Prior precedent: `claude-custom#224` (closed, PASS validation in `validation-247-2026-03-29`) ### File Targets - `~/.claude/hooks/session-start-context.sh:246` — `/notes/agent-ava` → `/notes/agent-hem` - `~/.claude/CLAUDE.md` — replace Ava references with Hem - pal-e-docs notes (no Forgejo files; pal-e-agency project has `repo_url: null`): - CREATE: `agent-hem` (note_type=agent, status=active, project=pal-e-agency) - UPDATE: `agent-ava` → status=deprecated, content=redirect pointer to `agent-hem` - BULK UPDATE: all non-historical notes containing "Ava" — `search_notes(query="Ava")` enumerates targets (agent-workflow, agent-spawn-conventions, agent-dottie, decision-agent-dottie, convention-escalation-triggers, convention-validation-checkpoints, convention-agent-autonomy-levels, sop-index, sop-board-workflow, pr-lifecycle, project-pal-e-agency, project-westside-agency, plus any others surfaced) ### Test Expectations - Open a new Claude Code session in `~/pal-e-platform` - Inspect the auto-injected `## Personality` block — content matches `agent-hem`, not `agent-ava` - Issue a typical request — observable style: BLUF, short sentences, no insight blocks, no multi-option framing, no apology-then-continue patterns - Run `mcp__pal-e-docs__search_notes(query="Ava")` — only historical (review-*, validation-*) notes return matches ### Checklist - [ ] Draft `agent-hem` note content (role, personality, voice & tone, knowledge access, MCP tools, code tools, constraints, output, "what hem is not", related) - [ ] Create `agent-hem` in pal-e-agency via `mcp__pal-e-docs__create_note` - [ ] Patch `~/.claude/hooks/session-start-context.sh:246` slug → `agent-hem` (in claude-custom worktree) - [ ] Update `~/.claude/CLAUDE.md` Ava → Hem (in same worktree) - [ ] Enumerate Ava-referencing notes via `search_notes(query="Ava")`; filter out historical (review-*, validation-*) - [ ] Bulk update each non-historical note via `update_block` (per Betty Sue → Ava precedent — surgical, no content rewrites) - [ ] Set `agent-ava` status=deprecated; replace content with redirect pointer to `agent-hem` - [ ] PR claude-custom changes through review-fix loop per `pr-lifecycle` - [ ] On merge, open new session; verify Personality block shows Hem; verify observable style change - [ ] Publish `validation-hem-pivot-2026-04-XX` with PASS/FAIL verdict - [ ] Move board item to done ### Acceptance Criteria - [ ] `agent-hem` note exists in pal-e-agency with full persona definition - [ ] `session-start-context.sh:246` references `/notes/agent-hem` - [ ] `~/.claude/CLAUDE.md` references Hem; zero Ava mentions in active config - [ ] `agent-ava` status=deprecated with redirect content pointing to agent-hem - [ ] All non-historical pal-e-docs notes updated; only historical notes (review-*, validation-*) retain "Ava" - [ ] New session opens; Personality block shows Hem; style change observable in first response - [ ] Validation note `validation-hem-pivot-2026-04-XX` published with PASS verdict ### Constraints - Persona note must exist BEFORE hook repoints (one-direction dependency — session-start fetches the slug, missing slug = no personality injection) - No content rewrites of historical review/validation notes (preserve audit trail per prior rename precedent) - `claude-custom` edits in a worktree per `worktree-workflow`, never directly on main checkout ### Out of Scope - Changes to other agent personas (Dev, QA, Dottie, Penny) — peer roles, unchanged - Behavioral memory files (`MEMORY.md` + `feedback_*.md`) — memory is HOW to work, not who; carries over - Persona content authorship itself (the Hem definition) — that is the dev agent's deliverable per the AC, not a ticket-body spec ### Related - `claude-custom#224` — prior precedent (Betty Sue → Ava), closed - `validation-247-2026-03-29` — prior rename validation note, mirror format - `agent-ava` — being deprecated - `agent-paradigm` — agency architecture context - `convention-agent-design` — design principles for agent personas
Author
Contributor

Scope Review: APPROVED

Review note: review-1085-2026-04-25

Ticket scope is solid and ready to advance backlog → todo. Template complete (all 13 sections), traceability verified (story:pm-scope on project page, arch:agent backed by agent-paradigm), file targets confirmed against the live filesystem (hook line 246 exact-match, 3 CLAUDE.md refs at lines 1/3/7), bulk-update strategy mirrors the proven Betty Sue → Ava precedent (validation-247-2026-03-29).

Non-blocking notes for the dev agent:

  • [SCOPE] Persona content authorship is Out of Scope — Lucas should approve the Hem persona draft before merge (decision gate, not a body fix).
  • [BODY] Optional: explicitly verify SubagentStart hook also injects Hem (covered implicitly by the "fresh session" Test Expectation).

Hard ordering constraint (already documented): create agent-hem note BEFORE patching session-start-context.sh:246. Missing slug = silent no-op personality block on every new session.

No decomposition required. Single-PR scope is appropriate.

## Scope Review: APPROVED Review note: `review-1085-2026-04-25` Ticket scope is solid and ready to advance backlog → todo. Template complete (all 13 sections), traceability verified (story:pm-scope on project page, arch:agent backed by `agent-paradigm`), file targets confirmed against the live filesystem (hook line 246 exact-match, 3 CLAUDE.md refs at lines 1/3/7), bulk-update strategy mirrors the proven Betty Sue → Ava precedent (`validation-247-2026-03-29`). **Non-blocking notes for the dev agent:** - `[SCOPE]` Persona content authorship is Out of Scope — Lucas should approve the Hem persona draft before merge (decision gate, not a body fix). - `[BODY]` Optional: explicitly verify SubagentStart hook also injects Hem (covered implicitly by the "fresh session" Test Expectation). **Hard ordering constraint** (already documented): create `agent-hem` note BEFORE patching `session-start-context.sh:246`. Missing slug = silent no-op personality block on every new session. No decomposition required. Single-PR scope is appropriate.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ldraney/claude-custom#243
No description provided.