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
Extend the DC1 runner with DeviceCore and compatibility runner adapters.
Run the complete conformance matrix.
Add all mandatory stale, ordering, capacity, and capability traces.
Remove test exclusions which no longer have a reason.
Record each remaining legacy difference and its later owner.
Measure the listed resource values against the DC1 baseline.
Run the required cross-cutting repository gates.
Publish the matrix, differences, resources, and exact commands in the issue result.
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
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:
Compare normalized DeviceCore state and visible results. Do not require legacy internal command sequences after ownership changes.
Every mismatch needs one of these dispositions:
Mandatory traces
Add or run these traces even when DC1 did not need them:
Resource gate
Record before and after values for these items:
size_of::<App>().size_of::<EffectSlots>().size_of::<OutcomeSlots>().Use the commands and baselines in
resource_guard.pyand the embedded CI job.Any increase needs an itemized reason. An unexplained increase blocks Phase 2.
Implementation steps
Verification
At minimum, run:
This contract is cross-cutting. Run
obc test fullorobc check fullonly whenCONTRIBUTING.mdrequires the additional coverage.Definition of done
LegacyOwnedrow has a later owner and deletion slice.