Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/specs/018-claude-cloud-environment/spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ A maintainer can find, in the repository, the exact environment definition the t
### Measurable Outcomes

- **SC-001**: 100% of branches pushed from cloud agent sessions on this repository pass the branch-name validator. This is measured over the first 30 days after rollout via the existing branch-validation metrics.
- **SC-002**: Zero new `chore/session-*` or `claude/*` branches with commits appear on the remote after rollout. Empty `claude/*` branches are still removed through spec 009's existing route, so none stays longer than 48 hours; the automatic route in FR-020 is not part of this criterion while its deferral holds, and a branch that reaches DISCUSS has no removal path defined here, which is a known consequence of the deferral rather than a target this spec meets by itself.
- **SC-002**: Zero new `chore/session-*` or `claude/*` branches with commits appear on the remote after rollout. Empty `claude/*` branches follow the conditional cleanup route defined by FR-020, subject to the matching spec 009 amendment, and the 48-hour success target applies only once the FR-020 deferral is lifted and its automatic route is active; while the deferral holds no branch qualifies for automatic deletion and a branch that reaches DISCUSS has no removal path defined here, so no removal timeframe is claimed, which is a known consequence of the deferral rather than a target this spec meets by itself.
- **SC-003**: PR template fallback routing caused by agent-created branches drops to 0% (constitution goal for fallback routing).
- **SC-004**: A team member without a saved environment selection can start a correctly configured session with
zero manual configuration steps once the Owner has completed setup.
Expand All @@ -267,7 +267,7 @@ A maintainer can find, in the repository, the exact environment definition the t
- The platform's push protection allows pushing the session's current branch after it has been renamed. This was verified during the draft implementation. If the platform changes this, pushes from renamed branches fail loudly (the push is rejected, not redirected), CI branch validation still applies, and the verification steps (quickstart §4) catch it; the documentation lists it as a limitation.
- The existing validator (`lib/validate-branch-name.js`) and `docs/BRANCHING_STRATEGY.md` are authoritative. They currently disagree on release names: the strategy documents `release/vX.Y.Z` and `hotfix/vX.Y.Z`, but the validator rejects them. Until the validator is fixed (a dependency outside this spec, on branch `fix/branch-validator-semver-release`), the guard and CI both refuse such branches, so FR-009's `main` rule can't be used for real release PRs. No changes to authorised types are in scope.
- The default network level (Trusted) reaches every host the provisioning script needs.
- Empty `claude/*` branches left by the platform are removed by spec 009's scheduled cleanup under the auto-approval exception (FR-020 to FR-022). Existing `claude/*` branches that have commits are reviewed by maintainers through 009's DISCUSS category, not deleted automatically.
- Empty `claude/*` branches left by the platform are routed by spec 009's scheduled cleanup, which currently sends them to DISCUSS; the auto-approved deletion that would remove an empty one is the conditional route FR-020 defines, and it lands only with the matching spec 009 amendment. Existing `claude/*` branches that have commits are reviewed by maintainers through 009's DISCUSS category, not deleted automatically.
- The cleanup requirements depend on spec 009 and lightspeedwp/.github#3358 (the categorisation library and scheduled workflow). They are delivered after #3358 merges, together with the matching amendment to spec 009.
- Sessions opened with several repositories do not load repository-level protections. This is documented, not solved.
- Threat model: the guard is designed to stop accidental non-compliance and the obvious self-bypasses (editing guard or settings files, or changing the switch in-session). It is not designed to resist a determined adversary using unusual shell constructions; CI branch validation and CODEOWNERS review are the final gate.
Expand Down
20 changes: 15 additions & 5 deletions .github/workflows/documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -428,10 +428,19 @@ jobs:
# Advisory only, and deliberately a separate step from the failing check
# above. This signal reports files whose trailing zone holds two or more
# footer-shaped blocks that the wording-based deduper cannot recognise.
# Measured across 11,474 tracked Markdown files it flags 930 files, of
# which 280 (30.1%) hold no known footer at all, so it must never fail a
# build. It exists to ask a human to look, and to surface footers whose
# wording is missing from footer-policy.js. See issue #3451.
# Measured across 11,474 tracked Markdown files it flags 899 files, of
# which 255 (28.4%) hold fewer than two distinct known footer phrases,
# so it must never fail a build. That 28.4% is a share of flagged files,
# not a false-positive rate; the remainder includes files with no known
# phrase and files with exactly one, and a file with an unrecognised
# genuine duplicate footer may be among them. Nothing here confirms that
# any flagged file really holds a duplicate, and a file with two or more
# known phrases is not independently confirmed either, so no rate follows.
# Figures are from `npm run measure:footers:shape`; the guide records the
# same figures under a "No known footer" label, which this comment does
# not adopt. It exists to ask a human to look, and
# to surface footers whose wording is missing from footer-policy.js. See
# issue #3451.
if: always() && steps.range.outputs.enabled == 'true'
continue-on-error: true
env:
Expand Down Expand Up @@ -477,7 +486,8 @@ jobs:
" of " +
findings.length +
" changed file(s) hold a footer-shaped block the deduper cannot see. Advisory only: " +
"the measured false-positive rate is 30.1%, so this does not fail the build."
"the measured share of flagged files holding fewer than two " +
"distinct known footer phrases is 28.4%, so this does not fail the build."
);
'

Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed

- **Docs Bot Skips Workflows Directory** — Regeneration skips `.github/workflows/`, so its pushes stop failing for want of App token `workflows` permission. (#3687)
- **Footer Shape Figures Corrected** — Workflow comment: 899 flagged files, 255 holding fewer than two distinct known footer phrases. The runtime notice calls 28.4% a share of flagged files, not a false-positive rate. (#3682, #3604)
- **Merged Advisory and Spec Defects Corrected** — The advisories newsletter form survives a failed request, tells a blocked address from a fault and counts its rate limit atomically; spec 018 defers auto-approved branch deletion. (#1396)
- **Docs-Bot Changelog Exemption** — The gate now matches the docs bot in either login shape, so its exemption applies. Bot pull requests with no user-facing content no longer need a changelog entry. (#3603, #3448)
- **Semantic-Version Release Branches** — Branch checks in CI and the npm script now accept documented release names such as `release/v1.2.3` and `release/v1.2.3-rc1`. ([#3555](https://github.com/lightspeedwp/.github/issues/3555))
Expand Down
2 changes: 1 addition & 1 deletion FEEDBACK_RESPONSE.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ tags:
Pull request: #3604 — corrects defects in the content merged by #3387 (plugin advisories) and #3525
(spec 018), and folds in the renumber residue and the Section 1 advisories table column label.

Everything CodeRabbit and Qodo raised is listed above with a status. Nothing is silently
Everything CodeRabbit and Qodo raised is listed below with a status. Nothing is silently
dropped: each item is addressed in this pull request, explicitly deferred with the place where
the outstanding decision is recorded, or explicitly rejected with the evidence that disproves it.

Expand Down
Loading