Skip to content

content: reorganize levels, update requirement text#1483

Merged
zachariahcox merged 31 commits intomainfrom
users/zacox/stspelling
Oct 18, 2025
Merged

content: reorganize levels, update requirement text#1483
zachariahcox merged 31 commits intomainfrom
users/zacox/stspelling

Conversation

@zachariahcox
Copy link
Collaborator

@zachariahcox zachariahcox commented Sep 15, 2025

Related to points 2 and 3 of #1459

This PR reorganizes the levels to achieve slightly different goals.
There is still work to do here 😅

Major content changes:

  1. Level 2 now focuses on providing evidence that a revision has reliable history. Dropped the generic term "protect" in favor of specific requirements for access and branch technical controls.
  2. Level 3 now focuses on the continuous enforcement aspect of technical controls. The continuity concept replaces the previous "org intent" / "consumable branches" concepts.
  3. Protected tags and branches were consolidated into just "named references." The requirement to prevent tags from moving was moved from the SCS to the Org.

Minor content changes:

  1. Lots of minor text edits to requirements text to align with the major changes.
  2. Additional examples were added to clear up the difference between "revision ancestry" and branch "pointer history."
  3. Removed the term "change management process" in favor of "technical controls" in all cases.

@netlify
Copy link

netlify bot commented Sep 15, 2025

Deploy Preview for slsa ready!

Name Link
🔨 Latest commit 3965cc1
🔍 Latest deploy log https://app.netlify.com/projects/slsa/deploys/68e97bed4130d70008143c90
😎 Deploy Preview https://deploy-preview-1483--slsa.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This pull request updates the SLSA source requirements specification to improve clarity, reorganize structure, and enhance guidance for source control system implementers. The changes focus on refining terminology, consolidating requirements across SLSA levels, and providing more precise technical guidance.

Key changes include:

  • Restructured SLSA Level descriptions to better communicate the progression from basic version control to comprehensive code review
  • Reorganized requirements tables to emphasize technical controls, provenance, and intent declaration
  • Enhanced documentation around technical controls enforcement and provenance generation

Reviewed Changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
docs/spec/draft/source-requirements.md Major content updates including level descriptions, requirements reorganization, terminology fixes, and grammar improvements
.vscode/settings.json Added domain-specific words to spell-check dictionary

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@TomHennen
Copy link
Contributor

This is meant to fix #1459, right?

Copy link
Contributor

@TomHennen TomHennen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this Zach it's looking promising!

Copy link
Contributor

@TomHennen TomHennen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the long turnaround on these last few comments, I find I really need some time to focus to think about them.

@adityasaky adityasaky self-requested a review September 22, 2025 16:17
Copy link
Member

@MarkLodato MarkLodato left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huge improvement! Thanks for the hard work here.

In order to get this to land sooner, you might want to consider splitting this PR in two:

  • Pure editorial changes --- grammar, typos, rewording, including the updated table at the top. These are uncontroversial and can just get submitted since there is little disagreement here and it's an obvious improvement.
  • Content changes. This is where all of the discussion is. Splitting this to a separate PR might make it easier to discuss these changes in isolation.

Note: I didn't review any of the content changes yet in this PR since there is still a lot of back-and-forth. I'll review once those in-flight edits are made.

Signed-off-by: Zachariah Cox <zachariahcox@github.com>
Copy link
Contributor

@TomHennen TomHennen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are soooo close

zachariahcox and others added 5 commits October 10, 2025 15:21
Co-authored-by: Tom Hennen <TomHennen@users.noreply.github.com>
Signed-off-by: Zachariah Cox <zachariahcox@github.com>
Co-authored-by: Tom Hennen <TomHennen@users.noreply.github.com>
Signed-off-by: Zachariah Cox <zachariahcox@github.com>
Copy link
Member

@arewm arewm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, @zachariahcox for all of this work. Two comments that are relatively minor. We can move them out to issues if we want to handle them outside this PR (I feel like they should be addressed before we publish).

Also, @MarkLodato requested changes so he'll need to re-review.

Comment on lines +215 to +216
If the SCS supports Tags, the SCS MUST be configured to prevent them from
being moved or deleted.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these tags intended to be just for the consumable Source Revisions or globally? In RC1, it was more clear that these were just for the protected branches.

Copy link
Collaborator Author

@zachariahcox zachariahcox Oct 13, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good question. in this case, I think we just mean the definition of "tag" from above, but maybe we should add a hyper link for clarity

If we need another revision on this PR, I'll add this link.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree. It's a bit tautological, but basically, if you intend for something to be immutable then the SCS needs to be configured to prevent them from being moved/deleted.

If it's global that seems fine. If it only applies to configure named references, that seems fine too? A non-branch named reference that isn't configured to prevent moving/updating, won't get an L2+ VSA/provenance associated with it.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tracked: #1490

Comment on lines +370 to +373
For each technical control claimed in a VSA, continuity MUST be established and
tracked from a specific start revision.
If there is a lapse in continuity for a specific control, continuity of that
control MUST be re-established from a new revision.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is probably more of an implementation detail (i.e. related to source-tool), but should we be stating continuity at a granular level or at a more comprehensive level?

i.e. will continuity need to be established for a specific control or would it need to be re-established for all controls? This probably affects how verification is intended to be worked with.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO doing it for specific controls would be easier so let's start there?

This also makes adding new controls easier since you don't have to reestablish continuity.

But yeah, maybe that can be left to the implementations?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like this line of thought.
It seems like there are some controls that are foundational (ie, no force pushing) and might impact the validity of the others?

As mentioned in other comment threads, I think the control continuity "lengh of enforcement" metric is interesting, but probably gameable due to how different the change velocities can be between repos. For example, how long / how many commits do you need to enforce a control before it's "good enough" -- for some repos that might be 2 while for another it's 200. Would you put a control "on probation" if it was broken recently?

I think these are interesting questions and we should come back to them.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I created #1491 to follow up.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.


Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Copy link
Member

@MarkLodato MarkLodato left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall I think this PR is a strict improvement from the previous version and should be merged. I don't want my comments to hold this PR up any further.

For the record, this PR actually does three separate things:

  1. Content: Redefine L2 and L3 by shuffling around requirements. L2 is now about trust in the history and L3 is about enforcing (additional?) technical controls.

    I agree with this change. It is largely in line with bullet 2 in #1459. That said, I think L3 could use a bit more refining. "Enforce organizational technical controls" is a bit ambiguous; personally I'd frame it around publication.

  2. Content: Change the details of specific requirements. For example, it is now explicit that History requires both server-side reflog and non-fast-forward updates (using git terminology).

    Most of these changes LGTM, but I'm not sure I agree 100% with all of the them. For example, there used to be a requirement at what is now L3 around naming specific branches as being "consumable", and I thought that was helpful for giving L3 meaning. That appears to have been dropped?

  3. Editorial: Reword a lot of text for clarity.

    LGTM. There's still room for further improvement, but let's get this merged and then iterate.

For the future, I highly recommend splitting PRs so that they are either pure content changes (minimizing edits) or pure editorial changes (zero content changes). Doing so would make it much easier to review and would likely speed up the review process.

Two requests for the PR description:

  1. Update the PR description to summarize what the content changes are.
  2. Do not mark #1459 as fixed. This PR only addresses the second bullet (out of four) in that issue. (If the group disagrees with the rest of my suggestions, I ask that you say so in that issue rather than implicitly closing it as part of this PR.)

[Using "Request changes" so my request doesn't get lost. Once the description is updated, I'll click Approve.]

@zachariahcox zachariahcox changed the title content: update level descriptions, update grammar, consolidate some requirements content: reorganize levels Oct 16, 2025
@zachariahcox zachariahcox changed the title content: reorganize levels content: reorganize levels, update requirement text to match levels Oct 16, 2025
@zachariahcox zachariahcox changed the title content: reorganize levels, update requirement text to match levels content: reorganize levels, update requirement text Oct 16, 2025
@zachariahcox
Copy link
Collaborator Author

@MarkLodato @TomHennen @arewm @adityasaky I have updated the description of this PR to summarize what I think ended up happening here.

Please feel free to directly edit as you see fit 👍 Thank you!

@zachariahcox zachariahcox moved this from 🆕 New to 🏗 In progress in Issue triage Oct 17, 2025
@zachariahcox zachariahcox merged commit 534cff6 into main Oct 18, 2025
17 checks passed
@github-project-automation github-project-automation bot moved this from 🏗 In progress to ✅ Done in Issue triage Oct 18, 2025
@zachariahcox zachariahcox deleted the users/zacox/stspelling branch October 18, 2025 01:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: ✅ Done

Development

Successfully merging this pull request may close these issues.

6 participants