# Known-broken lane

URL: https://mechcrate.dev/docs/project/known-broken/
Source: site/apps/site/src/content/docs/docs/project/known-broken.mdx

---

import KnownBrokenLane from '@/components/KnownBrokenLane.astro';

Every tracked, testable defect in this repository has a test that asserts its
**fixed** behaviour *today*, annotated `#[ignore = "bd:mech-crate-<id> …"]`. The
release gate never runs them. `make test-known-broken` runs only them and
scoreboards the result.

**Expected state: all red.** A lane test that turns green is the signal that a
fix landed without bookkeeping, surfaced rather than silently absorbed.

<KnownBrokenLane />

:::note[This table is not written by hand]
It is read out of the repository's
[`tests/KNOWN_BROKEN.md`](https://github.com/Dev916/mech-crate/blob/main/tests/KNOWN_BROKEN.md)
during `astro build`. A row leaves this page when the fix lands and the row
leaves the index. If the file ever goes missing, the build fails rather
than publishing a page that claims there is nothing wrong.
:::

## The fix workflow

The definition of done for each issue, and the reason the lane cannot quietly
accumulate:

1. `bd update mech-crate-<id> --claim`
2. Make the lane test pass.
3. Delete its `#[ignore]` so the test joins the gate.
4. Remove its row from the index.
5. `bd close mech-crate-<id>`.

## House rules

- `#[ignore]` is reserved **exclusively** for this lane. Database-gated tests
  skip via an env-var early return, never `#[ignore]`, so the attribute means
  one thing and the two counts stay meaningful.
- Every lane test's *arrange* half must succeed today. A lane test that dies on
  a missing fixture tells you nothing about the defect, so setup assertions
  carry a `setup:` prefix and the two failure classes stay distinguishable.
- Lane tests live beside the suite that owns their subject, not in one central
  file. The test is the first thing whoever fixes it should read.

The two numbers partition the workspace: the lane count plus the gate count is
the total test count. If they stop summing, either a lane test lost its
`#[ignore]` or a gate test grew one.

**→ [Testing](/docs/framework/testing/)** for the gates this lane sits beside,
and the evidence that each one actually blocks.
