Skip to content

docs(rivet): track kiln-async external-wake + host-future/Waker bridge gaps - #408

Merged
avrabe merged 1 commit into
mainfrom
chore/async-roadmap-gaps
Jul 10, 2026
Merged

docs(rivet): track kiln-async external-wake + host-future/Waker bridge gaps#408
avrabe merged 1 commit into
mainfrom
chore/async-roadmap-gaps

Conversation

@avrabe

@avrabe avrabe commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator

Lands two kiln-async gaps as tracked rivet requirements (roadmap-only; no code). Surfaced by the executor-comparison benchmark (Findings 1 & 8) and the bench bridge doc comment — previously only phase notes under REQ_ASYNC_SCHED.

REQ_ASYNC_EXTWAKE — external wake-up path (v0.5.0)

Scheduler::mark_ready is public and TaskOutcome::Waited parks a task, but mark_ready is only ever driven by internal scheduler events inside poll_round. No out-of-loop event source (timer/ISR/host callback/gale event-group) can wake a parked task, so a task cannot today wait on a real external event and be resumed later. Needs a sound external-wake API preserving no_std / no-alloc / forbid(unsafe_code) / fuel-bounded, with an explicit concurrency model.

REQ_ASYNC_WAKERBRIDGE — official host Future/Waker bridge (v0.6.0)

kiln-async is #![forbid(unsafe_code)] permanently and deliberately never polls a Rust Future or builds a RawWaker vtable. The benchmark's bridge is explicitly unofficial/non-production — sound only for futures that self-wake synchronously inline (e.g. CooperativeYield), not general futures that store/clone the Waker. The "R1 unsafe waker" belongs in a separate std-only companion crate (may use unsafe) whose wake() routes to the external-wake path — outside the cert crate. Not a defect; a deliberately-descoped feature.

Both derives-from REQ_ASYNC_SCHED; the bridge depends-on REQ_ASYNC_EXTWAKE. rivet validate = 0 errors.

🤖 Generated with Claude Code

Two kiln-async gaps surfaced by the executor-comparison benchmark (Findings 1 & 8
+ the bench bridge doc comment) are now tracked artifacts instead of only phase
notes under REQ_ASYNC_SCHED:

- REQ_ASYNC_EXTWAKE (v0.5.0): external wake-up path. Scheduler::mark_ready is
  public and TaskOutcome::Waited parks a task, but mark_ready is only driven by
  INTERNAL scheduler events within poll_round — no out-of-loop event source
  (timer/ISR/host/gale) can wake a parked task, so "wait on a real event, be
  woken later" is not achievable today. Needs a sound external-wake API that
  keeps no_std/no-alloc/forbid-unsafe/fuel-bounded and states its concurrency
  model.

- REQ_ASYNC_WAKERBRIDGE (v0.6.0): official std-only core::task::Future/Waker
  bridge. kiln-async is forbid(unsafe_code) permanently and deliberately never
  polls a Rust Future / builds a RawWaker vtable; the benchmark's bridge is
  explicitly unofficial — sound only for futures that self-wake inline, not
  general futures that store/clone the Waker. The "R1 unsafe waker" belongs in a
  separate std-only companion crate (may use unsafe) whose wake() routes to
  REQ_ASYNC_EXTWAKE — OUTSIDE the cert crate. Not a defect; a descoped feature.

Both derive-from REQ_ASYNC_SCHED; the bridge depends-on the external-wake path.
Planning-only (rivet YAML); rivet validate = 0 errors.

Trace: skip
@github-actions

Copy link
Copy Markdown

🔍 Build Diagnostics Report

Summary

Metric Base Branch This PR Change
Errors 0 0 0
Warnings 5 5 0

🎯 Impact Analysis

Issues in Files You Modified

  • 0 new errors introduced by your changes
  • 0 new warnings introduced by your changes
  • 0 total errors in modified files
  • 0 total warnings in modified files
  • 0 files you modified

Cascading Issues (Your Changes Breaking Other Files)

  • 0 new errors in unchanged files
  • 0 new warnings in unchanged files
  • 0 unchanged files now affected

Note: "Cascading issues" are errors in files you didn't modify, caused by your changes (e.g., breaking API changes, dependency issues).

✅ No Issues Detected

Perfect! Your changes don't introduce any new errors or warnings, and don't break any existing code.


📊 Full diagnostic data available in workflow artifacts

🔧 To reproduce locally:

# Install cargo-kiln
cargo install --path cargo-kiln

# Analyze your changes
cargo-kiln build --output json --filter-severity error
cargo-kiln check --output json --filter-severity warning

@codecov

codecov Bot commented Jul 10, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@avrabe
avrabe merged commit 0d63af0 into main Jul 10, 2026
20 checks passed
@avrabe
avrabe deleted the chore/async-roadmap-gaps branch July 10, 2026 11:03
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.

1 participant