Skip to main content
← Back to list
01Issue
FeatureShippedUAT
Assigneesstack72

Relationships

#1098 UAT Phase 1f: alias-parity micro-suite

Opened by stack72 · 7/11/2026· Shipped 7/11/2026

Summary

Phase 1f adds hidden list alias parity tests to 5 remaining families. Each test asserts that <family> list produces identical stdout to <family> search, placed in the family's existing search_test.ts file.

Several families already have alias parity coverage from Phases 1a-1e (model method history, workflow history, vault, report type). This phase covers the 5 that don't.

No new files — all changes are extensions of existing test files.

Dependency

Phase 8a landed. Phases 1a-1e landed.

What's Already Covered (do NOT duplicate)

These already have list alias parity tests:

  • tests/cli/model/method/history/search_test.ts (from Phase 1a)
  • tests/cli/workflow/history/search_test.ts (from Phase 1b)
  • tests/cli/vault/search_test.ts (from Phase 1c consolidation)
  • tests/cli/report/type/search_test.ts (from Phase 1e)

Files to Extend (5 existing files)

tests/cli/model/search_test.ts (EXTEND)

Add one test: swamp model list stdout ≡ swamp model search stdout (normalize timestamps if needed). The hidden list alias must produce identical output to search.

tests/cli/model/output/search_test.ts (EXTEND)

Add one test: swamp model output list stdout ≡ swamp model output search stdout.

tests/cli/model/type/search_test.ts (EXTEND)

Add one test: swamp model type list stdout ≡ swamp model type search stdout.

tests/cli/workflow/search_test.ts (EXTEND)

Add one test: swamp workflow list stdout ≡ swamp workflow search stdout.

tests/cli/vault/type/search_test.ts (EXTEND)

Add one test: swamp vault type list stdout ≡ swamp vault type search stdout.

Implementation Pattern

Each test should:

  1. Set up a repo with at least one item of the relevant type (model/workflow/vault) so the output is non-empty
  2. Run the search form and capture stdout
  3. Run the list form and capture stdout
  4. Assert they're identical (normalize timestamps if they include time-of-capture values that could differ between the two calls)
  5. Assert exit code 0 for both
Deno.test("swamp model list is a hidden alias for model search", () =>
  withInitializedRepoContext(runner, async (repo) => {
    await installFixtureModel(runner, repo.dir, "shell-echo");
    const search = await runCommand(runner, repo.dir, ["model", "search", "--json"]);
    const list = await runCommand(runner, repo.dir, ["model", "list", "--json"]);
    assertEquals(search.exitCode, 0);
    assertEquals(list.exitCode, 0);
    assertEquals(search.stdout, list.stdout);
  }));

Ground Rules

  • Read CLAUDE.md in the repo root first
  • Task 0 — ground truth: Verify each list alias actually works by running it by hand before writing tests. If any alias doesn't exist or behaves differently, note the drift.
  • Use the github-pr skill for commits and PR creation
  • Every test spawns the real swamp binary
  • Every test asserts an explicit exit code

How to Run & Verify

deno task fmt
deno task lint
deno task check
deno task test
SWAMP_NO_TELEMETRY=1 SWAMP_SOURCE_DIR=~/code/swamp-club/swamp deno task uat:cli

Definition of Done

  • 5 existing test files extended with alias parity assertions
  • Each test verifies non-empty output (at least one item present)
  • Each test asserts identical stdout between list and search
  • Each test asserts exit code 0 for both forms
  • deno task fmt && deno task lint && deno task check && deno task test all green
  • SWAMP_NO_TELEMETRY=1 SWAMP_SOURCE_DIR=~/code/swamp-club/swamp deno task uat:cli passes
  • PR opened via github-pr skill, branching from main
02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED+ 1 MOREASSIGNED+ 2 MOREREVIEW+ 3 MOREPR_MERGED+ 1 MORENOTIFICATION_SKIPPED

Shipped

7/11/2026, 10:36:30 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
stack72 assigned stack727/11/2026, 9:54:32 PM

Sign in to post a ripple.