Skip to content

Audit follow-up: config-registration tripwire + native integration spec#119

Merged
starbrightlab merged 1 commit into
mainfrom
audit-followup
Jul 3, 2026
Merged

Audit follow-up: config-registration tripwire + native integration spec#119
starbrightlab merged 1 commit into
mainfrom
audit-followup

Conversation

@starbrightlab

Copy link
Copy Markdown
Owner

Context

An audit of everything merged since Release 1.52 found that the fork feature set is largely unreachable on-device — the settings-menu links and home-screen launch points were deferred and never landed. The registry code inside each feature is mostly fine; the gap is integration. This PR adds two durable guardrails and the plan of record. It does not wire the features up yet (that's the sequenced work in the spec).

What's here

1. Global config-registration tripwire (SettingsDomainTest)
The existing per-domain tripwires only fire for Configs that are already registered — nothing forced a new *Config into the registry. That's how CameraConfig / TimerConfig / CountdownConfig / NotesConfig shipped with no on-device UI and no phone-remote exposure. The new test fails the build unless every *Config is either backed by a SettingsDomain or listed as a documented collection/content exception.

2. docs/design/feature-integration.md — the plan of record for wiring these features in the Immortal-native way:

  • Settings → the declarative registry (NavSpec/NavRow to the already-registered domains; GroupSpec later for the collection-style ones).
  • Launching tools → the existing unified home grid as built-in tiles, grouped into a "Tools" folder (the Curation mechanism already used for the "Settings" folder).
  • Explicitly in place of adopting the fork's ~3,200-line parallel ForkHome screen, which would duplicate the home grid and re-introduce a second nav model (against AGENTS.md). Borrow ForkHome's UX ideas, not the monolith.

A key correction the audit surfaced: Camera/Timer/Countdown are collections (List<…>) and Notes is content, not scalar settings — so they correctly should not be forced into scalar domains; they need reachable Activities (tiles), with GroupSpec as the eventual remote home.

Verification

  • :app:testDebugUnitTest — 260 tests, 0 failures (incl. the new tripwire).
  • mkdocs build --strict builds clean.

Note on the release gate

The spec recommends holding the next release until the settings-reachability + Tools-folder steps land, since the features otherwise ship dark on the Portal itself (they are reachable via the phone remote for the registered scalar domains).

🤖 Generated with Claude Code


Generated by Claude Code

The fork feature set merged since 1.52 shipped with its settings/launch entry
points deferred, so most of it is unreachable on-device. Two durable guardrails
against that recurring:

- SettingsDomainTest.everyPersistedConfig_isRegisteredAsADomain_orExplicitly-
  Excepted: a global tripwire that fails the build if a new *Config is neither
  backed by a SettingsDomain nor listed as a documented collection/content
  exception. This is the check the per-domain tripwires were missing, and what
  would have caught CameraConfig/TimerConfig/CountdownConfig/NotesConfig
  shipping with no on-device UI and no phone-remote exposure.

- docs/design/feature-integration.md: the plan of record for wiring these
  features in the Immortal-native way (declarative registry for settings, the
  existing unified home grid + a "Tools" folder for launching), explicitly in
  place of adopting the fork's ~3.2k-line parallel ForkHome screen.

Full suite green (260 tests); mkdocs --strict builds.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H4SmhtgSd5B5sdTiV216XM
@starbrightlab starbrightlab merged commit bde088f into main Jul 3, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants