Repository navigation
docs: describe what 3.0.0 does - #590
Merged
Merged
Conversation
Eleven claims on the hand-written pages described the time before 3.0.0, or a behavior the code does not have. Each page states what the code does: - The released package is the documented install, and the next dist-tag is the pre-release of main. - A compat marker's major is above the current major, stated without naming a version. - The action bundle inlines its runtime dependencies, and the library keeps them external. - An unknown underscore key at a document's top level is refused. - Check reports a live value a replacing write would remove, and a ruleset's blind spot is a key omitted inside a rule. - A snapshot over a custom role named push or pull fails the target and writes no file. - Only apply reads the environment for a $NAME reference, and validation judges its form and provenance. - A debug trace withholds the whole payload of a request that carries a resolved secret. - skipped is a fleet target's result, never a repository verb's, and SingleOutcome is result, display, and detail. The forward-compatibility page names ten closed sections and the seven closed nested shapes. Its test derives both sets from the schema, so a mapping a section closes fails until the page names it. The v2 to v3 guide gains section 63 for the SettingsFile parser break the changelog lists, and the library reference limits that parser to the section's schema: the checks beside it stay with validateSettings.
Contributor
File size check0 over a hard cap (fails), 6 warning(s).
Split the file, wrap the line, shorten or exempt the comment, or list the path in 5 managed file(s) skipped; repo-platform owns them. |
Contributor
Member shape check1 finding(s).
Add the blank lines, make the comment one line directly above the item, comment every field or none, or list the path in 4 generated file(s) skipped. |
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues block the documentation and schema-test updates.
No open issues 🎉
What changed in this PR
Aligns GitHub Settings as Code documentation with released 3.0.0 behavior and expands tests that keep the documented schema boundaries accurate.
Changes:
- Updates installation guidance to use stable releases and clarifies the
nextchannel. - Corrects documentation for validation, check mode, snapshots, secret handling, and library results.
- Adds upgrade section 63 and schema-driven checks for closed sections and nested shapes.
| File | Description |
|---|---|
test/docs/readme.test.ts |
Checks documented closed sections and nested shapes against schemas. |
README.md |
Uses stable installation commands and clarifies next. |
docs/upgrading/v2-to-v3/library.md |
Adds section 63 on SettingsFile parsing behavior. |
docs/upgrading/v2-to-v3.md |
Updates the break count and indexes section 63. |
docs/start/cli.md |
Switches CLI installation examples to stable releases. |
docs/schema.docs.yml |
Clarifies accepted top-level underscore keys. |
docs/reference/secrets-and-vaults.md |
Documents whole-payload withholding in debug traces. |
docs/reference/library.md |
Corrects installation, validation, and result contracts. |
docs/reference/forward-compatibility.md |
Lists ten closed sections and seven closed nested shapes. |
docs/reference/architecture.md |
Separates secret-reference validation from apply-time resolution. |
docs/operate/snapshot.md |
Corrects placeholder requirements and snapshot failure behavior. |
docs/operate/check-mode.md |
Explains omission drift and the ruleset comparison blind spot. |
CONTRIBUTING.md |
Clarifies dependency packaging and compatibility-marker rules. |
Review effort: Balanced
Apply resolves the references of the sections the run applies, not every reference in the file: with the sections input limited to labels, an unset reference under actions_secrets does not fail the run. The secrets guide, the architecture page, and the snapshot guide say so. The semantics page places the stop of the ruleset omission sweep inside a rule, its parameters included, and inside a bypass actor, as the code does. The README leaves the ordering of next against latest to the Versioning section, and section 63 of the v2 to v3 guide quotes the refusal with only its parenthesis elided.
Apply resolves references before the first write of any section, and after the read-only preflight only when on-missing-permission: fail runs one: under warn an unset reference fails the run with zero requests. The secrets guide and the architecture page say so. The semantics page says where the ruleset omission sweep stops in the code's terms: inside a rule and inside a bypass actor, each a mapping that passes unknown keys through. Sentences that claimed more than the code does are narrowed. Check-mode says check reports what its sweep finds, the forward-compatibility table gives reasons the code states, the library reference and section 63 of the v2 to v3 guide limit the surviving keys to the ones the action passes through, and the docs test's name says it reads the outermost strict mappings.
Vivswan
marked this pull request as ready for review
November 12, 2026 02:43
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this specifies
How
reference/semantics.mdchanges one sentence: the omission sweep stops inside a rule, itsparametersincluded, and inside a bypass actor.Proof
Expected to contain: "Ten sections are closed"on the old page.bun test test/docsends 340 pass, 0 fail.Technical details
curl -s https://registry.npmjs.org/-/package/@vivswan%2Fgithub-settings-as-code/dist-tagsreturnslatest: 3.0.0, the version the pages document as the default install..github/scripts/check-compat-markers.tsfails a marker whose major is at or belowpackage.json's, andbun run check:compatprintsno COMPAT markers (package.json 3.0.0).tsdown.config.tsnames everypackage.jsondependency inneverBundle, andbuild:bundleinlines them intolib/index.js.validateon a file holding_note: helloprintsunknown underscore key: _note, and a check over_layeringbeside one label readsclean.replaceSweep(RulesetConfig)stops the omission sweep atrules[]andbypass_actors[].pull_requestrule that omits a liveallowed_merge_methodsreadsclean, and the PUT a second drifted key triggers carries the rule without it.bypass_modebeside a livepull_requestmode reads drift,"always" != "pull_request", so every field the schema names there is compared.test/sections/{rulesets,environments,branches}/scenarioseach hold a check scenario that names an omitted live value as drift.replacingPutDrift()insrc/sections/branches/index.tsleavesrequired_signaturesout of the sweep, since the protection PUT never touches it.pushexits 1 withresult: failed, andsrc/flows/snapshot.tsreturns before the write.cleanafter one GET, and the same apply fails naming the variable.on-missing-permission: failtwo preflight GETs precede the unset-reference failure, and underwarnthe apply fails with zero requests.sections: labels, an apply over an unset reference underactions_secretsendsapplied, and over all sections it fails naming the variable.validaterefuses an unknown key ininteraction_limitsand in each of the seven nested shapes, and accepts one on a label.branches[].protection.required_deploymentsis strict too, and the test found it.SettingsFile.safeParsewas run on the tree before the parser change and on this branch, and the guide quotes both.SettingsFile.safeParseaccepts a closed section's unknown entry key, a duplicate label, a literal secret value, and a wildcard branch'srestrictions, andvalidateSettingsrefuses each.webhooks-apply-convergesscenario printspayload: <withheld: the request carried a resolved secret>for the config PATCH.repoResult()insrc/engine/orchestrate.tsreturns five words and neverskipped, whichsrc/flows/multi.tsalone produces.branches[].protection.required_deployments.parseScenarioandrunScenariooftest/e2e, the same runnerbun test/e2e/run.tsuses.SettingsFileto the section's schema, and the guide's changelog sentence is in the present tense.README.md,CONTRIBUTING.md,docs/{schema.docs.yml,start/cli.md},docs/operate/{check-mode,snapshot}.md,docs/reference/{architecture,forward-compatibility,library,secrets-and-vaults,semantics}.md,docs/upgrading/{v2-to-v3.md,v2-to-v3/library.md},test/docs/readme.test.ts.