You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Reviewer's updated PR comment fd559a54 surfaced 4 additional blockers
beyond R5-1..3 already fixed in `a4dee7c`.
R5-4 — spotbugs-maven-plugin not lifecycle-bound.
pom.xml declared the plugin but with no `<executions>` block, so
`mvn verify` (and therefore CI on every PR) did not actually run
SpotBugs — the engineering-standards.md "zero High/Critical
findings" gate was a documented claim, not an enforced one. Bound
the `check` goal to the verify phase, set explicit threshold=High
+ failOnError=true so the gate matches the documented semantic and
cannot silently relax under future config edits.
R5-5 — rollback.md branch-protection GET→PUT schema mismatch.
GitHub's GET /protection returns a denormalized payload (nested
`{enabled: bool}` envelopes, `checks[].context` strings, `*.url`
fields) that PUT does not accept verbatim. Replaced the naive
cat-into-PUT with a documented jq filter that unwraps the envelopes,
projects `checks[].context` into the flat `contexts[]` PUT expects,
drops `*.url` fields, and forces `restrictions: null` for this repo.
R5-6 — engineering-standards.md §1 unenforced branch coverage claim.
Quality-gate table claimed "≥ 85% line, ≥ 75% branch (project-wide)"
but `pom.xml`'s jacoco rule only enforces LINE COVEREDRATIO 0.85.
Aligned the doc to reality (LINE only). Adding a branch-coverage
rule is a separate decision — not in scope here.
R5-7 — release.md SSH-key claims contradict GPG-via-Actions reality.
Two stale SSH-signing references: "Source tag (annotated, ssh-signed)"
and pre-release checklist item "Local signing key present:
ssh-add -L | grep ...". The actual GA path is GPG/OpenPGP-signed by
release-java.yml using the imported MAVEN_GPG_PRIVATE_KEY — no local
SSH key required. Updated both: the source-tag descriptor now reads
"GPG/OpenPGP-signed by release-java.yml", and the checklist item
now verifies the GHA secrets (MAVEN_GPG_PRIVATE_KEY,
MAVEN_GPG_PASSPHRASE) are present via `gh secret list`.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Paperclip <noreply@paperclip.ing>
| OWASP Dependency-Check | No High/Critical CVEs (`failBuildOnCVSS=7`); Medium tracked |`mvn -B -ntp clean verify` (the `dependency-check:check` execution is bound to the `verify` phase in `pom.xml`); `ci-java.yml` runs on every PR + push to `main`| Block merge |
8.GPG release-signing secrets present in repo settings: `MAVEN_GPG_PRIVATE_KEY` and `MAVEN_GPG_PASSPHRASE` (verify via `gh secret list`). The workflow signs both the release commit and the annotated tag with the imported OpenPGP key — no local SSH or GPG key is required on the maintainer's machine for the GA path (Reviewer finding fd559a54, R5-7).
Copy file name to clipboardExpand all lines: shared/runbooks/rollback.md
+35-1Lines changed: 35 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -62,7 +62,41 @@ Do NOT delete the bad git tag. Yanking tags after they have been seen by consume
62
62
63
63
These are driven by `gh api` calls (see RAN-46 inventory). They are not in version control by themselves, so rollback is by re-running the prior call.
64
64
65
-
-**Branch protection**: snapshot before any change with `gh api /repos/RandomCodeSpace/codeiq/branches/main/protection > /tmp/bp-before.json`. To roll back: `cat /tmp/bp-before.json | gh api -X PUT /repos/RandomCodeSpace/codeiq/branches/main/protection --input -`.
65
+
-**Branch protection**: snapshot before any change with `gh api /repos/RandomCodeSpace/codeiq/branches/main/protection > /tmp/bp-before.json`. The GET payload is a denormalized view that GitHub's PUT endpoint does **not** accept verbatim (PUT flattens the nested objects: `enforce_admins.enabled` → bare boolean, `required_status_checks.checks[].context` strings → flat `contexts[]`, `*.url` fields are rejected). Reshape with the jq filter below before piping into PUT (Reviewer finding fd559a54, R5-5):
| gh api -X PUT /repos/RandomCodeSpace/codeiq/branches/main/protection --input -
97
+
```
98
+
99
+
The transform unwraps the `{enabled: bool}` envelopes, projects `checks[].context` strings out into the flat `contexts[]` PUT expects, drops `*.url` fields, and forces `restrictions: null` (apps/teams/users restrictions are out of scope for this repo). If you need to *change* a field instead of rolling back, edit the transformed payload before piping.
66
100
-**CodeQL default setup**: re-toggle via Repository Settings → Code security → Code scanning. The disabled state is the safe default.
67
101
-**Dependabot security updates**: `gh api -X PUT /repos/RandomCodeSpace/codeiq/automated-security-fixes` to enable, `-X DELETE` to disable.
68
102
-**Workflow files** (`.github/workflows/*.yml`): revert via §2 — they are version-controlled.
0 commit comments