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:<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:Propagation on push
Whensdlc.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 inrequired_checks must match GitHub Actions job check names (the job name: field, or its job key when no name is set) exactly:
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
- Release-branch (default)
- Trunk-based
release/v1.0.0 after development completes. Testing gates evaluate checks on the release branch.