Skip to content

Releases: spacedock-dev/compass

Compass 1.3.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 03:00

Run as many coding agents as you like. Compass tells you which ones need you, which ones are fine, and when it is safe to walk away. One local screen, every harness you use, and nothing leaves your machine that you cannot switch off.

What this release changes

This one makes the Drift panel on the session page easier to read, after readers said the budget line, the "Not accurate?" control and the "What it read" panel were hard to follow. See #630.

  • You can run up to 100 drift analyses in a rolling 24 hours, up from 12. The limit is still shared across sessions and providers, and the page no longer shows a running "N of M left today" count. Once the limit is spent, a banner holds the top of the session page, names the limit and says when you can analyze again, and the refusal under Analyze uses the same words. The background checks you can turn on with --unasked-readings keep their own cap of 12.
  • "Not accurate?" is now "Mark as inaccurate", and it says what it does before you press it: the analysis stops setting the drift level and Steer back, and nothing is sent or re-run. After you press it, a status beside the control says what changed, the control becomes Undo, and the empty level slot says it is hidden because you marked the analysis inaccurate. The control stays where it was when the level and Steer back leave the column above it, so the page no longer jumps.
  • "What it read" is now "What the analysis read", grouped under Model, Your intent, The session and Not read. Your intent shows its version, when it was saved, where it came from and each line quoted, with a note when the goal was cut at 240 characters. The sentence saying how much of the session was read is now plain sentences with the same counts, for example "Read all 4 entries after your intent: 1 from you, 3 messages from the agent. The oldest is from about 13h ago." Analyses stored before this release keep the sentence they were stored with.

Upgrading

Update the plugin and restart the dashboard. A dashboard that was already running keeps serving the old page until you do. Your saved intent, goals, permissions and stored analyses carry over, and there is no new flag to set. Analyses you already ran in the past 24 hours still count toward the new limit.

One thing to know: the higher limit means reader-requested analyses can spend more of your Claude Code or Codex capacity in a day than before. The limit is still enforced across tabs and processes, failed attempts still count, and --no-observer-model still refuses every model call.

What this release does not add

The analysis itself is unchanged: it reads the same evidence, reaches the same verdicts and sends the same words. There is no new harness, server route or flag, and no change to the Python version Compass needs. What each answer stops at is in the promise map.

What's Changed

  • Raise the drift analysis cap and make Mark as inaccurate and What the analysis read clearer by @gcko in #630

Full Changelog: v1.2.0...v1.3.0

Compass 1.2.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 14:43

Run as many coding agents as you like. Compass tells you which ones need you, which ones are fine, and when it is safe to walk away. One local screen, every harness you use, and nothing leaves your machine that you cannot switch off.

What this release changes

This one lets a new reader see what Intent and drift does before they have a session of their own.

  • A sample session you can open and look through. Above the Sessions list, "See a sample session (view only)" opens an anonymized Claude Code session that drifted from its goal. It shows the saved goal and two expected outcomes, a High drift level, a stored reading that names the entries it rests on, and the Steer back correction Compass composed from it. Seven numbered (i) marks say what each part is for, and the banner repeats them as text. It is a real session with a real stored reading, drawn by the same Session page every session gets, and nothing in it is saved, sent or run. See #629.
  • A release no longer fails on a slow frontend suite that CI passed. The release workflow now gives that suite the same 6-minute limit CI does, and a test keeps the two equal. See #628.

Upgrading

Update the plugin and restart the dashboard. A dashboard that was already running keeps serving the old page until you do. Nothing about your saved intent, goals or permissions changes, and there is no new flag you have to set.

What this release does not add

The sample is one fixed session. It does not read your sessions, run a reading or reflect what Compass says about your own work, and its reading is a snapshot that does not change when the reading prompt does. There is no new harness, server route or flag, and no change to the Python version Compass needs. What each answer stops at is in the promise map.

What's Changed

  • fix(release): give the release's frontend suite the limit CI gives it by @gcko in #628
  • Add a view-only sample session that shows Intent and drift by @gcko in #629

Full Changelog: v1.1.0...v1.2.0

Compass 1.1.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 12:19

Run as many coding agents as you like. Compass tells you which ones need you, which ones are fine, and when it is safe to walk away. One local screen, every harness you use, and nothing leaves your machine that you cannot switch off.

What this release changes

This one is about trusting the Session page while a session is still writing.

  • The numbers on a session's entries stop moving. A message keeps its number (#41) for the whole session, and a check or file is numbered by the message it follows (#41.2), so a correction that names "entry #41.2 in Compass's activity list" still points at the same entry after a check re-runs or you press Show more. An open page also keeps the entries it showed as the session keeps writing, instead of losing some when large tool output pushed them out of the recent tail. See #625 and #626.
  • The Drift card is easier to read. A press's answer is one short line with an info mark instead of a sentence that pushed the buttons around, what a reading sends is a labelled list behind "What is sent", and the entries "Show cited entries" marks are tinted so they stand out. See #627.
  • A Claude Code reading can be allowed to see checks at launch. Start the dashboard with --allow-tool-output, or set COMPASS_ALLOW_TOOL_OUTPUT=1, and the first press asks only for the words. It grants nothing else, and --no-observer-model refuses it. See #616.
  • A few smaller corrections: a written path is read from the session's own folder, a direction lookup is retried when the session wrote through it, and a correction names the entry it cites. See #617, #623 and #619.

Upgrading

Update the plugin and restart the dashboard. A dashboard that was already running keeps serving the old page until you do. Nothing about your saved intent, goals or permissions changes, and there is no new flag you have to set.

What this release does not add

No new harness, no new route and no change to the Python version Compass needs. Numbering is fixed for Claude Code sessions whose own context has loaded; other harnesses still count what the page holds. What each answer stops at is in the promise map.

What's Changed

  • Run the release archive upload from the checkout by @gcko in #612
  • feat(release): stamp the released version onto the marketplace listing by @gcko in #613
  • chore: retire the React cutover receipts and their tooling by @gcko in #614
  • chore: prune a shipped plan, a stale plan and the operator-cockpit probe by @gcko in #615
  • Grant tool output at launch with --allow-tool-output by @gcko in #616
  • Read a written path from the session's folder, not each record's by @gcko in #617
  • Pin what the Intent and drift journey launches and sends, by test by @gcko in #618
  • Say what a reading can settle, and name the entry in a correction by @gcko in #619
  • Prove each Intent and drift stage, harness limit and no-reader reason in Storybook by @gcko in #621
  • Hold a copied correction to three presses and no model request by @gcko in #622
  • Say a goal-less check adopts the first prompt, not the latest by @gcko in #620
  • Retry a direction lookup the session wrote through, and say so when it still moves by @gcko in #623
  • Correct the promise: a goal-less check drafts your first prompt by @gcko in #624
  • Keep what a session page showed as the session keeps writing by @gcko in #625
  • feat(activity): keep each entry's number fixed for the whole session by @gcko in #626
  • fix(drift): keep a press's answer to one line, list what is sent, tint cited entries by @gcko in #627

Full Changelog: v1.0.0...v1.1.0

Compass 1.0.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 09:53

Run as many coding agents as you like. Compass tells you which ones need you, which ones are fine, and when it is safe to walk away. One local screen, every harness you use, and nothing leaves your machine that you cannot switch off.

This is the first release under the Compass name (it was Cargento through 0.28.0) and the first we call stable.

What you can do now

Check a session against your goal

The session page is cut down to your goal, Analyze drift and the result (#590). A how-to popup explains the steps and the reading's limits (#588), a finding links to the entries behind it (#591), and the Intent panel has more room (#595). The first screen leads with the first step, and the Projects labels say what they mean (#589).

Use it on long sessions

The activity list keeps a long session's prompts, pages older entries on demand and shows the session's age (#601). Analyze reads a long session's messages back to the start of its window (#605) and keeps the closing message of each earlier turn (#607). Use as goal, Add and Keep work on a long session and say so when they cannot (#603).

Run it without installing Python

Each release now attaches standalone builds for macOS and Linux on arm64 and amd64, with a checksums.txt (#597). The build carries its own Python. Unpack the archive for your machine and run it:

tar -xzf compass_1.0.0_<os>_<arch>.tar.gz
./compass/compass --port 4553 --daemon

It takes the same options as server.py, and the README has the checksum step.

Upgrading

From Cargento, move your data once before you upgrade. 1.0.0 no longer reads ~/.cargento, the CARGENTO_ variables, cargento- state files or cargento. browser settings, and nothing migrates them (#609). If you do not have a ~/.compass yet:

mv ~/.cargento ~/.compass
cd ~/.compass && for f in cargento-*; do mv "$f" "compass-${f#cargento-}"; done

Browser settings are not moved and will reset. Install the plugin as compass@spacedock, and update any hook, MCP or status-line setting that still names the old plugin path or /cargento:cargento.

Two smaller changes: --diagnose no longer reports legacy fallbacks, and the retired page's script files no longer ship (#608). They were never served.

Nothing else you run changes. No command-line option was removed, and the dashboard still starts on port 4553.

What this release does not add

There is no Windows build yet; run server.py with Python 3.11 or newer there. The macOS builds are not notarized, so a copy downloaded through a browser may need xattr -dr com.apple.quarantine compass. What Compass promises says what each answer rests on and where it stops.

All merged pull requests

  • Keep internal tracker references out of public documentation by @gcko in #502
  • Add a complete Cargento command manual by @gcko in #503
  • fix(reading): recover final replies from the exact Claude session by @gcko in #504
  • Preserve command arguments and bind consent to the disclosure shown by @gcko in #505
  • Prepare bounded persisted-turn verification by @gcko in #506
  • Explain drift with assessment text and cited event times by @gcko in #507
  • Separate recorded drift signals from estimate limits by @gcko in #508
  • Enforce guarded Analyze study batches and native acceptance by @gcko in #509
  • Reconcile reading and study documentation by @gcko in #510
  • Admit reviewed native session exports to drift qualification by @gcko in #511
  • Run guarded Claude qualification before held replay and live checks by @gcko in #512
  • Record the stopped Claude qualification and preserve every failure by @gcko in #513
  • Reduce repeated study-ledger setup in the test suite by @gcko in #514
  • Retire the cold-study acceptance requirement by @gcko in #515
  • Preserve charges across a fresh qualification continuation by @gcko in #516
  • Register a bounded fresh Claude qualification packet by @gcko in #517
  • test(study): preserve blocked qualification and its charges by @gcko in #518
  • Record Claude failures and resume bounded qualification by @gcko in #519
  • Record the stopped Claude qualification after login repair by @gcko in #520
  • Keep earlier departures distinct from unfinished work by @gcko in #521
  • Record the stopped Claude qualification and preserve its results by @gcko in #522
  • Keep each drift judgment tied to its own evidence by @gcko in #523
  • Preserve the latest stopped Claude qualification by @gcko in #526
  • Keep unknown conditions separate from drift by @gcko in #527
  • Record the complete Claude qualification without erasing failures by @gcko in #528
  • Clarify evidence requirements for unfinished work and claims by @gcko in #529
  • feat(dev): map frontend contracts and record browser baselines by @gcko in #530
  • feat(frontend): add pinned React and Vite development toolchain by @gcko in #531
  • feat(frontend): package offline React assets and require native build checks by @gcko in #532
  • ci(gate): run Windows legs on main and on labelled pull requests only by @gcko in #535
  • feat(frontend): run owned Vite hot refresh with the Python backend by @gcko in #534
  • feat(frontend): add the typed API client, board store and legacy storage codecs by @gcko in #536
  • feat(frontend): add the React shell, routes and shared controls by @gcko in #538
  • feat(frontend): add Sessions, session detail, the timeline filter and the output-only terminal by @gcko in #539
  • test(frontend): make the captured client fixtures and the backend environment test identical on Windows by @gcko in #541
  • build(frontend): lint and format the frontend with Biome by @gcko in #542
  • test(frontend): settle the terminal clamp proof and skip a stalled legacy page by @gcko in #544
  • test(frontend): allow one pixel of rounding in the sessions focused-link proof by @gcko in #545
  • ci(release): verify the frontend before publishing, away from the deploy key by @gcko in #543
  • test: loosen the Python suites' tight timing bounds by @gcko in #549
  • test(frontend): record a legacy terminal that misses a timing check by @gcko in #550
  • feat(frontend): add the Intent log and the Intent panel to the React page by @gcko in #546
  • feat(frontend): add the Drift card, Analyze and Steer back to the React page by @gcko in #547
  • feat(frontend): add the project views, steering and the Console to the React page by @gcko in #551
  • feat(frontend): add Attention, notifications, capacity and the consent controls to the React page by @gcko in #553
  • test(frontend): loosen the proofs' read-count and wait bounds by @gcko in #554
  • test: stop the Windows test servers printing a traceback when a client aborts by @gcko in #552
  • feat(frontend): make the React frontend the default, keep the legacy rollback and hold releases by @gcko in #555
  • test: allow 12x for the transcript reader's linearity check by @gcko in #557
  • test(frontend): replay the legacy page's recorded observations instead of running it by @gcko in #556
  • test: fix the two Windows failures that main's runs caught by @gcko in #558
  • ci(gate): run the Windows legs on every pull request and split the Python suites by @gcko in #559
  • refactor(frontend): retire the legacy frontend by @gcko in #560
  • test(frontend): stop two browser proofs failing on teardown races by @gcko in #561
  • fix(frontend): give the project popover its shadow back by @gcko in #562
  • test(frontend): stop the terminal proof's ...
Read more

Cargento 0.28.0: Sessions first, Intent and drift

Choose a tag to compare

@github-actions github-actions released this 05 Oct 13:18

Cargento 0.28.0: Sessions first, Intent and drift

The first screen sets your goal or a permitted prompt beside current activity and brings recorded departures forward.

Cargento 0.28.0 puts sessions first and brings a substantially expanded Intent and drift workflow to the session page. Open the session you are watching, compare its recorded work with your intent, and prepare a correction when you choose to steer it back. This is the initial release of the Intent and drift milestone.

  • Keep your intent beside the work. The dashboard opens on Sessions, separates active work from recent history, and puts your goal or a permitted prompt beside current activity. Recorded departures come forward; Projects stays one click away, and direct session links reopen the same page. The session-first changes ship in #387 and #389. On the session page, a redesigned Intent and drift panel holds your goal and up to six outcome lines beside numbered activity, with resizable editors, clearer Save/Undo controls and secondary detail behind disclosures (#408, #400, #409, #476).
  • Read each outcome against recorded evidence. Analyze drift shows a result for each line with cited activity, an overall level and visible staleness and coverage limits. Consent, eligibility and the resulting level now have explicit states; unsupported completion claims do not raise the level by themselves, and failed checks share the same rules across the result and correction. The analysis and stopped-turn path ship #433 and #401, with later fixes in #476, #490, #491 and #498. Reading requires the disclosed consent and spends the selected CLI capacity.
  • Prepare a correction you can edit and copy. Steer back builds a correction from saved intent; Update intent lets you review a later direction and save it into your intent. These ship in #428. Cargento never writes the correction into the session.
  • See a local estimate after a Claude Code turn. The optional live monitor reads recorded checks and file paths without a model call. The live monitor (#429) is off by default; this estimate does not judge the meaning of your intent.

Update Cargento through your harness plugin or extension update command and reload an older open dashboard page. The install instructions cover each harness. Python 3.11+, the ten supported harnesses and hook/MCP configuration remain supported. Claude readings request claude-sonnet-5-5 by default. Model admission uses Claude Sonnet 5 as the baseline and accepts documented explicit newer Sonnet and qualifying Opus model IDs. An unavailable selection fails without retrying another model; the requested ID does not prove the remote served snapshot.

Credential masking now covers the supported inline formatting before clipping or converting command tags. Command title and direction rendering preserve captured framing and keep masked arguments whole; earlier source extraction can still limit what is recovered. See the published-text masking scope.

API consumers: annotation_output and annotation_output_why have been replaced by annotation_line_1 through annotation_line_6 with their source fields. Preserve your annotation store before downgrading: the next save in an older build can drop checklist lines and, if the store exceeds that build's read bound, all saved session annotations. Read the annotation-store downgrade limits.

The milestone remains open. A model analysis is an account of recorded evidence, not verification that work was completed. Claude accuracy qualification and the full live and cold usability studies have not passed; this release claims no measured detector accuracy improvement. See the promise map and its limits. Experimental study tools remain outside this release.

The withdrawn 0.27.0 release is not being restored or reused.


What's Changed

  • feat(web): ship the v3 palette, boundary split and control fill over v0.27.0 by @gcko in #366
  • fix(web): four defects found by using the v3 board by @gcko in #368
  • docs(burndown): record what the UI/UX burndown measured, and dedup the module map by @gcko in #367
  • feat(web,sessions): scale in rem, and one directory as one project by @gcko in #369
  • test(web): resolve the sentence floor on elements the emitters render by @gcko in #370
  • fix(web): fold the Now scope note into its lede, and name what the composer does by @gcko in #371
  • docs: narrow the label/caption claim, and take the 980px measurement by @gcko in #372
  • feat(web): say when a read is stale, and settle two dead-path defects by @gcko in #373
  • feat(web): raise the sub-floor sentences, and collapse three control recipes by @gcko in #374
  • test: widen two timing budgets that were measuring machine speed by @gcko in #375
  • test(web): bind four design-doc claims, and raise the prose a rule never reached by @gcko in #376
  • feat(scripts): regenerate the frontend byte pins instead of re-deriving them by @gcko in #377
  • fix(web): evaluate pseudo-classes in the resolver, and settle three control rulings by @gcko in #378
  • feat(web): raise the copy and raise controls to the tier the primitive promises by @gcko in #379
  • docs(burndown): point the roadmap burndown at the current roadmap by @gcko in #380
  • fix(web,claude): count only real sessions, and stop quiet rows looking live by @gcko in #381
  • ci: run the suites in parallel, and cut the waiting out of the slowest tests by @gcko in #382
  • docs(rulings): record DEC-20, DEC-21 and DEC-22 for the drift milestone by @gcko in #383
  • docs(burndown): burn down a whole milestone in grouped, stacked pull requests by @gcko in #384
  • fix(unasked): the off switch refuses the unasked lane by @gcko in #385
  • feat(web): lead session detail with drift and re-entry by @gcko in #386
  • feat(web): open on Sessions with direct session links by @gcko in #387
  • feat(web): pair session goals with recorded drift by @gcko in #389
  • feat(reading): remember permission and bound requested checks by @gcko in #390
  • feat(reading): adopt a prompt as the drift baseline by @gcko in #392
  • feat(reading): build a gated Claude Code reading producer by @gcko in #393
  • fix(web): say only what a discard can know and keep an ended check on screen by @gcko in #394
  • docs(captures): record the Claude transcript shapes DEC-23 reads by @gcko in #395
  • docs(reading): write the DEC-23, DEC-24 and DEC-26 rulings by @gcko in #396
  • feat(reading): show a Claude Code session's checks and written files by @gcko in #397
  • feat(reading): judge a Claude Code session's expected outcome against its checks by @gcko in #398
  • feat(reading): write the expected outcome as a checklist, each line read on its own by @gcko in #400
  • feat(reading): analyze a Claude Code session waiting at its prompt by @gcko in #401
  • feat(reading): run a pressed drift analysis as a supervised background job by @gcko in #403
  • feat(reading): define the four drift levels and a case tool to validate them by @gcko in #404
  • feat(reading): score the Claude Code producer against fresh format 5 cases by @gcko in #405
  • feat(reading): cancel a running drift analysis by @gcko in https://github.com...
Read more

Cargento 0.26.0

Choose a tag to compare

@github-actions github-actions released this 16 Sep 04:20

Run as many coding agents as you like. Cargento tells you which ones need you, which ones are fine, and when it is safe to walk away. One local screen, every harness you use, and nothing leaves your machine that you cannot switch off.

What changed

  • Off-machine reach nudges. You can receive webhook nudges when a session needs human attention or finishes unread while you are away from your desk. --reach-url delivers scalar counts under strict cooldowns and security limits, with --no-reach to disable.
  • Quiet hours notification suppression. You can silence non-urgent desktop notifications, tripwires, and reach nudges during focus hours or overnight. --quiet-hours WINDOW suppresses background alerts while preserving direct operator questions.
  • Gate queue adapters and dedicated Droid routing. You can see standing OpenCode parent permissions and Pi extension UI prompt waits in the gate queue and clear them in their respective harnesses. A dedicated cargento-droid root isolates Droid lifecycle hooks from Claude Code hooks.
  • Attention prioritization, team visibility, and workflow tripwires. You can see working sessions prioritized above idle sessions with a live indicator in the cockpit, track nested subagent teammates with capped rosters, and configure one-shot workflow stage tripwires that alert when an entity enters a target stage.

Upgrading

Restart your running server or reload your harness extension. Existing configuration and stored data remain backward compatible. Loopback-only binding, local storage boundaries, and the Python 3.10 runtime floor do not change.

What this release does not add

Cargento does not answer prompts autonomously, does not predict session outcome without evidence, and does not forward private prompt text or environment variables outside your machine. For details on what Cargento promises and where each capability stops, see docs/promise-map.md.


What's Changed

  • feat(cargento): report command shapes from after-tool hooks by @gcko in #335
  • feat(cargento): add one-shot workflow stage conditions by @gcko in #336
  • feat(intent): list board and retained goals with distinct sources by @gcko in #337
  • docs(sync): reconcile merged steering documentation by @gcko in #338
  • feat(cockpit): show working sessions above idle with live indicator in scope tree by @gcko in #339
  • feat(adapters): report Needs input for OpenCode and Pi by @gcko in #340
  • test(captures): assert corpus privacy boundary and document enforcement by @gcko in #341
  • fix(visibility-2x2): correct B2 briefing attribution in historical scoring audit by @gcko in #342
  • docs(ask-lane): document kind-first Attention ordering and date asked_at proposal by @gcko in #343
  • feat(adapters): route Droid lifecycle hooks through dedicated root by @gcko in #344
  • feat(events): add repeating-source wait lease and visible uncertainty by @gcko in #345
  • docs(sync): advance shared documentation marker for milestone completion by @gcko in #346
  • feat(diagnostics): report CARGENTO_HOME overrides and isolate diagnose from store writes by @gcko in #347
  • feat(lifecycle): line-buffer daemon stdio, clean state on SIGTERM, and sweep stale runs by @gcko in #348
  • feat(io): harden owner-only atomic writes and directory mode tightening by @gcko in #349
  • fix(aggregate): publish absent annotate and reading_check under --no-annotations by @gcko in #350
  • feat(web): render departure cutoff_text beside evidence in session rows by @gcko in #351
  • feat(claude): absorb grandchild activity into teammate liveness and lead state by @gcko in #352
  • feat(web): distinguish no turn in progress from unsupported turn bounds by @gcko in #353
  • feat(claude): cap published subagent roster with honest omission reporting by @gcko in #354
  • feat(claude): resolve nested teammate reachability and document harness team coordinator by @gcko in #355
  • feat(reach): implement off-machine nudge delivery and --no-reach switch by @gcko in #356
  • feat(notifications): quiet hours notification suppression by @gcko in #357
  • fix(api,web): resolve dismissal cleared field, ended header tense, and unobservable ends by @gcko in #358
  • fix(scripts): supply full default runtime options to bench_collect by @gcko in #359
  • fix(ci,docs): use unittest discovery for scripts.tests and align the-walk default route by @gcko in #360

Full Changelog: v0.25.0...v0.26.0

Cargento 0.25.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 08:42

Run as many coding agents as you like. Cargento tells you which ones need you, which ones are fine, and when it is safe to walk away. One local screen, every harness you use, and nothing leaves your machine that you cannot switch off.

You can now use Ask for a reading in Held to when --observer-model is enabled. The accepted recorded case review opens the control, and each request shows progress and its outcome. Duplicate clicks are blocked while the request runs, and failed requests are never retried automatically. #334

The Intent log changes sharpen P5, "Did anything die quietly?":

  • Discarding your words clears them from an already-open log without a reload. A source revision refreshes the log when its stored inputs change, including a discard in another tab, without fetching it on every redraw. #331.
  • A discard record no longer claims the discarded words remain. Sessions that have left the board still show when you discarded their annotations, while rows that retain words keep their existing explanation. #332.

For contributors, the abstention evaluator can replay frozen historical cases with their recorded facts and timestamps. Marks bind to the case packet, and replay does not substitute today's board state. #333

Update your Cargento plugin through your harness's plugin manager, restart the dashboard from the updated installation, and reload its browser tab. For checkout-based installations, update the checkout and reinstall from the paths in the installation guide. Python 3.11 remains the minimum; existing flags, harnesses and store paths are unchanged. Model readings remain opt-in.

This release does not add inspection of diffs, files or tests to readings. A reading describes the available evidence and does not verify that the work was done. Final readings still require an observed session end, and demonstrated work evidence remains limited to Pi. See the promise map for the boundaries.

What's Changed

  • fix(intent): refresh open logs when stored words change by @gcko in #331
  • fix(intent): stop claiming discarded words remain off-board by @gcko in #332
  • fix(scripts): replay frozen historical abstention cases by @gcko in #333
  • feat(reading): enable the accepted recorded case review by @gcko in #334

Full Changelog: v0.24.0...v0.25.0

Cargento 0.24.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 02:14

Cargento tells you which of your agents need you, which are fine, and when it is safe to walk away. Everything it answered before this release was about status. This one is about intent: it is the first release where the board can tell you a session is working, healthy, and doing the wrong thing.

What you can do now

Hold a session to what you asked for. P2 and P3, extend. Type a goal and an expected output against any session, in your own words, when it starts or later, and read them beside what the record shows it has been doing. Backed by a store of its own that survives a restart, keeps every revision, and says which session your words are bound to when the binding is ambiguous.

Ask for a reading of how the two compare. P3, extend. A reading says which version of your words it read, how far its evidence goes, and where the evidence is too thin to tell. It never says the work is done. Four rulings govern what it may claim, and three of them are built into the producer rather than checked afterwards.

Have Cargento check a session while you are away. P3, new. Off by default, behind --unasked-readings, bounded per session and per day. It raises only a departure, never a reassurance, and what became of every notification it raises is written down, so a signal you never saw is not recorded as one you ignored.

Review what was raised, and what came after. P3, extend. One place showing every departure, whether it reached you, and what later evidence showed, with unknown as a first-class answer and the common one.

What Cargento saw end stays ended. P5, sharpen. A session that finished no longer reads as merely quiet after a restart, so a final reading is still takeable on it.

Upgrading

Nothing to do. No flag changed meaning, no route disappeared, no payload key stopped being published, and the Python floor is still 3.11. The ten supported harnesses are unchanged. Six new flags and six new routes arrive, all additive, and the two features that spend model capacity ship switched off.

What this release does not add

The Ask for a reading control is disabled until an abstention check has been run against hand-written marks, and that check has not been run. The away-checking lane is off by default. Neither is a coming-soon: both are gates that exist because a reading is a model's judgement about your intent, and the rulings behind them are recorded on the issues rather than implied here.

Nothing here changes P1, P4, or what Cargento promises about quota. The full map of what is promised and where each promise stops is in docs/promise-map.md.


What's Changed

  • fix(skills): burndown reads a design reference, and eleven defects it could not survive by @gcko in #316
  • feat(cockpit): import operator prototype and sync with main by @gcko in #312
  • feat(annotations): hold a session to what you asked for by @gcko in #317
  • docs(sync): reconcile the docs against #312 and #317, and advance the marker by @gcko in #318
  • fix(reading): the board stops saying no reading exists when one does by @gcko in #319
  • feat(deliveries): record what became of every raise, so an unseen signal is not read as an ignored one by @gcko in #320
  • feat(unasked): check a session against what you asked while you are away, and raise a departure by @gcko in #321
  • feat(ends): keep an observed session end across a restart of the board by @gcko in #322
  • feat(scripts): score a reading against the abstention marks, before anything may ask for one by @gcko in #323
  • feat(reading): a stored reading says why a row is unverifiable, and the save path says what the store did by @gcko in #324
  • feat(departures): review what was raised while you were away, and what came next by @gcko in #325
  • docs(sync): reconcile the docs against the Hold it to what I asked merges, and advance the marker by @gcko in #326
  • docs(agents): three invariants a green suite does not enforce by @gcko in #327
  • fix(departures): the record stands when the lane stops, and the act the board offers is the act it describes by @gcko in #328
  • feat(cockpit): a raise says its baseline moved, and the cues reach a reader who cannot see them by @gcko in #329
  • feat(annotations): a discard leaves a record that says when, and it never reads as nothing typed by @gcko in #330

Full Changelog: v0.23.0...v0.24.0

Cargento 0.23.0

Choose a tag to compare

@github-actions github-actions released this 08 Sep 09:52

The board's job is the five questions of a working day, and this release is about the
first, second and last of them: which of my agents are running, what is it doing, and did
anything die quietly.

The dashboard is rebuilt around projects rather than a session list, and the rule
underneath the rebuild is that it never asserts more than a source published. A field
nobody reported now says why it is empty instead of showing a dash, a zero or a blank.

P1 · A running count you can believe. The header counts sessions a harness published a
liveness event for, not sessions that merely wrote a file recently. A session that looks
busy by file recency keeps its place in the active lane and stops pretending to breathe,
which is the distinction the promise map already drew between what is active now and what
is only recent.

P2 · Projects is the board. It opens grouped by the label each harness publishes, with
identity, the stated goal and its source, what is going on, and a collapsible timeline of
observed state changes. The project rail carries delegation, what is waiting on you,
capacity against each window's own clock, and browser-local tripwires.

P5 · How a session ended, in the words the runtime can support. Project detail names
each observed ending as a stop or an end crossed with the git state that was measured,
dirty, clean or not measured at all, and puts the git line beside it. Work that finished
and was never read is still flagged in Attention, unchanged.

Every count comes from one derivation. A single pass now produces the sessions, the
counters, the coverage sentence and each project's count line, so a sentence and the rows
beside it can no longer disagree about their denominator. Absence carries its reason from
that pass rather than being invented per view.

Upgrading

Nothing to configure. Saved state survives: the storage namespace did not move, so
disclosures you left open, tripwires you saved and your vendor-quota answer all carry over.
Explicit routes still work, so a #n=sessions bookmark still opens Session operations.

Two things do change without asking. The board is dark only now, so a light system
preference no longer produces a light board. And the bare URL opens Projects rather
than Sessions.

No harness was added or removed, and no CLI flag, HTTP route, payload field or hook event
changed. The Python floor is unchanged.

What this does not add

Delegation is measured per project, not aggregated across a week. Tripwires are saved
preferences held in your browser and nothing enforces them. Irreversible actions are not
reported on the board. Uncommitted work is reported; commits that never reached a remote
are not. Telling a session that died from one that finished is still not shipped.

Attention closes with a list of exactly these gaps, so a gap reads as a gap rather than as
good news. What the board promises and what backs each promise is in
docs/promise-map.md.

What's Changed

  • feat(next): refactor the dashboard to the v2 project-level design by @gcko in #314
  • docs(sync): retire the v2 refactor plans and advance the sync marker by @gcko in #315

Full Changelog: v0.22.1...v0.23.0

Cargento 0.22.1

Choose a tag to compare

@github-actions github-actions released this 08 Sep 06:24

Run as many coding agents as you like. Cargento tells you which ones need you, which ones are
fine, and when it is safe to walk away.

This one is corrections only. Every issue in it carries move:keep, which in this repository means
the board was saying something untrue about a promise it already makes. Nothing new appears on the
dashboard.

P5, keep: a session that ends with untracked work no longer reports a clean tree. The
end-of-session git probe obeyed the operator's own status.showUntrackedFiles = no, so a tree with
work in it published dirty=False, which SECURITY.md promises is a measured clean rather than an
absence of evidence. The probe now forces normal untracked display in its own invocation, and a
refused probe says what the refusal means.

P3, keep: a project blocked on you sorts above one that is merely working. The projects
comparator had no blocked term, so a row reading "1 blocked" sat underneath "1 working" while the
view's job is to put what is waiting on you first. An explicit question still outranks everything.

P2, keep: Attention stops asserting coverage over a session it could not fully read. The
remainder now says how many of those sessions were partially read, instead of "coverage applies"
over a row whose own entry on Sessions says its source was not fully read. A state derived from a
different source is kept rather than discarded.

Also: a quiet session cannot re-nudge you inside ten minutes, a reader parked mid-page keeps
their viewport through a redraw, a failed model read and a role that would not decode say so
instead of going quiet, and a recorded diagnostic cause is the real one.

Upgrading

Update the plugin in your harness. Nothing else changes: no configuration to edit, no store to
migrate, the same Python floor, and the same ten harnesses.

What this release does not add

No new harness, no new flag, no new route, no new published payload field, and no new panel. No
promise in the promise map
moves, and the places each one stops are unchanged. Telling a session that died from one that
finished is still not shipped.

What's Changed

  • fix(web): a partly read source says so on Attention, blocked projects sort first, quiet nudges get a floor, and a parked reader keeps their viewport by @gcko in #306
  • fix(git): untracked work survives the operator's display config, and a refused probe says what it means by @gcko in #307
  • fix(diagnostics): the recorded cause is the real one, and its message is bounded by @gcko in #308
  • fix(collectors): a model read that failed and a role that would not decode say so by @gcko in #309
  • fix(hygiene): runtime citations reach one owner, and the gate sees the docs its tests read by @gcko in #310
  • feat(skills): sync-project, so a tracker surface says what is true now and what is left by @gcko in #311
  • chore(docs): screenshots land in docs/screenshots, and the directory survives a clone by @gcko in #313

Full Changelog: v0.22.0...v0.22.1