Skip to content

chore: sync public mirror from internal - #1126

Merged
evalops-mirror[bot] merged 1 commit into
mainfrom
sync/public-release-mirror
Sep 14, 2026
Merged

evalops-mirror[bot] merged 1 commit into
mainfrom
sync/public-release-mirror

Conversation

@evalops-mirror

@evalops-mirror evalops-mirror Bot commented Sep 14, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • sync the sanitized public tree from evalops/mono
  • keep evalops/maestro as a generated public mirror of the private source of truth
  • preserve public-owned CI and trusted-publishing workflows from the public checkout
  • internal source SHA: f5944e9e1007e740ec74ef4edbbbea7c41009dee
  • last generated public sync base: 05fda21e41980ab14923c5c9d6398d85a02fa7d0
  • previewed public-tree drift: 5 file(s) to copy/update and 0 stale file(s) to delete
  • public-only commits since last generated sync: 1
  • to pause generated syncs while hand-editing this branch, apply the sync-hold label to this PR; the sync workflow skips every push while it is set

Source-of-truth status

Public Mirror Drift Audit

  • package: @evalops/deixic-code
  • private source: https://github.com/evalops/mono@main (f5944e9e1007)
  • public projection: https://github.com/evalops/maestro@main (e7269043f33a)
  • files to copy or update: 5
  • stale files to delete: 0
  • result: drift detected
  • invariant: public_projection_has_drift

Sample Changed Paths

  • copy/update Makefile
  • copy/update scripts/resolve-public-mirror-bot-review-threads.mjs
  • copy/update scripts/resolve-public-mirror-bot-review-threads.test.mjs
  • copy/update scripts/run-ci-tooling.sh
  • copy/update scripts/update-lifecycle-contract.test.mjs

Guidance

Let internal main generate and merge the public sync PR before relying on public main.

Drift sample

  • copy/update Makefile
  • copy/update scripts/resolve-public-mirror-bot-review-threads.mjs
  • copy/update scripts/resolve-public-mirror-bot-review-threads.test.mjs
  • copy/update scripts/run-ci-tooling.sh
  • copy/update scripts/update-lifecycle-contract.test.mjs

Public-only commits since last generated sync

Validation

  • generated by the sync-public-release-mirror workflow in public-tree mode

Test Plan

  • generated by the maestro-sync-public-release-mirror workflow in public-tree mode
  • public-source-provenance require-internal-pr confirms internal source PR lineage
  • generated mirror PRs use the slim public CI path (fmt/clippy/smoke + provenance); full cargo test/evals already ran on internal main for this SHA
  • bot review threads on generated mirror PRs are advisory and do not block the next sync force-update

Staged Rollout

  • Staging is unnecessary for this generated mirror PR: it does not independently promote user-visible behavior. It mirrors already-reviewed internal source from evalops/mono@f5944e9e1007e740ec74ef4edbbbea7c41009dee, including existing hidden/evaluation surfaces, and keeps public package parity behind the established public-source-provenance gate.

Devin Review

@evalops-mirror
evalops-mirror Bot requested a review from a team as a code owner September 14, 2026 06:23
@evalops-mirror

Copy link
Copy Markdown
Contributor Author

Resolved 0 review-bot thread(s) on this generated public mirror PR.
Left 0 human-started thread(s) unresolved.

Review of mirrored code belongs on the mono source PR.
See https://github.com/evalops/mono/issues/9100 for the triage pattern.

@evalops-mirror
evalops-mirror Bot enabled auto-merge (squash) September 14, 2026 06:23
@evalops-mirror
evalops-mirror Bot merged commit c305093 into main Sep 14, 2026
9 of 11 checks passed
@evalops-mirror
evalops-mirror Bot deleted the sync/public-release-mirror branch September 14, 2026 06:24

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 59d910d7bf

ℹ️ About Codex in GitHub

Codex has been enabled to automatically 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +75 to +78
const output = execFileSync("gh", args, {
encoding: "utf8",
stdio: ["ignore", "pipe", "pipe"],
});

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Raise the buffer for review-thread queries

When a GraphQL page exceeds Node's default 1 MiB child-process buffer, this execFileSync throws ENOBUFS and aborts the mirror sync before any threads are resolved. That is plausible because the query requests up to 100 threads with 20 comment bodies each; use an increased maxBuffer as pr-feedback-audit.mjs does, or request only the first comment author needed by this script.

Useful? React with 👍 / 👎.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Devin Review found 4 potential issues.

Devin Review

// GitHub Apps usually have login suffix "[bot]". Some review apps post
// without that suffix; keep this list aligned with pr-feedback-audit.mjs.
const KNOWN_REVIEW_BOT_LOGINS =
/^(?:cursor|coderabbitai|chatgpt-codex-connector|devin-ai-integration)\b/iu;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Prefixed human logins lose threads

A human login beginning cursor, coderabbitai, or another known prefix passes KNOWN_REVIEW_BOT_LOGINS and has its thread resolved. Human feedback then stops blocking the mirror merge.

Learn more

The regex uses a word boundary rather than an end anchor. A hyphen creates a word boundary, so valid human usernames can match a trusted bot prefix. The resolver then treats their thread exactly like a review-bot thread.

Example: The login cursor-reviewer matches cursor\b. Its unresolved human review is resolved automatically instead of remaining open.

Recommended fix: Match each known login exactly, allowing only the documented optional [bot] suffix.

Suggested change
/^(?:cursor|coderabbitai|chatgpt-codex-connector|devin-ai-integration)\b/iu;
/^(?:cursor|coderabbitai|chatgpt-codex-connector|devin-ai-integration)(?:\[bot\])?$/iu;
Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

isOutdated
path
line
comments(first:20){nodes{url body author{__typename login}}}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Large reviews abort thread resolution

When returned comment bodies exceed Node's 1 MiB default, ghJson aborts before resolving any thread. Each page requests 2,000 full bodies although only the first author is used.

Learn more

The resolver only reads the first comment's author through firstCommentAuthor. Fetching bodies and URLs makes the synchronous gh output grow with every review comment. execFileSync rejects output beyond its default buffer, so the workflow fails before mutations begin.

Example: One page containing 100 bot threads with several long review replies can exceed 1 MiB. The command exits without resolving those threads, while the workflow never reaches auto-merge.

Recommended fix: Request only the first comment and its author fields. This supplies every field used for classification without transferring review text.

Suggested change
comments(first:20){nodes{url body author{__typename login}}}
comments(first:1){nodes{author{__typename login}}}
Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +103 to +114
const typename = String(author.__typename ?? "").trim();
if (typename === "Bot") {
return true;
}
const login = String(author.login ?? "").trim();
if (!login) {
return false;
}
if (login.toLowerCase().endsWith("[bot]")) {
return true;
}
return KNOWN_REVIEW_BOT_LOGINS.test(login);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔍 Bot scope exceeds named reviewers

isReviewBotAuthor accepts every Bot actor and [bot] login, not only named review services. Confirm all automated review authors are advisory.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +91 to +102
const publicMirror = existsSync(new URL("../.github/workflows/check-release-workflow-contract.mjs", import.meta.url));
if (publicMirror) {
assert.match(release, /repository_dispatch:/);
assert.match(release, /maestro-signed-release/);
assert.match(release, /MONO_SHA256SUMS\.cosign\.bundle/);
assert.match(release, /node scripts\/verify-staged-release\.mjs release-binaries "\$RELEASE_VERSION"/);
assert.match(release, /files\+=\(release-metadata\.json/);
assert.doesNotMatch(release, /evalops-internal-arc/);
} else {
assert.match(release, /create-release-metadata\.mjs/);
assert.match(release, /files\+=\([^\n]*release-metadata\.json/);
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔍 Release mode inferred from one file

The test infers public-mirror mode from one helper's existence. Moving that helper silently selects the wrong release contract.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants