| name | hexa-goal |
| description | /hexa-goal [<goal>] [--adapter=atlas|bench|byte-diff|smoke] [--engine mk9|mk10] [--max-rounds N] — the CONVERGENT sister of /hexa-loop. hexa-loop drains an active domain to DEPLETION (divergent · lens divergence); hexa-goal CLIMBS toward a verifiable GOAL PREDICATE and terminates the instant the predicate is TRUE (convergent · goal-directed). The verify-adapter mechanism + every guard are reused VERBATIM from hexa-loop; only TWO things differ — (a) DISCOVER is GAP-ANALYSIS BEST-FIRST (compute goal−current, pick the SINGLE move that shrinks the gap most) instead of lens divergence, and (b) TERMINATION is GOAL-MET (predicate TRUE) instead of depletion. Goal predicate reuses sbs-style `assert:` contracts (grep <pat> · file <path> · verdict <slug>/<id>); default (bare) = ALL of the active domain's `- [ ]` milestones checked. Each round = gap-analysis best-first → 🔌 verify-adapter {atlas|bench|byte-diff|smoke} auto by domain kind → absorb into the domain SSOT → re-measure progress vs goal → disk checkpoint → goal-met test → ScheduleWakeup 1200s. HONEST g63 (SKIP/FALSIFIED rejected) · IDEMPOTENT (dedup pre-check) · ACTIVE-DOMAIN ONLY (g58). Adapter extension hook `~/.sidecar/loop-adapter/<name>.md`. Default --adapter=auto · --engine mk9 · --max-rounds 25. Triggers — '/hexa-goal', '헥사 골', '목표 루프', 'goal-directed loop', '수렴 루프', 'goal-seeking loop', '목표 도달 루프', 'climb to goal', 'converge to goal', 'gap-analysis loop'. |
| allowed-tools | Bash, Read, Edit, Write, Skill |
@D hexa_goal := "수렴형 goal-directed 루프 1회전 자동 (gap분석 best-first → 🔌 verify-adapter → absorb → progress 재측정 → checkpoint → goal-met 테스트) · goal predicate 충족시까지 self-continue" :: skill
do = "active-domain only (g58) — /hexa-goal reads ~/.sidecar/active-domain · refuse off-domain with the steer-options line; the goal target defaults to the active domain's @goal: line"
do = "resolve the GOAL PREDICATE first — reuse sbs-style assert: contracts (grep <pat> term present · !pat absent · file <path> exists · verdict <slug>/<id> .verdicts/<slug>/<id>.txt non-empty); the DEFAULT predicate (bare invocation, no explicit assert) = ALL of the active domain's - [ ] milestones are checked (done == total, total > 0)"
do = "each round in strict order — (1) GAP-ANALYSIS best-first (measure goal−current gap · rank candidate moves by gap-reduction · pick the SINGLE move that shrinks the gap most) · (2) 🔌 verify-adapter run · (3) absorb verified result into the domain SSOT · (4) RE-MEASURE progress + evaluate the goal predicate · (5) disk checkpoint · (6) goal-met test → predicate TRUE → 🏁 goal reached terminate · else ScheduleWakeup 1200s next round"
do = "auto-select the verify-adapter by active-domain kind (reused verbatim from hexa-loop) — atlas (math · hexa atlas register --from-drill / hexa verify) · bench (perf · measure → byte-diff IDENTICAL + roofline % + Δ vs baseline) · byte-diff (codegen · regen byte-equality) · smoke (web/service · liveness assert); honor an explicit --adapter=<name> override; absorb target follows the adapter — atlas → embedded.gen.hexa · bench → *.bench.md · byte-diff → .verdicts//.txt · smoke → ledger"
do = "adapter extension — load + apply ~/.sidecar/loop-adapter/<name>.md (verify-step + absorb-target schema) identically to hexa-loop"
do = "HONEST verdict gate inherited verbatim from hexa-loop (g63 · d6) — 🔵 formal / 🟢 GATE_CLOSED_MEASURED / 🔴 CLOSED-negative accepted as absorb · 🟠 INCONCLUSIVE / 🟡 citation-only / ⚪ speculation / SKIP / FALSIFIED rejected (no absorb · log to .hexa-goal.log) · never paraphrase or LLM-judge a verdict (g5)"
do = "IDEMPOTENT pre-fire dedup inherited verbatim — adapter-appropriate pre-check (atlas: hexa atlas dump --json | jq '.[].id' | grep; bench/byte-diff/smoke: prior verdict/ledger lookup) SKIPS an already-absorbed result (no duplicate fire · log SKIP-DUP)"
do = "default --adapter=auto · default --engine mk9 · default --max-rounds 25 (a goal-seeking loop carries a FINITE cap so a never-satisfiable predicate cannot spin forever — on cap hit emit 🔄 cap N reached — goal NOT met and preserve the checkpoint); the loop's PRIMARY terminator is goal-met (predicate TRUE), the cap is the safety backstop"
do = "explicit per-round disk checkpoint AFTER each round (write the progress snapshot + gap state before ScheduleWakeup) so a rate-limit / SIGTERM mid-flight preserves state and re-invocation resumes from the last committed round · ScheduleWakeup at 1200s (cache window)"
dont = "off-domain hexa-goal (g58 · refuse + steer-options) · skip the active-domain pointer read · skip resolving the goal predicate before round 1 · fabricate a goal target"
dont = "absorb a SKIP / FALSIFIED / 🟠 / 🟡 / ⚪ verdict (d6 honest · g63 honest sweep) · paraphrase or LLM-judge a verdict (g5)"
dont = "terminate on DEPLETION (depletion is hexa-loop's terminator; here GOAL-MET — the predicate evaluating TRUE — is the ONLY success terminator; a round with 0 gap-reduction does NOT end the loop, it advances to the next move)"
dont = "diverge open-ended (lens divergence is hexa-loop's discover; here discover is gap-analysis best-first — select the ONE move that shrinks the goal−current gap most, not a saturate-loop of all lenses)"
dont = "skip the round-N disk checkpoint before ScheduleWakeup · checkpoint at pipeline end only"
dont = "expand --max-rounds beyond the user-passed value (or the default 25) unasked · silently raise the cap when the goal predicate has not been met — report 🔄 cap reached — goal NOT met and stop"