# test602 — Hub scheduled-task misfire policy

Date: 2026-08-09
Status: PASS (exact source commit)

Source commit: `cea39d266aa2250ced3fc513383d0fae70a1ba75`
Image ID: `sha256:acc73084294bb18d2290e011b6774c060ae70f8170b76e66cb96360be0cf5de0`
Embedded environment: `TEST602_SOURCE_COMMIT=cea39d266aa2250ced3fc513383d0fae70a1ba75`
Runner artifact SHA256: `2ec9b9b835c5874d4169c47a6c7068c36c50004b86568fdf713148df3cfc3883`

## Scope

- Hub schema/API/scheduler support for `misfire_policy=catch_up_once|skip`
- backward-compatible default `catch_up_once`
- 60-second grace window for ordinary scheduler jitter
- skipped occurrence audit without task/inbox creation
- Dashboard and App creation controls and policy disclosure

## Layer 1 — Hub real SQLite/HTTP tests

Command: `sg docker -c 'docker build --build-arg SOURCE_COMMIT=cea39d266aa2250ced3fc513383d0fae70a1ba75 -t anet-test602:dev -f tests/test602-scheduled-misfire/Dockerfile . && docker run --rm -v /tmp/test602-exact-artifacts:/artifacts anet-test602:dev'`

Result:

- 10 tests passed, 0 failed, 81 assertions
- default/validation/create/read compatibility passed
- catch-up created exactly one task and advanced into the future
- skip created no task/inbox, wrote `misfire_skipped`, preserved `last_run_at`, and advanced
- an occurrence only 10 seconds late remained a normal dispatch
- a skipped one-shot schedule completed without dispatch
- node-token GET and POST both returned `403 user_token_required`

## Mutation

Mutation: replace the production skip decision with an always-false condition.

Result: witnessed red, exit code 1. Restoring production code returned the suite to green.

## Layer 2 — Dashboard

- 14 contract checks passed
- production Next.js build/typecheck passed
- 53/53 pages generated
- both policies are selectable, forwarded to the Hub, explained, and disclosed on schedule cards

## Layer 3 — App

- 13 contract checks passed
- Expo 56 web export passed (423 modules)
- both policies are selectable, forwarded to the Hub, and disclosed on schedule cards

## Operational note

The three suites reused the single exact tag `anet-test602:dev`. The final exact-source image was removed by that exact tag after evidence capture. No prune or broad image deletion was used; host free space remained 11 GB after cleanup.
