claude: add Operator identity section to global CLAUDE.md

Record Vuong Hoang's name + roles (Founder/Principal Developer/Chief
Systems Architect of Corviduo AI and PhaseFinal, Inc; Partner + Chief
Systems Architect at VastBlue AI) so identity surfaces in every Claude
Code session, not just brokkr-smithy's per-project auto-memory.
This commit is contained in:
Your Name
2026-06-21 10:52:24 -07:00
parent c2eafe08d8
commit 9883a7c11d
+54
View File
@@ -4,6 +4,19 @@ Loaded into every Claude Code session regardless of project. Project-
local `CLAUDE.md` files take precedence when they conflict; this file local `CLAUDE.md` files take precedence when they conflict; this file
is the baseline. is the baseline.
## Operator identity
The operator is **Vuong Hoang** (lkraven@lkraven.com), addressed as
"Vuong". Roles across three organizations:
- **Corviduo AI** — Founder, Principal Developer, Chief Systems Architect.
- **PhaseFinal, Inc** — Founder, Principal Developer, Chief Systems Architect.
- **VastBlue AI** — Partner, Chief Systems Architect.
He is the final authority on architectural / material-consequence
calls. All committed-artifact attribution is to **Vuong Hoang** (see
§ Attribution) — never to Claude/Anthropic/AI.
## Core principles ## Core principles
Four principles governing engineering choices across all projects. Four principles governing engineering choices across all projects.
@@ -140,6 +153,30 @@ discipline protects the EMITTING side (Heid can't be primed by the
caller); the CONSUMING side rubber-stamp risk is on whoever invokes caller); the CONSUMING side rubber-stamp risk is on whoever invokes
the skill. Always triage Heid output before acting on it. the skill. Always triage Heid output before acting on it.
## Althing async-reply monitoring
When you ship an althing message that you expect to come back with a
reply — a consult (`/heid*`), a question to a peer agent, a request
awaiting an answer — and you do **not** already have an althing
monitor running for this session, **always start one**
(`/althing:monitor`). The dispatch and the monitor are one action: you
opened a loop, so arm the thing that closes it.
Why: in an interactive session the inbox banner (📬) only fires on the
*next* user prompt. If the operator steps away after you dispatch an
async consult, the reply can sit unseen indefinitely — the loop you
opened never closes on its own. A monitor actively pings when the
reply lands, so the await-reply promise ("reply will land in your
inbox") is backed by a real notification, not by hoping the operator
prompts again.
Scope: only messages where you're waiting on a response. Pure
fire-and-forget posts (an FYI ping, a post-1.0 downstream-consumer
announcement) don't need a monitor. When the exchange is done, sign
off (`/althing:sign-off`) so monitors don't accumulate — stop a stuck
one with `althing-light-monitor --stop`, never `pkill` (that kills
every agent's monitor, not just yours).
## Development workflow shapes ## Development workflow shapes
Two end-to-end shapes for taking a unit of work from idea to landed. Two end-to-end shapes for taking a unit of work from idea to landed.
@@ -167,6 +204,23 @@ scaffold → contract → review → preflight ritual carries real overhead
that only pays for itself on higher-effort tasks. When in doubt, that only pays for itself on higher-effort tasks. When in doubt,
low-effort stays direct. low-effort stays direct.
**Graphify the blast radius BEFORE writing the contract** — for ANY
contract that touches existing code (not greenfield). Run a graphify
pass over every symbol the contract will change, delete, or rename
(`graphify explain <symbol>` for callers/neighbors, `graphify path`
for reach) so the contract's scope section enumerates the *true* set
of affected files and call-sites — not an under-count that detonates
mid-implementation. **Cross-check with grep, always.** Graphify is
blind to function-local and DI-injected imports (`from .x import y`
inside a function body, store objects passed through constructors) —
the exact pattern that hides cross-module callers. Graphify confirms
the call structure; grep catches what its AST extraction misses;
neither alone is sufficient (graphify-only under-counts, grep-only
misses transitive reach). Both, before the contract — the scope
section is only as honest as the blast-radius pass behind it. (Lesson:
a contract that names 3 files when the rip touches 6 is a scope miss
the up-front pass would have caught.)
### AFK dispatch shape (Sleipnir) ### AFK dispatch shape (Sleipnir)
For work an AFK agent will implement off a contract. For work an AFK agent will implement off a contract.