Repository navigation
fix(odd): synchronize visible todo projection #1130
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,61 @@ | ||
| # Feature: ODD todo continuity and calm Thinking labels | ||
|
|
||
| ## Objective | ||
| Keep Pi's visible `todo` list synchronized with every substantial ODD feature, and make collapsed `Thinking…` labels static pink instead of globally animated blue. | ||
|
|
||
| ## Problem / Why | ||
| - ODD creates durable `odd/tasks/<feature>.md` and Engram progress, but the current contract calls the visible `todo` projection optional. The list can therefore remain absent or stale while work proceeds. | ||
| - `pi-pretty` writes a global hidden-thinking label. Its best-effort per-row patch can miss the host's actual component class, causing every historical `Thinking…` row to animate. Its session-derived accent can also render blue instead of following Gentleman-Cute's rose palette. | ||
|
|
||
| ## Authorized scope | ||
| - ODD orchestration contract and focused contract tests. | ||
| - Gentle Pi's `pi-pretty` wrapper, Gentleman-Cute theme, and focused tests. | ||
| - This feature document and its Engram mirror. | ||
| - Preserve unrelated in-progress `sdd-trigger-boundary` edits. | ||
|
|
||
| ## Constraints | ||
| - The feature file and Engram copy remain durable authorities; `todo` is the required session/UI projection for substantial ODD only. | ||
| - Keep exactly one visible todo task `in_progress`; update it at task boundaries and whenever the plan changes. | ||
| - Do not depend on Pi private component internals for per-row animation. | ||
| - Preserve working/editor animation; disable only collapsed Thinking-label animation. | ||
| - No commit, push, PR, release, or remote mutation. | ||
|
|
||
| ## Tasks | ||
| - [x] **T1 — Make ODD todo projection mandatory.** Added RED contract assertions, then required creating/rebuilding the visible `todo` list when substantial ODD tracking starts and synchronizing it after every task/progress change. | ||
| - [x] **T2 — Make Thinking labels static pink.** Added RED focused assertions, disabled `pi-pretty`'s global Thinking shimmer in the Gentle Shell wrapper without leaking environment state, and mapped Gentleman-Cute `thinkingText` to `softRose`. | ||
| - [x] **T3 — Verify focused behavior.** ODD routing, pi-pretty wrapper, and theme tests pass; `git diff --check` passes. | ||
| - [x] **T4 — Verify the complete candidate.** Ran broader checks and structural readback. Native review inspection was performed but START was not allowed because the ambient candidate also contains unrelated tracked `sdd-trigger-boundary` edits; no review lineage or receipt was created. | ||
|
|
||
| ## Acceptance criteria | ||
| 1. A substantial ODD feature must create/rebuild the visible `todo` list from reconciled feature tasks before the first source write. | ||
| 2. ODD must update both durable authorities and the visible `todo` projection at every task transition and material plan change. | ||
| 3. Small/read-only work still does not require an ODD artifact or todo list. | ||
| 4. Historical and active collapsed `Thinking…` labels are static and rose-colored under Gentleman-Cute. | ||
| 5. Gentle Shell's separate `working…` editor animation remains unchanged. | ||
| 6. No unrelated existing worktree changes are overwritten. | ||
|
|
||
| ## Checks | ||
| - `node --test --experimental-strip-types tests/odd-routing-contract.test.ts` | ||
| - `node --test --experimental-strip-types tests/pi-pretty.test.ts` | ||
| - `node --test --experimental-strip-types tests/gentle-theme.test.ts` | ||
| - `git diff --check` | ||
| - Broader checks selected after the focused suites pass. | ||
|
|
||
| ## Progress | ||
| - Exploration complete: root causes and non-overlapping edit surfaces identified. | ||
| - User selected robust static pink Thinking labels over a private-internals per-row animation patch. | ||
| - T1–T3 complete. Engram mirror remains pending because this Pi runtime session is bound to project `gentle-ai` and rejects writes to `gentle-pi`; the local feature document is authoritative until a gentle-pi session resynchronizes it. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift 🔎 Supported by static analysis🏁 Script executed: sed -n '1,90p' odd/tasks/odd-todo-and-thinking-visuals.md
sed -n '1,80p' assets/orchestrator-memory.md
rg -n 'authoritative|reconcil|pending|conflict|mirror' odd assets/orchestrator-memory.mdRepository: Gentleman-Programming/gentle-shell Length of output: 20452 Do not make the local document authoritative over a pending Engram mirror. The feature document defines both copies as durable authorities. The memory contract requires reconciling both copies and preserving conflicting edits. A later 🤖 Prompt for AI Agents |
||
|
|
||
| ## Verification evidence | ||
| - RED: focused run reported 4 intended failures (missing ODD todo contract ×2, Thinking shimmer override, rose `thinkingText`). | ||
| - GREEN: `node --test --experimental-strip-types tests/odd-routing-contract.test.ts tests/pi-pretty.test.ts tests/gentle-theme.test.ts` — 18/18 pass. | ||
| - `git diff --check` — pass. | ||
| - `pnpm run typecheck` — pass with the recorded 197-diagnostic baseline and no regressions (2 file/code pairs improved). | ||
| - `pnpm run check:provider-contract` — pass (contract 1.2.0). | ||
| - `pnpm run test:harness` — pass. | ||
| - `pnpm test` — 2620 pass, 2 fail, 38 skip. Both failures are pre-existing/environmental and outside this feature: remediation native scope mismatch, and macOS `/private/var` versus `/var` CodeGraph temp-path alias. | ||
| - Structural readback confirms the feature changes are limited to the ODD contract/tests, pi-pretty wrapper/test, and Gentleman-Cute theme/test; unrelated tracked SDD-trigger changes remain present and untouched. | ||
| - Native `inspect` returned an intended-untracked selection stop over a mixed tracked candidate that includes unrelated SDD-trigger files. START was not run; no lineage or receipt exists. | ||
|
|
||
| ## Next step | ||
| Reload Pi to activate the wrapper/theme changes. Resynchronize the Engram mirror from a Pi session rooted in `gentle-pi`; isolate the candidate before any native review or delivery. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -81,7 +81,11 @@ test("organic progress preserves both complete feature copies and reconciles act | |
| "mem_get_observation", | ||
| "read the actual task file", | ||
| "not a third authority", | ||
| "create or rebuild the visible `todo` list", | ||
| "before the first source write", | ||
| "after every task transition and material plan change", | ||
| ]); | ||
| assert.doesNotMatch(memory, /`todo` tool is an optional session\/UI projection/); | ||
| }); | ||
|
|
||
| test("assumption challenge and task checks do not activate or duplicate native review", () => { | ||
|
|
@@ -170,6 +174,7 @@ test("ODD protocol is always-on in the rendered system prompt and runs by defaul | |
| "4. **Classify.**", | ||
| "two or more meaningful implementation steps", | ||
| "5. **Track before the first write.**", | ||
| "create or rebuild the visible `todo` list from the reconciled feature tasks", | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win 🔎 Supported by static analysis🏁 Script executed: sed -n '150,220p' tests/odd-routing-contract.test.ts
sed -n '1380,1400p' extensions/gentle-ai.ts
rg -n 'material plan change|task transition|update the file, mirror|visible.*projection' testsRepository: Gentleman-Programming/gentle-shell Length of output: 6214 🏁 Script executed: sed -n '55,105p' tests/odd-routing-contract.test.tsRepository: Gentleman-Programming/gentle-shell Length of output: 2066 Assert the prompt’s synchronization clause. This rendered-prompt test checks visible 🤖 Prompt for AI Agents |
||
| "Tell the user in one line which feature document was created and how many tasks it holds", | ||
| "6. **Implement task by task.**", | ||
| "7. **Close.**", | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win
🔎 Supported by static analysis
🏁 Script executed:
Repository: Gentleman-Programming/gentle-shell
Length of output: 25438
🏁 Script executed:
Repository: Gentleman-Programming/gentle-shell
Length of output: 50393
🏁 Script executed:
Repository: Gentleman-Programming/gentle-shell
Length of output: 44833
Handle an unavailable
todotool explicitly.extensions/gentle-todo.tsskips registration whenGENTLE_PI_TODOdisables it or whenGENTLE_PI_AGENTS_CHILD=1. Therefore, a supported session can receive these unconditional requirements without atodotool. The pointer toassets/orchestrator-memory.mddoes not include the fallback in the rendered workflow. Add the fallback so durable task artifacts remain authoritative and the prompt does not claim that the visible projection is synchronized.🤖 Prompt for AI Agents