commit ba8951beb0bd2d7a921e97255b3ab8ee3539e88d
parent f2e7adee7bbf2e656fded186ed7626e44aab81e2
Author: triesap <tyson@radroots.org>
Date: Tue, 11 Aug 2026 19:23:22 +0000
test: qualify the hot-reload development lane
- Add a finite strict dev-check around the Compose hot-run argfile.
- Include development readiness in standalone and governed source checks.
- Enforce the hot-reload command contract across both build modes.
- Preserve configuration-cache reuse for the interactive development command.
Diffstat:
2 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/Makefile b/Makefile
@@ -17,10 +17,10 @@ else
override BUILD_RUNNER :=
endif
-.PHONY: help doctor governed-doctor lock metadata build-logic-check build-logic-stability-check mode-check format format-fix lint test check governed-check build bindings dev run audit licenses foundation-check package host-package-check governed-package-check source-check governed-source-check package-check integration-check governed-integration-check acceptance-check signing-check _signing-check notarization-check _notarization-check release-check _release-check clean
+.PHONY: help doctor governed-doctor lock metadata build-logic-check build-logic-stability-check mode-check format format-fix lint test check governed-check build bindings dev-check dev run audit licenses foundation-check package host-package-check governed-package-check source-check governed-source-check package-check integration-check governed-integration-check acceptance-check signing-check _signing-check notarization-check _notarization-check release-check _release-check clean
help:
- @printf '%s\n' doctor governed-doctor lock metadata build-logic-check build-logic-stability-check mode-check format format-fix lint test check governed-check build bindings dev run audit licenses foundation-check package host-package-check governed-package-check source-check governed-source-check package-check integration-check governed-integration-check acceptance-check signing-check notarization-check release-check clean
+ @printf '%s\n' doctor governed-doctor lock metadata build-logic-check build-logic-stability-check mode-check format format-fix lint test check governed-check build bindings dev-check dev run audit licenses foundation-check package host-package-check governed-package-check source-check governed-source-check package-check integration-check governed-integration-check acceptance-check signing-check notarization-check release-check clean
doctor:
@printf '%s\n' "harvestcircle.build.mode=$(BUILD_MODE)"
@@ -84,6 +84,9 @@ build: doctor
bindings: doctor
$(BUILD_RUNNER) $(GRADLE) --no-daemon :app:desktop:verifyUniFfiBindings :app:desktop:verifyReleaseNativeLibrary
+dev-check: doctor
+ $(BUILD_RUNNER) $(GRADLE) --no-daemon --configuration-cache --configuration-cache-problems=fail :app:desktop:hotRunArgfile
+
dev: doctor
$(BUILD_RUNNER) $(GRADLE) :app:desktop:hotRun
@@ -111,7 +114,7 @@ host-package-check: doctor
governed-package-check:
$(MAKE) --no-print-directory BUILD_MODE=governed host-package-check
-source-check: build-logic-check check bindings licenses
+source-check: build-logic-check check bindings licenses dev-check
$(BUILD_RUNNER) $(GRADLE) --no-daemon :app:desktop:sourceReadiness
governed-source-check:
diff --git a/tools/test-build-modes.sh b/tools/test-build-modes.sh
@@ -42,8 +42,31 @@ for mode in standalone governed; do
printf '%s\n' "ordinary source-check in $mode mode invoked the nondefault stability lane" >&2
exit 1
fi
+
+ dev_check_output=$(PATH="$fixture:$PATH" "$make_command" --no-print-directory -n BUILD_MODE="$mode" -C "$repository_root" dev-check)
+ dev_check_count=$(printf '%s\n' "$dev_check_output" | grep -c -- '--configuration-cache --configuration-cache-problems=fail :app:desktop:hotRunArgfile')
+ if [ "$dev_check_count" -ne 1 ]; then
+ printf '%s\n' "development readiness in $mode mode must verify the finite hot-reload argfile exactly once" >&2
+ exit 1
+ fi
+
+ source_dev_check_count=$(printf '%s\n' "$source_output" | grep -c -- '--configuration-cache --configuration-cache-problems=fail :app:desktop:hotRunArgfile')
+ if [ "$source_dev_check_count" -ne 1 ]; then
+ printf '%s\n' "ordinary source-check in $mode mode must include development readiness exactly once" >&2
+ exit 1
+ fi
done
+dev_output=$(PATH="$fixture:$PATH" "$make_command" --no-print-directory -n BUILD_MODE=standalone -C "$repository_root" dev)
+if ! printf '%s\n' "$dev_output" | grep -q ':app:desktop:hotRun'; then
+ printf '%s\n' 'development command must invoke Compose hot reload' >&2
+ exit 1
+fi
+if printf '%s\n' "$dev_output" | grep -q -- '--no-configuration-cache'; then
+ printf '%s\n' 'development command disabled the qualified configuration cache' >&2
+ exit 1
+fi
+
for mode in standalone governed; do
clean_output=$(PATH="$fixture:$PATH" "$make_command" --no-print-directory -n BUILD_MODE="$mode" -C "$repository_root" clean)
root_clean_count=$(printf '%s\n' "$clean_output" | grep -Ec '(^| -- )\./gradlew --no-daemon clean$')