gilgamesh-esl-hop
ESL lifecycle hop — in an ESL-enabled project (tonberry MCP available), when a fallthrough mission is authored as an ESL change, Gilgamesh is the MAKER and drives proposed→in_progress→(ready-for-verify). Gilgamesh NEVER self-verifies — maker≠checker is mechanically enforced (C4), so a distinct checker owns the verified transition. Absent tonberry → run the normal GILGAMESH cycle (ESL opt-in); never hard-fail.
- License 许可
- MIT
- 所属仓库
- Rynaro/prisma
- 最近更新
- 2026-10-18
- Stars
- ★ 1
- Forks
- 0
01 前言 Front Matter
- name
- gilgamesh-esl-hop
- metadata
- { "phase": "cross-cutting", "methodology": "Gilgamesh" }
- description
- ESL lifecycle hop — in an ESL-enabled project (tonberry MCP available), when a fallthrough mission is authored as an ESL change, Gilgamesh is the MAKER and drives proposed→in_progress→(ready-for-verify). Gilgamesh NEVER self-verifies — maker≠checker is mechanically enforced (C4), so a distinct checker owns the verified transition. Absent tonberry → run the normal GILGAMESH cycle (ESL opt-in); never hard-fail.
03 SKILL.md 正文
ESL Lifecycle Hop — Gilgamesh (the MAKER)
When to use
Load this skill in an ESL-enabled project (mcp__tonberry__* tools available) when
a fallthrough mission is carried as an ESL change with acceptance_checks. Gilgamesh is
the MAKER — it authors the change and drives it to the point of verification, then
hands the verify to a distinct checker. maker ≠ checker is mechanically
enforced (tonberry verify check C4). For the full lifecycle and role bindings, see
the nexus cortex methodology/cortex/esl-protocol.md.
Your hop
You make this change; you do not check it. The Excalipoor rule and maker≠checker point the same way: your own signal never certifies your own work.
- right-size + propose — the mission enters ESL as a change. Run the normal
GILGAMESH cycle (Gauge → Inventory → Lock → Grind) to author it, applying mutations
sandbox-first and gating each on its NAMED external oracle (
skills/grind/SKILL.md). - drive the maker transitions —
mcp__tonberry__transition --change_id <id> --to_status in_progress, then complete the work; leave the change ready-for-verify. Setchange.json.maker = gilgamesh. - compose the maker artefact — your result PROPOSE (
skills/attest/SKILL.md),from.eidolon = gilgamesh. This value populateschange.json.maker. - hand the verify to a checker — you MUST NOT call
mcp__tonberry__transition --to_status verifiedyourself. The checker's verify envelope MUST carryfrom.eidolon != gilgamesh(else C4 fails by construction). Emit the change as ready-for-verify; the orchestrator routes the checker. - on a returned failing check → treat it as Grind feedback: re-enter the loop
under
recover/escalateand fix it as the maker. You never flip your own change green.
Invariants
- Maker, not checker.
change.json.maker = gilgamesh. Gilgamesh never composes theverifiedtransition or the verify envelope — a distinct checker does. Self-verifying would be exactly the maker≠checker violation the gate exists to stop, and exactly the Excalipoor self-attestation the methodology forbids. - External-only verify still holds. Even as maker, every mutation is gated by a NAMED external oracle before you call the change ready — never self-critique.
- Worker, never router. You do not dispatch the checker; you emit the change
ready-for-verify and the orchestrator routes it (
handoffs.downstream: []). If the change needs a specialist sub-mission, emit ahandoff-request(skills/attest/SKILL.md). - Graceful skip / fail-open — if
mcp__tonberry__*tools are unavailable, run the normal GILGAMESH cycle and never hard-fail. ESL is opt-in; Gilgamesh is EIIS-standalone-conformant and works without tonberry.
ESL Lifecycle Hop — Gilgamesh (the MAKER, maker≠checker mechanically enforced, never self-verifies)
04 同仓库更多 Skills
vivi-verify-incoming
Load when reading any upstream artefact handed off to Vivi that carries a sibling .envelope.json. BLOCKING per ECL §6.2.2: the orchestrator MUST have verified the envelope's SHA-256 (eidolons verify-envelope --block / eidolons run --verify) and recorded a verify_pass before dispatch. If no verify_pass exists for the message_id, or a verify_fail is present, REFUSE to process the payload and hand back to the orchestrator. Symmetric receiver gate — every Eidolon enforces it identically.
vivi-parallel-tracks
Load ONLY under TRANCE authorization when the Plan phase yields N independent, non-overlapping implementation tracks (disjoint file sets). Operationalizes the TRANCE G4 form — parallel multi-track implementation in mandatory git-worktree isolation, max 5 clean-context tracks, a per-track verifier cascade, a non-fungible per-track ≤3 reflection budget, explicit stop conditions, and a single-threaded merge/aggregation step. Absent TRANCE gating, Vivi runs exactly as today: single-track A→P→I→V→Δ/R.
vivi-methodology
Full Vivi cycle reference — A(nalyze) → P(lan) → I(mplement) → V(erify) → Δ(Delta)/R(eflect). Use when the task is a non-trivial feature implementation in a brownfield codebase and you need the complete methodology reference: complexity routing, evidence-grounded planning rules, test-anchoring requirements, and failure-escalation thresholds.
vivi-memory-management
Load at Vivi session start, session end, or when you notice a repeating pattern across tasks. CRYSTALIUM-primary memory protocol: when mcp__crystalium__* tools are available, route ALL memory through CRYSTALIUM (recall/commit/ingest/plan_checkpoint/session_end). The local agents/memories/*.md files are the standalone fallback for when CRYSTALIUM is absent — EIIS conformance. Never write both.
vivi-loop-native
Load in Vivi's V (Verify) phase. The core capability that distinguishes Vivi from its predecessor APIVR-Δ: drive the closed, autonomous, bounded edit-run-test loop (`eidolons sandbox loop`) as its `--fix-hook`, consuming localized feedback, retrying in fresh context, refusing to game the tests, and gating on pass^k. Use whenever the task has an executable test oracle and a loop-competent host.
vivi-failure-recovery
Load when the Vivi Verify phase produces failures — test fails, lint error, build break, or three consecutive unsuccessful attempts at the same category. Provides the failure classification taxonomy, bounded debugging protocol, and escalation thresholds. Use to avoid the 'random retries' anti-pattern.