feat(workout): gate mobile verification on product tests
Make workout mobile-verify rerun the Workout product tests before release-kit checks so app value, recovery, local state, and host capability boundaries fail closed with mobile artifacts. req: examples/001 req: examples/006 req: host/002 req: local/001
This commit is contained in:
@@ -29,11 +29,13 @@ target/hemx-mobile/workout/
|
|||||||
ios/README.md
|
ios/README.md
|
||||||
```
|
```
|
||||||
|
|
||||||
Use `workout mobile-verify` to check the generated kit and release binary. It
|
Use `workout mobile-verify` as the store-readiness product gate: it runs the
|
||||||
fails on a non-HTTPS production origin, missing/inconsistent Android or iOS
|
Workout product tests, then checks the generated kit and release binary. It
|
||||||
metadata, or external toolchain/signing blockers that were not written into the
|
fails on broken app value/recovery/host-boundary tests, a non-HTTPS production
|
||||||
manifest and `BLOCKERS.md`. Use `workout doctor` when you only want to see
|
origin, missing/inconsistent Android or iOS metadata, or external
|
||||||
missing external inputs.
|
toolchain/signing blockers that were not written into the manifest and
|
||||||
|
`BLOCKERS.md`. Use `workout doctor` when you only want to see missing external
|
||||||
|
inputs.
|
||||||
|
|
||||||
## Production configuration
|
## Production configuration
|
||||||
|
|
||||||
|
|||||||
@@ -70,11 +70,14 @@ HEMX_WORKOUT_ORIGIN=https://workout.example.com \
|
|||||||
```
|
```
|
||||||
|
|
||||||
The kit lands in `target/hemx-mobile/workout` unless
|
The kit lands in `target/hemx-mobile/workout` unless
|
||||||
`HEMX_WORKOUT_MOBILE_OUT` is set. It records app identity, version, production
|
`HEMX_WORKOUT_MOBILE_OUT` is set. `workout mobile-verify` reruns the Workout
|
||||||
origin, runtime asset policy, cache/offline state policy, secrets/signing
|
product tests before checking the release kit, so app value, recovery, local
|
||||||
boundaries, rollback expectations, Android TWA metadata, iOS WebView metadata,
|
state, and host capability boundaries fail closed with the mobile artifacts. The
|
||||||
and any external blocker such as missing Android SDK, Xcode, or store signing
|
kit records app identity, version, production origin, runtime asset policy,
|
||||||
credentials. See `docs/recipes/mobile-release.md`. req: examples/006
|
cache/offline state policy, secrets/signing boundaries, rollback expectations,
|
||||||
|
Android TWA metadata, iOS WebView metadata, and any external blocker such as
|
||||||
|
missing Android SDK, Xcode, or store signing credentials. See
|
||||||
|
`docs/recipes/mobile-release.md`. req: examples/006
|
||||||
|
|
||||||
## Boundaries proven
|
## Boundaries proven
|
||||||
|
|
||||||
|
|||||||
+12
-1
@@ -127,7 +127,18 @@ fn run_workout_mobile_release() -> ExitCode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn run_workout_mobile_verify() -> ExitCode {
|
fn run_workout_mobile_verify() -> ExitCode {
|
||||||
// req: examples/006
|
// req: examples/001 req: examples/006 req: host/002 req: local/001
|
||||||
|
let budget = Budget::detect();
|
||||||
|
budget.report();
|
||||||
|
if let Err(code) = Step::new(
|
||||||
|
"workout-mobile-product-gate",
|
||||||
|
["test", "-p", "hemx-workout-example"],
|
||||||
|
)
|
||||||
|
.run(&budget)
|
||||||
|
{
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
let config = WorkoutMobileConfig::from_env();
|
let config = WorkoutMobileConfig::from_env();
|
||||||
let failures = verify_workout_mobile_release(&config, true);
|
let failures = verify_workout_mobile_release(&config, true);
|
||||||
let blockers = mobile_external_blockers(&config);
|
let blockers = mobile_external_blockers(&config);
|
||||||
|
|||||||
Reference in New Issue
Block a user