diff --git a/.agent/playbooks/compose-theming.md b/.agent/playbooks/compose-theming.md
index 0de0410..a87b324 100644
--- a/.agent/playbooks/compose-theming.md
+++ b/.agent/playbooks/compose-theming.md
@@ -7,15 +7,15 @@ triggers: Any UI component change, new screen, token update in DESIGN.md or Colo
# Skill: Compose Theming & 4-State UI Matrix
-> Extracted from `Theme.kt`, `Color.kt`, `Type.kt`, `design-system.md` (Material 3 token table), and project `SecondBrainTheme` / `SereneCustomColors` implementations.
+> Extracted from `Theme.kt`, `Color.kt`, `Type.kt`, `design-system.md` (Material 3 token table), and project `AgenticAndroidStarterTheme` / `SereneCustomColors` implementations.
---
## 1. Theme Entry Point
```kotlin
-// Always wrap the root content in SecondBrainTheme (never AppTheme in new code)
-SecondBrainTheme(
+// Always wrap the root content in AgenticAndroidStarterTheme (never AppTheme in new code)
+AgenticAndroidStarterTheme(
darkTheme = isSystemInDarkTheme(),
dynamicColor = false // DISABLED project-wide โ Serene palette is locked
) {
diff --git a/.agent/playbooks/roborazzi-export.md b/.agent/playbooks/roborazzi-export.md
index a8beae8..0982055 100644
--- a/.agent/playbooks/roborazzi-export.md
+++ b/.agent/playbooks/roborazzi-export.md
@@ -41,7 +41,7 @@ class YourScreenSnapshotTest {
@Test
fun snapshot_YourScreen_Default_Light() {
composeTestRule.setContent {
- SecondBrainTheme(darkTheme = false) {
+ AgenticAndroidStarterTheme(darkTheme = false) {
YourScreen(uiState = YourUiState.Content(items = fakeItems))
}
}
@@ -54,7 +54,7 @@ class YourScreenSnapshotTest {
@Test
fun snapshot_YourScreen_Loading_Dark() {
composeTestRule.setContent {
- SecondBrainTheme(darkTheme = true) {
+ AgenticAndroidStarterTheme(darkTheme = true) {
YourScreen(uiState = YourUiState.Loading)
}
}
diff --git a/.github/ISSUE_TEMPLATE/crashlytics_triage.yml b/.github/ISSUE_TEMPLATE/crashlytics_triage.yml
index d4bb8da..227a408 100644
--- a/.github/ISSUE_TEMPLATE/crashlytics_triage.yml
+++ b/.github/ISSUE_TEMPLATE/crashlytics_triage.yml
@@ -60,7 +60,7 @@ body:
placeholder: |
Exception: java.lang.IllegalStateException: ...
Thread: main
- at com.secondbrain.app...
+ at com.example.kernel.starter...
validations:
required: true
- type: textarea
diff --git a/README.md b/README.md
index a00a763..05bcc9c 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,7 @@
+
@@ -270,6 +271,17 @@ When initiating a feature or bug fix:
4. **Delivery & Testing**: Persona 5 implements code on `/issue--` and verifies tests green.
5. **Gate 3.5 Release**: Persona 6 opens the PR and awaits your explicit command (*"Tu peux merger"*).
+### ๐ Live Kanban Delivery Board (GitHub Projects v2)
+
+Explore the live delivery board in action:
+๐ **[Live Delivery Board #2](https://github.com/users/nicolasvd/projects/2)** (`Agentic Delivery Board`)
+
+The board is updated automatically in real-time by the kernel automation:
+* **`Ready`**: Set at **Gate 1.4** upon JIT sealing via `./scripts/seal-issue.sh` with computed `Priority`, `Size`, and `Estimate`.
+* **`In Progress`**: Synchronized automatically when Persona 5 checks out the dedicated branch.
+* **`In Review`**: Set when Persona 6 opens the PR at Gate 3.5.
+* **`Done`**: Updated atomically upon human-authorized merge and dual-sync.
+
---
## ๐ Technical Playbooks & Governance Registry
diff --git a/design-system.md b/design-system.md
index 8e966f8..24c2929 100644
--- a/design-system.md
+++ b/design-system.md
@@ -169,7 +169,7 @@ graph LR
| **Tap "Share in Duo" (`AddMentalLoad` / `EditSheet`)** | Opens `AuthRequiredDialog` (soft-gating prompt). | Opens `PartnerLinkDialog` (invitation code input). | Toggles sharing directly into couple energy balance. |
| **Profile Screen (`ProfileScreen`)** | Displays Guest Mode banner with Google Sign-In CTA. | Displays Google email, Solo status, and Partner Link button. | Displays both partners (Alex & Sam), focus streak, and sanctuary code. |
| **Trends & Analytics (`TrendsScreen`)** | Displays Zen empty state encouraging Duo mode. | Displays personal cognitive statistics and velocity. | Displays full weekly distribution and couple energy ledger. |
-| **TopBar (`SecondBrainTopBar`)** | Displays Guest avatar. Spinner only during local refresh. | Displays Google profile photo. Spinner during cloud sync. | Displays avatar and real-time duo sync status. |
+| **TopBar (`KernelTopBar`)** | Displays Guest avatar. Spinner only during local refresh. | Displays Google profile photo. Spinner during cloud sync. | Displays avatar and real-time duo sync status. |
---
@@ -248,7 +248,7 @@ graph LR
| ID | Source Component | Trigger | Visual Effect | Timing & Easing | Target State |
| :--- | :--- | :--- | :--- | :--- | :--- |
-| **ANIM-01** | `SecondBrainApp`
`AnimatedContent` | Screen navigation change (`currentScreen`) | **Cross-fade** (`fadeIn` + `fadeOut`) | `tween` (~220ms, `FastOutSlowInEasing`) | Target screen (`HOME`, `DAILY_VOTE`, `ADD_MENTAL_LOAD`, `TRENDS`, `SETTINGS`, `PROFILE`) |
+| **ANIM-01** | `KernelApp`
`AnimatedContent` | Screen navigation change (`currentScreen`) | **Cross-fade** (`fadeIn` + `fadeOut`) | `tween` (~220ms, `FastOutSlowInEasing`) | Target screen (`HOME`, `DAILY_VOTE`, `ADD_MENTAL_LOAD`, `TRENDS`, `SETTINGS`, `PROFILE`) |
| **ANIM-02** | `HomeScreen`
`AnimatedStatNumber` | Numeric counter change | **Directional slide + Fade** (Up on increment, down on decrement) | `slideInVertically` + `slideOutVertically` + `fadeIn`/`fadeOut` (~300ms) | New count display with smooth transition |
| **ANIM-03** | `DailyVoteScreen`
`DailyVoteItemCard` | Tap vote button (`vote_button_{id}`) | **Color transition + Bounce scale** | Spring `DampingRatioMediumBouncy` & `StiffnessMediumLow` | Task added/removed from Top 3, counter updated |
| **ANIM-04** | `TrendsScreen`
`TrendsPriorityCard` | Screen load or distribution update | **Horizontal width expansion** of progress bar | `tween(800ms, FastOutSlowInEasing)` | Bar matches area percentage |
diff --git a/scripts/upload-screenshots.py b/scripts/upload-screenshots.py
index d9ebd3e..d040c66 100755
--- a/scripts/upload-screenshots.py
+++ b/scripts/upload-screenshots.py
@@ -129,7 +129,7 @@ def main():
if not screenshots_path.exists():
print(f"โ Error: Directory '{screenshots_path}' does not exist.")
- print("๐ก Run './gradlew testDebugUnitTest --tests com.secondbrain.app.screenshots.StitchScreenshotCaptureTest -Proborazzi.record=true' first.")
+ print("๐ก Run './gradlew testDebugUnitTest --tests com.example.kernel.starter.GreetingPreviewScreenshotTest -Proborazzi.record=true' first.")
sys.exit(1)
# 1. Directory Hygiene & Regex Check
diff --git a/social-preview.png b/social-preview.png
new file mode 100644
index 0000000..6d8636d
Binary files /dev/null and b/social-preview.png differ
diff --git a/social-preview.svg b/social-preview.svg
new file mode 100644
index 0000000..c71387e
--- /dev/null
+++ b/social-preview.svg
@@ -0,0 +1,266 @@
+