app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

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:
MMakefile | 9++++++---
Mtools/test-build-modes.sh | 23+++++++++++++++++++++++
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$')