Skip to content

fix(snap): snap build filter + post-release follow-up#7830

Merged
lalalune merged 10 commits into
mainfrom
develop
May 20, 2026
Merged

fix(snap): snap build filter + post-release follow-up#7830
lalalune merged 10 commits into
mainfrom
develop

Conversation

@lalalune
Copy link
Copy Markdown
Member

@lalalune lalalune commented May 20, 2026

Cherry-pick of snap turbo filter fix to main for v2.0.2 release builds.

Greptile Summary

This PR cherry-picks the snap turbo filter fix (removing the incorrect /schema subpath from --filter=@elizaos/scenario-runner) to main for the v2.0.2 release, bundled with a broad post-release follow-up touching benchmarks, training scripts, QA tooling, and generated app-core files.

  • Snap fix: snapcraft.yaml corrects the turbo workspace filter from @elizaos/scenario-runner/schema (invalid) to @elizaos/scenario-runner, ensuring the package is included in snap builds.
  • Benchmark/orchestrator hardening: adapters.py extracts a retrying _docker_info_available() helper (3 attempts, 20 s timeout each), expands vision-language bundle manifest detection to three schema locations, and runner.py adds failed_scenarios/interrupted_run quarantine reasons plus overall_score to the score-extraction lookup chain.
  • Path and naming corrections: run.mjs fixes the repo-root path (2→3 levels up) and renames app-lifeops/app-training references to plugin-lifeops/plugin-training; check-mobile-artifacts.test.ts updates Android paths from packages/app to packages/app-core/platforms/android.

Confidence Score: 3/5

The snap fix is minimal and correct, but the breadth of post-release follow-up across 65 files warrants careful review before merging to main.

The e2e test file calls discoverDocsRoutes() at module load time with no guard around readdirSync — if the content/ directory is absent in any CI job, every test in the file fails as a collection error rather than being skipped. The remaining changes are well-scoped with accompanying tests.

packages/cloud-frontend/tests/e2e/cloud-routes.spec.ts needs a try/catch or existence check around walk(CONTENT_DIR) before the call at module scope.

Important Files Changed

Filename Overview
packages/app-core/packaging/snap/snapcraft.yaml Core fix: removes /schema subpath from turbo filter so @elizaos/scenario-runner workspace is correctly included in snap builds.
packages/cloud-frontend/tests/e2e/cloud-routes.spec.ts Adds docs route discovery and two new dashboard routes with API mocks; discoverDocsRoutes() called at module scope without error handling — ENOENT on missing content dir fails all tests.
packages/benchmarks/orchestrator/adapters.py Extracts _docker_info_available() with 3-attempt retry logic; expands vision-language bundle detection to accept kernels and files schema fields in addition to runtime.
packages/benchmarks/orchestrator/runner.py Adds failed_scenarios and interrupted_run quarantine reasons; adds overall_score key to score extraction lookups in three places.
packages/feed/packages/agents/src/rubrics/index.ts New file defining archetype rubrics and hash utilities; getAllRubricsHash double-counts DEFAULT_RUBRIC in its hash input.
packages/scripts/launch-qa/run.mjs Fixes repo-root path (2→3 levels up), removes stale test file references, and renames app-lifeops/app-training plugin paths to plugin-lifeops/plugin-training.
packages/training/scripts/convert_hermes_to_eliza.py Rewrites glaive format parsing to handle ASSISTANT: speaker, extract tools from system prompt JSON, and preserve intermediate assistant turns.
packages/chip/rtl/interconnect/axi4/e1_axi4_interconnect.sv Inlines w_active[m].slave directly into signal assignments, removing the automatic local variable; semantically equivalent.
packages/benchmarks/eliza-adapter/eliza_adapter/woobench.py Drops "system" from the role allowlist when building bridge message history; system-role turns in recent_history are now silently excluded.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[_has_terminal_bench_docker_backend] --> B[_docker_info_available]
    C[_has_hermes_sandbox_backend] -->|no MODAL tokens| B
    B --> D{docker in PATH?}
    D -->|no| E[return False]
    D -->|yes| F[attempt loop\nmax 3 tries]
    F --> G[docker info --format ServerVersion\ntimeout=20s]
    G -->|returncode == 0| H[return True]
    G -->|error / timeout| I{more attempts?}
    I -->|yes| J[sleep 0.25s]
    J --> F
    I -->|no| K[return False]
Loading

Comments Outside Diff (1)

  1. packages/cloud-frontend/tests/e2e/cloud-routes.spec.ts, line 76-80 (link)

    P1 discoverDocsRoutes() called at module scope without error handling

    walk(CONTENT_DIR) calls readdirSync with no try-catch. If CONTENT_DIR (../../content relative to the test file) doesn't exist in the CI environment — e.g., docs aren't checked out in an agent-focused workflow — readdirSync throws ENOENT at module initialization, preventing the entire test file from loading and failing every test in it as a collection error rather than a skipped test.

Reviews (1): Last reviewed commit: "fix(snap): use base package name instead..." | Re-trigger Greptile

Greptile also left 2 inline comments on this PR.

Shaw and others added 10 commits May 19, 2026 22:14
…ompts

- packages/agent/src/api/registry-service.ts: comment 'Babylon-compatible' → 'Feed-compatible'
- packages/cloud-shared/src/lib/services/referrals.ts: comment 'Babylon's pattern' → 'Feed's pattern'
- packages/core/src/features/trajectories/export.ts: comment 'Babylon-specific' → 'Feed-specific'
- packages/docs/changelog.mdx: 'Babylon agent terminal' / 'Babylon prediction market game' → Feed
- packages/training/scripts/rl/attacker_trainer.py: DEFENDER_SYSTEM_PROMPT 'Babylon agent' → 'Feed agent'

Remaining 'babylon' refs left intentionally:
- plugins/plugin-babylon/* and apps/babylon.json (per user instruction: Babylon.js 3D plugin shell)
- BabylonOperatorSurface/BabylonTuiView (Babylon.js 3D UI)
- elizaOS/prr@babylon branch ref in .github/workflows/run-prr.yml (real upstream branch)
- BabylonSocial/scambench import URLs in packages/benchmarks/scambench/ (external dataset)
- 'babylon layout' historical comment in tests/rl/conftest.py

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The snap build was failing with 'No package found with name @elizaos/scenario-runner/schema'.
That's a TypeScript subpath import — not a workspace package name. Use the
base name '@elizaos/scenario-runner' which actually resolves in the workspace.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 20, 2026

Important

Review skipped

Auto reviews are disabled on this repository. 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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a3269e4d-506d-4f2d-b61f-ed8763e387eb

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
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch develop

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 and usage tips.

@lalalune lalalune merged commit 9c77824 into main May 20, 2026
53 of 71 checks passed
Comment on lines +96 to +101
export function getAllRubricsHash(): string {
return createHash("sha256")
.update(`${Object.values(RUBRICS).sort().join("::")}${DEFAULT_RUBRIC}`)
.digest("hex")
.substring(0, 16);
}
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.

P2 getAllRubricsHash() appends DEFAULT_RUBRIC twice: once because every archetype in RUBRICS maps to DEFAULT_RUBRIC (so Object.values(RUBRICS).sort().join("::") already contains it 12 times), and again via the explicit concatenation. If per-archetype rubrics are ever added, the appended DEFAULT_RUBRIC would still inflate the hash, making it inconsistent with the intent of hashing "all unique rubric content".

Suggested change
export function getAllRubricsHash(): string {
return createHash("sha256")
.update(`${Object.values(RUBRICS).sort().join("::")}${DEFAULT_RUBRIC}`)
.digest("hex")
.substring(0, 16);
}
export function getAllRubricsHash(): string {
return createHash("sha256")
.update([...new Set(Object.values(RUBRICS))].sort().join("::"))
.digest("hex")
.substring(0, 16);
}

Comment on lines 295 to 299
"content": turn["content"],
}
for turn in recent_history
if turn["role"] in {"system", "user", "assistant", "agent"}
if turn["role"] in {"user", "assistant", "agent"}
and str(turn["content"]).strip() != system_hint
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.

P2 Silent drop of "system" turns in conversation history

The filter now excludes turns with role == "system" from recent_history. Previously, system-role turns that didn't match system_hint would pass through to the bridge. If any adapter or history builder emits mid-conversation system turns (e.g., injected context updates), they will now be silently dropped without warning, potentially leaving the agent with incomplete context. Worth confirming this is intentional for all adapters feeding recent_history.

@claude
Copy link
Copy Markdown
Contributor

claude Bot commented May 20, 2026

Claude encountered an error after 0s —— View job


I'll analyze this and get back to you.

@github-actions
Copy link
Copy Markdown
Contributor

LifeOps Multi-Tier Benchmark

Suite: smoke — Tiers requested: large,frontier

large

LifeOps Multi-Tier Benchmark

Tier: large
Suite: smoke

frontier

LifeOps Multi-Tier Benchmark

Tier: frontier
Suite: smoke

Artifacts: lifeops-multi-tier-large-26143213496, lifeops-multi-tier-frontier-26143213496

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant