Conversation
… diff Every worker has been publishing a `log` trigger type that it doesn't actually register. iii-hq/iii's observability module (engine/src/workers/observability/mod.rs:1487-1494) registers `log` as a built-in trigger type without an `engine::` prefix, so neither the engine's own `include_internal: false` filter (engine_fn/mod.rs:587) nor our post-#73 namespace filter catches it; the type leaks into every worker's payload. Snapshot `engine::trigger-types::list` between `Start III engine` and `Start local worker for interface collection`, then have `normalize_worker_interface` exclude any id present in that baseline. The diff is exactly what the target worker added — robust to future built-ins the engine may register without an `engine::` prefix, with no hardcoded names. The collect script accepts `--trigger-types-baseline <path>` and treats a missing file as no baseline, so the script still works standalone for ad-hoc runs.
|
Warning Rate limit exceeded
To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
Summary
Every worker we've published recently has a
logtrigger type that it doesn't register itself (example —image-resize/v0.1.8). iii-hq/iii's observability module (engine/src/workers/observability/mod.rs:1487-1494) registerslogas a built-in trigger type with noengine::prefix:Both filters miss it: the engine's
include_internal: falseonly skipsengine::*(engine_fn/mod.rs:587), and so does our normalizer (post-#73).logends up attached to every worker.Fix
Take a baseline snapshot of
engine::trigger-types::listafter the engine is ready but before the target worker starts. Diff against the post-worker list — what the target added is what we publish.Why this approach
{log}engine::loglog→engine::logSelf-correcting: any new engine built-in is automatically excluded next publish without changes here.
Implementation
Snapshot engine trigger types baselinebetween engine ready check andStart local worker for interface collection. Oneiii triggercall (~100ms) writingtrigger-types-baseline.json.collect_worker_interface.pygains--trigger-types-baseline <path>and reads the file if it exists.normalize_worker_interfaceacceptsbaseline_trigger_types_jsonand skips any id already present.Test plan
create-tag.ymlforimage-resize(no own trigger types) — publishedtriggersis[].skills—triggerscontainsskills::on-changeandprompts::on-changeonly (nolog).Snapshot engine trigger types baselinestep prints a JSON containing at least{"id": "log"}so the filter has something to match.