Skip to content

ci: add live canary regression lanes#2362

Draft
serrrfirat wants to merge 1 commit intostagingfrom
codex/live-canary-lanes
Draft

ci: add live canary regression lanes#2362
serrrfirat wants to merge 1 commit intostagingfrom
codex/live-canary-lanes

Conversation

@serrrfirat
Copy link
Copy Markdown
Collaborator

Summary

  • add scheduled/manual live canary workflow lanes and replay gating
  • add live-canary runner scripts, artifact scrubbing, and upgrade canary helper
  • document local, GitHub, and OpenAI Codex setup for live canaries

Notes

  • Draft because this is the CI/runbook infrastructure PR and may need final review of runner/secrets policy before merge.
  • Generated live trace outputs from local canary runs are intentionally not included.

Stream live canary output while preserving artifact logs and document OpenAI Codex lane setup.
@github-actions github-actions bot added scope: ci CI/CD workflows scope: docs Documentation size: XL 500+ changed lines risk: medium Business logic, config, or moderate-risk modules contributor: core 20+ merged PRs labels Apr 12, 2026
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request establishes a 'Live Canary' regression system for IronClaw, adding documentation and automation scripts for multiple testing lanes, including smoke tests, persona-based workflows, and release upgrade verifications. The review feedback suggests several technical refinements to the new shell scripts: ensuring macOS compatibility for the artifact scrubber, accounting for shallow clones in CI environments, and optimizing test execution by removing redundant build steps.


if [[ -s "${matches_file}" ]]; then
echo "Potential secret material found in live canary artifacts:"
sed -E 's/(bearer[[:space:]]+)[^[:space:]]+/\1<REDACTED>/Ig; s/(token[[:space:]]*[:=][[:space:]]*)[^[:space:]]+/\1<REDACTED>/Ig; s/(key[[:space:]]*[:=][[:space:]]*)[^[:space:]]+/\1<REDACTED>/Ig; s/(secret[[:space:]]*[:=][[:space:]]*)[^[:space:]]+/\1<REDACTED>/Ig' "${matches_file}" | head -200
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.

medium

The I flag in the sed command is a GNU extension for case-insensitive substitution and is not supported by BSD sed (the default on macOS). This will cause the script to fail with a 'transform flag expected' error on macOS-based runners or local developer machines. Since the matches were already identified case-insensitively by grep -i on line 37, you can either remove the I flag or use a more portable approach like perl -pe for the redaction display.

References
  1. The project specifically targets macOS (darwin), so shell commands should use BSD-compatible syntax for consistency and portability across developer environments.

DB_PATH="${DB_PATH:-${WORK_ROOT}/upgrade-canary.db}"

if [[ -z "${PREVIOUS_REF}" ]]; then
PREVIOUS_REF="$(git describe --tags --abbrev=0 2>/dev/null || true)"
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.

medium

In CI environments like GitHub Actions, repositories are often checked out as shallow clones (fetch-depth: 1). In such cases, git describe will fail to find any tags, causing the script to exit because PREVIOUS_REF cannot be auto-detected. It is recommended to document that this script requires a full clone or a sufficient fetch depth to correctly identify the previous release tag.

echo "[upgrade-canary] building previous release"
(
cd "${PREVIOUS_DIR}"
cargo build --no-default-features --features libsql
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.

medium

The cargo build command here (and on line 58) is redundant because the subsequent cargo test command will automatically trigger a build of the required targets. Removing these extra build steps can save significant time and disk space, especially since they are performed in temporary directories without a shared cache.

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

Labels

contributor: core 20+ merged PRs risk: medium Business logic, config, or moderate-risk modules scope: ci CI/CD workflows scope: docs Documentation size: XL 500+ changed lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant