From 1418f0a54ce22c120d639dbac5e8e1f0ecb6d01f Mon Sep 17 00:00:00 2001 From: Maxwell Date: Sun, 5 Jul 2026 17:16:55 +0200 Subject: [PATCH 1/3] fix(cli): replace as any cast with proper .complete() API The --stacks option on the plan command was using `{ complete: completeStackNames } as any` to bypass Cliffy's type system. This triggered the `no-explicit-any` lint rule, causing CI to fail at the lint step. Replaced with the documented `.complete("stacks", completeStackNames)` chain method which is fully typed and the idiomatic Cliffy approach. --- src/cli/mod.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/cli/mod.ts b/src/cli/mod.ts index 058f749..0d44754 100644 --- a/src/cli/mod.ts +++ b/src/cli/mod.ts @@ -1487,9 +1487,8 @@ export function buildCli(): Command { cli.command("plan", "Produce a deterministic plan of what an operation would do.") .arguments("") .option("--profile ", "Use a specific profile.") - .option("--stacks ", "Comma-separated list of stack names.", { - complete: completeStackNames, - } as any) + .option("--stacks ", "Comma-separated list of stack names.") + .complete("stacks", completeStackNames) .option("--override ", "Comma-separated list of override files.") .option("--json", "Output machine-readable JSON.") .description( From d0af1b3cac60bb080392202ff109793570b58642 Mon Sep 17 00:00:00 2001 From: Maxwell Date: Sun, 5 Jul 2026 17:17:15 +0200 Subject: [PATCH 2/3] ci(tasks): add test:coverage task and fix coverage path Added a dedicated `test:coverage` task that runs tests with --coverage=.coverage for CI use, keeping the `test` task lightweight for local dev (coverage instrumentation adds 5-20% overhead). Fixed the `coverage` task which was missing the .coverage directory argument. Previously `deno task coverage` errored with "No coverage files found" because it defaulted to the current directory instead of the coverage output directory. --- deno.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deno.json b/deno.json index d4e3782..23336cc 100644 --- a/deno.json +++ b/deno.json @@ -9,7 +9,8 @@ "fmt:check": "deno fmt --check", "lint": "deno lint", "test": "deno test --allow-read --allow-write --allow-env --allow-run --allow-sys", - "coverage": "deno coverage --detailed", + "test:coverage": "deno test --allow-read --allow-write --allow-env --allow-run --allow-sys --coverage=.coverage", + "coverage": "deno coverage --detailed .coverage", "build": "deno compile --output dist/stackctl src/main.ts", "build:darwin:x64": "deno compile --target x86_64-apple-darwin --output dist/stackctl-darwin-x64 src/main.ts", "build:darwin:arm64": "deno compile --target aarch64-apple-darwin --output dist/stackctl-darwin-arm64 src/main.ts", From fe152d125de133611462db11f8a1f698335705ed Mon Sep 17 00:00:00 2001 From: Maxwell Date: Sun, 5 Jul 2026 17:17:24 +0200 Subject: [PATCH 3/3] ci(workflow): consolidate test and coverage steps Previously tests ran twice in CI: once via `deno task test` (no coverage) and again via `deno test ... --coverage=.coverage` in the coverage step. This doubled CI test time. Consolidated to a single test pass with coverage using `deno task test:coverage`, followed by `deno task coverage` to generate the detailed report. Also added .slim/deepwork/ to .gitignore and created .ignore to allow deepwork files for agent-assisted development sessions. --- .github/workflows/ci.yml | 9 +++------ .gitignore | 3 +++ .ignore | 2 ++ 3 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 .ignore diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2c47e28..253259c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,14 +33,11 @@ jobs: - name: Type check run: deno task check - - name: Run tests - run: deno task test + - name: Run tests (with coverage) + run: deno task test:coverage - name: Generate coverage report - if: success() - run: | - deno test --allow-read --allow-write --allow-env --allow-run --allow-sys --coverage=.coverage - deno coverage --detailed .coverage + run: deno task coverage build: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index cbe61d7..b816b3e 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,6 @@ Thumbs.db # test coverage .coverage/ cov/ + +# deepwork session state +.slim/deepwork/ diff --git a/.ignore b/.ignore new file mode 100644 index 0000000..a704baf --- /dev/null +++ b/.ignore @@ -0,0 +1,2 @@ +!.slim/deepwork/ +!.slim/deepwork/**