Skip to content

feat: pivot to TS test harness via dryvist/cc-edge-pack-template#5

Open
JacobPEvans-personal wants to merge 2 commits into
mainfrom
feat/test-harness-consumption
Open

feat: pivot to TS test harness via dryvist/cc-edge-pack-template#5
JacobPEvans-personal wants to merge 2 commits into
mainfrom
feat/test-harness-consumption

Conversation

@JacobPEvans-personal
Copy link
Copy Markdown
Member

Why

Pilot main is a stale scaffold from before the template was real:
Python harness, placeholder pack name (REPLACE-WITH-PACK-NAME),
placeholder route, CLAUDE.md that incorrectly claims the pilot itself
is a template repository. CI on every push has been a no-op skip due
to if: github.event.repository.is_template == false (which evaluates
to false on consumers too — bug in the previous template scaffold).

This PR is the minimum needed for the pilot to consume the proven
TS test harness from dryvist/cc-edge-pack-template and have its CI actually run end-to-end.

What's in scope

  • Test infra sync (cribl-client.ts, vitest config, lockfile, fixtures pair)
  • Tooling configs (biome, lefthook, .editorconfig, .yamllint.yml, flake.nix, etc.)
  • Workflows (test.yml, release.yml, release-please.yml with the wrap-and-hide
    pattern: dryvist exposes generic GH_APP_ID only)
  • Pack identity (package.json name → cc-edge-claude-code-io,
    release-please-config package-name match, slim pack-flavored CLAUDE.md +
    README replacing the stale "this is a template" content)
  • Demo passthrough pipeline + route + fixture inherited as-is from the
    template
    so CI runs end-to-end on day one
  • Removal of Python harness (conftest.py, cribl_client.py,
    test_*.py, requirements.txt)

What's deliberately NOT in scope

  • Real claude-code-otel and claude-code-session-logs pipelines
  • New eval functions, captured sample events, fixture authoring helpers
  • Inputs.yml additions (OTLP source, file-monitor source)
  • Samples.yml catalog entries

Those are pack-content authorship and belong in follow-up PRs once the
harness is proven on the pilot. This PR is about consuming the harness,
not building out the pack.

Replaces

#4 — same
intent (TS pivot) but ballooned to 64 files with substantial pack
content I authored to make the harness happy. Closing #4 in favor of
this one which is a clean rebuild from the now-proven template baseline.

Adopts the proven TS test harness from the pack template (Vitest +
Biome + nix-devenv shell + reusable workflows). Inherits the template's
demo passthrough pipeline + fixture so CI runs end-to-end on day one.

Pack identity (load-bearing, distinguishes this pack from the template):
- package.json: name=cc-edge-claude-code-io, displayName, description, tags
- release-please-config.json: package-name=cc-edge-claude-code-io
- CLAUDE.md: pack-flavored, points to template + dryvist/.github
- README.md: Cribl Edge pack for Claude Code telemetry collection

Inherited from template (do-not-modify-here):
- tests/{cribl-client,parse-filter,global-setup,test-helpers}.ts
- tests/{routes,pipelines}.test.ts + tsconfig + vitest config + lockfile
- biome.jsonc, lefthook.yml, .editorconfig, .yamllint.yml, flake.nix, .envrc
- Makefile, .gitignore
- scripts/{build-crbl,validate-pack-structure}.sh
- docs/{file-boundary,test-harness,development,release-process,validator-rules}.md
- .github/workflows/{test,release,release-please}.yml + .github/README.md
- default/pipelines/passthrough/conf.yml + route.yml (demo passthrough)
- tests/fixtures/passthrough/sample.{json,expected.json}

Removed: Python harness (conftest.py, cribl_client.py, test_*.py,
requirements.txt) — replaced by TS Vitest equivalent.

Real claude-code-otel and claude-code-session-logs pipelines + fixtures
are deferred to follow-up PRs (out of scope for this minimal harness-
consumption PR).
Copilot AI review requested due to automatic review settings April 26, 2026 19:35
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR pivots the repository from the legacy Python/pytest harness to the shared TypeScript/Vitest harness from dryvist/cc-edge-pack-template, updates CI to run end-to-end, and refreshes pack identity/docs to match a real pack repo (not a template scaffold).

Changes:

  • Replace the Python test harness with a Vitest-based TypeScript harness (including pnpm lockfile + fixtures).
  • Add shared tooling/ops scaffolding (Biome, lefthook, nix flake, validation/build scripts, release-please config).
  • Update pack identity and baseline “demo passthrough” route/pipeline/fixtures so CI can validate + test end-to-end immediately.

Reviewed changes

Copilot reviewed 42 out of 44 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
tests/vitest.config.ts Adds Vitest configuration + global setup wiring
tests/tsconfig.json Adds TS config for the test harness
tests/test_routes.py Removes Python route tests (superseded by TS)
tests/test_pipelines.py Removes Python pipeline fixture tests (superseded by TS)
tests/test-helpers.ts Adds helpers for per-test-file Cribl client + pack id
tests/routes.test.ts Adds TS route structural + dynamic flow tests
tests/requirements.txt Removes Python test dependencies
tests/pnpm-lock.yaml Adds pnpm lockfile for harness dependencies
tests/pipelines.test.ts Adds TS fixture-driven pipeline tests
tests/parse-filter.ts Adds simple route-filter parser used by dynamic tests
tests/package.json Adds isolated pnpm workspace for tests tooling
tests/global-setup.ts Adds Vitest globalSetup to install pack once per run
tests/fixtures/passthrough/sample.json Adds demo input fixture to exercise pipeline
tests/fixtures/passthrough/sample.expected.json Adds expected output fixture for demo pipeline
tests/cribl_client.py Removes Python Cribl API client
tests/conftest.py Removes pytest session fixtures (install/cleanup)
tests/README.md Removes Python-harness documentation
tests/cribl-client.ts Adds TS Cribl management API client for harness
scripts/validate-pack-structure.sh Adds pack structural validation script used by CI
scripts/build-crbl.sh Adds release/build script for .crbl artifacts
release-please-config.json Adds release-please configuration for this pack
package.json Updates pack identity fields (name/description/tags/etc.)
lefthook.yml Adds pre-commit Biome hook configuration
flake.nix Adds Nix dev shell for consistent TS toolchain
docs/validator-rules.md Documents validator rules + what CI enforces
docs/test-harness.md Documents the TS/Vitest harness + fixtures workflow
docs/release-process.md Documents release-please driven release process
docs/file-boundary.md Documents “generic vs pack-specific” file boundary
docs/development.md Documents local dev workflow for the TS harness
default/pipelines/route.yml Replaces placeholder route with demo passthrough route
default/pipelines/passthrough/conf.yml Adds demo pipeline stamping canonical fields
biome.jsonc Adds shared Biome configuration
README.md Replaces template README with pack-specific README
Makefile Switches from Python targets to pnpm/vitest/biome targets
CLAUDE.md Updates repo guidance to reflect pack (not template) + new harness
.yamllint.yml Adds yamllint configuration for CI/local linting
.release-please-manifest.json Adds release-please manifest for version tracking
.gitignore Updates ignores from Python venv to Node/TS + nix/direnv
.github/workflows/test.yml Points CI test workflow to template reusable workflow; removes template-skip gating
.github/workflows/release.yml Points release workflow to template reusable workflow
.github/workflows/release-please.yml Adds release-please caller workflow wiring
.github/README.md Documents reusable workflows + caller behavior in this repo
.envrc Adds direnv integration for Nix flake
.editorconfig Adds shared editor formatting settings
Files not reviewed (1)
  • tests/pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tests/pipelines.test.ts
Comment thread scripts/validate-pack-structure.sh
Comment thread tests/cribl-client.ts
Comment thread tests/cribl-client.ts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants