Skip to main content
sdlc.yaml is the single source of truth for SDLC policy. Independent repositories use their root file. Organization-managed repositories resolve <org>/.github/sdlc.yaml with optional permitted repository customization. See organization setup. LaneSync reads it from GitHub — never hardcode check names or workflow names in application code.

File location

Independent repository setup places the file at the repository root:
Organization setup places the shared file at <org>/.github/sdlc.yaml. Covered repositories need a root sdlc.yaml only when the organization allows customization and that repository uses it. See Configure an organization for inheritance and GitHub ruleset locations. LaneSync bootstraps the root file during independent repository setup. You edit configuration like any other source file — commit, push, and LaneSync reconciles the effective policy after the webhook.

Minimal example

Schema overview

See the full sdlc.yaml schema reference.

Live reads vs database cache

LaneSync maintains two views of your config:
The database required_checks column is a cache. When you rename a CI job, update sdlc.yaml and push — the webhook re-parses checks, updates the DB, re-applies rulesets, and re-syncs milestones through a revision-tracked propagation path. Partial failures remain blocked until recovery.

Propagation on push

When sdlc.yaml is pushed to the default branch: All four steps must happen together. If you add a new consumer of required_checks, wire it into handleSdlcYamlChange in the webhook handler.

Required checks naming

Check names in required_checks must match GitHub Actions job check names (the job name: field, or its job key when no name is set) exactly:
GitHub renders checks as Workflow name / Job name. Rulesets match the job portion only. A successful check displayed as Deploy to Staging / deploy therefore satisfies deploy; it does not satisfy a required check named Deploy to Staging. LaneSync-generated deployment starters use the wizard’s first stage-specific check as the job name. Checks inherited from an earlier stage keep the job that already reports them, and every additional required check needs its own reporting job. LaneSync never falls back to project-specific default check names. The only infrastructure constant is SDLC Enforce.

Trunk-based vs release-branch

Cut release/v1.0.0 after development completes. Testing gates evaluate checks on the release branch.

Feature mapping (optional)

Link test files to external feature IDs for quality tracking:
See Quality tracking.