Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions TICKETS.md
Original file line number Diff line number Diff line change
Expand Up @@ -172,11 +172,11 @@ External multimodule OSS validation of meta-build axioms (structure over configu
type-owned plugins, attrs-only call sites, closed matrix). **Not** another in-repo sample.

Open coding: **F-115** (`in_progress`). **F-094** Portal remains `blocked` (human).
4h workers: pick F-115 phase B+ unless blocked; do not `[SILENT]` while F-115 is open.
4h workers: pick F-115 phase C remainder (Hilt Path A / more features) unless blocked; do not `[SILENT]` while F-115 is open.

| ID | Status | Title | Notes |
|----|--------|-------|-------|
| F-115 | in_progress | Dogfood Now in Android under Forma | Primary OSS target [`android/nowinandroid`](https://github.com/android/nowinandroid). Design: [`docs/DOGFOOD-NIA.md`](docs/DOGFOOD-NIA.md). **Phase A+B done:** mavenLocal `0.1.3-NIA` + `/Users/claw/work/nowinandroid-forma/forma-spike` `:binary:assembleDebug` **green**. Findings F1/F8/F9 applied in spike. **Phase C:** expand real topic deps (data/Hilt/designsystem) + more features. No `androidLibrary`. |
| F-115 | in_progress | Dogfood Now in Android under Forma | Primary OSS target [`android/nowinandroid`](https://github.com/android/nowinandroid). Design: [`docs/DOGFOOD-NIA.md`](docs/DOGFOOD-NIA.md). **Phase A+B+C partial done:** spike green with data/domain `androidUtil`, designsystem `uiLibrary`, topic ViewModel, interests feature (no impl→impl). Finding F11 (`compose=false` on non-UI androidUtil). **Next phase C:** Hilt Path A, Room/Firebase, more features. No `androidLibrary`. |

## Backlog (lower priority / historical GitHub)

Expand Down
29 changes: 18 additions & 11 deletions docs/DOGFOOD-NIA.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Dogfood: Now in Android → Forma (F-115)

**Status:** `in_progress` — phase B vertical spike **green**
**Status:** `in_progress` — phase C (data/domain/designsystem + interests) **green**
**Upstream:** [android/nowinandroid](https://github.com/android/nowinandroid) (Apache-2.0)
**Pinned checkout (local):** `/Users/claw/work/nowinandroid` @ `7d45eae` (main tip when cloned 2026-07-29)
**Dogfood fork:** `/Users/claw/work/nowinandroid-forma`
Expand Down Expand Up @@ -183,16 +183,22 @@ Workspace: **`/Users/claw/work/nowinandroid-forma/forma-spike`** (external consu

**Real NiA DNA in spike:** `Topic` / `FollowableTopic` model sources; topic package namespace; topic strings moved to `androidRes`; Navigator port instead of Nav3 on api.

**Not yet (phase C):** full upstream `TopicScreen`/`TopicViewModel` (Hilt, `core.data`, designsystem, `core.ui`); multi-feature app; flavors; Room/Firebase Path A on this tree.
**Not yet (phase C remainder):** Hilt Path A; Room/Firebase; full upstream designsystem/core.ui; remaining features (foryou/bookmarks/search/settings); flavors.

### Phase C — Expand features + cores
### Phase C — Expand features + cores (partial ✅ 2026-07-29)

- Grow spike toward real topic impl deps (data/domain as `androidUtil`)
- foryou / interests / bookmarks / search / settings
- Hilt Path A on impl (+ binary)
- Room derived type on database
- Firebase on binary
- Optional: hybrid stub pairs for IDE
Workspace: same **`forma-spike`** external tree.

| Step | Result |
|------|--------|
| Cores | `core-data-android-util` (`TopicsRepository` + in-memory), `core-domain-android-util` (`GetFollowableTopicsUseCase`), `core-designsystem-ui-library` (slim `NiaTheme` / loading / background) |
| Topic | `TopicViewModel` + designsystem-backed `TopicRoute` / `TopicScreen` (manual DI) |
| Interests | `feature-interests-{api,res,impl}` — domain use case; navigates via **topic api** only |
| Root | Manual DI graph + multi-destination Navigator adapter |
| Verify | `./gradlew :binary:assembleDebug` → **BUILD SUCCESSFUL** (198 tasks); APK ~9.2 MB |
| Finding F11 | Project-global `compose=true` forces Compose compiler on `androidUtil` unless `compose = false` — set on data/domain |

**Still open in phase C:** Hilt Path A (type-owned like Metro F-095), Room derived type, Firebase binary, foryou/bookmarks/search/settings, full designsystem port.

### Phase D — Case study write-up

Expand All @@ -206,11 +212,12 @@ Workspace: **`/Users/claw/work/nowinandroid-forma/forma-spike`** (external consu
|----|------|--------------|------------|
| F1 | 2026-07-29 | feature api → navigation android lib | **Spike:** `core-navigation-api` pure `Navigator` port; `TopicNavKey` drops `NavKey`; adapter in `root-app` |
| F2 | 2026-07-29 | search api → domain | Still open (search not in spike) |
| F3 | 2026-07-29 | ui → model vs uiLibrary matrix | Deferred (no `uiLibrary` in spike); model consumed as JVM `library` from `impl` (**allowed**) |
| F5 | 2026-07-29 | test impl→impl | Deferred |
| F3 | 2026-07-29 | ui → model vs uiLibrary matrix | **Phase C:** `uiLibrary` designsystem has **no** model edge; model flows `impl` → JVM `library` (**allowed**). F3 gap stays if designsystem must import model types later |
| F5 | 2026-07-29 | test / runtime impl→impl | **Phase C runtime:** interests.impl → topic.**api** only. Test classpath still deferred |
| F8 | 2026-07-29 | upstream topic **api** ships `res/strings` | **Spike:** `feature/topic/res` `androidRes`; `api` has no `res/` (matrix content rule) |
| F9 | 2026-07-29 | `tools.forma.includer` **not** published to mavenLocal | External consumer used **flat** `include(":feature-topic-api")` + `projectDir`; Forma `target(":feature:topic:api")` → `:feature-topic-api`. Product gap: publish includer or document flat-name recipe in PLUGIN-PUBLISH |
| F10 | 2026-07-29 | First target() resolve failed with nested `:feature:topic:api` includes | Confirmed path mapping; flat names required without includer |
| F11 | 2026-07-29 | project-global `compose=true` + `androidUtil` | Compose compiler runs on data/domain without Compose runtime → ICE. **Fix:** `androidUtil(..., compose = false)` on non-UI cores |

## Local reference commands

Expand Down
16 changes: 16 additions & 0 deletions docs/PROGRESS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,22 @@

Newest entries first.

## 2026-07-29 — F-115: NiA dogfood phase C (data/domain/designsystem + interests)

- **Ticket:** F-115 still `in_progress` (Hilt Path A / Room / remaining features next)
- **Skills/modes:** Hermes direct dogfood scaffold (external spike; no Forma engine DSL change)
- **External tree:** `/Users/claw/work/nowinandroid-forma/forma-spike`
- Added `core-data-android-util`, `core-domain-android-util`, `core-designsystem-ui-library`
- Topic: `TopicViewModel` + designsystem-backed screen; deps on data + uiLibrary
- Interests: `feature-interests-{api,res,impl}` using domain use case; navigates via topic **api** only
- Root: manual DI + multi-destination Navigator adapter
- **F11:** `compose = false` on non-UI `androidUtil` (project-global compose otherwise ICE)
- **Verify (real host):** `forma-spike` `./gradlew :binary:assembleDebug` → **BUILD SUCCESSFUL** (198 tasks); APK `binary-debug.apk` ~9.2MB
- **Docs:** `docs/DOGFOOD-NIA.md` phase C + findings F3/F5/F11; TICKETS F-115 notes
- **Commits/PRs:** this branch → PR base `v2`
- **Blockers:** none product; F-094 Portal still human-blocked
- **Next:** Hilt Path A (type-owned like Metro), or more features / Room derived type

## 2026-07-29 — F-115: NiA dogfood phase B vertical spike green

- **Ticket:** F-115 still `in_progress` (phase C next)
Expand Down
Loading