> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lanesync.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Quality tracking

> Feature-level test tracking, regression detection, and quality report exports in LaneSync.

LaneSync goes beyond pass/fail CI badges. It ingests test evidence from your pipelines, links results to features, and surfaces regressions across releases.

## How evidence flows in

```mermaid theme={null}
flowchart LR
  ci[GitHub Actions CI]
  upload[POST /api/evidence/upload]
  parse[JUnit parser]
  link[Feature linker]
  dash[Quality scorecards]

  ci --> upload
  upload --> parse
  parse --> link
  link --> dash
```

1. **CI runs** on your release branch (bootstrapped workflow templates include an evidence upload step)
2. **Pipeline POSTs** metrics and report paths to `/api/evidence/upload`
3. **LaneSync parses** JUnit XML and other report formats
4. **Tests link** to features via `sdlc.yaml` patterns, CI env vars, or GitHub issue references
5. **Dashboard** shows scorecards, anomalies, and exportable reports

<Note>
  Evidence upload requires CI authentication (GitHub OIDC or LaneSync API key). Tenant is derived from the verified token — not from an unauthenticated `org` body field.
</Note>

## Feature linking

LaneSync resolves test cases to features through multiple strategies:

| Strategy               | Source                                    |
| ---------------------- | ----------------------------------------- |
| **sdlc.yaml patterns** | Glob patterns mapped to external IDs      |
| **CI environment**     | Feature reference in pipeline env vars    |
| **GitHub issues**      | Issue numbers referenced in test metadata |

Example `sdlc.yaml` mapping:

```yaml theme={null}
features:
  - pattern: "src/__tests__/checkout*"
    system: github
    external_id: "108"
```

## Regression detection

Between releases, LaneSync compares test run history per test case ID (`tc-id`). Anomalies include:

* Tests that **passed** in the previous release but **fail** now
* New failures on features marked as release-critical
* Coverage drops beyond configured thresholds (when coverage reports are uploaded)

View anomalies from the dashboard **Quality** tab or via `GET /api/quality/anomalies`.

## Quality reports

Export aggregated quality data for auditors or release reviews:

| Format | Endpoint                              |
| ------ | ------------------------------------- |
| CSV    | `GET /api/quality/export?format=csv`  |
| HTML   | `GET /api/quality/export?format=html` |
| XLSX   | `GET /api/quality/export?format=xlsx` |

Filter by owner, repo, milestone, test type, and environment.

## Multi-environment uploads

LaneSync CI templates upload evidence for all three environments automatically:

| Trigger                  | `environment` | `version`                     |
| ------------------------ | ------------- | ----------------------------- |
| Push to dev branch       | `dev`         | latest open milestone         |
| Push to release branch   | `staging`     | branch suffix (e.g. `v1.2.0`) |
| GitHub Release published | `production`  | tag name                      |

Each environment keeps its own evidence row per milestone so you can compare dev vs staging vs production quality side-by-side in the scorecard. See [CI evidence upload](/guides/ci-evidence-upload) for configuration details.

## Required artifacts

The evidencing stage can require specific artifact types before approval:

```yaml theme={null}
evidencing:
  required_artifacts:
    - test-results
    - backend-test-results
```

Bootstrapped CI templates produce placeholder HTML reports even when no tests exist yet, so evidence upload never blocks day-zero repos.

## CI configuration

Bootstrapped workflows default `SDLC_API_URL` to `https://lanesync.dev`. Self-hosted deployments should set the `SDLC_API_URL` repository variable. See [CI evidence upload](/guides/ci-evidence-upload).
