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:
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.