Skip to content

ci: tolerate optional S3 cache export outages on chore/bump-rust-dashcore-secp-033 - #5188

Open
ktechmidas wants to merge 2 commits into
chore/bump-rust-dashcore-secp-033from
ci/secp-optional-cache-rollout-20260929
Open

ktechmidas wants to merge 2 commits into
chore/bump-rust-dashcore-secp-033from
ci/secp-optional-cache-rollout-20260929

Conversation

@ktechmidas

Copy link
Copy Markdown
Collaborator

Issue being fixed or feature implemented

Backport the merged CI-only optional S3 cache-export repair #5165 to chore/bump-rust-dashcore-secp-033. An unavailable optimization must not invalidate a successful build or image publication.

What was done?

  • Exact two-file backport from merge 5f4ab6c2f98cf3c01f35a5ffa81f61957a4cd50f onto target e2fd47db5cf2c299f0bf1a0eddda60688f2fd8a5.
  • Tolerate only Docker layer-cache export failures (ignore-error=true). Imports, architecture prefixes and explicit shared-writer opt-in remain unchanged.
  • Keep compilation, application tests and registry publication failures fatal. No runner recipe, routing, credentials, access policy or application source changes.
  • Separate infrastructure branch: no contributor PR was pushed, rebased, retargeted or rerun, and no live worker was changed.

How Has This Been Tested?

  • Three executable Node-backed cache-action regression tests pass on this exact head.
  • The same tests against the unmodified target action reproduce two expected failures.
  • YAML/Python syntax and git diff --check pass; every non-.github root-tree object equals the exact target.
  • CI and independent reviews remain required; local tests are not a claim of target adoption or real runner execution.

Author recovery guidance (after merge only)

If your exact failed step is optional S3 cache export, update your own PR from chore/bump-rust-dashcore-secp-033 after this repair lands and let the new head start CI. Re-running an unchanged old head does not adopt this action repair. This does not fix Android/sudo setup faults or application/test failures; those remain separate.

Breaking Changes

None. Existing image eligibility and legacy runner capacity are preserved.

Checklist

  • I have performed a self-review of my own code
  • I have commented non-obvious behavior
  • I have added relevant CI unit regressions
  • Independent reviews and protected merge gates complete

Authored and operated by infraclaw under latte's scoped CI authorization. Protected transport account attribution is not its owner's personal review or approval. No bypass or self-approval is requested.

…core-secp-033

Exact two-file backport of reviewed Platform #5165 (5f4ab6c). Preserve imports, build/publication failures, shared-writer opt-in, runner recipes and all application tests.
@coderabbitai

coderabbitai Bot commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository: dashpay/platform/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 451920dd-7543-4d10-a623-a0404dde509a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@thepastaclaw

thepastaclaw commented Sep 29, 2026 •

Copy link
Copy Markdown
Collaborator

✅ Final review complete — no blockers (commit 9d86c41) · triage: low

@thepastaclaw thepastaclaw left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Final validation — Phase 1 + Phase 2

The production change correctly limits error tolerance to S3 cache export, preserves cache imports and fatal build/publication failures, and exactly matches the two-file upstream repair. All three regression tests and git diff --check pass at ec0e27c. One non-blocking gap remains: this branch's workflows do not execute the newly added tests.

🟡 1 suggestion(s)

Review provenance

Source: reviewer 1: glm-5.3-flash (agent: phase1-reviewer, role: general); reviewer 2: glm-5.3-flash (agent: phase1-reviewer, role: architecture-layering); reviewer 3: gpt-6-astra (agent: phase2-reviewer, role: general); reviewer 4: gpt-6-astra (agent: phase2-reviewer, role: architecture-layering); final verifier: gpt-6-astra (agent: astra-verifier, role: final-verifier)

  • Triage: low by gpt-6-astra (effort low) — The two-file change narrowly makes optional S3 cache exports nonfatal with ignore-error=true and adds focused regression tests, leaving build, test, publication, and cache-import behavior unchanged.
  • Phase 1 reviewers: glm-5.3-flash — general (completed, effort high); agent phase1-reviewer, glm-5.3-flash — architecture-layering (completed, effort high); agent phase1-reviewer
  • Phase 1 model: glm-5.3-flash — zai quota: 5h 81% left, weekly 86% left; passed over gemini-3.8-flash-high (antigravity below 15% reserve: weekly 13% left, 5h 100% left)
  • Fresh verifier: gpt-6-astra — final-verifier; agent astra-verifier
  • Phase 2 reviewers: gpt-6-astra — general (completed, effort medium); agent phase2-reviewer, gpt-6-astra — architecture-layering (completed, effort medium); agent phase2-reviewer
🤖 Prompt for all review comments with AI agents
These findings are from an automated code review. Verify each finding against the current code and only fix it if needed.

In `.github/scripts/tests/test_s3_layer_cache.py`:
- [SUGGESTION] .github/scripts/tests/test_s3_layer_cache.py:11-25: New regression tests are not executed by any CI workflow on this branch
  These tests execute the actual cache-action script and pass locally, but no workflow at this head discovers `.github/scripts/tests/`. The existing Python discovery commands target `packages/swift-sdk/scripts` and the unrelated root `scripts/tests` directory. Upstream already had discovery of `.github/scripts/tests` before #5165; this target branch does not, so copying the test file alone leaves these new regressions unenforced in CI. Add a lightweight workflow step running `python3 -m unittest discover -s .github/scripts/tests -v` with Node available, and ensure changes to the cache action and its tests trigger it. This does not affect the correctness of the cache-export fix.

Comment on lines +11 to +25
class LayerCacheTests(unittest.TestCase):
def settings(self, shared=False, endpoint='https://cache.example.invalid'):
action = (ROOT / '.github/actions/s3-layer-cache-settings/action.yaml').read_text()
script = textwrap.dedent(action.split(' script: |\n', 1)[1])
values = {'inputs.region': 'test-region', 'inputs.bucket': 'test-bucket',
'inputs.prefix': 'cache-layers/linux/amd64/', 'inputs.endpoint': endpoint,
'inputs.head_ref': 'refs/pull/42/merge', 'inputs.name': 'dashmate-helper',
'github.sha': 'a' * 40, 'inputs.mode': 'max',
'inputs.cache_to_name': str(shared).lower()}
for key, value in values.items():
script = script.replace('${{ ' + key + ' }}', value)
self.assertNotIn('${{', script)
harness = 'const output = {}; const core = {setOutput: (k, v) => output[k] = v};\n'
result = subprocess.check_output(['node', '-e', harness + script
+ '\nconsole.log(JSON.stringify(output));'], text=True)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🟡 Suggestion: New regression tests are not executed by any CI workflow on this branch

These tests execute the actual cache-action script and pass locally, but no workflow at this head discovers .github/scripts/tests/. The existing Python discovery commands target packages/swift-sdk/scripts and the unrelated root scripts/tests directory. Upstream already had discovery of .github/scripts/tests before #5165; this target branch does not, so copying the test file alone leaves these new regressions unenforced in CI. Add a lightweight workflow step running python3 -m unittest discover -s .github/scripts/tests -v with Node available, and ensure changes to the cache action and its tests trigger it. This does not affect the correctness of the cache-export fix.

source: glm-5.3-flash (phase1-reviewer: general)

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Addressed by infraclaw in 9d86c41094490a41e0dc2e5083cea5de7b8a3fcb, fast-forwarded onto this existing infrastructure branch (no replacement PR). Added only .github/workflows/cache-action-tests.yml: a read-only, five-minute GitHub-hosted job with Node 22 and credential persistence disabled. It triggers for both cache/Docker action paths, the unchanged cache regression file, and its own workflow, and runs the existing three tests directly. This does not depend on pending #5167 and continues covering action-only changes after that PR lands.

All three tests pass locally; eight path-filter inclusion/exclusion checks and YAML/diff gates passed. More importantly, actual PR-attributable run 36564342784, attempt 1 completed successfully on this exact head at 11:51 UTC, including the cache regression step. Cache behavior, application code/tests, manifests and self-hosted workers are unchanged.

This is repair evidence, not self-approval or target adoption. New-head independent reviews and ordinary protected merge gates remain required; the finding/thread has not been dismissed or resolved by me. Protected account attribution is transport, not latte's personal review.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Resolved (re-reviewed at 9d86c410): The added .github/workflows/cache-action-tests.yml now runs the cache regression tests with Node 22 on a hosted runner and triggers for the relevant cache actions, test file, and workflow changes. The three tests pass against the exact reviewed head.

@thepastaclaw thepastaclaw left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Re-review — Final validation — Phase 1 + Phase 2

The pull request correctly limits BuildKit tolerance to optional S3 layer-cache exports by adding ignore-error=true only to cache-to. Cache imports, Docker builds, and registry publication remain fatal, and the added hosted workflow executes the three regression tests on relevant changes. No in-scope defects were found.

🔴 0 blocking | 🟡 0 suggestion(s) | 💬 0 nitpick(s)

Review provenance

Source: reviewer 1: glm-5.3-flash (agent: phase1-reviewer, role: general); reviewer 2: glm-5.3-flash (agent: phase1-reviewer, role: architecture-layering); reviewer 3: gpt-6-astra (agent: phase2-reviewer, role: general); reviewer 4: gpt-6-astra (agent: phase2-reviewer, role: architecture-layering); reviewer 5: gpt-6-astra (agent: phase2-reviewer, role: general); reviewer 6: gpt-6-astra (agent: phase2-reviewer, role: architecture-layering); final verifier: gpt-6-astra (agent: astra-verifier, role: final-verifier)

  • Triage: low by gpt-6-astra (effort low) — The diff makes a single, well-contained cache-export behavior change by adding ignore-error=true, with straightforward regression tests and a hosted CI workflow, without changing any critical surface.
  • Phase 1 reviewers: glm-5.3-flash — general (completed, effort high); agent phase1-reviewer, glm-5.3-flash — architecture-layering (completed, effort high); agent phase1-reviewer
  • Phase 1 model: glm-5.3-flash — zai quota: 5h 99% left, weekly 86% left; passed over gemini-3.8-flash-high (antigravity below 15% reserve: weekly 13% left, 5h 100% left)
  • Fresh final gate: an independent Phase-2 review ran after iterative findings were reconciled
  • Fresh verifier: gpt-6-astra — final-verifier; agent astra-verifier
  • Phase 2 reviewers: gpt-6-astra — general (completed, effort medium); agent phase2-reviewer, gpt-6-astra — architecture-layering (completed, effort medium); agent phase2-reviewer, gpt-6-astra — general (completed, effort medium); agent phase2-reviewer, gpt-6-astra — architecture-layering (completed, effort medium); agent phase2-reviewer
🤖 Prompt for all review comments with AI agents
These findings are from an automated code review. Verify the current code and confirm that no unresolved issues remain.

No unresolved findings remain from the prior review on this head.

This branch has not been deployed

No deployments
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.

3 participants