II.
Page JSON
Structured · livepage:docs-genty-features-backlog-updated-next-steps
Next Steps json
Inspect the normalized record payload exactly as the atlas UI reads it.
{
"id": "page:docs-genty-features-backlog-updated-next-steps",
"_kind": "Page",
"_file": "wiki/docs/genty-features-backlog-updated/next-steps.md",
"_cluster": "wiki",
"attributes": {
"nodeKind": "Page",
"sourcePath": "docs/genty-features-backlog-updated/next-steps.md",
"sourceKind": "repo-docs",
"title": "Next Steps",
"displayName": "Next Steps",
"slug": "docs/genty-features-backlog-updated/next-steps",
"articlePath": "wiki/docs/genty-features-backlog-updated/next-steps.md",
"article": "\n# Next Steps\n\nConcrete actions to begin executing the gap analysis roadmap.\n\n> **Update 2026-06-05:** All 18 Pi parity + trust enforcement gaps are now CLOSED.\n> The priority items below (from the original M0 quick wins) remain the next focus.\n\n---\n\n## First 5 PRs to Create\n\nThese are from the M0 quick wins, ordered by downstream impact. All have S remaining effort and no blockers.\n\n### PR 1: GAP-SUBOBS-001 -- Stream CLI harness stdout/stderr in real-time\n\n**Why first:** Unblocks 22 downstream gaps -- the highest-leverage single item in the entire backlog.\n\n- **Files:** `packages/genty/platform/src/harness/invoker.ts`, `packages/genty/platform/src/harness/invoker/launch.ts`\n- **Branch:** `feat/subobs-001-cli-harness-streaming`\n- **Acceptance criteria:**\n - `invokeHarness()` pipes child process stdout/stderr in real-time, not after exit\n - JournalWatcher receives incremental output events during CLI harness execution\n - Pi adapter streaming continues to work (no regression)\n - Output events are timestamped and associated with the correct effect ID\n- **Suggested title:** `feat(platform): stream CLI harness stdout/stderr in real-time`\n\n### PR 2: GAP-PERF-001 -- Wire ephemeral cache_control across all prompt adapters\n\n**Why second:** Critical priority, directly reduces API costs and latency for every orchestrated run.\n\n- **Files:** `packages/babysitter-sdk/src/prompts/strata.ts`, `packages/genty/platform/src/harness/piWrapper.ts`, `packages/adapters/codecs/src/claude-code/`\n- **Branch:** `feat/perf-001-prompt-cache-control`\n- **Acceptance criteria:**\n - Stable strata sections include `cache_control: { type: 'ephemeral' }` in API calls\n - All harness adapters apply cache hints based on strata volatility scores\n - Cache-break detection via checksums triggers cache invalidation appropriately\n - Token cost reduction is measurable in test scenarios\n- **Suggested title:** `feat(sdk): wire ephemeral cache_control across all prompt adapters`\n\n### PR 3: GAP-STATE-001 -- Inject long-term memories into new run prompts\n\n**Why third:** Closes the loop on memory extraction (80% done) and unblocks memory consolidation.\n\n- **Files:** `packages/babysitter-sdk/src/prompts/parts/` (new `longTermMemory.ts`), `packages/babysitter-sdk/src/prompts/strata.ts` (add to `PART_STRATA_MAP`)\n- **Branch:** `feat/state-001-memory-prompt-injection`\n- **Acceptance criteria:**\n - New `longTermMemory` prompt part renders extracted memories from `memoryExtraction.ts`\n - Memories are filtered by relevance (project, category) and recency\n - Section mapped in `PART_STRATA_MAP` as runtime stratum\n - Memories appear in assembled prompts for new runs\n- **Suggested title:** `feat(sdk): inject long-term memories into new run prompts`\n\n### PR 4: GAP-HADAPT-003 -- Auto-downgrade model when approaching session budget\n\n**Why fourth:** Prevents budget overruns during autonomous runs. Builds on solid existing cost infrastructure.\n\n- **Files:** `packages/genty/platform/src/harness/selectionPolicies.ts`, `packages/genty/platform/src/session/cost.ts`, `packages/genty/platform/src/harness/modelSelection.ts`\n- **Branch:** `feat/hadapt-003-budget-auto-downgrade`\n- **Acceptance criteria:**\n - When session cost exceeds 80% of budget, model selection automatically downgrades to cheaper model\n - Downgrade respects task requirements (does not downgrade below minimum capability)\n - Budget alert thresholds trigger downgrade evaluation\n - Operator can override auto-downgrade via config tool\n- **Suggested title:** `feat(platform): auto-downgrade model when approaching session budget`\n\n### PR 5: GAP-MCPC-003 -- Wire channel permission relay into breakpoint resolution\n\n**Why fifth:** Enables breakpoint approval via Slack, Discord, email -- critical for remote/autonomous workflows. The relay implementation already exists; this is pure integration wiring.\n\n- **Files:** `packages/genty/platform/src/mcp/channels/permissionRelay.ts`, breakpoint resolution in `packages/genty/platform/src/breakpoints/`\n- **Branch:** `feat/mcpc-003-channel-breakpoint-approval`\n- **Acceptance criteria:**\n - Breakpoint resolution checks for channel-based approvals via `ChannelPermissionRelay`\n - Racing claim pattern works: first response (local or channel) wins\n - Security config (`terminalOnlyTags`) is respected\n - Channel approvals are logged to `governance-decisions.jsonl`\n- **Suggested title:** `feat(platform): wire channel permission relay into breakpoint resolution`\n\n---\n\n## Respec Decision Required\n\n### GAP-UX-001: Rendering Foundation\n\n**Decision needed before Track 6 (10 gaps, M4 milestone) can start.**\n\nThe original spec assumed Ink-based components embedded in `packages/babysitter-sdk/`. The architecture has evolved:\n- `packages/tula/ui/` is being extracted as a component library\n- `packages/observer-dashboard/` exists as a separate package\n\n**Options:**\n1. **tula-ui** as the rendering foundation (React components, reusable across web and Ink)\n2. **observer-dashboard** as the primary rendering target (web-only)\n3. **Hybrid:** tula-ui for components, observer-dashboard for full dashboard\n\n**Action:** Schedule a focused respec session. Document the decision. Update GAP-UX-001 and all 6 dependent NEEDS_RESPEC gaps (UX-001a, UX-001b, UX-001d, UX-001e, UX-001f, SUBOBS-005).\n\n**If deferred:** Track 6 remains blocked. 12 gaps in M4 cannot start.\n\n---\n\n## Ongoing Gap Triage Process\n\nAs features land, gaps should be triaged to keep this analysis current.\n\n### When a PR merges that addresses a gap:\n\n1. Update `phase3-reclassified.json` -- change `finalStatus` to `CLOSED`, set `reclassifiedPriority` and `remainingEffort` to null, add `statusChangeReason`\n2. Update `gap-status-matrix.md` -- move the gap to the CLOSED section\n3. Check if any downstream gaps are now unblocked (check `blockers` in `phase3-reclassified.json` and dependencies in `phase4-dependency-graph.json`)\n4. If a downstream gap is unblocked and ready, move it to the current milestone\n\n### When a gap's scope changes:\n\n1. If the spec's assumptions are outdated, change status to `NEEDS_RESPEC`\n2. If new requirements emerge, add a new gap ID (use the next available number in the relevant category prefix)\n3. Update `phase5-effort-recalibration.json` with revised effort estimate\n\n### Monthly review cadence:\n\n1. Run a quick audit of IN_PROGRESS gaps -- have any been completed without being closed?\n2. Check OPEN gaps -- have any been started?\n3. Review the critical path -- has GAP-SUBOBS-001 been resolved? If so, update the critical path analysis\n4. Check if ECO-002 (CC Marketplace Protocol) is still relevant or if the CC marketplace has changed\n\n---\n\n## How to Update This Analysis\n\n### Regenerate the gap-status-matrix.md\n\nAfter editing `phase3-reclassified.json` or `phase5-effort-recalibration.json`, regenerate the matrix:\n\n```bash\n# From repo root, run the matrix generator\nnode -e \"\nconst fs = require('fs');\nconst phase3 = JSON.parse(fs.readFileSync('docs/genty-features-backlog-updated/phase3-reclassified.json', 'utf8'));\nconst phase5 = JSON.parse(fs.readFileSync('docs/genty-features-backlog-updated/phase5-effort-recalibration.json', 'utf8'));\nconst phase6tasks = JSON.parse(fs.readFileSync('docs/genty-features-backlog-updated/phase6-task-definitions.json', 'utf8'));\n// ... (see scripts in this analysis for full generator)\n\"\n```\n\n### Add a new gap\n\n1. Add the gap to `phase3-reclassified.json` with all fields\n2. Add effort recalibration to `phase5-effort-recalibration.json`\n3. Add task definition to `phase6-task-definitions.json`\n4. Add dependency edges to `phase4-dependency-graph.json`\n5. Regenerate `gap-status-matrix.md`\n\n### Close a milestone\n\nWhen all gaps in a milestone are CLOSED or moved:\n1. Update `phase6-roadmap.md` with completion date and actual effort\n2. Update `phase6-milestone-summary.md` with retrospective notes\n3. Verify next milestone's dependencies are all satisfied\n",
"documents": []
},
"outgoingEdges": [],
"incomingEdges": [
{
"from": "page:docs-genty-features-backlog-updated",
"to": "page:docs-genty-features-backlog-updated-next-steps",
"kind": "contains_page"
}
]
}