Skip to content

DC7 — Close the DeviceCore Phase 1 conformance gate #1440

Description

@timohueser

Parent epic: #1433

Program tracker: #1448

Program position: DeviceCore Phase 1, item 7

Start gate: DC1 #1434 through DC6 #1439 are complete.

Goal

Close the Phase 1 conformance gate before #1397 replaces the runtime pass protocol.

This issue proves the foundation. It must not add another product lifecycle.

Inputs to this gate

The target behavior and acceptance rules remain in #1433.

Conformance matrix

Run every applicable DC1 scenario through these runners:

Runner Result timing Purpose
Legacy immediate Same host call Baseline host behavior
Legacy delayed Later pass Baseline timing sensitivity
DeviceCore immediate Next available pass New policy behavior
DeviceCore delayed Scripted later pass Stale and ordering behavior
Compatibility Legacy transport with typed core Adapter coverage

Compare normalized DeviceCore state and visible results. Do not require legacy internal command sequences after ownership changes.

Every mismatch needs one of these dispositions:

  • Corrected defect with an explicit expected target.
  • Accepted platform difference with a reason.
  • Blocking conformance failure.

Mandatory traces

Add or run these traces even when DC1 did not need them:

  • Outcome after cancellation.
  • Outcome after a replacement request.
  • Store change during catalog refresh.
  • Transfer start during route planning.
  • Route-plan completion after active-route change.
  • Settings result with an old revision.
  • Ride finalize failure after the last checkpoint.
  • Trip member disappearance before delete commit.
  • Capability change after a new map mounts.
  • Detour without a path.
  • Device without detour capability.
  • Active-route deletion with same-pass Navigator delivery.
  • Navigator activation with next-pass Retention delivery.
  • Full effect slot and full outcome slot.
  • Deferred slot which forces a pass before sleep.
  • Stale derived input after a subject change.

Resource gate

Record before and after values for these items:

  • size_of::<App>().
  • size_of::<EffectSlots>().
  • size_of::<OutcomeSlots>().
  • Largest domain effect and outcome.
  • Board resident RAM.
  • Scratch arena and each arm.
  • Main task future.
  • Guarded poll frame.
  • Flash size.
  • Wake count for the conformance replay.
  • Mean and worst DeviceCore pass time on the host replay.

Use the commands and baselines in resource_guard.py and the embedded CI job.

Any increase needs an itemized reason. An unexplained increase blocks Phase 2.

Implementation steps

  1. Extend the DC1 runner with DeviceCore and compatibility runner adapters.
  2. Run the complete conformance matrix.
  3. Add all mandatory stale, ordering, capacity, and capability traces.
  4. Remove test exclusions which no longer have a reason.
  5. Record each remaining legacy difference and its later owner.
  6. Measure the listed resource values against the DC1 baseline.
  7. Run the required cross-cutting repository gates.
  8. Publish the matrix, differences, resources, and exact commands in the issue result.
  9. Update tracker TRACKER — Device architecture refactor: progress, gates, and next work #1448 only after every gate passes.

Verification

At minimum, run:

obc test -p obc-app
obc test -p obc-host-core
obc test fixtures -p obc-host-core
cargo clippy -p obc-app -p obc-host-core --all-targets -- -D warnings
obc check fmt device board

This contract is cross-cutting. Run obc test full or obc check full only when CONTRIBUTING.md requires the additional coverage.

Definition of done

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions