Skip to content

porch's tests gate excludes 3 test files via gitignored local config, so 'tests green' means something different on every machine #281

Description

@pseudoseed

Found while triaging #278 on 2026-08-31.

What is configured

.codev/config.json > porch.checks.tests overrides the command the tests gate runs. Among its excludes are three named test files, not just directories:

--exclude "**/bugfix-213-architect-restart.test.ts"
--exclude "**/init.test.ts"
--exclude "**/spec-250-vendoring-identities.test.ts"

.codev/config.json is gitignored (.gitignore:11), so this list is machine-local and unversioned.

Why it matters

A builder that reports "porch tests green" has run whatever its machine excludes. Nobody reviewing that claim can see the exclusion list, it does not travel with the repo, and it is not the list CI runs. Three named files are silently outside the gate on this machine, and a different machine has a different set.

This is the shape the project already treats as a defect elsewhere: a check that cannot observe something must not report the same value as a check that observed it and found nothing wrong. Here the gate cannot fail on those three files and says nothing about it.

Concretely today: spec-250-vendoring-identities.test.ts fails on this machine whenever the fork checkout is dirty (#278). The gate is insulated from it, so a builder can pass the gate while its own pnpm test is red, and the two answers disagree with no record of why.

What would close this

  • Move the exclusion list somewhere versioned, so it travels and can be reviewed. If a test must be excluded, that decision belongs in the repo with a reason next to it.
  • Have the gate report what it excluded, so "tests green" carries its own scope. Silence about an exclusion is the part that misleads.
  • Revisit whether bugfix-213-architect-restart.test.ts and init.test.ts still need excluding, or whether they were quarantined once and forgotten.

Related

#278 is the environmental failure that led here. This issue is about the gate not saying what it skipped, which is independent of that test being fixed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/porchProtocol orchestrator

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions