app

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

commit f1ad4be91b0d2de3915b0e755caa760306befa76
parent 53617c8f0e4827a93ac2c85420c03e7dfbfcf298
Author: triesap <tyson@radroots.org>
Date:   Sun,  9 Aug 2026 18:47:59 +0000

build: define the HarvestCircle naming contract

- record product-owned naming independently from shared Radroots libraries
- make Gradle Rust source discovery independent of crate prefixes
- expose governed Cargo lockfile and metadata commands
- preserve standalone and extbuild contributor workflows

Diffstat:
MAGENTS.md | 13+++++++++++++
MMakefile | 10++++++++--
Mapp/desktop/build.gradle.kts | 2+-
3 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/AGENTS.md b/AGENTS.md @@ -18,6 +18,19 @@ other reusable library policy. Product-specific Rust code must live in this repository and may depend on the exact public Radroots library revision selected by the capsule; it must not depend on an implicit sibling checkout. +Product-owned names use the HarvestCircle identity consistently: + +- Human-facing product name: `HarvestCircle`. +- Rust crate directories, Cargo packages, and dependency keys: + `harvestcircle_*`. +- Kotlin source namespace: `org.radroots.harvestcircle`. +- Product-owned Kotlin and UniFFI types: `HarvestCircle*`. +- Product-owned environment variables: `HARVESTCIRCLE_*`. + +These product-specific names are intentionally distinct from canonical shared +`radroots_*` library packages, Radroots service terminology, and Radroots +corporate or vendor identity, which retain their existing names. + The repository must remain independently cloneable, buildable, testable, and packageable through its checked-in command surfaces with or without extbuild. It must not depend on private parent code, parent-only contracts, unpublished diff --git a/Makefile b/Makefile @@ -5,10 +5,10 @@ CARGO ?= cargo CARGO_MANIFEST := core/Cargo.toml EXTBUILD ?= $(if $(shell cargo extbuild --version 2>/dev/null),cargo extbuild run --) -.PHONY: help doctor format format-fix lint test check build bindings dev run audit licenses package release-check clean +.PHONY: help doctor lock metadata format format-fix lint test check build bindings dev run audit licenses package release-check clean help: - @printf '%s\n' doctor format format-fix lint test check build bindings dev run audit licenses package release-check clean + @printf '%s\n' doctor lock metadata format format-fix lint test check build bindings dev run audit licenses package release-check clean doctor: $(if $(strip $(EXTBUILD)),cargo extbuild doctor,@:) @@ -16,6 +16,12 @@ doctor: $(EXTBUILD) $(CARGO) --version $(EXTBUILD) $(GRADLE) --version +lock: doctor + $(EXTBUILD) $(CARGO) generate-lockfile --manifest-path $(CARGO_MANIFEST) + +metadata: doctor + $(EXTBUILD) $(CARGO) metadata --manifest-path $(CARGO_MANIFEST) --locked --format-version 1 --no-deps + format: doctor $(EXTBUILD) $(CARGO) fmt --manifest-path $(CARGO_MANIFEST) --all -- --check $(EXTBUILD) $(GRADLE) --no-daemon :app:desktop:ktlintCheck diff --git a/app/desktop/build.gradle.kts b/app/desktop/build.gradle.kts @@ -137,7 +137,7 @@ val rustSources = "Cargo.lock", "rust-toolchain.toml", "compatibility/**", - "crates/studio_*/**", + "crates/**", ) exclude("target/**") }