> ## 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.

# sdlc.yaml schema

> Complete field reference for sdlc.yaml — stages, required checks, artifacts, reviewers, and feature mappings.

Reference for every field in **`sdlc.yaml`**. See [Concepts — sdlc.yaml](/concepts/sdlc-yaml) for how config propagates through LaneSync.

## Top level

<AccordionGroup>
  <Accordion title="version" icon="hash">
    **Type:** `string`\
    **Required:** Yes\
    **Value:** `v1` (current schema version)
  </Accordion>

  <Accordion title="name" icon="tag">
    **Type:** `string`\
    **Required:** Yes\
    **Description:** Display name for the repository in LaneSync and reports.
  </Accordion>

  <Accordion title="stages" icon="layers">
    **Type:** `object`\
    **Required:** Yes\
    **Keys:** `planning`, `development`, `testing`, `evidencing`, `deployment`
  </Accordion>

  <Accordion title="features" icon="link">
    **Type:** `array`\
    **Required:** No\
    **Description:** Test file glob patterns mapped to external feature IDs for quality tracking.

    ```yaml theme={null}
    features:
      - pattern: "src/__tests__/auth*"
        system: github
        external_id: "42"
    ```
  </Accordion>
</AccordionGroup>

## stages.planning

| Field                     | Type    | Default | Description                         |
| ------------------------- | ------- | ------- | ----------------------------------- |
| `require_milestone`       | boolean | —       | Milestone must exist in GitHub      |
| `require_issues_assigned` | boolean | —       | All milestone issues need assignees |

## stages.development

| Field             | Type      | Description                                               |
| ----------------- | --------- | --------------------------------------------------------- |
| `branch`          | string    | Trunk branch (usually `main`)                             |
| `deploy_target`   | string    | Logical deploy environment label (e.g. `dev`)             |
| `required_checks` | string\[] | GitHub Actions check names — must match job names exactly |

<Warning>
  Development blocking = check in `required_checks` **AND** conclusion = failure. Do not expect non-listed workflows to block the stage.
</Warning>

## stages.testing

| Field             | Type      | Description                                                       |
| ----------------- | --------- | ----------------------------------------------------------------- |
| `branch_pattern`  | string    | Glob for release branch (e.g. `release/*` or `release/**`)        |
| `deploy_target`   | string    | Staging environment label                                         |
| `required_checks` | string\[] | Checks evaluated on release branch (or trunk in trunk-based mode) |

## stages.evidencing

| Field                              | Type      | Description                           |
| ---------------------------------- | --------- | ------------------------------------- |
| `required_artifacts`               | string\[] | Artifact type names CI must upload    |
| `required_reviewers.min_approvals` | number    | Minimum approving reviews             |
| `required_reviewers.teams`         | string\[] | GitHub team slugs eligible to approve |

## stages.deployment

| Field                        | Type    | Description                                 |
| ---------------------------- | ------- | ------------------------------------------- |
| `target`                     | string  | Production target label (e.g. `production`) |
| `promotion`                  | string  | `manual` or automated promotion mode        |
| `requires_evidence_approval` | boolean | Block deploy until evidence PR approved     |

## Canonical example

<Snippet file="snippets/sdlc-yaml-example.mdx" />

## LaneSync repo example

The LaneSync product repository uses this configuration:

```yaml theme={null}
version: v1
name: sdlc-state

stages:
  planning:
    require_milestone: true
    require_issues_assigned: true

  development:
    branch: main
    deploy_target: dev
    required_checks:
      - "Unified CI — Build & Push"

  testing:
    branch_pattern: "release/**"
    deploy_target: staging
    required_checks:
      - "Unified CI — Build & Push"
      - "Deploy App to AWS (DB + Compose)"

  evidencing:
    required_artifacts:
      - backend-test-results
    required_reviewers:
      min_approvals: 1
      teams:
        - engineering-leads

  deployment:
    target: production
    promotion: manual
    requires_evidence_approval: true
```

<Note>
  Check names are repository-specific. Copy structure, not check names, when configuring your own repo.
</Note>

## Related

* [Configure sdlc.yaml](/guides/configure-sdlc-yaml)
* [Enforcement](/concepts/enforcement)
