Skip to content

fix(docs): register SCR-006 in the document manifest - #6550

Merged
macanderson merged 1 commit into
mainfrom
cursor/ci-and-review-issues-4c9d
Sep 23, 2026
Merged

macanderson merged 1 commit into
mainfrom
cursor/ci-and-review-issues-4c9d

Conversation

@cursor

@cursor cursor Bot commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

What & why

check-doc-links failed on main at 207fda240 (docs-guards run 35668784502) because #6547 added SCR-006 without a docs/manifest.json entry. make doc-links-fix rewrote the manifest. python3 scripts/check-doc-links.py check exits 1 on 207fda240 and exits 0 after this rewrite.

This pull request closes no issue. The SCR-003 waiver for a change this small is the no-issue label.

The two red gates on main

Main at 207fda240 is red on two checks.

  1. docs guards fails on the missing manifest entry. This pull request repairs it.
  2. The post-merge prose canary fails on the SCR-006 record text. That failure is main is red: prose fails on the merged tree #6548, and this pull request leaves it red, because main is red: prose fails on the merged tree #6548 asks for the prose repair to land on its own from a fresh main.

#6552 carries the prose rewrite for #6548, and it carries these same five manifest lines. scripts/check-empty-diff.sh tests the merge tree, so whichever of the two lands second fails the PR carries a diff check until it drops the shared hunk.

Landing order: this pull request lands first, because it is five generated lines and every check on it has a run behind it. #6552 then rebases its manifest hunk away and lands the prose fix. If #6552 lands first instead, close this pull request as superseded.

The witness

  • No witness needed (docs / CI). The guard is scripts/check-doc-links.py. It fails on the parent commit and passes here.
  • This PR includes a witness test. Not applicable, the manifest is generated.

The gate

Docs only. No Rust sources changed, so the compile tiers are CI's.

  • cargo fmt --check: no Rust change
  • cargo clippy --workspace --all-targets -- -D warnings: no Rust change
  • cargo test --workspace: no Rust change
  • Docs updated where behavior/flags changed: the manifest is the doc index this change repairs
  • CLA signed (the bot prompts on your first PR, nothing to do per commit)
  • Closes #N appears both above and as a commit trailer: there is no issue to close

Fix over file

Residue: SCR-006 short title

ADR-137, accepted 2026-09-22 (docs/adr/ADR-137-standing-decisions-are-workspace-context-records.md in oxagen), is the decision that resolves the three short titles. The six standing decisions are context records under oxagen .oxagen/rules/ctx.scr.*.toml. docs/scr/ comes out of all five repositories. Oxagen tools/scripts/scr-corpus-check.mjs fails when any of the five still has a file there. Line 11 of that script says it does not look at AGENTS.md.

The scr/006-schema-changes-are-labelled entry at line 762 is a stopgap that repairs docs-guards on the current main. The ADR-137 follow-up deletes it.

#6554 carries that follow-up for stella: delete docs/scr/, repoint the six AGENTS.md SCR bullets at oxagen's .oxagen/rules/ctx.scr.*.toml records, and remove the seven scr/* keys from docs/manifest.json with them. The diff in this pull request stays the manifest registration.

Ground-rule check

No engine, dependency, or network change.

Anything reviewers should know?

Sourcery on #6547 asked for the longer short title, and that wording is what merged into the record. Stella's compiled AGENTS.md bullet and the rollout's AGENTS.md bullet each say something else. ADR-137 retires all three wordings with the markdown corpus, and #6554 removes stella's copy.

Open in Web View Automation 

Note

Low Risk
Docs index-only change with no application code or schema behavior touched.

Overview
Repairs a docs-guards failure on main by adding the missing scr/006-schema-changes-are-labelled entry to docs/manifest.json, indexing docs/scr/SCR-006-schema-changes-are-labelled.md (living status and its short title).

No SCR prose or runtime behavior changes—only the generated doc index so scripts/check-doc-links.py can resolve the record that landed without a manifest line.

Reviewed by Cursor Bugbot for commit 76855f1. Configure here.

SCR-006 landed without a docs/manifest.json entry, so check-doc-links
failed on main in docs-guards run 35668784502.

Co-authored-by: Mac Anderson <mac@oxagen.sh>
@github-actions

github-actions Bot commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

SCR-003 DoD check waived by the no-issue label — this change is trivial.

@macanderson macanderson added the closes-nothing Substantial change that closes no issue by design (SCR-003) label Sep 21, 2026 — with Cursor
cursor Bot pushed a commit that referenced this pull request Sep 22, 2026
docs-guards fails check-doc-links on this branch because the record
added in #6547 has no docs/manifest.json entry. The fixer writes the
same blob #6550 already carries.

Closes #6548

Co-authored-by: Mac Anderson <mac@oxagen.sh>
@macanderson macanderson added no-issue SCR-003 escape hatch: this PR closes no issue. Audit with is:pr label:no-issue unblocks-main Repairs a red main; exempt from the main-red hold (AGENTS.md) labels Sep 22, 2026

@macanderson macanderson left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

Adversarial review round 1: the manifest entry is correct and the guard passes, but the PR duplicates #6552, leaves main red on the prose canary it does not name, and its residue handoff was neither filed nor complete.

Comment thread docs/manifest.json
Comment thread docs/manifest.json
Comment thread docs/manifest.json
Comment thread docs/manifest.json
@macanderson macanderson removed the closes-nothing Substantial change that closes no issue by design (SCR-003) label Sep 22, 2026
@macanderson macanderson removed the no-issue SCR-003 escape hatch: this PR closes no issue. Audit with is:pr label:no-issue label Sep 22, 2026
@macanderson macanderson added the closes-nothing Substantial change that closes no issue by design (SCR-003) label Sep 23, 2026 — with Cursor

@cursor cursor Bot left a comment •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Stale comment

No P0 or P1 findings. One review round, so no per-finding P1 tickets. Both P2 findings belong on one residue issue. POST /repos/macanderson/stella/issues and updatePullRequest returned Resource not accessible by integration, so the issue was not opened and the description was not rewritten. closes-nothing was removed. no-issue and unblocks-main remain.

The residue issue, when a token can create it, gets the triage label only. Definition of done:

  • #6550's description names #6548 and #6552, states that #6550 repairs the docs-guards check-doc-links failure, and states that the prose failure stays with #6548.
  • The compiled SCR-006 short title is one string in stella, oxagen, context-graph-protocol, cgp-website, and arenabench, and that string matches the record frontmatter title "A schema change is labelled, and its migration is applied before its deploy".

The latest dod / dod run is green (run 35798576822). An earlier dod / dod failure on run 35669399706 is superseded.

Open in Web View Automation 

Sent by Cursor Automation: Fix Review Comments & CI Failures

Comment thread docs/manifest.json
Comment thread docs/manifest.json
Comment thread docs/manifest.json
Comment thread docs/manifest.json

@cursor cursor Bot left a comment •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Stale comment

Review round 1 has two P2 findings and two P3 findings. There is no P0 and no P1. Reviewers have posted once, so this run opens no per-P1 ticket.

CI on this pull request is green. gh pr checks 6550 shows docs guards, dod / dod, and main is not known-broken passing. The earlier dod / dod failure was superseded by the passing run.

gh issue create returned Resource not accessible by integration (createIssue). gh pr edit returned the same for updatePullRequest. Removing closes-nothing failed on removeLabelsFromLabelable. An in-thread reply via the pulls comments API also returned 403. This review is the handoff those calls could not write.

One residue ticket, for a token that can call createIssue, with the triage label only. Both P2 findings are the definition of done. The P3 findings are on that same ticket so the pull request still has one residue issue.

Definition of done:

  • The body of #6550 names #6548 and #6552, says this pull request repairs the docs-guards failure (missing manifest entry), and says it leaves the prose canary red on the SCR-006 file. The facts are in the inline reply. The body edit was refused.
  • A maintainer picks: shut #6550 and keep #6552, or land #6550 first and rebase the manifest hunk out of #6552. This run does not make that choice.
  • One compiled short title is used for SCR-006 in stella, oxagen, arenabench, cgp-website, and context-graph-protocol, and that title matches the record frontmatter (applied before its deploy).
  • #6550 carries exactly one of no-issue or closes-nothing, and the body names that same label.
  • Author-added sentences in the #6550 body contain no em dashes, and the residue heading is a plain noun (Residue: SCR-006 short title).

Pillar: maintainability. The five-repo title is a maintainer decision and cannot ride this manifest diff.

Open in Web View Automation 

Sent by Cursor Automation: Fix Review Comments & CI Failures

Comment thread docs/manifest.json
Comment thread docs/manifest.json
Comment thread docs/manifest.json
Comment thread docs/manifest.json

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Round 1 has two P2s and two P3s. No P0 or P1. The required checks on 76855f1b are green. The pending check is this run.

gh issue create, POST /repos/macanderson/stella/issues, in-thread review replies, and PATCH on this pull request all return HTTP 403 Resource not accessible by integration. One residue issue is still owed, with the triage label only, and both P2s as definition-of-done items. This run could not file it and could not edit the body, so the Filed box is still checked with no issue behind it.

The notes below sit on the same manifest lines as the original comments, because an in-thread reply was refused. The second P2's definition of done is that every repository's compiled SCR-006 short title matches the record frontmatter title.

Open in Web View Automation 

Sent by Cursor Automation: Fix Review Comments & CI Failures

Comment thread docs/manifest.json
Comment thread docs/manifest.json
Comment thread docs/manifest.json
Comment thread docs/manifest.json
@macanderson macanderson added no-issue SCR-003 escape hatch: this PR closes no issue. Audit with is:pr label:no-issue and removed closes-nothing Substantial change that closes no issue by design (SCR-003) labels Sep 23, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Correction after the description and #6554 landed. Round 1 had two P2s and two P3s. No P0 or P1. Required checks on 76855f1b are green.

#6554 is the one residue issue (triage only). Its definition of done includes every compiled SCR-006 short title matching the record frontmatter. The description names #6548 and #6552, uses no-issue alone, and drops the em dashes. Three of the four rollout pull requests named in #6554 are already merged. This token still cannot comment on that issue.

Open in Web View Automation 

Sent by Cursor Automation: Fix Review Comments & CI Failures

Comment thread docs/manifest.json
Comment thread docs/manifest.json
Comment thread docs/manifest.json
Comment thread docs/manifest.json

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Round 1 review, four comments. No P0 or P1. Latest dod before this reply was green (run 35798576822) after an earlier failure on the same push. Labels are no-issue and unblocks-main.

#6554 is the one residue issue (triage only). Its definition of done covers the short-title P2. This token cannot edit issues (updateIssue returns 403), so the manifest-duplicate P2 is not a checkbox on #6554. It is described in the pull request body.

One sentence in that body still has to change by hand. "the prose rewrite that closes #6548" is a real closing keyword. A merge of this pull request would close #6548, and this branch does not repair the prose failure. Pull-request body updates from this token return 403, and a description passed to the pull-request tool did not replace the body. Please put the number in backticks and drop the word closes.

The same paragraph overstates PR carries a diff. git diff 76855f1b b003e4dfb -- docs/manifest.json is empty. If #6552 merges first, this pull request's diff is empty. If this pull request merges first, #6552 still changes docs/scr/SCR-006-schema-changes-are-labelled.md. The maintainer still chooses the order.

Open in Web View Automation 

Sent by Cursor Automation: Fix Review Comments & CI Failures

Comment thread docs/manifest.json
Comment thread docs/manifest.json
Comment thread docs/manifest.json
Comment thread docs/manifest.json

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

The body section "The two red gates on main" is in place, and dod / dod went red on the wording of one sentence.

Run 35800115760 failed with: this pull request carries no-issue, and its description closes #6548. The match is this sentence:

#6552 carries the prose rewrite that closes #6548, and it carries these same five manifest lines.

oxagen tools/scripts/scr-dod-check.mjs CLOSING_PATTERN treats closes plus #6548 as a close. No other sentence in the body matches. Replace that closes #6548 with for #6548 and leave the rest of the sentence as it is. Editing the body is what re-runs dod / dod.

This token cannot patch the pull request. PATCH /repos/macanderson/stella/pulls/6550 returns 403, and the installation permissions on the repo are all false. The diff is unchanged at 76855f1b.

No P0. No P1. Reviewers have posted more than once, and no P1 remains, so this run opens no per-P1 ticket.

The P2 residue ticket is already #6554, label triage only. This run does not open a second one. Its definition of done already asks every compiled short title to match the record frontmatter title.

One correction on #6554, verified just now and not yet in the issue text (issue edits return the same 403): oxagen#3699, arenabench#39, and cgp-website#49 are merged. context-graph-protocol#199 is still open. Oxagen's record on main is .oxagen/rules/ctx.scr.006-schema-change-labelled.toml. The constraints section of #6554 still says the four rollout pull requests are open.

Open in Web View Automation 

Sent by Cursor Automation: Fix Review Comments & CI Failures

Comment thread docs/manifest.json

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

No P0 or P1 findings remain. Review round 1 is the only finding round, so there is no per-finding P1 ticket. The one residue issue is #6554 (triage only). Both P2s are on the record: the two-gates paragraph is in this description, and the title alignment is #6554's definition of done.

dod / dod on run 35800290372 passed after the description stopped using a closing keyword next to #6548. The latest sentence says #6552 carries the prose rewrite for that issue. no-issue and unblocks-main are the labels. The description has no em dashes.

This token cannot edit #6554 (HTTP 403). Its text still calls oxagen#3699, arenabench#39, and cgp-website#49 open. Those three are merged. context-graph-protocol#199 is open.

Open in Web View Automation 

Sent by Cursor Automation: Fix Review Comments & CI Failures

Comment thread docs/manifest.json
Comment thread docs/manifest.json
Comment thread docs/manifest.json
Comment thread docs/manifest.json
Comment thread docs/manifest.json

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

No P0 or P1. One review round, so no per-finding P1 ticket. The P2 residue is already #6554 (triage only); this run does not open a second issue.

dod / dod is green on run 35800290372. An earlier failure on run 35800115760 read closes #6548 in the body against the no-issue label. The body now says the prose rewrite is for #6548, and that run passed.

In-thread reply to the discussion returned 403, so the confirmation is the inline comment on the manifest title line.

Open in Web View Automation 

Sent by Cursor Automation: Fix Review Comments & CI Failures

Comment thread docs/manifest.json

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Reply to the label note that triggered this run, and to the other three notes posted with it.

closes-nothing is off. The labels are no-issue and unblocks-main. The body names no-issue. That matches a five-line generated manifest entry.

The red dod / dod run 35800115760 was a different sentence. A closing keyword sat immediately before #6548, and linkedIssues in scr-dod-check.mjs reads that as this pull request closing the issue. A waiver fails when any close claim is present. The live body says "the prose rewrite for #6548". I ran linkedIssues and verdict from oxagen tools/scripts/scr-dod-check.mjs on that body with those two labels: no links, ok: true, waived by no-issue. Run 35800290372 concluded success. The sticky comment says the check is waived by no-issue.

No P0 or P1 in the finding review. Later reviews are replies, and no P1 remains, so there is no per-finding P1 ticket. The one residue issue is #6554, label triage only. I did not open a second one.

This token cannot PATCH the pull request (HTTP 403, accepted permission pull_requests=write). The body already had the safe sentence when this run read it.

Open in Web View Automation 

Sent by Cursor Automation: Fix Review Comments & CI Failures

Comment thread docs/manifest.json
Comment thread docs/manifest.json

@macanderson macanderson left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

Adversarial review round 2: the manifest entry matches the record frontmatter and every gate on the head has a real passing run, but the round 1 residue fix (#6554 and the body's residue section) cites a five-repo corpus check that oxagen's ADR-137 retired today.

Comment thread docs/manifest.json
Comment thread docs/manifest.json

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Round 2 is one P2 and one P3. No P0 or P1, so there is no per-finding P1 ticket. The one residue issue stays #6554 (triage only). I did not open a second issue.

updatePullRequest and updateIssue returned HTTP 403 (Resource not accessible by integration). The description and #6554 still describe the corpus check ADR-137 retired. The replacement text is on the two manifest lines. CI on 76855f1b is green. The diff is unchanged.

Open in Web View Automation 

Sent by Cursor Automation: Fix Review Comments & CI Failures

Comment thread docs/manifest.json
Comment thread docs/manifest.json
@macanderson macanderson added the closes-nothing Substantial change that closes no issue by design (SCR-003) label Sep 23, 2026

@macanderson macanderson left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

Adversarial review round 3 (the workflow labelled it round 1, but this reviewer already posted two reviews on 76855f1): the manifest entry is correct and docs guards passes, but the round 2 residue fix was never applied and a round 1 label fix has regressed.

Comment thread docs/manifest.json
Comment thread docs/manifest.json
@macanderson macanderson removed the closes-nothing Substantial change that closes no issue by design (SCR-003) label Sep 23, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Round 3 has one P2 and one P3. No P0 or P1, so there is no per-finding P1 ticket. #6554 stays the one residue issue.

closes-nothing is off. The labels are no-issue and unblocks-main. The body and #6554 are unchanged: this token cannot edit either. The diff stays 76855f1b.

Open in Web View Automation 

Sent by Cursor Automation: Fix Review Comments & CI Failures

Comment thread docs/manifest.json
Comment thread docs/manifest.json

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Round 3 has one P2 and one P3. No P0 or P1, so there is no per-finding P1 ticket. The one residue issue stays #6554, label triage only. I did not open a second issue.

PATCH on this pull request and on #6554 returned HTTP 403 at 2026-09-23T02:46:33Z. The residue section and #6554 are unchanged. The P2 thread stays open because the finding still stands. dod / dod run 35810586201 is green. The diff is unchanged at 76855f1b.

closes-nothing is off. Labels are unblocks-main and no-issue.

Open in Web View Automation 

Sent by Cursor Automation: Fix Review Comments & CI Failures

Comment thread docs/manifest.json
Comment thread docs/manifest.json

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

No P0 or P1. Three finding rounds, and no P1 remains, so there is no per-finding P1 ticket. The one residue issue stays #6554, label triage only. This token cannot edit that issue or this pull request (HTTP 403), so the round 3 P2 is not yet a checkbox there. The two notes are on the manifest lines.

closes-nothing is off. Labels are unblocks-main and no-issue.

Open in Web View Automation 

Sent by Cursor Automation: Fix Review Comments & CI Failures

Comment thread docs/manifest.json
Comment thread docs/manifest.json

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Correction: the 02:29:54 closes-nothing add matches the fix-prs sweep named in discussion 4078514282. The file is outside this repository. Labels are unblocks-main and no-issue.

Open in Web View Automation 

Sent by Cursor Automation: Fix Review Comments & CI Failures

Comment thread docs/manifest.json

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

No P0 or P1. Three finding rounds, and no P1 remains, so there is no per-finding P1 ticket. The one residue issue stays #6554, label triage only. I did not open a second issue.

CI on 76855f1b is green. dod / dod run 35811792436 passed. docs guards passed. The diff is unchanged.

The label note is confirmed. closes-nothing is off. The labels are unblocks-main and no-issue, which matches the body. I am not looking for a workflow outside this repository.

The open residue thread was stale. The body section "Residue: SCR-006 short title" names ADR-137, and #6554 was updated at 2026-09-23T02:49:04Z. Its definition of done is delete docs/scr/, repoint the six AGENTS.md SCR bullets, and remove the seven scr/* manifest keys. That thread is resolved.

Open in Web View Automation 

Sent by Cursor Automation: Fix Review Comments & CI Failures

Comment thread docs/manifest.json
Comment thread docs/manifest.json
Comment thread docs/manifest.json

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Discussion 4078614959 is confirmed. The residue rewrite is on the pull request and on #6554. Head stays 76855f1b. No P0 or P1. #6554 remains the one residue issue (triage only).

Open in Web View Automation 

Sent by Cursor Automation: Fix Review Comments & CI Failures

Comment thread docs/manifest.json

@macanderson macanderson left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

Adversarial review round 2: no findings.

@macanderson
macanderson marked this pull request as ready for review September 23, 2026 03:11

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Sorry @macanderson, you've used your own review budget of 250,000 diff characters for the last 7 days.

You can request another review in 4 days and 19 hours by commenting @sourcery-ai review. Upgrade to get a review now.

@macanderson
macanderson merged commit 3005c44 into main Sep 23, 2026
31 of 39 checks passed
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@macanderson
macanderson deleted the cursor/ci-and-review-issues-4c9d branch September 23, 2026 03:12
@cursor

cursor Bot commented Sep 23, 2026

Copy link
Copy Markdown
Contributor Author

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_f23d1ea5-1aa7-4097-a283-ec32e905b72a)

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 23, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
🔒 Security Review ✅ Completed 2026-09-23T03:16:01.178693Z 76855f1 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

macanderson added a commit that referenced this pull request Sep 23, 2026
## What & why

The post-merge canary failed `prose` on `main` at `207fda240` and filed
#6548. SCR-006 is a new file, so it has no prose allowance. Two
constructions failed the banned-phrase check: the filler adverb
`deliberate`, and issue numbers in the origin line and the rationale.
The canary prints phrase failures and returns, so it did not also print
the reading grade. A new file is held to 6.00, and the merged text
scores above that. This rewrite keeps the directive and states it in
short sentences.

`python3 scripts/check-prose.py` passes on this branch, judged against
`207fda240`, which is the tip of `main`. `python3 scripts/check-prose.py
--absolute` passes too, which is the mode `scripts/main-canary.sh` runs.

The same commit also failed `docs-guards`, because `docs/manifest.json`
had no SCR-006 entry. The second commit on this branch adds that entry.
#6550 carries the same five lines on its own branch. Whichever of the
two lands second will fail `empty-diff` on the manifest and should
close. The frontmatter `title` is unchanged, so the entry matches either
way.

Closes #6548

## The witness

- [x] No witness needed (docs / CI). `scripts/check-prose.py` is the
gate. It fails on `207fda240` and passes on this commit, including
`--absolute`. `docs-guards` is the gate for the manifest entry, and it
passes on this commit.
- [ ] This PR includes a witness test. Not applicable; the checks above
are the witness.

## The gate

Docs-only. No Rust sources changed, so the compile tiers are CI's.

- [ ] `cargo fmt --check`: no Rust change
- [ ] `cargo clippy --workspace --all-targets -- -D warnings`: no Rust
change
- [ ] `cargo test --workspace`: no Rust change
- [x] Docs updated where behavior/flags changed: the record is the
change
- [ ] CLA signed (the bot prompts on your first PR, nothing to do per
commit)
- [x] `Closes #6548` appears above and as a commit trailer

## Fix over file

- [x] Extra fixes in this PR: the `docs/manifest.json` entry for
SCR-006, which repairs the `docs-guards` failure on the same broken
commit
- [x] Filed, with the reason a fix could not ride this PR: #6555 removes
stella's `docs/scr/` corpus. See the residue section below.

### P2 residue

Oxagen's ADR-137, accepted on 2026-09-22, moves the standing decisions
into `.oxagen/rules/*.toml` in oxagen and removes `docs/scr/` from all
five repositories. Oxagen's `scr-corpus-check` now fails while any
repository still holds a file under `docs/scr/`. The five-repository
sync this section used to describe is retired, so no copy of SCR-006
should be synced anywhere.

#6555 carries stella's side of ADR-137. It deletes `docs/scr/`, removes
the seven `scr/*` entries from `docs/manifest.json`, and points the
`AGENTS.md` standing-decision bullets at oxagen's TOML records. That
removal does not ride this PR, because this PR repairs a red `main` and
a corpus removal deserves its own review. #6555 also supersedes the
definition of done in #6554. Pillar: maintainability.

Until #6555 lands, this PR keeps the file readable and the manifest
consistent, so `main` goes green.

## Ground-rule check

No engine, dependency, or network change.

## Anything reviewers should know?

Sourcery's title thread on #6547 is already resolved. The suggestion
that landed is the compiled bullet above. It does not equal the record
title, and the check that Sourcery cited compares short titles across
repositories, not a short title to the frontmatter title.

The `main is not known-broken` check reads the `unblocks-main` label,
which this PR carries because it is the repair for #6548.


<div><a
href="https://cursor.com/agents/bc-453324c9-66e4-4b62-ace0-a32621decce0?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-web-light.png"><img
alt="Open in Web" width="114" height="28"
src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a
href="https://cursor.com/automations/c630848f-b60f-11f1-bb68-864e54d14197"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/view-automation-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/view-automation-light.png"><img
alt="View Automation" width="141" height="28"
src="https://cursor.com/assets/images/view-automation-dark.png"></picture></a>&nbsp;</div>

## Summary by Sourcery

Rewrite SCR-006 for prose-gate compliance and register it in the
documentation manifest.

Bug Fixes:
- Rewrite SCR-006 to satisfy the prose gate and restore successful
canary checks.

Enhancements:
- Clarify the schema-change directive, rationale, compliance guidance,
and exceptions with shorter, plainer prose while preserving the policy.

Documentation:
- Register SCR-006 in the documentation manifest so documentation guards
recognize the record.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Documentation and manifest metadata only; no runtime, CI workflow, or
schema-migration behavior changes in this repo.
> 
> **Overview**
> Repairs **SCR-006** after the main canary failed `prose` and
`docs-guards` on the newly merged record (#6548).
> 
> The SCR text is **rewritten**, not re-scoped: same directive
(`migration-required`, no deploy until production migration, no
auto-apply in pipelines), but **shorter sentences** and plainer wording
so `scripts/check-prose.py` passes (banned filler like “deliberate”,
issue numbers in `origin`, and reading-grade limits on new files). The
rationale now links the four oxagen incidents as **URLs** instead of
`#1275`-style references. Agent compliance and exceptions are the same
policy, broken into bullet-sized steps.
> 
> **`docs/manifest.json`** gains the missing
`scr/006-schema-changes-are-labelled` entry so docs guard validation
sees the file.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
fbed89d. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Mac Anderson <mac@oxagen.sh>

@macanderson macanderson left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

Adversarial review round 2: no findings.

macanderson added a commit that referenced this pull request Sep 23, 2026
## What & why

Bugbot reviewed #6545 once and left two medium findings in
`forge_redirect`. Both are fixed here.

`gh pr ready` was refused with action `update with draft`, which is not
an enum value on `pull_request` and reads as `draft: true`. Ready is
action `update` with `draft: false`. `gh pr merge` now names action
`merge` and `confirm: true` as its own field. `gh pr checks` points at
`watch_ci` with `branch` set to the pull request's head. That tool has
no `action`.

A wrapper flag that takes a value (`sudo -u user`, `nice -n 10`, `env -u
FOO`) was treated as a command word, so the `gh` after it was not
redirected. The parse now consumes that value for the wrapper flags that
take one. `sudo -n echo gh` stays open, because `-n` on sudo takes no
value and `echo` is the command.

The low finding, an empty body signed twice, is residue in #6553.

Refs #6545
Refs #6553

## The witness

- [x] This PR includes a witness test (fails on `main`, passes here),
**or**
- [ ] No witness needed (pure refactor / docs / CI) — because:

`every_redirect_names_a_real_tool_input` reads the action between
backticks and requires it to be in the tool schema's enum. On main the
ready refusal puts `update with draft` in those backticks, which is not
an enum value. `a_wrapper_flag_value_does_not_hide_the_command` requires
`sudo -u user gh pr create`, `nice -n 10 gh pr merge`, and `env -u FOO
gh issue comment` to redirect. On main `is_command_position` stops on
the flag's value and returns `None`.

`cargo test -p stella-tools --lib forge::redirect` — 12 passed.

## The gate

- [x] `cargo fmt --check` (formatted with `cargo fmt -p stella-tools`)
- [x] `cargo clippy -p stella-tools --lib -- -D warnings` passed
- [x] `cargo test -p stella-tools --lib forge::redirect` passed
- [x] Docs updated where behavior/flags changed (the refusal text is the
documentation the model reads)
- [ ] CLA signed (the bot prompts on your first PR — nothing to do per
commit)
- [x] `Refs #6545` appears above and as a commit trailer. This PR does
not close that issue; it is already merged.

## Fix over file

- [x] Extra fixes in this PR: none beyond the two medium review findings
— **or** none
- [x] Filed, with the reason a fix could not ride this PR: the
empty-body footer is #6553. It is a low finding on merged code, outside
the two review findings this PR fixes. The docs deploy failure on
`331543e` is the same `ssm:SendCommand` `AccessDeniedException` for
`gha-deploy-stella` that failed the previous main push (run
35527940671). The role policy is outside this repository, so this PR
does not change `.github/workflows/docs.yml`.

## Ground-rule check

- [x] No I/O added to `stella-core`; no new deps without justification
below
- [x] No new outbound network calls (Stella never phones home)

## Anything reviewers should know?

Bugbot and Sourcery each reviewed #6545 once, so the medium findings are
fixed here rather than filed. `command -v gh` is now left open: `-v`
takes the name and does not run it.

`docs guards` and `main is not known-broken` fail on main's account
(#6548). #6550 registers SCR-006 in the document manifest and #6552
rewrites its prose. This branch merges main again once they land.


<div><a
href="https://cursor.com/agents/bc-74228cf7-e29e-4613-a179-fc7ac74615cd?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-web-light.png"><img
alt="Open in Web" width="114" height="28"
src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a
href="https://cursor.com/automations/c630848f-b60f-11f1-bb68-864e54d14197"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/view-automation-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/view-automation-light.png"><img
alt="View Automation" width="141" height="28"
src="https://cursor.com/assets/images/view-automation-dark.png"></picture></a>&nbsp;</div>

## Summary by Sourcery

Ensure forge redirects both detect wrapped `gh` invocations reliably and
provide schema-accurate retry instructions.

Bug Fixes:
- Correct forge redirect guidance so refused GitHub CLI commands
reference valid tool inputs, including draft, confirmation, and branch
parameters.
- Prevent wrapper flags that consume values from hiding executable `gh`
commands from redirect enforcement.

Enhancements:
- Refine command-position parsing for shell assignments, wrappers, flag
clusters, and wrapper-specific options while preserving non-executing
cases such as `command -v gh`.
- Distinguish signing write tools from read-only CI monitoring in
redirect messages.

Documentation:
- Update refusal guidance to match the schemas and inputs agents should
use when retrying redirected commands.

Tests:
- Add regression coverage for wrapper flag values, clustered options,
non-executing command forms, and schema-valid redirect guidance.

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Medium Risk**
> Changes bash-layer enforcement of which `gh` invocations are blocked
and the guidance agents get on retry; incorrect parsing could either
block benign commands or miss wrapped `gh` writes.
> 
> **Overview**
> Fixes **forge `gh` redirects** so refusal text matches real tool
schemas and wrapped shell spellings cannot skip signing.
> 
> **Refusal copy** now goes through a `refusal()` helper: each redirect
uses a `call` snippet (e.g. action `update` plus `draft: false` for `gh
pr ready`, `confirm: true` for merge, `branch` for `gh pr checks` →
`watch_ci`) and only mentions signing for write tools.
> 
> **Command-position detection** is rewritten to parse forward from the
last separator, consuming wrapper flags and their values per wrapper
(`sudo -u`, `nice -n`, `env -u`, clusters like `-Eu`, GNU `env -S`).
That closes the hole where `sudo -u user gh …` was treated like `echo gh
…` and allowed unsigned forge writes; `command -v gh` and `sudo -n echo
gh` stay allowed.
> 
> **Tests** add witness coverage that every redirect names a
schema-valid action/input and that value-taking wrapper flags still
trigger redirects.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
5c5fc38. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Mac Anderson <mac@oxagen.sh>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-issue SCR-003 escape hatch: this PR closes no issue. Audit with is:pr label:no-issue unblocks-main Repairs a red main; exempt from the main-red hold (AGENTS.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants