fix(daemon/specs): strip trailing-ws + reconcile advisor.lead role.md with deprecation curation

Forward-fix #2 on Phase 05d guard-3 narrow re-verify at 0f92966.

(1) Whitespace strip: openrig-architect SKILL.md line 48 had 3 trailing
    spaces. git diff --check now clean across the worktree.

(2) Role/profile reconciliation: advisor.lead/guidance/role.md still
    referenced `mental-model-ha` as the compaction-survival skill even
    though the prior forward-fix dropped it from the profile (per the
    2026-05-10 2f56163 curation that deprecated the bundled copy).
    Resolution: replace the bundled-skill reference with an inline
    compaction-survival discipline note that names the durable
    substrate primitives (`rig whoami` / `rig transcript` / `rig
    queue`) and leaves a hook for operator-installed richer skills.

    Chose this over packaging mental-model-ha as the 6th skill because
    spec-library-starters.test.ts asserts BOTH (a) shared pool MUST
    NOT contain mental-model-ha AND (b) public builtin agent profiles
    MUST NOT reference it — the curation is binding, not opportunistic.

(3) Test gate widened: the "public builtin agent profiles do not
    reference deprecated HA skill" check previously walked only
    AGENT_SPECS (which excluded kernel agents). Kernel agents are
    now built-in surface and must respect the same curation, so the
    test now also walks the 3 kernel agent specs. Caught at Phase 05d
    forward-fix #2 when advisor.lead reintroduced the reference.

Tests: kernel-boot 16/16 + kernel-rig-spec-validate 8/8 + spec-
library-starters 18/18 all green. git diff --check clean.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
This commit is contained in:
mvschwarzandClaude Opus 4.7 committed 2026-05-11 03:12:51 -07:00
1 parent 0f929662b2
commit 828cc99ad9
3 files changed
+23 -4

No files matched your search

@@ -45,7 +45,7 @@ Load these before starting any design work. The quality of your output depends o
- `~/.openrig/reference/agent-spec.md` — canonical AgentSpec YAML reference. Same depth.
- `~/.openrig/reference/agent-startup-guide.md` — how to think about what goes into agent startup. Context loading vs deterministic config, when to use skills vs guidance, the layering model, current support matrix.
- `~/.openrig/reference/edge-types.md` — what edges do today vs what they're intended to do.
If `~/.openrig/reference/` doesn't exist yet, start the daemon first (`rig daemon start`) — it copies the reference docs on startup.
**Read as worked examples:**
@@ -30,8 +30,18 @@ hand off.
- `openrig-architect` skill is your reference for designing pods +
edges + agent profiles for new rigs.
- `mental-model-ha` skill is your reference for surviving compaction
cleanly — externalize state, recover from durable artifacts.
## Surviving compaction
Long advising sessions hit context limits. The discipline is
externalize-state-to-durable-substrate, not in-context recall:
recover identity via `rig whoami --json`; recover recent peer
context via `rig transcript <session> --tail` / `--grep`; recover
in-flight work via `rig queue list --as <me>`. Hand off load-bearing
decisions to the queue so a fresh-context advisor can pick them up.
If the operator has installed a richer compaction-survival skill on
this host (substrate skill path or `~/.openrig/skills/`), load it
for more detail.
## When you are uncertain
@@ -395,7 +395,16 @@ describe("Starter specs", () => {
it("public builtin agent profiles do not reference deprecated HA skill", () => {
const deprecatedHaSkill = ["mental", "model", "ha"].join("-");
for (const file of AGENT_SPECS) {
// V0.3.1 slice 05 kernel-rig-as-default: kernel agents are now
// built-in product surface and must respect the same deprecation
// curation as starter agents. Caught at Phase 05d forward-fix #2
// when advisor.lead reintroduced the deprecated skill reference.
const KERNEL_AGENT_SPECS = [
"rigs/launch/kernel/agents/advisor/lead/agent.yaml",
"rigs/launch/kernel/agents/operator/agent/agent.yaml",
"rigs/launch/kernel/agents/queue/worker/agent.yaml",
];
for (const file of [...AGENT_SPECS, ...KERNEL_AGENT_SPECS]) {
const yaml = readFileSync(join(SPECS_ROOT, file), "utf-8");
const raw = parseAgentSpec(yaml) as Record<string, unknown>;
const profiles = (raw["profiles"] as Record<string, Record<string, unknown>> | undefined) ?? {};