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:
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user