feat(voyage)!: rename commands, templates, fixtures for v4.0.0 [skip-docs]
This commit is contained in:
parent
a975c9943c
commit
47a4ad47d8
23 changed files with 99 additions and 98 deletions
|
|
@ -1,6 +1,6 @@
|
|||
# ultraplan-local
|
||||
|
||||
Deep implementation planning and research with an explicit brief step, specialized agent swarms, external research, adversarial review, session decomposition, disciplined execution, and headless support. A local alternative to Anthropic's Ultraplan.
|
||||
Voyage — a contract-driven Claude Code pipeline: brief, research, plan, execute, review, continue. Deep implementation planning and research with specialized agent swarms, external research, adversarial review, session decomposition, disciplined execution, and headless support.
|
||||
|
||||
**Design principle: Context Engineering** — build the right context by orchestrating specialized agents. Each step in the pipeline (brief → research → plan → execute) produces a structured artifact that the next step consumes.
|
||||
|
||||
|
|
@ -10,12 +10,13 @@ Deep implementation planning and research with an explicit brief step, specializ
|
|||
|
||||
| Command | Description | Model |
|
||||
|---------|-------------|-------|
|
||||
| `/ultrabrief-local` | Brief — interactive interview produces a task brief with explicit research plan; optionally orchestrates the pipeline | opus |
|
||||
| `/ultraresearch-local` | Research — deep local + external research, produces structured research brief | opus |
|
||||
| `/ultraplan-local` | Plan — brief-reviewer, explore, plan, review. Requires `--brief` or `--project`. Auto-discovers `architecture/overview.md` if present | opus |
|
||||
| `/ultraexecute-local` | Execute — disciplined plan/session-spec executor with failure recovery | opus |
|
||||
| `/ultrareview-local` | Review — independent post-hoc review of delivered code against the brief. Produces `review.md` with severity-tagged findings (Handover 6) | opus |
|
||||
| `/ultracontinue-local` | Continue — resumes the next session of a multi-session ultraplan project. Reads `.session-state.local.json` (Handover 7) and immediately begins executing | opus |
|
||||
| `/trekbrief` | Brief — interactive interview produces a task brief with explicit research plan; optionally orchestrates the pipeline | opus |
|
||||
| `/trekresearch` | Research — deep local + external research, produces structured research brief | opus |
|
||||
| `/trekplan` | Plan — brief-reviewer, explore, plan, review. Requires `--brief` or `--project`. Auto-discovers `architecture/overview.md` if present | opus |
|
||||
| `/trekexecute` | Execute — disciplined plan/session-spec executor with failure recovery | opus |
|
||||
| `/trekreview` | Review — independent post-hoc review of delivered code against the brief. Produces `review.md` with severity-tagged findings (Handover 6) | opus |
|
||||
| `/trekcontinue` | Continue — resumes the next session of a multi-session voyage project. Reads `.session-state.local.json` (Handover 7) and immediately begins executing | opus |
|
||||
| `/trekendsession` | End-session — mark the current session complete and write session-state pointing at the next session. Helper for informal multi-session flows | sonnet |
|
||||
|
||||
### /ultrabrief-local modes
|
||||
|
||||
|
|
|
|||
|
|
@ -12,12 +12,12 @@ A [Claude Code](https://docs.anthropic.com/en/docs/claude-code) plugin for deep
|
|||
|
||||
| Command | What it does |
|
||||
|---------|-------------|
|
||||
| **`/ultrabrief-local`** | Brief — interactive interview produces a task brief with explicit research plan |
|
||||
| **`/ultraresearch-local`** | Research — deep local + external research with triangulation |
|
||||
| **`/ultraplan-local`** | Plan — agent swarm exploration, Opus planning, adversarial review |
|
||||
| **`/ultraexecute-local`** | Execute — disciplined step-by-step implementation with failure recovery |
|
||||
| **`/ultrareview-local`** | Review — independent post-hoc review of delivered code against the brief, severity-tagged findings |
|
||||
| **`/ultracontinue-local`** | Continue — read `.session-state.local.json` and resume the next session in a multi-session project |
|
||||
| **`/trekbrief`** | Brief — interactive interview produces a task brief with explicit research plan |
|
||||
| **`/trekresearch`** | Research — deep local + external research with triangulation |
|
||||
| **`/trekplan`** | Plan — agent swarm exploration, Opus planning, adversarial review |
|
||||
| **`/trekexecute`** | Execute — disciplined step-by-step implementation with failure recovery |
|
||||
| **`/trekreview`** | Review — independent post-hoc review of delivered code against the brief, severity-tagged findings |
|
||||
| **`/trekcontinue`** | Continue — read `.session-state.local.json` and resume the next session in a multi-session project |
|
||||
|
||||
Every artifact lives in one project directory: `.claude/projects/{YYYY-MM-DD}-{slug}/` contains `brief.md`, `research/NN-*.md`, `plan.md`, `sessions/`, `progress.json`, and `review.md`.
|
||||
|
||||
|
|
@ -25,11 +25,11 @@ Every artifact lives in one project directory: `.claude/projects/{YYYY-MM-DD}-{s
|
|||
|
||||
| Command | Responsibility | Output |
|
||||
|---|---|---|
|
||||
| `/ultrabrief-local` | **Capture intent** — intent, goal, non-goals, success criteria, and a research plan with explicit topics. Interactive only. | `brief.md` (task brief) |
|
||||
| `/ultraresearch-local` | **Gather context** — code state, external docs, community, risk. Makes NO build decisions. | `research/NN-slug.md` (research brief) |
|
||||
| `/ultraplan-local` | **Transform intent into an executable contract** — per-step YAML manifest, regex-validated checkpoints, verifiable paths. Plan-critic is a hard gate. Auto-discovers `architecture/overview.md` as priors when an opt-in upstream architect plugin (not bundled) is installed. | `plan.md` with Manifest blocks + `plan_version: 1.7` |
|
||||
| `/ultraexecute-local` | **Execute the contract disciplined** — fresh verification, independent manifest audit, honest reporting. Does NOT compensate for weak plans — escalates. | `progress.json` + structured report + manifest-audit status |
|
||||
| `/ultrareview-local` | **Close the loop** — independent post-hoc reviewer reads `brief.md` and the diff produced by execute, runs brief-conformance + code-correctness reviewers in parallel, dedups via Judge Agent. Severity-tagged findings (Critical/High/Medium/Low/Info) feed back into planning via Handover 6. | `review.md` (`type: ultrareview`) with stable 40-char hex finding-IDs |
|
||||
| `/trekbrief` | **Capture intent** — intent, goal, non-goals, success criteria, and a research plan with explicit topics. Interactive only. | `brief.md` (task brief) |
|
||||
| `/trekresearch` | **Gather context** — code state, external docs, community, risk. Makes NO build decisions. | `research/NN-slug.md` (research brief) |
|
||||
| `/trekplan` | **Transform intent into an executable contract** — per-step YAML manifest, regex-validated checkpoints, verifiable paths. Plan-critic is a hard gate. Auto-discovers `architecture/overview.md` as priors when an opt-in upstream architect plugin (not bundled) is installed. | `plan.md` with Manifest blocks + `plan_version: 1.7` |
|
||||
| `/trekexecute` | **Execute the contract disciplined** — fresh verification, independent manifest audit, honest reporting. Does NOT compensate for weak plans — escalates. | `progress.json` + structured report + manifest-audit status |
|
||||
| `/trekreview` | **Close the loop** — independent post-hoc reviewer reads `brief.md` and the diff produced by execute, runs brief-conformance + code-correctness reviewers in parallel, dedups via Judge Agent. Severity-tagged findings (Critical/High/Medium/Low/Info) feed back into planning via Handover 6. | `review.md` (`type: ultrareview`) with stable 40-char hex finding-IDs |
|
||||
|
||||
**Principle:** Each step consumes the previous step's structured artifact. If execute has to guess, the plan is weak and must be revised upstream — not patched downstream.
|
||||
|
||||
|
|
@ -68,28 +68,28 @@ Under the hood, `lib/util/autonomy-gate.mjs` runs a small state machine (`idle
|
|||
claude plugin marketplace add https://git.fromaitochitta.com/open/ktg-plugin-marketplace.git
|
||||
|
||||
# Capture intent (interactive)
|
||||
/ultrabrief-local Add user authentication with JWT tokens
|
||||
/trekbrief Add user authentication with JWT tokens
|
||||
# → .claude/projects/2026-04-18-jwt-auth/brief.md
|
||||
|
||||
# Research each topic identified in the brief (manual default)
|
||||
/ultraresearch-local --project .claude/projects/2026-04-18-jwt-auth --external "What are current JWT best practices?"
|
||||
/trekresearch --project .claude/projects/2026-04-18-jwt-auth --external "What are current JWT best practices?"
|
||||
|
||||
# Plan from brief + research
|
||||
/ultraplan-local --project .claude/projects/2026-04-18-jwt-auth
|
||||
/trekplan --project .claude/projects/2026-04-18-jwt-auth
|
||||
|
||||
# Execute
|
||||
/ultraexecute-local --project .claude/projects/2026-04-18-jwt-auth
|
||||
/trekexecute --project .claude/projects/2026-04-18-jwt-auth
|
||||
|
||||
# Review (independent post-hoc verification of the diff against brief.md)
|
||||
/ultrareview-local --project .claude/projects/2026-04-18-jwt-auth
|
||||
/trekreview --project .claude/projects/2026-04-18-jwt-auth
|
||||
# → .claude/projects/2026-04-18-jwt-auth/review.md
|
||||
```
|
||||
|
||||
Or opt into auto-mode in `/ultrabrief-local` — it will run research and planning sequentially inline in the main context, and return when `plan.md` is ready.
|
||||
Or opt into auto-mode in `/trekbrief` — it will run research and planning sequentially inline in the main context, and return when `plan.md` is ready.
|
||||
|
||||
If review finds issues, feed `review.md` back into planning to produce a remediation plan: `/ultraplan-local --brief .claude/projects/2026-04-18-jwt-auth/review.md`. The remediation plan carries `source_findings: [<id>, ...]` in its frontmatter — full audit trail back to the consumed findings (Handover 6).
|
||||
If review finds issues, feed `review.md` back into planning to produce a remediation plan: `/trekplan --brief .claude/projects/2026-04-18-jwt-auth/review.md`. The remediation plan carries `source_findings: [<id>, ...]` in its frontmatter — full audit trail back to the consumed findings (Handover 6).
|
||||
|
||||
An optional architect step can sit between research and plan — `/ultraplan-local` auto-discovers an `architecture/overview.md` produced by an opt-in upstream architect plugin (not bundled here; the architect plugin is no longer publicly distributed, but the `architecture/overview.md` filesystem slot remains available for any compatible producer).
|
||||
An optional architect step can sit between research and plan — `/trekplan` auto-discovers an `architecture/overview.md` produced by an opt-in upstream architect plugin (not bundled here; the architect plugin is no longer publicly distributed, but the `architecture/overview.md` filesystem slot remains available for any compatible producer).
|
||||
|
||||
## When to use it
|
||||
|
||||
|
|
@ -145,8 +145,8 @@ Output: `.claude/projects/{YYYY-MM-DD}-{slug}/brief.md`
|
|||
|
||||
| Mode | Usage | Behavior |
|
||||
|------|-------|----------|
|
||||
| **Default** | `/ultrabrief-local <task>` | Dynamic interview until quality gates pass. No question cap. |
|
||||
| **Quick** | `/ultrabrief-local --quick <task>` | Starts compact (optional sections get at most one probe), still escalates on weak required sections or failed review gate. |
|
||||
| **Default** | `/trekbrief <task>` | Dynamic interview until quality gates pass. No question cap. |
|
||||
| **Quick** | `/trekbrief --quick <task>` | Starts compact (optional sections get at most one probe), still escalates on weak required sections or failed review gate. |
|
||||
|
||||
`/ultrabrief-local` is **always interactive**. There is no foreground/background mode — the interview requires user input.
|
||||
|
||||
|
|
@ -183,12 +183,12 @@ Output:
|
|||
|
||||
| Mode | Usage | Behavior |
|
||||
|------|-------|----------|
|
||||
| **Default** | `/ultraresearch-local <question>` | Interview + research swarm (local + external + Gemini), foreground |
|
||||
| **Project** | `/ultraresearch-local --project <dir> <question>` | Write brief into `{dir}/research/NN-slug.md` |
|
||||
| **Quick** | `/ultraresearch-local --quick <question>` | Interview (short) + inline research, no agent swarm |
|
||||
| **Local** | `/ultraresearch-local --local <question>` | Only codebase analysis agents (skip external + Gemini) |
|
||||
| **External** | `/ultraresearch-local --external <question>` | Only external research agents (skip codebase analysis) |
|
||||
| **Foreground** | `/ultraresearch-local --fg <question>` | No-op alias (foreground is default since v2.4.0) |
|
||||
| **Default** | `/trekresearch <question>` | Interview + research swarm (local + external + Gemini), foreground |
|
||||
| **Project** | `/trekresearch --project <dir> <question>` | Write brief into `{dir}/research/NN-slug.md` |
|
||||
| **Quick** | `/trekresearch --quick <question>` | Interview (short) + inline research, no agent swarm |
|
||||
| **Local** | `/trekresearch --local <question>` | Only codebase analysis agents (skip external + Gemini) |
|
||||
| **External** | `/trekresearch --external <question>` | Only external research agents (skip codebase analysis) |
|
||||
| **Foreground** | `/trekresearch --fg <question>` | No-op alias (foreground is default since v2.4.0) |
|
||||
|
||||
Flags combine: `--project <dir> --external`.
|
||||
|
||||
|
|
@ -210,13 +210,13 @@ Output:
|
|||
|
||||
| Mode | Usage | Behavior |
|
||||
|------|-------|----------|
|
||||
| **Project** | `/ultraplan-local --project <dir>` | Read `{dir}/brief.md` + auto-discover `{dir}/research/*.md`, write `{dir}/plan.md` |
|
||||
| **Brief** | `/ultraplan-local --brief <path>` | Plan from a specific brief file |
|
||||
| **Research-enriched** | `/ultraplan-local --project <dir> --research <brief>` | Add extra research briefs beyond what is in `research/` |
|
||||
| **Foreground** | `/ultraplan-local --project <dir> --fg` | No-op alias (foreground is default since v2.4.0) |
|
||||
| **Quick** | `/ultraplan-local --project <dir> --quick` | No agent swarm, lightweight scan only |
|
||||
| **Decompose** | `/ultraplan-local --decompose plan.md` | Split plan into headless session specs |
|
||||
| **Export** | `/ultraplan-local --export pr plan.md` | PR description, issue comment, or clean markdown |
|
||||
| **Project** | `/trekplan --project <dir>` | Read `{dir}/brief.md` + auto-discover `{dir}/research/*.md`, write `{dir}/plan.md` |
|
||||
| **Brief** | `/trekplan --brief <path>` | Plan from a specific brief file |
|
||||
| **Research-enriched** | `/trekplan --project <dir> --research <brief>` | Add extra research briefs beyond what is in `research/` |
|
||||
| **Foreground** | `/trekplan --project <dir> --fg` | No-op alias (foreground is default since v2.4.0) |
|
||||
| **Quick** | `/trekplan --project <dir> --quick` | No agent swarm, lightweight scan only |
|
||||
| **Decompose** | `/trekplan --decompose plan.md` | Split plan into headless session specs |
|
||||
| **Export** | `/trekplan --export pr plan.md` | PR description, issue comment, or clean markdown |
|
||||
|
||||
`--brief` or `--project` is **required**. `/ultraplan-local` with no brief exits with an error and a pointer to `/ultrabrief-local`.
|
||||
|
||||
|
|
@ -256,14 +256,14 @@ Per step: apply Changes exactly as written → run Verify (exit code is truth)
|
|||
|
||||
| Mode | Usage | Behavior |
|
||||
|------|-------|----------|
|
||||
| **Project** | `/ultraexecute-local --project <dir>` | Read `{dir}/plan.md`, write `{dir}/progress.json` |
|
||||
| **Plan path** | `/ultraexecute-local plan.md` | Execute a specific plan file |
|
||||
| **Resume** | `/ultraexecute-local --project <dir> --resume` | Resume from last progress checkpoint |
|
||||
| **Dry run** | `/ultraexecute-local --project <dir> --dry-run` | Validate plan structure + preview sessions and billing |
|
||||
| **Validate** | `/ultraexecute-local --project <dir> --validate` | Schema-only check — parse steps + manifests, report `READY \| FAIL`, no execution |
|
||||
| **Single step** | `/ultraexecute-local --project <dir> --step 3` | Execute only step 3 |
|
||||
| **Foreground** | `/ultraexecute-local --project <dir> --fg` | Force sequential, ignore Execution Strategy |
|
||||
| **Single session** | `/ultraexecute-local --project <dir> --session 2` | Execute only session 2 from Execution Strategy |
|
||||
| **Project** | `/trekexecute --project <dir>` | Read `{dir}/plan.md`, write `{dir}/progress.json` |
|
||||
| **Plan path** | `/trekexecute plan.md` | Execute a specific plan file |
|
||||
| **Resume** | `/trekexecute --project <dir> --resume` | Resume from last progress checkpoint |
|
||||
| **Dry run** | `/trekexecute --project <dir> --dry-run` | Validate plan structure + preview sessions and billing |
|
||||
| **Validate** | `/trekexecute --project <dir> --validate` | Schema-only check — parse steps + manifests, report `READY \| FAIL`, no execution |
|
||||
| **Single step** | `/trekexecute --project <dir> --step 3` | Execute only step 3 |
|
||||
| **Foreground** | `/trekexecute --project <dir> --fg` | Force sequential, ignore Execution Strategy |
|
||||
| **Single session** | `/trekexecute --project <dir> --session 2` | Execute only session 2 from Execution Strategy |
|
||||
|
||||
### Session-aware parallel execution (worktree-isolated)
|
||||
|
||||
|
|
@ -395,11 +395,11 @@ the iteration loop without ad-hoc conventions.
|
|||
|
||||
| Mode | Command | Description |
|
||||
|------|---------|-------------|
|
||||
| **Default** | `/ultrareview-local --project <dir>` | brief-conformance + code-correctness reviewers in parallel, coordinator dedup + verdict, write `{dir}/review.md` |
|
||||
| **Since ref** | `/ultrareview-local --project <dir> --since <ref>` | Override "before" SHA for the diff range. Validated via `git rev-parse --verify` |
|
||||
| **Quick** | `/ultrareview-local --project <dir> --quick` | Skip brief-conformance reviewer; skip coordinator's reasonableness filter — fast correctness-only pass |
|
||||
| **Validate** | `/ultrareview-local --project <dir> --validate` | Schema-only check on existing `review.md`. No LLM calls |
|
||||
| **Dry run** | `/ultrareview-local --project <dir> --dry-run` | Print discovered scope + triage map; skip writes |
|
||||
| **Default** | `/trekreview --project <dir>` | brief-conformance + code-correctness reviewers in parallel, coordinator dedup + verdict, write `{dir}/review.md` |
|
||||
| **Since ref** | `/trekreview --project <dir> --since <ref>` | Override "before" SHA for the diff range. Validated via `git rev-parse --verify` |
|
||||
| **Quick** | `/trekreview --project <dir> --quick` | Skip brief-conformance reviewer; skip coordinator's reasonableness filter — fast correctness-only pass |
|
||||
| **Validate** | `/trekreview --project <dir> --validate` | Schema-only check on existing `review.md`. No LLM calls |
|
||||
| **Dry run** | `/trekreview --project <dir> --dry-run` | Print discovered scope + triage map; skip writes |
|
||||
|
||||
### What review produces
|
||||
|
||||
|
|
@ -419,10 +419,10 @@ A path-pattern classifier produces `{file → deep-review|summary-only|skip}` be
|
|||
### Feedback loop (Handover 6)
|
||||
|
||||
```bash
|
||||
/ultrareview-local --project <dir>
|
||||
/trekreview --project <dir>
|
||||
# → review.md (BLOCKER + MAJOR findings)
|
||||
|
||||
/ultraplan-local --brief <dir>/review.md
|
||||
/trekplan --brief <dir>/review.md
|
||||
# → plan.md with `source_findings: [<id>, ...]` audit trail
|
||||
# (BLOCKER + MAJOR findings become plan goals; MINOR + SUGGESTION skipped for v1.0)
|
||||
```
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
name: ultrabrief-local
|
||||
name: trekbrief
|
||||
description: Interactive interview that produces a task brief with explicit research plan. Feeds /ultraresearch-local and /ultraplan-local. Optionally orchestrates the full pipeline end-to-end.
|
||||
argument-hint: "[--quick] <task description>"
|
||||
model: opus
|
||||
|
|
@ -296,7 +296,7 @@ iteration cap is hit). This ensures the brief that reaches `/ultraplan-local`
|
|||
has already survived a critical review.
|
||||
|
||||
Read the brief template first:
|
||||
`@${CLAUDE_PLUGIN_ROOT}/templates/ultrabrief-template.md`
|
||||
`@${CLAUDE_PLUGIN_ROOT}/templates/trekbrief-template.md`
|
||||
|
||||
### Loop bound
|
||||
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
name: ultracontinue-local
|
||||
name: trekcontinue
|
||||
description: Resume the next session in a multi-session ultraplan project. Reads .session-state.local.json and immediately begins the next session.
|
||||
argument-hint: "[<project-dir> | --help]"
|
||||
model: opus
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
name: ultraplan-end-session-local
|
||||
name: trekendsession
|
||||
description: Mark the current session as complete and write session-state pointing at the next session. Helper for informal multi-session flows.
|
||||
argument-hint: "<next-brief-path> <next-label> | --help"
|
||||
model: sonnet
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
name: ultraexecute-local
|
||||
name: trekexecute
|
||||
description: Disciplined plan executor — single-session or multi-session with parallel orchestration, failure recovery, and headless support
|
||||
argument-hint: "[--project <dir>] [--fg | --resume | --dry-run | --validate | --step N | --session N] [plan.md]"
|
||||
model: opus
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
name: ultraplan-local
|
||||
name: trekplan
|
||||
description: Deep implementation planning from a task brief. Requires --brief or --project. Runs parallel specialized agents, optional external research, and adversarial review.
|
||||
argument-hint: "--brief <path> | --project <dir> [--fg | --quick | --research <brief> | --decompose <plan> | --export <fmt> <plan>]"
|
||||
model: opus
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
name: ultraresearch-local
|
||||
name: trekresearch
|
||||
description: Deep research combining local codebase analysis with external knowledge, producing structured research briefs with triangulation and confidence ratings
|
||||
argument-hint: "[--project <dir>] [--quick | --local | --external | --fg] <research question>"
|
||||
model: opus
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
name: ultrareview-local
|
||||
name: trekreview
|
||||
description: |
|
||||
Independent post-hoc review of delivered code against the brief. Produces
|
||||
review.md with severity-tagged findings (BLOCKER/MAJOR/MINOR/SUGGESTION)
|
||||
|
|
@ -20,7 +20,7 @@ import { runHook } from '../helpers/hook-helper.mjs';
|
|||
|
||||
const HERE = dirname(fileURLToPath(import.meta.url));
|
||||
const ROOT = join(HERE, '..', '..');
|
||||
const COMMAND_FILE = join(ROOT, 'commands', 'ultracontinue-local.md');
|
||||
const COMMAND_FILE = join(ROOT, 'commands', 'trekcontinue.md');
|
||||
const PRE_BASH = join(ROOT, 'hooks', 'scripts', 'pre-bash-executor.mjs');
|
||||
|
||||
function readCommand() {
|
||||
|
|
@ -67,14 +67,14 @@ test('templates/plan-template.md declares plan_version: 1.7', () => {
|
|||
assert.match(tpl, /plan_version:\s*['"]?1\.7['"]?/);
|
||||
});
|
||||
|
||||
test('commands/ultraexecute-local.md still parses v1.7 plan schema', () => {
|
||||
const cmd = read('commands/ultraexecute-local.md');
|
||||
test('commands/trekexecute.md still parses v1.7 plan schema', () => {
|
||||
const cmd = read('commands/trekexecute.md');
|
||||
const tpl = read('templates/plan-template.md');
|
||||
const tplVersion = (tpl.match(/plan_version:\s*['"]?([\d.]+)['"]?/) || [])[1];
|
||||
assert.ok(tplVersion, 'templates/plan-template.md missing plan_version');
|
||||
assert.ok(
|
||||
cmd.includes(`plan_version`) || cmd.includes(`Step N:`) || cmd.includes('### Step '),
|
||||
'commands/ultraexecute-local.md should reference v1.7 plan-schema parsing',
|
||||
'commands/trekexecute.md should reference v1.7 plan-schema parsing',
|
||||
);
|
||||
});
|
||||
|
||||
|
|
@ -96,7 +96,7 @@ test('settings.json no longer carries vestigial exploration block', () => {
|
|||
|
||||
test('CLAUDE.md mentions all five pipeline commands', () => {
|
||||
const md = read('CLAUDE.md');
|
||||
for (const c of ['/ultrabrief-local', '/ultraresearch-local', '/ultraplan-local', '/ultraexecute-local', '/ultrareview-local']) {
|
||||
for (const c of ['/trekbrief', '/trekresearch', '/trekplan', '/trekexecute', '/trekreview']) {
|
||||
assert.ok(md.includes(c), `CLAUDE.md missing reference to ${c}`);
|
||||
}
|
||||
});
|
||||
|
|
@ -114,7 +114,7 @@ test('HANDOVER-CONTRACTS.md contains Handover 7 section (session-state)', () =>
|
|||
assert.ok(
|
||||
text.includes('## Handover 7'),
|
||||
'docs/HANDOVER-CONTRACTS.md should document Handover 7 (.session-state.local.json) ' +
|
||||
'consumed by /ultracontinue',
|
||||
'consumed by /trekcontinue',
|
||||
);
|
||||
assert.ok(
|
||||
text.includes('.session-state.local.json'),
|
||||
|
|
@ -136,7 +136,7 @@ test('session-state-validator has CLI shim', () => {
|
|||
assert.ok(
|
||||
text.includes('import.meta.url === '),
|
||||
'lib/validators/session-state-validator.mjs should expose the standard CLI shim ' +
|
||||
'(if (import.meta.url === `file://${process.argv[1]}`)) so /ultracontinue can call it from Bash',
|
||||
'(if (import.meta.url === `file://${process.argv[1]}`)) so /trekcontinue can call it from Bash',
|
||||
);
|
||||
});
|
||||
|
||||
|
|
@ -145,7 +145,7 @@ test('next-session-prompt-validator has CLI shim', () => {
|
|||
assert.ok(
|
||||
text.includes('import.meta.url === '),
|
||||
'lib/validators/next-session-prompt-validator.mjs should expose the standard CLI shim ' +
|
||||
'(if (import.meta.url === `file://${process.argv[1]}`)) so /ultracontinue Phase 1.5 can call it from Bash',
|
||||
'(if (import.meta.url === `file://${process.argv[1]}`)) so /trekcontinue Phase 1.5 can call it from Bash',
|
||||
);
|
||||
});
|
||||
|
||||
|
|
@ -177,11 +177,11 @@ test('HANDOVER-CONTRACTS.md Handover 7 § Lifecycle names --cleanup and produced
|
|||
);
|
||||
});
|
||||
|
||||
test('CLAUDE.md mentions /ultracontinue-local command', () => {
|
||||
test('CLAUDE.md mentions /trekcontinue command', () => {
|
||||
const md = read('CLAUDE.md');
|
||||
assert.ok(
|
||||
md.includes('/ultracontinue-local') || md.includes('ultracontinue-local'),
|
||||
'CLAUDE.md should document /ultracontinue-local in the Commands table ' +
|
||||
md.includes('/trekcontinue') || md.includes('trekcontinue'),
|
||||
'CLAUDE.md should document /trekcontinue in the Commands table ' +
|
||||
'(added in v3.3.0 alongside the new command file)',
|
||||
);
|
||||
});
|
||||
|
|
@ -216,12 +216,12 @@ test('headless-launch-template.md mirrors Phase 2.6 hardenings', () => {
|
|||
});
|
||||
|
||||
test('Phase 9 prose mandates parallel single-message dispatch + inline dedup', () => {
|
||||
const cmd = read('commands/ultraplan-local.md');
|
||||
const cmd = read('commands/trekplan.md');
|
||||
const orch = read('agents/planning-orchestrator.md');
|
||||
// Single-message reinforcement appears in both (command + orchestrator)
|
||||
assert.ok(
|
||||
cmd.includes('single assistant message turn'),
|
||||
'commands/ultraplan-local.md Phase 9 should reinforce single-message parallel dispatch',
|
||||
'commands/trekplan.md Phase 9 should reinforce single-message parallel dispatch',
|
||||
);
|
||||
assert.ok(
|
||||
orch.includes('single assistant message turn'),
|
||||
|
|
@ -230,7 +230,7 @@ test('Phase 9 prose mandates parallel single-message dispatch + inline dedup', (
|
|||
// Dedup CLI shim is wired in both
|
||||
assert.ok(
|
||||
cmd.includes('plan-review-dedup.mjs'),
|
||||
'commands/ultraplan-local.md Phase 9 should call lib/review/plan-review-dedup.mjs after both reviewers complete',
|
||||
'commands/trekplan.md Phase 9 should call lib/review/plan-review-dedup.mjs after both reviewers complete',
|
||||
);
|
||||
assert.ok(
|
||||
orch.includes('plan-review-dedup.mjs'),
|
||||
|
|
@ -238,8 +238,8 @@ test('Phase 9 prose mandates parallel single-message dispatch + inline dedup', (
|
|||
);
|
||||
});
|
||||
|
||||
test('commands/ultraplan-local.md Phase 8 seals Opus-4.7 schema-drift defense', () => {
|
||||
const cmd = read('commands/ultraplan-local.md');
|
||||
test('commands/trekplan.md Phase 8 seals Opus-4.7 schema-drift defense', () => {
|
||||
const cmd = read('commands/trekplan.md');
|
||||
// Locate Phase 8 section
|
||||
const phase8Start = cmd.indexOf('## Phase 8');
|
||||
assert.ok(phase8Start >= 0, 'Phase 8 heading missing');
|
||||
|
|
|
|||
|
|
@ -15,10 +15,10 @@ const ROOT = join(HERE, '..', '..');
|
|||
function read(rel) { return readFileSync(join(ROOT, rel), 'utf-8'); }
|
||||
|
||||
const COMMANDS = [
|
||||
'commands/ultrabrief-local.md',
|
||||
'commands/ultraresearch-local.md',
|
||||
'commands/ultraplan-local.md',
|
||||
'commands/ultraexecute-local.md',
|
||||
'commands/trekbrief.md',
|
||||
'commands/trekresearch.md',
|
||||
'commands/trekplan.md',
|
||||
'commands/trekexecute.md',
|
||||
];
|
||||
|
||||
for (const cmdPath of COMMANDS) {
|
||||
|
|
@ -39,10 +39,10 @@ for (const cmdPath of COMMANDS) {
|
|||
});
|
||||
}
|
||||
|
||||
test('commands/ultraexecute-local.md mentions MAIN_MERGE_GATE', () => {
|
||||
const text = read('commands/ultraexecute-local.md');
|
||||
test('commands/trekexecute.md mentions MAIN_MERGE_GATE', () => {
|
||||
const text = read('commands/trekexecute.md');
|
||||
assert.ok(
|
||||
text.includes('MAIN_MERGE_GATE'),
|
||||
'commands/ultraexecute-local.md should name MAIN_MERGE_GATE — the only boundary that always pauses regardless of --gates',
|
||||
'commands/trekexecute.md should name MAIN_MERGE_GATE — the only boundary that always pauses regardless of --gates',
|
||||
);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// tests/lib/main-merge-gate.test.mjs
|
||||
// Step 12 (plan-v2) — pin that commands/ultraexecute-local.md Phase 8
|
||||
// Step 12 (plan-v2) — pin that commands/trekexecute.md Phase 8
|
||||
// names the main-merge-gate lifecycle event, the decline + recovery
|
||||
// surface, and the always-on gate prose.
|
||||
|
||||
|
|
@ -11,12 +11,12 @@ import { fileURLToPath } from 'node:url';
|
|||
|
||||
const HERE = dirname(fileURLToPath(import.meta.url));
|
||||
const ROOT = join(HERE, '..', '..');
|
||||
const CMD = readFileSync(join(ROOT, 'commands/ultraexecute-local.md'), 'utf-8');
|
||||
const CMD = readFileSync(join(ROOT, 'commands/trekexecute.md'), 'utf-8');
|
||||
|
||||
test('Phase 8 names the main-merge-gate lifecycle event', () => {
|
||||
assert.ok(
|
||||
CMD.includes('main-merge-gate'),
|
||||
'commands/ultraexecute-local.md should emit `main-merge-gate` from Phase 8',
|
||||
'commands/trekexecute.md should emit `main-merge-gate` from Phase 8',
|
||||
);
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
//
|
||||
// This test exercises the Jaccard PIPELINE on a known input. It does NOT
|
||||
// measure real-LLM determinism — that is deferred to v1.1, see
|
||||
// tests/fixtures/ultrareview/README.md.
|
||||
// tests/fixtures/trekreview/README.md.
|
||||
|
||||
import { test } from 'node:test';
|
||||
import { strict as assert } from 'node:assert';
|
||||
|
|
@ -35,8 +35,8 @@ function loadFindings(rel) {
|
|||
}
|
||||
|
||||
test('review determinism — Jaccard of fixture run-A vs run-B meets SC4 threshold (0.70)', () => {
|
||||
const a = loadFindings('tests/fixtures/ultrareview/review-run-A.md');
|
||||
const b = loadFindings('tests/fixtures/ultrareview/review-run-B.md');
|
||||
const a = loadFindings('tests/fixtures/trekreview/review-run-A.md');
|
||||
const b = loadFindings('tests/fixtures/trekreview/review-run-B.md');
|
||||
const jaccard = jaccardSimilarity(a, b);
|
||||
assert.ok(
|
||||
jaccard >= SC4_THRESHOLD,
|
||||
|
|
@ -46,7 +46,7 @@ test('review determinism — Jaccard of fixture run-A vs run-B meets SC4 thresho
|
|||
});
|
||||
|
||||
test('review determinism — finding IDs are 40-char hex', () => {
|
||||
for (const rel of ['tests/fixtures/ultrareview/review-run-A.md', 'tests/fixtures/ultrareview/review-run-B.md']) {
|
||||
for (const rel of ['tests/fixtures/trekreview/review-run-A.md', 'tests/fixtures/trekreview/review-run-B.md']) {
|
||||
const findings = loadFindings(rel);
|
||||
for (const id of findings) {
|
||||
assert.ok(
|
||||
|
|
@ -58,7 +58,7 @@ test('review determinism — finding IDs are 40-char hex', () => {
|
|||
});
|
||||
|
||||
test('review determinism — no duplicate IDs within run', () => {
|
||||
for (const rel of ['tests/fixtures/ultrareview/review-run-A.md', 'tests/fixtures/ultrareview/review-run-B.md']) {
|
||||
for (const rel of ['tests/fixtures/trekreview/review-run-A.md', 'tests/fixtures/trekreview/review-run-B.md']) {
|
||||
const findings = loadFindings(rel);
|
||||
assert.strictEqual(
|
||||
new Set(findings).size,
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import { validatePlan } from '../../lib/validators/plan-validator.mjs';
|
|||
|
||||
const HERE = dirname(fileURLToPath(import.meta.url));
|
||||
const ROOT = join(HERE, '..', '..');
|
||||
const FIXTURE = join(ROOT, 'tests/fixtures/ultrareview/plan-with-source-findings.md');
|
||||
const FIXTURE = join(ROOT, 'tests/fixtures/trekreview/plan-with-source-findings.md');
|
||||
|
||||
const HEX_ID_RE = /^[0-9a-f]{40}$/;
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
//
|
||||
// This is the SC7 (higher) floor. The companion
|
||||
// tests/lib/review-determinism.test.mjs holds the SC4 (0.70) floor against
|
||||
// tests/fixtures/ultrareview/. Both pairs coexist on purpose: the lower
|
||||
// tests/fixtures/trekreview/. Both pairs coexist on purpose: the lower
|
||||
// floor protects against pipeline regressions, the higher one anchors the
|
||||
// determinism aspiration set in the speedup brief.
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ this file's frontmatter and computes
|
|||
`jaccardSimilarity(findingsA, findingsB)`. The test asserts the similarity is
|
||||
at or above the SC7 brief threshold (0.833).
|
||||
|
||||
This fixture is distinct from `tests/fixtures/ultrareview/review-run-A.md`,
|
||||
This fixture is distinct from `tests/fixtures/trekreview/review-run-A.md`,
|
||||
which feeds the existing `tests/lib/review-determinism.test.mjs` against the
|
||||
v1.0 SC4 floor (0.70). The synthetic pair pushes the floor higher per SC7.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue