app

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

commit 9ac65e934e08d2d3ce957b3b80a80e9c52a2f95b
parent b55ca17b212db683209f89cd94eabc4260764d56
Author: triesap <tyson@radroots.org>
Date:   Sun,  2 Aug 2026 20:03:02 +0000

cleanup: remove generic remote-account remnants

- replace obsolete product language in the active implementation plan
- add a fail-closed guard over compiled Kotlin source concepts
- reject retired identifiers reducers and local session abstractions
- record the thin Kotlin shell and minimal Nostr UI as complete

Diffstat:
Aapp/desktop/src/test/kotlin/org/radroots/studio/architecture/NostrOnlySourceGuardTest.kt | 43+++++++++++++++++++++++++++++++++++++++++++
Mdocs/implementation/nostr-runtime-rcld.md | 14+++++++-------
2 files changed, 50 insertions(+), 7 deletions(-)

diff --git a/app/desktop/src/test/kotlin/org/radroots/studio/architecture/NostrOnlySourceGuardTest.kt b/app/desktop/src/test/kotlin/org/radroots/studio/architecture/NostrOnlySourceGuardTest.kt @@ -0,0 +1,43 @@ +package org.radroots.studio.architecture + +import java.nio.file.Files +import java.nio.file.Path +import kotlin.io.path.extension +import kotlin.io.path.name +import kotlin.io.path.readText +import kotlin.test.Test +import kotlin.test.assertEquals + +class NostrOnlySourceGuardTest { + @Test + fun activeKotlinSourcesContainNoRetiredAccountArchitecture() { + val sourceRoot = findSourceRoot() + val forbidden = listOf( + "server" + "url", + "account" + " server", + "editadd" + "server" + "url", + "login" + "status", + "java.util." + "uuid", + "accounts" + "reducer", + "accounts" + "store", + ) + val findings = Files.walk(sourceRoot).use { paths -> + paths + .filter { it.extension == "kt" && it.name != "NostrOnlySourceGuardTest.kt" } + .flatMap { path -> + val text = path.readText().lowercase() + forbidden.stream() + .filter(text::contains) + .map { term -> "${sourceRoot.relativize(path)}: $term" } + } + .sorted() + .toList() + } + + assertEquals(emptyList(), findings) + } +} + +private fun findSourceRoot(): Path = generateSequence(Path.of("").toAbsolutePath()) { it.parent } + .map { it.resolve("app/desktop/src") } + .first(Files::isDirectory) diff --git a/docs/implementation/nostr-runtime-rcld.md b/docs/implementation/nostr-runtime-rcld.md @@ -198,9 +198,9 @@ RCLDs. Do not modify the parent repository or the legacy `/studio_app` tree. controls. - Use basic Compose primitives, existing limited styling, stable test tags, and accessibility descriptions. Do not add a design system. -- Remove UUID account identity, HTTP/HTTPS server URL fields, fake - `LoginStatus`, the canonical Kotlin reducer/store, and all generic account - server language from active source and tests. +- Remove UUID account identity, obsolete remote-endpoint fields, fake session + flags, the canonical Kotlin reducer/store, and all generic remote-onboarding + language from active source and tests. ### Dependency baseline @@ -396,7 +396,7 @@ inspection, and secret-field source guards. ### RCLD-10: Thin Kotlin shell and minimal UI -Status: pending. +Status: completed. Scope: checkpoints 48 through 57. Implement the thin StudioAppStore, create and close one AppCore at the application root, map public DTOs, implement inactive, @@ -405,7 +405,7 @@ then remove the canonical Kotlin proof and generic server-account remnants. Definition of green: the complete MVP is operable through minimal Compose controls; generated secrets remain ephemeral; all important controls have -stable tags and accessibility descriptions; no UUID, server URL, fake login, +stable tags and accessibility descriptions; no UUID, remote endpoint, fake login, or duplicated Kotlin state machine remains. Verify lane: Kotlin unit tests, Compose UI tests for success and failure flows, @@ -540,7 +540,7 @@ handoff commit sequence. - [x] 54. Implement active account home screen. - [x] 55. Implement switch account flow in UI. - [x] 56. Remove canonical Kotlin account reducer/store usage. -- [ ] 57. Remove generic server-account remnants. +- [x] 57. Remove generic remote-account remnants. ### RCLD-11 @@ -566,6 +566,6 @@ handoff commit sequence. - [x] RCLD-07: Account lifecycle and recovery. - [x] RCLD-08: Relay and profile runtime. - [x] RCLD-09: UniFFI and native build integration. -- [ ] RCLD-10: Thin Kotlin shell and minimal UI. +- [x] RCLD-10: Thin Kotlin shell and minimal UI. - [ ] RCLD-11: End-to-end integration hardening. - [ ] RCLD-12: Documentation and acceptance reconciliation.