All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Domain primitive identities: Newly created audiences, audience pains, components, decisions, dependencies, goals, guidelines, invariants, projects, relations, sessions, value propositions, and workers now receive domain-owned UUID identities. Existing persisted identifiers remain supported during replay and through CLI operations without migration.
- TUI daemon reliability: Cockpit refiner, reviewer, and codifier workers now stream bounded activity and errors while running, retain meaningful outcomes and elapsed-time heartbeats, survive navigation between TUI screens, and stop exactly once on request or application shutdown.
- Antigravity agent support: Replaced Gemini CLI initialization and worker-agent support with Antigravity CLI support using the documented
agyexecutable,.agents/skills, and.agents/hooks.jsonhook surface.
- Gemini agent support: Removed Gemini as a selectable initialization and worker agent target, including obsolete Gemini settings fragments, configurers, command mappings, and logo assets.
- Co-located evals project: Removed the
evals/directory from this repository; the eval framework now lives in its own repository rather than as a nested npm project here.
- Rejected goal issues on start:
jumbo goal startnow renders a "Review Issues" section when restarting a goal that was previously rejected during QA review, instructing the developer to address the issues before resubmitting.
- Evals validity scenarios: Added the
null-hypothesis-rate-limiterandfile-reconstruction-expense-trackerscenarios to validate the eval harness itself, andeval scenario createtemplates now carry structural assertions through to the created scenario.
- Codex initialization:
jumbo init, repair, andjumbo evolve --yesnow install Codex-managed skills to the documented repository skill location.agents/skillswhile keeping.codexlimited to Codex hooks/configuration.
- Codex managed artifact preservation: Obsolete Jumbo-managed Codex skill copies under
.codex/skillsare removed only when byte-identical to the current managed templates, preserving customized skill content, user files, hook comments, unknown hook settings, and unrelated.codexconfiguration. - Evals headless permissions: The Claude Code eval harness adapter now runs sessions with
--dangerously-skip-permissions, since headless-pruns in isolated temp workdirs have no human to approve tool use and were leaving both A/B arms unable to write files.
- Deprecated goal qualification command: Removed the
jumbo goal qualifycommand surface. Usejumbo goal approvefor successful QA review approvals.
- TUI daemon cleanup: Exiting or interrupting the TUI now routes daemon subprocess shutdown through the launcher, so cleanup is awaited and failures are surfaced instead of relying on fire-and-forget React unmount cleanup.
- Settings preservation during evolve:
jumbo evolve --yesnow additively inserts missing.jumbo/settings.jsoncdefaults without overwriting customized known values or unknown user settings, and invalid JSONC settings files fail clearly instead of being partially rewritten.
- TUI Mega Menu: Restored the
m/Mfooter shortcut and overlay navigation menu, with goal-status menu entries that route directly into filtered Goals views and a Settings placeholder route. - TUI Goals browser: Remodeled the Goals screen into a single-goal browser — up/down arrows move between goals in the active state filter, left/right arrows page through every goal-show section (metadata, objective, note, review issues, success criteria, progress, scope, and related components, dependencies, decisions, invariants, and guidelines). Related-entity sections render each entry as a highlighted name with its description, truncated and paginated to stay within the viewport; related decisions show labeled Context and Rationale fields in full at two per page. The CLI
goal showoutput now renders those same labeled decision fields. - TUI memory screens: Remodeled the Decisions, Components, Dependencies, Invariants, and Guidelines screens into a single-entity browser matching the Goals screen — a header shows the screen title and a current/total position indicator, up/down arrows scroll through the memories with wraparound, and a detail pane below renders every attribute of the focused entity in full, unabridged.
- Evals replication driver (Outcome 5, 2/2):
eval rungained a--replicate <K>option (default 1) that runs the A/B comparison K times per harness and aggregates the results into aReplicationReportviaaggregateReplications(), persisted byrunIdand printed with per-dimension mean lift +/- SD and a SIGNAL/none call.K < 1errors;2 <= K < 5warns that K>=5 is the minimum for a credible signal.K=1leaves existing single-run output unchanged. - Evals parallel-replication design: Added
evals/docs/parallel-replication-design.md, a design doc for a bounded worker-pool--concurrency Nprimitive (runWithConcurrency), concluding parallelism does not bias the measurement since all scored dimensions are artefact/count-based rather than wall-clock, and recommending a default of N=1 given rate-limit contention on non-API agent harnesses.
- Project stats snapshot view: Decomposed the monolithic
ProjectStatsSnapshotViewinterface into focused per-domain view and count types (e.g.GoalStatsView,MemoryStatsView,GraphStatsView, and their constituent*Counttypes), each in its own file undersrc/application/context/project/stats/, with no change to the shape or values the CLI/TUI consume.
- TUI shortcut ownership: The restored Mega Menu shortcut now stays disabled while another overlay, drawer, wizard, or text-entry flow owns input.
- TUI hotkey collisions: The footer notification drawer moved from
ntoi, sonon the Goals screen opens only the new-goal authoring flow. While a screen-local form such as the Goals authoring flow is capturing text, all shell-level hotkeys (quit, search, Mega Menu, notification drawer) are suppressed so typed characters never trigger navigation; on an uninitialized project,iopens only the init flow. - TUI Goals screen authoring: Submitting the goal authoring flow opened with
n/aon the Goals screen now actually creates the goal — the entered values are dispatched to the add-goal controller and the goals list refreshes so the new goal appears immediately. Failed submissions keep the flow open with the error shown, instead of closing silently.
- TUI global search: Press
/in the TUI to search the projected global memory index interactively, with grouped result metadata and a focused generic detail preview for the current hit. - Evals replication statistics (Outcome 5, 1/2): Added a pure
aggregateReplicationsaggregator that combines K replicated A/B comparisons of the same scenario into aReplicationReport, reporting per-dimension mean lift, sample standard deviation, and a t-statistic against the K=5 one-tailed alpha=0.05 threshold so lift can be reported with statistical confidence instead of single-point estimates. Token-efficiency replications scored N/A are excluded and counted separately.
- Evals token-efficiency equivalence gating (Outcome 4): Token efficiency is now reported only when both arms are output-equivalent (both produced every expected file and both reached a structural-assertion score >= 0.8); otherwise it is reported as N/A so the ratio never compares the cost of producing different things. The Jumbo arm's lifecycle adherence rate is now surfaced separately in the protocol-adherence dimension rather than averaged into quality lift, keeping quality scores symmetric across arms.
- CI: Upgraded GitHub Actions workflows to Node.js 22 (
actions/checkoutv4 → v7,actions/setup-nodev4 → v6), clearing the Node.js 20 runner deprecation warning. Contributed by Allan Kimmer Jensen.
- Evals A/B scoring (Outcome 4): The eval A/B runner now scores the Jumbo arm on structural retention and direct
.jumbo/events/workspace evidence. A newjumbo-event-capturescorer confirms the Jumbo arm registered the expected entities by reading the captured event log directly — independent of any CLI command output — via an explicit, exhaustive memory-kind → domain-event-type map. Thejumbo-contract-smokevalidates that map against the real CLI in CI, so a Jumbo event-type rename fails loudly instead of silently under-counting. - README: Refreshed README copy, added a demo gif (
this-is-jumbo.gif), and removed the staledocs/flows/cmd-jumbo-flow.mdflow doc. - Internal: Cleaned up TUI namespace and file names by dropping redundant
Tuiprefixes across the presentation TUI modules (e.g.TuiApp→App,TuiStateReader→StateReader,TuiSubprocessManager→SubprocessManager) and split shared TUI constants into focused modules.
goal showoutput:jumbo goal shownow includes recorded goal progress entries in both structured JSON output and the human-readable details view.
- Co-located evals project: The eval framework (previously the standalone
jumbocontext/evalsrepo) now lives inevals/as an independent nested npm project so Jumbo primitives and the evals that exercise them are versioned and tested together. Evals run against Jumbo from source (via a build shim that resolvesjumbotodist/cli.js) rather than a published binary, eliminating version skew. - CI contract guard: A new
evalsjob in.github/workflows/pr-gate.ymlbuilds Jumbo from the PR's source and runs the evals plus a contract smoke test (scripts/jumbo-contract-smoke.mjs) that exercises the CLI surface the evals depend on (init, decision/component/goal add, JSON list output, and the.jumbo/events/<seq>.<EventType>.jsonlayout), so a primitive refactor that breaks the CLI contract fails the PR.
- Internal type safety: Eliminated explicit TypeScript
anyusage across the codebase and now enforce@typescript-eslint/no-explicit-anyas an ESLint error.
- Project identity stability: New project initialization now generates a stable UUID project id, persists it in
.jumbo/settings.jsonc, and reuses it for project updates and projection rebuilds. Existing projects without a persisted id migrate to their current projected identity.
- Formalize objectives skill: New shipped
formalize-objectivesskill that, when a user prompt carries an objective not already defined as a Jumbo goal and the structured process has not been explicitly bypassed, transforms the prompt into a structured objective viajumbo-design-goalanddefine-jumbo-goals.
- README: Refreshed positioning copy with an agent-onboarding hook and a bulleted capabilities list (memory, cross-session continuity, automatic goal specification, extended context windows, concurrent agents, harness/model agnostic), and added a star-history chart.
- Test stability: Stabilized TUI application-shell interaction tests and Cockpit launchpad daemon tests.
- CI security: GitHub Actions workflows now pin all actions to full commit SHAs instead of mutable version tags, eliminating supply-chain risk from tag mutation.
- CLI self-upgrade: npm shim path resolution now normalizes path separators before resolving, fixing self-upgrade detection failures on Windows.
- TUI package update notification: Bare
jumbolaunches now check the published npm package version in the background and show an update notification in the TUI drawer when a newer version is available, including safe npm self-upgrade handling and manual update guidance when needed. - TUI update preview controls: Developers can locally preview CLI update availability, in-progress, success, and manual-action states with
JUMBO_CLI_UPDATE_TEST_MODE,JUMBO_CLI_UPDATE_TEST_VERSION,JUMBO_CLI_UPDATE_TEST_UPGRADE_DELAY_MS, andJUMBO_CLI_UPDATE_TEST_UPGRADE_RESULT.
- TUI package update notification: The update-in-progress notification now includes a rotating Braille glyph that cycles through the letters in
updating.
- CLI update diagnostics: npm self-upgrade feasibility failures now log operation, invocation mode, error message, error code, and bounded npm stdio tails instead of only the error type.
- Performance:
healandevolverebuild now replays events into a temporary database inside a single transaction, then swaps it over the original on success. Delivers ~4-5x replay speedup from batched writes and guarantees the original database is untouched if a corrupt event causes replay to fail. Contributed by Allan Kimmer Jensen.
- TUI worker daemons: Daemon stop controls now wait for real child-process close, prevent duplicate starts while stopping, and escalate process-tree termination after a bounded timeout.
- Test stability: Removed a brittle daemon panel copy-count assertion that blocked copy and lifecycle label changes.
- Test stability: Removed brittle copy/label assertions and oversized snapshot tests for Cockpit stats panel, welcome copy, and HorizontalRule primitive. Refactored
project statscommand handler to eliminate a redundant handler class.
- Project stats command: Added
jumbo project statsto display a snapshot of project health across four dimensions: project context (audiences, audience pains, value propositions), work (goals by lifecycle status, sessions), memory (decisions, components, dependencies, invariants, guidelines), and graph (relations). Supports--format jsonfor structured output. - Cockpit stats panel: The TUI Cockpit now shows a live project stats panel derived from the same stats query, giving operators at-a-glance context coverage and goal flow counts without leaving the TUI.
- Internal: Decomposed
TuiStateReaderinto focused per-entity React hooks (useGoalsList,useProjectStats,useComponentsList,useDecisionsList,useDependenciesList,useGuidelinesList,useInvariantsList,useProjectContext,useSessionsList,useTickingReadModel) for improved testability and separation of concerns. - Internal: Added
HorizontalRuleTUI primitive for consistent section dividers across Cockpit panels.
- Internal: Decomposed Cockpit screen into focused collaborators (
AnimatedBannerColorGradient,AnimatedBannerLineColorSegments,AnimatedBannerTiming,CockpitDaemonAgentConfigCycler,CockpitDaemonConfigsUpdater,CockpitDaemonEventSnapshot) for improved testability and separation of concerns. - Internal: Replaced 62
as-anycasts inProjectionBusFactorywith type-safe event dispatch, eliminating unsafe type coercions across the projection bus.
- CI gate: Added PR gate workflow for lint, type-check, and build validation on pull requests.
- Lint errors: Resolved all ESLint errors introduced during TUI decomposition.
- Test stability: Fixed flaky tests and added missing test coverage for daemon panel status labels, codifier daemon constants, and
CenteredPrompt.
- Managed agent files:
jumbo init,jumbo evolve, and repair flows now generate bootstrap-only agent instruction files from canonicalassets/agent-filesmarkdown and JSON fragments, while distributing fine-grained managed skills for session bootstrap, lifecycle hooks, command discovery, context maintenance, and correction capture.
- Global search command: Added
jumbo searchfor querying the projected global memory search index across components, dependencies, decisions, guidelines, and invariants with grouped text output and structured JSON output. - Search index rebuild command: Added
jumbo index rebuildfor repairing the projected global search index by replaying persisted memory events without rebuilding every Jumbo projection.
- Top-level command help: Command-specific help now supports top-level commands such as
jumbo search --helpwithout requiring a parent/subcommand path.
- Session start backlog preview:
jumbo session startnow includes a bounded, settings-configurable backlog preview withgoalId,title,status, andcreatedAtso agents can see available work while still loading full goal context through follow-up workflow commands.
- Internal: Decomposed
TuiSubprocessManagerinto focused collaborators (ManagedSubprocess,TuiDaemonOutputEventParser,TuiSubprocessConfigResolver,TuiSubprocessLifecycleEventRecorder,TuiSubprocessOutputRingBuffer,TuiSubprocessSnapshotMapper) for improved testability and separation of concerns.
- Codex lifecycle hooks:
jumbo initandjumbo evolvenow configure OpenAI Codex with.codex/hooks.jsoncontaining session-start lifecycle hooks. Hook commands use text output to avoid conflicts with Codex's JSON stdout hook-control envelope parser.
- TUI worker daemon output bounds: Agent subprocess stdout/stderr and daemon event/log payloads are now retained as bounded tails so oversized model output cannot grow worker daemon or TUI memory unboundedly.
- Release test stability: Stabilized TUI and daemon tests by removing brittle long-form interactive TUI expectations and using platform-aware path expectations in daemon tests.
- Project north-star packet: Added
jumbo project show --northstarto return project alignment context for goal design and definition, including project metadata, audiences, audience pains, and value propositions. - Decision search command: Added
jumbo decisions searchwith status filtering, title substring and wildcard matching, free-text search across decision fields, anddefaultorcompactoutput modes. - Dependency search command: Added
jumbo dependencies searchwith identity-field filtering, status filtering, legacy consumer/provider filters, free-text search across dependency fields, wildcard support, anddefaultorcompactoutput modes. - Guideline search command: Added
jumbo guidelines searchwith exact category filtering, title substring and wildcard matching, free-text search across title/description/rationale/examples, removed-guideline exclusion, anddefaultorcompactoutput modes. - Invariant search command: Added
jumbo invariants searchwith title filtering, free-text search across title/description/rationale, wildcard support, anddefaultorcompactoutput modes. - Cockpit create-goal footer shortcut: The primed Cockpit launchpad footer now shows a contextual
g/ create goal badge that opens the existing goal authoring wizard. - Cockpit goal authoring: The primed-empty Cockpit
gshortcut now opens the goal authoring wizard, registers the goal through the existing goal-add action path, suppresses surrounding shortcuts while typing, and routes to the launchpad after goal creation. - Bare command TUI launch: Running
jumbowith no arguments now opens the Ink TUI instead of ending at the legacy static banner path, using project-backed state readers when a Jumbo project is available and an uninitialized TUI path otherwise. - TUI foundation: Ink + React terminal UI with app shell (header/body/footer flexbox layout), screen router (Cockpit, Goals, Memory, Session), keyboard navigation (arrow keys, number keys 1-4, q to quit), and shared design tokens (colors, spacing, glyphs). All screens are placeholder stubs awaiting content in future goals.
- TUI init flow: Added a production-oriented project initialization wizard inside the TUI that collects project name, purpose, optional audiences, optional value propositions, agent selection, planned changes, confirmation, and inline dispatch errors using the shared wizard primitive.
- TUI notification prototype: Footer notification badge with placeholder unread count, N-key drawer toggle, placeholder notification list, and individual dismiss actions.
- TUI dedicated memory entity screens: Memory navigation now groups Decisions, Invariants, Components, Dependencies, and Guidelines under a first-level Memory menu category, with each entity type opening a focused placeholder list/detail screen and static event replay controls.
- Cockpit daemon Events panel: Renamed the upper-right Cockpit panel from Session to Events and added bounded, timestamped daemon activity rows derived from refiner, reviewer, and codifier subprocess snapshots.
- TUI header directory context: The TUI header now shows the launch directory path beside the project label while preserving the right-aligned CLI version.
- Session start router:
jumbo session startnow returns a minimal workflow router instead of eager project, goal, and decision context; agents load workflow-specific context through the returned route commands. - Cockpit daemon controls: Refiner, Reviewer, and Codifier now keep independent agent, poll interval, and retry settings in the TUI. Pressing a daemon hotkey selects that panel, pressing the selected daemon hotkey again starts or stops it, and the selected daemon title is highlighted in blue.
- Cockpit daemon panel order: Moved the launchpad daemon panels into Refiner, Reviewer, Codifier order so the visual flow matches the operator workflow.
- TUI notification footer priority: Moved the placeholder notification notifier into the right footer status slot with an adjacent
nkey badge, replacing the previous daemon idle mockup. - TUI footer notifications: Removed placeholder notification rows from the footer drawer until real notification sources are wired.
- Worker daemon polling: Refiner, reviewer, and codifier worker daemons now continue polling after completed, skipped, failed, or exhausted goal attempts, and codifier honors the shared poll interval behavior.
- TUI wizard input ownership: Goal authoring text fields now keep daemon launchpad hotkeys disabled while the wizard is open, preventing typed characters such as
sor tab from starting or switching daemons. - Goal authoring criteria input: Success criterion text no longer clears during Cockpit daemon polling or other parent re-renders.
- Bare TUI bootstrap side effects: Running bare
jumbofrom a non-project directory or from a subdirectory beneath an ancestor Jumbo project no longer creates.jumbostorage just by opening the TUI; storage is created only after project initialization is confirmed. - Cockpit lifecycle routing: Cockpit now resolves lifecycle state for the current working directory, treats any existing goal as evidence of prior goal use, and routes to the primed-with-goals view instead of showing the goals tutorial once goals exist in any status.
- TUI daemon stop status: Stopping refiner, reviewer, or codifier daemons from the TUI now reports
stoppedinstead offailedwhen termination produces a signal or taskkill-style non-zero exit. - Cockpit daemon waiting states: Running refiner, reviewer, and codifier daemons now show waiting, idle, stopped, and failure state transitions in the Cockpit Events panel, including the refiner's
foragingstate when no defined goals are available. - TUI component memory isolation: Component add, list, and detail views no longer collect or display component source paths as user-facing component metadata.
- TUI project initialization: Running bare
jumbofrom an uninitialized directory now opens a controller-backed Init wizard that creates.jumbostate and project files, refreshes the TUI after success, and preserves existingjumbo init/jumbo project initCLI behavior.
- Slimmer session context:
session start(and composed flows like work resume) now emits only the project name and purpose in the project header. Audiences, audience pains, and value propositions are no longer included in the session context packet, reducing tokens consumed at session start. Theprimitive-gaps-detectedsession instruction signal and its prompt have been removed; register these primitives via their dedicated commands instead.
- Telemetry consent prompt clarity: The
project inittelemetry consent prompt now enumerates exactly what the telemetry payload contains (command name + a random project ID generated at init) and explicitly states what is not collected (command arguments, file contents, goal data, paths, project names). Replaces the prior vague "anonymous usage data" wording.
- npm publish workflow: Added
npm run buildstep beforenpm testin the publish workflow so theNoProjectGuardintegration test (which spawns the compileddist/cli.js) can run during release. Prior releases failed to publish to npm because the test suite errored out beforenpm publish.
- No stray
.jumbofrom project-scoped commands: Running arequiresProject:truecommand (e.g.decision add,component add,session start,goal add) outside a Jumbo project root no longer creates a.jumbodirectory,jumbo.db, event files, or migration artifacts in the current working directory. The CLI now detects "outside a project" before any infrastructure is constructed and exits non-zero with a clear stderr warning that directs the agent either to the existing ancestor project root or to runjumbo project initdeliberately.
- Invariant
--enforcementremoved: Removed the--enforcementfield from invariant add/update commands, events, read models, and output. Invariants now consist of title, description, and optional rationale. Update any scripts that pass--enforcementto invariant commands. - Guideline
--enforcementremoved: Removed the--enforcementfield from guideline add/update commands, events, read models, and output. Guidelines now consist of category, title, description, rationale, and optional examples. Update any scripts that pass--enforcementto guideline commands.
- Relation cleanup on removal: Removing components or goals now prunes their relations via
RelationRemovedEventinstead of deactivating them, andsession startno longer includes the deactivated-relations warning block.
- ESM migration: Project module system fully migrated to ESM. Jest config converted to
.cjs, internal imports normalized, and tsconfig adjusted to support Node.js ESM resolution. - Dependency audit: Removed 7 unused dependencies (
inversify,date-fns,ink,react,react-dom,boxen,reflect-metadata). Updatedchalk4→5,commander11→14,strip-ansi6→7. Movedfast-globto devDependencies. - inquirer upgraded to v13:
project initandInteractivePromptServiceupdated to the new inquirer API. - TypeScript upgraded to v6.
- Jest upgraded to v30: Test config updated, including a dedicated
tsconfig.jest.json.
work reviewdaemon: Long-running daemon that polls for goals insubmittedstatus and delegates QA review to an agent subprocess. Supports--agent,--poll-interval, and--max-retriesoptions. Bothapprovedandrejectedare valid review outcomes.- Documentation: Added
work reviewcommand reference.
- Shared daemon infrastructure: Extracted
DaemonLoop,DaemonDisplay,AgentSpawner, andGoalStatusQueryfromwork.refineintowork/shared/so daemon commands share a common polling, display, and subprocess foundation.
- Automatic relation-discovery goals: When an entity is created, a goal to discover its relations is now automatically registered for a future session. Prevents new entities from remaining isolated in the context graph.
- Documentation: Added
work refinecommand reference and advanced workflow guide for the refinery daemon.
- CLI output alignment: Extracted shared
OutputLayoutrendering module and introduced dedicated*ListOutputBuilderclasses for all entity list commands (audiences, audience pains, components, decisions, dependencies, guidelines, invariants, relations, sessions, values). All output builders now use consistent layout primitives from the design library. - Legacy ID syntax removed: Cleaned up residual references to the deprecated prefixed ID syntax across all goal commands.
decompose-architecture-aggregateskill: New template-managed skill that guides agents through migrating Architecture entity data to fine-grained entities (Decisions, Invariants, Components, Dependencies) with user confirmation at each step.
- Architecture entity:
architecture defineandarchitecture updatenow reject with migration guidance directing users to register individual Decisions, Invariants, Components, and Dependencies.architecture viewremains functional with a deprecation notice and migration mapping table.session startshows a conditional deprecation notice when architecture data exists. The Architecture entity will be removed in v3.
- Goal context: Architecture data removed from goal context output across all goal lifecycle commands (
goal show,goal start,goal resume,goal codify,goal refine,goal review). Architecture context is no longer included in theGoalContextinterface — use Invariants and Decisions instead.
goal showoutput: Refined output rendering to align with the design library — updated layout, styling, and symbol usage inGoalShowOutputBuilderandStyleConfig.- README: Added reference to the Shared Jumbo Memories repository.
--continueflag for cross-phase commands:goal commit,goal submit,goal approve,goal reject, andgoal closenow accept-c, --continue. Without the flag, next-step output is informational guidance; with it, output is an imperative directive. This makes phase boundaries explicit handoff points for multi-agent harnesses.
- Refinery command: New
jumbo work refine --agent <agent>long-running daemon that continuously polls for goals in 'defined' state and delegates their refinement to an agent subprocess. Features graceful shutdown (Q key / Ctrl+C), configurable poll interval and retry count. - CLI design library: Shared animation primitives for interactive CLI output:
GradientPalette— 10 color gradient definitions with smooth interpolation, bar animationGlimmerEffect— sweep-highlight animation with flash pop for text elementsBrailleSpinner— braille character spinner with per-character gradient shimmer
- RefineryDisplay: Dedicated display module implementing the refinery mockup design with accent bars, glimmer title, compact config line, dividers, and "Foraging..." / "Refining..." braille animations.
- BrandColors: Added
BrandColors.jumboBlue(#66b4f4) and raw RGB tuple toStyleConfig.ts. - New Symbols: Added
accentBar(│),dot(·), andfilledCircle(●) toStyleConfig.tswith TTY/ASCII fallbacks. - Design mockup:
refinery-mockup.svgdocumenting the target UX for the refinery command across idle, active, and completion states.
- Design goal skill: New
jumbo-design-goalskill for collaborative pre-definition discovery — aligns proposed goals with project audience, pains, and value propositions before handing off todefine-jumbo-goals.
- Internal: Replaced sequential rebuild (
TemporarySequentialDatabaseRebuildService) with projection-only rebuild viaProjectionBusFactory, eliminating the duplicate composition root and enabling parallel projection execution duringheal/evolve. - Define goal skill: Added execution order instruction for goal definition flow.
- Documentation: Minor docs refinements across reference pages.
- Cascade deactivation during evolve: Fixed double-deactivation error by checking rehydrated aggregate status before deactivating relations.
- Cursor agent configurer:
jumbo initnow configures Cursor with.cursor/rules/jumbo.mdc(YAML frontmatter referencing JUMBO.md) and.cursor/hooks.json(sessionStart hook). Replaces the previously removed Cursor configurer with full rules and hooks support. - Vibe agent configurer:
jumbo initnow configures Mistral Vibe with skill distribution to.vibe/skills. Vibe reads AGENTS.md natively. - Codex agent configurer:
jumbo initnow configures OpenAI Codex with skill distribution to.codex/skills. Codex reads AGENTS.md natively. - Entity registration skills: Five new template-managed skills for proactive context capture during agent sessions:
jumbo-add-component,jumbo-add-decision,jumbo-add-dependency,jumbo-add-guideline,jumbo-add-invariant.
- Agent selection expanded: Interactive agent selection in
jumbo initnow includes Cursor, Vibe, and Codex alongside Claude, Gemini, and Copilot.
- GitHub Hooks configurer: Removed standalone
GitHubHooksConfigurer; GitHub Hooks configuration is now handled by the Copilot configurer.
- Erroneous agent option: Removed an invalid option from agent configuration.
- Internal: Centralized all entity ID generation through
IdGeneratorutility usingcrypto.randomUUID(), replacing scattered direct calls and unsafeDate.now()+Math.random()patterns across 10 command handlers.
- Internal: Removed unused
uliddependency.
- Node.js v22 compatibility: Replaced
uuid(pure ESM) with Node.js built-incrypto.randomUUID()to resolveERR_REQUIRE_ESMerrors when running on Node.js v22.
- uuid dependency: Removed
uuidand@types/uuidpackages — no longer needed.
- Goal workspace fields:
goal addandgoal updatenow accept--branchand--worktreeoptions to assign git workspace context for multi-agent collaboration.goal startandgoal codifyoutput includes workspace instructions when these fields are set.
- Interactive agent selection in init:
jumbo initnow presents a checkbox prompt for Claude, Gemini, Copilot, and GitHub Hooks before confirmation. Planned changes, agent-specific files, and template-managed skills are filtered to the selected agents, while non-interactive mode still configures all agents.
- Internal: Logging now writes daily log files (
yyyyddmm.log) instead of a single unboundedjumbo.logfile. - Internal: Disconnected ActivityMirror from session start output to eliminate a full event store scan (~12,500 file reads) that was causing sluggish
session startperformance. Backend assembler preserved for future use.
- Extended init flow:
jumbo initnow prompts for target audiences, audience pain points, and value propositions after collecting project name and purpose. Each section is gated by a confirm prompt and supports multiple entries via an "Add another?" loop. Non-interactive mode supports new CLI flags:--audience-name,--audience-description,--audience-priority,--pain-title,--pain-description,--value-title,--value-description,--value-benefit,--value-measurable-outcome. - Session context primitive gaps nudge:
session startnow detects when project context is missing audiences, audience pains, or value propositions and emits an@LLMinstruction listing the gaps with relevantaddcommands. - Value propositions in session context:
session startnow includes value propositions in the project context output alongside audiences and audience pains.
- Internal: Extracted session instruction signal names (
brownfield-onboarding,paused-goals-resume,goal-selection-prompt,primitive-gaps-detected) into sharedSessionInstructionSignalconstants, eliminating magic string coupling between application and presentation layers. - Internal: Split refinement relation strategy into entity-category-specific strategies for more targeted relation curation during goal refinement.
- Activity mirror:
session startnow surfaces a brief summary of proactive context maintenance actions from recent sessions (entities registered, decisions recorded, relations added, goals added), reinforcing productive LLM behavior.
- Context maintenance instructions: Replaced generic "be proactive" guidance in JUMBO.md and JumboMdContent with specific, actionable instructions for when and how to register entities during refinement, implementation, and user corrections.
- Prerequisite discovery during refinement: Goal refine output now prompts agents to register prerequisite goals immediately when discovered, rather than deferring.
- Real-time context capture during implementation: Goal start output now includes specific commands for registering decisions, components, relations, and corrections as they happen.
- Skills updated: Define, refine, and start goal skills updated with context maintenance instructions aligned to the new approach.
- Brownfield onboarding copy: Improved clarity of brownfield onboarding and paused goals resume prompts in session start output.
- Internal: Replaced orphaned
SolutionContextcluster (ISolutionContextReader,SolutionContextView,UnprimedBrownfieldQualifier,SqliteSolutionContextReader) with focusedIBrownfieldStatusReaderandSqliteBrownfieldStatusReader. - Internal: Removed tracked files that should have been gitignored (
.claude/settings.json,.vscode/settings.json,.codex/rules/, agent instruction stubs).
- Broken test: Fixed failing test in
SessionContextQueryHandler. - README: Documentation refinements and fixes.
- Goals grouped by state:
goal listandsession startnow display goals grouped by lifecycle state with bracket-style headings (e.g.,[DOING],[APPROVED]) and contextual hints describing available actions for each state. - Session start output refactored: Session start rendering decomposed into composable output builders (
SessionContextOutputBuilder,SessionGoalsOutputBuilder,SessionStartOutputBuilder) for maintainability. - Recent decisions limit reduced: Session context now includes the 3 most recent decisions (previously 10) to keep context concise.
- Deprecated command reference in refine skill: Updated
refine-jumbo-goalsskill to usejumbo goal commitinstead of the removedjumbo goal refine --approve.
- Centralized agent instructions in JUMBO.md:
jumbo initandjumbo evolvenow produce a centralized JUMBO.md containing all agent onboarding instructions. AGENTS.md, CLAUDE.md, GEMINI.md, and .github/copilot-instructions.md become thin reference files pointing to JUMBO.md, eliminating content duplication across agent instruction files.
- Automatic relation maintenance goals: When an entity with active relations is changed (updated, removed, deprecated, superseded, restored, or undeprecated), a maintenance goal is now automatically registered to review and restore symmetry between the entity and its relations.
- Required flag validation: Covered gaps in required flag demarcation across CLI commands.
- Internal: Telemetry configuration externalized from source code to build-time injection.
- Internal: Publish workflow and test reliability improvements.
- Initialization guidance: Improved post-init copy to guide users toward creating their first goal instead of starting a session directly. Includes example
goal addcommand with all key flags. - README: Fixed npm install command syntax in Quick Start section.
- Automated npm publishing: Added GitHub Actions workflow (
publish.yml) that publishes to npm via OIDC trusted publisher when a GitHub release is created.
- Telemetry opt-out by default:
jumbo initnow prompts for telemetry consent during interactive initialization with opt-out framing (default: enabled). Non-interactive mode enables telemetry automatically. Users can opt out during init, or later viajumbo telemetry disableorJUMBO_TELEMETRY_DISABLED=1. Default telemetry setting changed fromfalsetotrue.
- Telemetry consent prompt was dead code: The
promptForTelemetryConsentIfNeededfunction duringjumbo initnever fired becauseFsSettingsReader.read()auto-created the settings file beforehasTelemetryConfiguration()was checked, causing it to always returntrue.
-
Session pause/resume removed: The session pause and resume functionality has been completely removed from the CLI. Sessions now only support
session startandsession endcommands. Any paused sessions will be automatically migrated to active status.- Removed commands:
jumbo session pauseandjumbo session resume - Goal pause/resume functionality remains unchanged
- Migration docs:
docs/guides/session-management.md,docs/reference/commands/session.md
- Removed commands:
-
Goal lifecycle overhauled: The goal lifecycle has been significantly expanded with new states, commands, and a renamed status vocabulary. The full lifecycle is now:
defined→in-refinement→refined→doing→submitted→in-review→approved→codifying→done. Goals can also bepaused,blocked, orrejectedat various stages.- Status values renamed:
to-do→defined,qualified→approved,completed→done. Legacy values are migrated automatically viajumbo evolve --yes. goal completeremoved: Replaced byjumbo goal codify(acquires claim for architectural reconciliation) andjumbo goal close(releases claim, transitions todone).goal qualifydeprecated: Replaced byjumbo goal approve.goal qualifystill works but emits a deprecation warning.- New commands:
jumbo goal submit(doing → submitted),jumbo goal reject(in-review → rejected),jumbo goal approve(in-review → approved),jumbo goal commit(in-refinement → refined),jumbo goal codify(approved → codifying),jumbo goal close(codifying → done) - New states:
submitted,in-refinement,rejected,codifying,done(replacingcompleted) - Refinement split into two phases:
jumbo goal refinenow transitions toin-refinementand acquires a claim;jumbo goal committransitions torefinedand releases the claim. The--approveflag has been removed fromgoal refine. - Migration: Run
jumbo evolve --yesto migrate legacy status values. Update scripts that reference old status names or usegoal complete/goal qualify. - Migration docs:
docs/guides/goal-management.md,docs/reference/commands/goal.md
- Status values renamed:
-
--goal-idflag renamed to--id: All goal commands now use--idinstead of--goal-id. The goal namespace already provides context, making the prefix redundant.- Old flag:
jumbo goal start --goal-id <id>(no longer works) - New flag:
jumbo goal start --id <id> - Migration: Update any scripts or automation to use
--id
- Old flag:
-
Command renamed: The
jumbo goal updateProgresscommand has been renamed tojumbo goal update-progress(kebab-case) for consistency with other multi-word commands.- Old command:
jumbo goal updateProgress(no longer works) - New command:
jumbo goal update-progress - Migration: Update any scripts or automation to use the new kebab-case command name
- Migration docs:
docs/reference/commands/goal.md
- Old command:
-
V2 namespace remodel (internal): Major internal restructuring of types, namespaces, and architectural boundaries. While these are internal changes, plugins or scripts that depend on internal module paths will break.
- Removed types:
GoalContextView,SessionSummaryProjection(+ handler, store),RelatedComponent,RelatedDecision,RelatedDependency,RelatedGuideline,RelatedInvariant - Removed namespaces:
list/directories andI*ListReaderinterfaces replaced byget/andI*ViewReader;get-context/merged intoget/ - Dropped table:
session_summary_viewstable removed via migration (was orphaned afterSessionSummaryProjectionremoval) - Migration: Run
jumbo evolve --yesafter upgrading to migrate data and rebuild the database with V2 projections - Migration docs:
docs/reference/commands/maintenance.md
- Removed types:
-
Command replaced:
jumbo db rebuildhas been replaced byjumbo heal --yes. The heal command replays all events from the event store to reconstruct materialized view projections. The underlyingRebuildDatabaseCommandHandleris preserved as internal infrastructure.- Old command:
jumbo db rebuild --yes(no longer available) - New command:
jumbo heal --yes - Migration docs:
docs/reference/commands/maintenance.md
- Old command:
-
Maintenance commands consolidated:
jumbo repair,jumbo db upgrade, andjumbo dependency migratehave been replaced byjumbo evolve --yes. The new command applies schema migrations, runs idempotent data migrations, refreshes managed configuration, and rebuilds projections as one installation update workflow.- Old commands:
jumbo repair,jumbo db upgrade --from v1 --to v2,jumbo dependency migrate - New command:
jumbo evolve --yes - Migration docs:
docs/reference/commands/maintenance.md
- Old commands:
-
Heal command:
jumbo heal --yesrebuilds database projections by replaying all events from the event store. Replacesjumbo db rebuildas the user-facing corruption recovery command. -
Goal review workflow: New two-step quality assurance workflow for goals before completion:
jumbo goal review --id <id>- Submit a goal for review (transitions fromsubmittedtoin-review)jumbo goal approve --id <id>- Approve a reviewed goal (transitions fromin-reviewtoapproved)- Goals in
in-revieworapprovedstatus are included in session context
-
Goal submit command:
jumbo goal submit --id <id>transitions a goal fromdoingtosubmittedand releases the implementer's claim, signaling work is ready for review. -
Goal reject command:
jumbo goal reject --id <id>returns a reviewed goal fromin-reviewtorejectedstatus with review issues recorded as a dedicated goal state property. -
Goal codify/close commands: Final lifecycle phase for architectural reconciliation:
jumbo goal codify --id <id>- Transition fromapprovedtocodifying(acquires claim)jumbo goal close --id <id>- Transition fromcodifyingtodone(releases claim)
-
Goal commit command:
jumbo goal commit --id <id>transitions a goal fromin-refinementtorefinedand releases the refinement claim. Part of the two-phase refinement workflow. -
Goal title field: Goals now support a
titlefield for human-readable naming. -
Goal prerequisite goals: Goals can declare prerequisite goals via the
prerequisiteGoalsproperty, enabling dependency ordering between goals. -
Goal pause/resume: Goals can now be paused and resumed independently of sessions:
jumbo goal pause --id <id>- Pause work on a goaljumbo goal resume --id <id>- Resume a paused goal- Paused goals are included in session context and goals list
-
Goal progress tracking: Track progress notes on goals with
jumbo goal update-progress --id <id> --progress <text> -
Goal reset with dynamic target:
jumbo goal resetnow computes the target state dynamically from the state machine rather than hardcoding a reset destination. -
Component rename command:
jumbo component renamerenames an existing component. -
Component show command:
jumbo component showdisplays component details and its relations. -
Relation deactivation/reactivation lifecycle: Relations now support deactivation and reactivation with automatic cascade when a related entity reaches a terminal state.
-
CLI telemetry instrumentation: Every CLI command invocation is automatically tracked with command name, CLI version, Node.js version, OS platform, architecture, success/failure status, execution duration, and error type on failure. Telemetry is fully non-blocking and gracefully flushes pending events before process exit. Respects consent settings and CI environment detection.
-
Telemetry consent management: Opt-in anonymous telemetry infrastructure with user control:
jumbo telemetry status- Show current consent state, effective runtime status, and anonymous IDjumbo telemetry enable- Opt into anonymous telemetry (generates anonymous UUID on first enable)jumbo telemetry disable- Opt out of anonymous telemetry- Telemetry auto-disables in CI environments (CI, GITHUB_ACTIONS, GITLAB_CI, JENKINS_URL, CIRCLECI, TRAVIS, BUILDKITE)
- Environment variable override:
JUMBO_TELEMETRY_DISABLED=1disables telemetry regardless of settings - First-run consent prompt during
jumbo project init - Settings persisted in
.jumbo/settings.jsoncundertelemetrysection
-
Worker identification: The system now tracks which worker (agent/user) is working on each goal, enabling proper claim management across sessions
-
Architecture view command: New
jumbo architecture viewcommand to display the current architecture definition -
Enhanced session context: Paused and blocked goals are now included in session context output, providing complete visibility into all active work
-
Short flag aliases: Added short aliases across all entity commands (e.g.,
-dfor--description,-nfor--name) for faster CLI usage. -
Gitignore enforcement:
jumbo project initnow enforces.gitignoreexclusions for the.jumbodirectory viaIGitignoreProtocol. -
Idempotent claim re-entry: Entry commands (start, refine, codify) now handle expired claims idempotently, allowing re-entry without manual claim cleanup.
-
Agent configuration improvements:
- Updated Claude and Gemini configurers to match current repository settings
- Added GitHub hooks configurer for
.github/hooks/hooks.json - Agent init now adds
jumbo --helppermission to Claude Code settings - Agent init now adds
jumbo --helpto Gemini CLI tools.allowed list
-
Template-managed skills:
jumbo evolveandjumbo project initnow sync template-managed skills from the assets directory. -
Documentation: Added reference pages for work commands (
work pause,work resume), worker commands (worker view), and maintenance commands (db rebuild,db upgrade,repair). Updated session command reference withsessions listandsession compact. Updated session management guide with paused state lifecycle, work pause/resume workflow, and context compaction.
-
Evolve command:
jumbo evolve --yesnow updates managed skills, configuration, schema, and projections in one command.healremains the focused projection rebuild command. -
Dependency model clarification: Dependency commands/documentation now define dependencies as third-party software/services (packages or external APIs). Component coupling is documented under relation commands (
depends_on). -
Legacy coupling flag deprecation timeline:
--consumer-idand--provider-idcompatibility flags onjumbo dependency addare now explicitly marked deprecated with planned removal inv3.0.0. -
Goal claim storage migrated to SQLite: Goal claims are now stored in SQLite instead of the filesystem for improved reliability.
-
Worker identity storage migrated to SQLite: Worker identity persistence moved from filesystem to SQLite for consistency with other state.
-
Internal architecture:
- Implemented Host/HostBuilder pattern for cleaner infrastructure composition
- Introduced Controller-Gateway pattern across all command flows for cleaner separation of presentation and application layers
- Consolidated
templates/directory intoassets/for static file storage
-
V2 namespace remodel (internal):
- Introduced
*Recordtypes (GoalRecord,SessionRecord,ComponentRecord,DecisionRecord,DependencyRecord,GuidelineRecord,InvariantRecord,RelationRecord) with dedicated*RecordMapperservices at the infrastructure/application boundary - Replaced five bespoke
Related*types with genericRelatedContext<T>wrapper - Split
GoalContextinto pure relations container (GoalContext) and composed return type (ContextualGoalView) - Replaced event-sourced
SessionSummaryProjectionwith query-time assembledSessionContext - Renamed
list/directories toget/andI*ListReaderinterfaces toI*ViewReaderacross all entity namespaces
- Introduced
-
Project boundaries: Removed
boundariesfield from the Project domain model, commands, views, and CLI options. The--boundaryflag has been removed fromjumbo project initandjumbo project update. Existing databases will have the column dropped via migration. -
goal completecommand: Removed entirely. Replaced byjumbo goal codifyandjumbo goal closefor the final lifecycle phase.GoalCompletedEventis retained for backward-compatible event replay. -
QA mode from goal complete: The
--commitflag and interactive QA logic have been removed. Use the new review workflow (goal submit→goal review→goal approve) followed bygoal codifyandgoal close. -
Deprecated events: Removed
GoalReviewedEventandReviewTurnTrackerwhich have been superseded by the new review workflow events
-
Managed agent refresh: The installation update flow now correctly replaces the Jumbo section in AGENTS.md regardless of which version of section markers the file contains. Old installations using the legacy
## Instructions for Jumboheading are now detected and updated to the current format instead of appending a duplicate section. -
Event store hardening: Event store now handles corruption gracefully with improved observability in evolve/heal workflows.
-
Stale database boot migration: Pending migrations now run automatically on boot for databases that missed prior upgrades.
-
ProjectRootResolver directory walk: Fixed the resolver walking up to parent directories, which could cause it to find the wrong
.jumbodirectory. -
.jumbodirectory resolution: Fixed resolution from nearest ancestor to prevent state splitting when multiple.jumbodirectories exist in the path hierarchy. -
Hidden commands in help output: Hidden commands and top-level aliases are no longer shown in help output.
-
TerminalOutput data section rendering: Fixed
TerminalOutput.toHumanReadable()to correctly render data section messages.
- Backward compatibility in v2.x: Legacy
--consumer-id/--provider-idbehavior remains available duringv2.xand maps to relations for migration safety. - Evolve safety: The goal status and legacy dependency migrations used by
jumbo evolve --yesremain idempotent. Re-running a successful evolve produces no duplicate migration events or relations.
- Breaking risk now: Low. Existing scripts continue to run in
v2.x, but emit deprecation warnings. - Breaking risk at v3.0.0: High for unattended scripts that still use legacy coupling flags. Migrate these scripts to
jumbo relation add --type depends_onbefore adoptingv3.0.0. - Migration docs:
docs/upgrading/v2.md,docs/reference/commands/dependencies.md,docs/reference/commands/relations.md
- Documentation: Removed beta designation from README.md, reflecting stable release status.
-
List commands: Added
listsubcommand to all entity commands for viewing stored data:jumbo audience list- List all audiencesjumbo audience-pain list- List all audience painsjumbo value list- List all value propositionsjumbo relation list- List all relationsjumbo component list- List all componentsjumbo decision list- List all decisionsjumbo dependency list- List all dependenciesjumbo guideline list- List all guidelinesjumbo invariant list- List all invariantsjumbo session list- List all sessions
-
Agent configurer hook support: Claude and Gemini configurers now support full hook configuration with intelligent merging that preserves existing user settings.
- Internal refactoring: Migrated bootstrap composition from infrastructure to presentation layer for cleaner architecture.
- Cursor agent configurer: Removed Cursor-specific agent configuration since Cursor now supports AGENTS.md natively.
- Goal update extended: 'goal update' extended with '--nextGoalId' for latent goal chaining.
-
Package renamed: Package renamed from
@jumbo-ctx/clitojumbo-cli(unscoped). Update your installation withnpm install -g jumbo-cli. -
Repository moved: GitHub repository moved from
jumbo-ctxtojumbo-dot-techorganization. -
Animated banner: Redesigned CLI banner with character-map-based animation frames for improved visual presentation.
-
Goal context format: Improved goal context output format for better LLM clarity and parsing.
-
Goal chaining: Goals can now be linked together in a chain. Use
--next-goal <goalId>to set which goal should follow the new goal, or--previous-goal <goalId>to update an existing goal to point to the new goal as its successor. -
Goal resume: Resume work on a previously started goal with
jumbo goal resume.
- Help screen alignment: Command descriptions now align at a fixed column position for consistent formatting across all command categories.
- Database rebuild now correctly projects all events: Fixed a bug where historical
events stored with short type names (e.g.,
GoalCompleted) were not being projected duringjumbo db rebuild. Events are now properly matched to their handlers.
- Event type migration script: Added
scripts/migrations/001-normalize-event-types.jsto fix legacy events with missingEventsuffix in their type field.
If you used earlier alpha versions and have existing event data, run the migration script before rebuilding your database:
# Preview changes (recommended first)
node scripts/migrations/001-normalize-event-types.js --dry-run
# Apply changes
node scripts/migrations/001-normalize-event-types.js
# Rebuild database
jumbo db rebuild --yes-
Removed
taglinefrom Project: The--taglineoption has been removed fromproject initandproject updatecommands. Remove this option from any scripts or automation. The database column remains for backward compatibility but is no longer used. -
Removed
dataFlowfrom Architecture: The--data-flowand--clear-data-flowoptions have been removed fromarchitecture defineandarchitecture updatecommands. Remove these options from any scripts or automation. Existing data migrates automatically.
--taglineoption fromjumbo project init--taglineoption fromjumbo project update--data-flowoption fromjumbo architecture define--data-flowand--clear-data-flowoptions fromjumbo architecture update
- Initial public release
- Context management for LLM coding agents
- Event-sourced architecture with CQRS
- Session and goal tracking
- Project knowledge capture (audiences, pains, value propositions)
- Solution documentation (architecture, components, decisions, invariants, guidelines)
- Relation mapping between entities