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

# Milestone details

> Stage-by-stage drill-down for a milestone — blocking items, live sdlc.yaml checks, and GitHub links.

Milestone details show **why** a release is blocked and **what** to do next. Data is computed from live GitHub state plus your repository's `sdlc.yaml`.

## Opening milestone details

1. Go to [lanesync.dev](https://lanesync.dev)
2. Click a milestone card
3. Review the stage breakdown panel

## Stage details API

`GET /api/milestones/:id/stage-details` returns per-stage items. LaneSync fetches **live `sdlc.yaml` from GitHub** on every request (60-second cache TTL).

Example structure:

```json theme={null}
{
  "planning": {
    "items": [{ "number": 1, "title": "Add auth", "blocking": true }]
  },
  "development": {
    "items": [{ "number": 5, "merged": true, "blocking": false }]
  },
  "testing": {
    "releaseBranch": "release/v1.0.0",
    "items": [{ "name": "CI — Build & Test", "conclusion": "success", "blocking": false }]
  },
  "evidencing": { "approved": false, "items": [] },
  "deployment": { "items": [] }
}
```

## Per-stage panels

### PLANNING

Lists milestone issues. **Blocking** when unassigned.

**Fix:** Assign owners in GitHub.

### DEVELOPMENT

Lists open issues and required check status on the development branch.

**Blocking when:**

* Issue still open
* Required check (from `sdlc.yaml`) has `failure` conclusion

<Note>
  Only checks listed in `required_checks` can block development. Other workflow failures are visible but not blocking.
</Note>

### TESTING

Shows release branch name and check results on that branch.

**Blocking when:**

* Release branch missing (release-branch mode)
* Required check failed or pending

### EVIDENCING

Lists required artifacts and evidence PR approval state.

**Blocking when:**

* Artifact missing
* `min_approvals` not met

### DEPLOYMENT

Shows deploy readiness and promotion status.

**Blocking when:**

* Prior stages incomplete
* `requires_evidence_approval` not satisfied

## Branch Actions

LaneSync creates branches and pull requests from the dashboard — no repo-side automation workflows required.

### Start Work

Click **Start work** on a milestone issue in the **PLANNING** panel to:

1. Create a feature branch from the development branch
2. Open a **draft PR** targeting the development branch
3. Link the branch and PR to the issue in LaneSync

**When it appears:**

* The issue is **open** and has an **assignee**
* No work branch exists yet for that issue

**Branch naming:** `feature/{issue-number}-{slugified-title}` — for example, `feature/42-add-login`.

After Start Work succeeds, a **PR ↗** link appears on the issue row. Click it to open the draft PR in GitHub.

### Cut Release Branch

Click **Cut release branch** in the milestone header to create the release branch from the current development branch tip.

**When it appears:**

* Release model is **release-branch** (not trunk-based)
* All milestone issues are **closed**
* No release branch exists yet for this milestone
* Typically while the milestone is in **DEVELOPMENT**, ready to enter **TESTING**

**Branch naming:** follows your `sdlc.yaml` testing `branch_pattern` (configured in the repo wizard as the release branch prefix). For example, with prefix `release/` and milestone version `v1.2.0`, LaneSync creates `release/v1.2.0`.

<Note>
  Trunk-based repositories test on the development branch directly — **Cut release branch** is hidden when `releaseModel` is `trunk`.
</Note>

## Actions from the dashboard

| Action                 | When available                                                 |
| ---------------------- | -------------------------------------------------------------- |
| **Start work**         | PLANNING panel — assigned open issue without a work branch     |
| **Cut release branch** | Release-branch mode — all issues closed, no release branch yet |
| **Approve evidence**   | EVIDENCING stage, user is eligible reviewer                    |
| **Open in GitHub**     | Any linked issue, PR, or workflow run                          |
| **Refresh sync**       | Always                                                         |

## Edge cases

<AccordionGroup>
  <Accordion title="Partial data after API errors">
    If GitHub API calls fail, stage details may omit workflow runs. LaneSync logs a warning and returns partial payload.
  </Accordion>

  <Accordion title="No GitHub App on repo">
    Returns DB-only payload with extended cache TTL (300s). Install the app for live data.
  </Accordion>

  <Accordion title="Stale check names">
    Push updated `sdlc.yaml` to refresh required checks and rulesets.
  </Accordion>
</AccordionGroup>

## Related

* [Release pipeline](/concepts/release-pipeline)
* [Configure sdlc.yaml](/guides/configure-sdlc-yaml)
