Repository navigation
Releases: greatgc-flow/peerhub
Releases · greatgc-flow/peerhub
Release list
v0.21.5
Fixed
- ag empty responses name the cause: agy headless auto-denies tools that need the
commandpermission and returns an empty response; the ask result now carriesdenied_actionsand the CLI prints a one-line note (#195). - Monitor: a tiny non-zero quota remainder shows
<1%(0% always means exhausted) andcx reset creditsuses relative time (#189).
v0.21.4
Added
- Complete the ag exact model/pool registry for flash, argon, Claude opus/sonnet and GPT OSS slugs; add
ag.argon(gemini-4-argon-medium, A-7D) as the tenth profile. Existing tiers remain unchanged; arbitrary-model monitor/readiness integration remains out of scope (#194). peerhub profile listshows Known models (pool), with additiveknown_modelsJSON; the bounded guide includes argon and slug discovery (#194).
Fixed
- Find quota reset evidence across all error lines, recognize cc
You've hit your 5-hour limitand preserve hour-only resets such as3pmraw. Advice keeps uncertain-stream recovery requirements because a stream may remain quota-blocked after reset (#194). - Apply
PEERHUB_LIVE_AG_MODELto public ask measurements, annotate only cases applying it, and reject unknown registry slugs with a stale metadata hint (#194). - Monitor headers and EXHAUST-IN cells show
past forecastwhen quota remains after a forecast passes, reservingexhaustedfor zero remaining quota; INSUFFICIENT means insufficient projection data (#194).
v0.21.3
Fixed
- Uncertain asks whose provider error is a quota/usage limit (ag exit 3, stderr-only errors) now report
provider_limitand a one-line wait-for-reset note; status stays uncertain because edits cannot be excluded (#186). - Refusal classifier recognises cc limit phrasings such as
You've hit your limit,Claude AI usage limit reachedand5-hour limit reached(#186). - Live gate:
PEERHUB_LIVE_AG_MODELmay replace the ag model when its default pool is exhausted; every JUnit case then recordslive_ag_model_override. For v0.21.3 the ag canary ran ongemini-4-argon-low(A-7D) because G-7D was exhausted: the packagedag.standardmodel was NOT exercised (#191). - Live-gate quota canary waits 60s instead of 30s for slow cc usage probes (#183).
Changed
- Monitor: the soonest-exhaust header says
exhaustedfor an empty pool, probe age uses2h57m-style durations, and the INSUFFICIENT legend readswindow just started(#189).
v0.21.2
Changed
- Share session receipt validation between session inspection and monitor, and use one profile layer loader for CLI configuration and runtime resolution (#177).
- Remove the unused
format_dashboardrenderer and rename its regression test to identify the activeformat_framerenderer (#177, #178).
Fixed
- Fence open stores on changes to either lineage marker (
workspace.generationorrestore.epoch), while allowing first-generation adoption without fencing existing connections (#177, #178). - Resolve monitor profiles from the selected store's workspace root (#177).
- Bound context benchmark subprocess time and output, and resolve Windows
.cmd/.batshims through the shared binary resolver (#177, #178).
Docs
- Document in-flight ask behavior across upgrades and restarts; wait for running asks (they lock dependency files), inspect results before re-sending, and recover from a broken upgrade (#175, #180, #181).
- Align
agadapter documentation with its explicit--writablerequirement and place deferred backlog start triggers and deliberate probe/response-field deferrals underdocs/STATUS.mdownership (#167, #173, #177).
v0.21.1
v0.21.0
Added
- Cached-only
peerhub diag readiness [--json]: configured profile readiness from stored quota and matching delivery evidence, with shared pools and contextual diagnostic actions; no provider calls or writes (#145, part 1).
Changed
- Monitor QUOTA visual refresh S2 adds semantic colors, precise remaining bars, compact per-peer probe notes, a space-permitting state legend, and the soonest exhaustion summary (#147 S2).
Fixed
- Skip oversized cx events when a later intact answer and completion establish delivery; preserve uncertainty for lost terminal evidence (#164, part A).
v0.20.0
Breaking
- Bare
peerhubexit 2 -> 0: Invokingpeerhubwithout arguments now prints the offlinepeerhub guideand exits successfully (#121, #153). - Native
agrequires explicit--writable: Becauseagydoes not enforce a read-only sandbox when--mode accept-editsis omitted, nativeagexecution fails closed before spawn (PrespawnError/failed_not_started) unless--writableis set. Cached replay of acknowledged requests still returns before policy validation (#140). - Single-peer ask stream fencing:
peerhub askrejects targeting a different peer on a stream with establishedask:prompt records (StreamPeerMismatchError, exit 2, guidanceask_stream_peer_mismatch) (#125). - The deprecated monitor
--legacyalias reaches its scheduled sunset and is no longer accepted in v0.20.0. Usepeerhub monitor --json --schema-version 1.1for the frozen machine contract; grouped human output remains the default.
Added
- Guidance registry (
peerhub/cli/recovery.py) maps ask outcomes to meanings, causes, recovery argv, cautions, documentation, and contextual exit codes. Offlinepeerhub explain CODE [--json]exposes exact-code recovery guidance (#117, #150). - Offline AND-token lessons lookup through
peerhub explain <free words>, packagedlessons.toml, generateddocs/lessons.mdwith drift checks, and a compact guide pointer (#117, #150). - Factual tool-only turn completion metadata (
empty_response: true,task_effects: "unverified") when a provider completes tool actions without a final text message (#126, #150). - Argon
A-7Dquota pool: group-derived Antigravity pool labels (G-*,3P-*,A-*),gemini-argon-wtu-weeklymapping toA-7D, and exactgemini-4-argon-{low,medium,high}model mappings in both model-profile artifacts (defaults revision2026-10-18.1), backed by raw usage fixtures and parser tests (#149). - Weekly Dependabot updates for pip and GitHub Actions, plus
SECURITY.mdwith vulnerability reporting guidance and supported-version scope (#151).
Changed
- Monitor quota-first dashboard: one-line status header with UTC timestamps and database source, followed by a deterministic QUOTA table (
PEER POOL REM [bar] RESET-IN PACE STATE AGE;EXHAUST-INat widths of at least 100 columns). Quota rows precede PEERS, EXECUTION, SESSIONS, USAGE, and CONTEXT; short viewports disclose omitted rows withpeerhub monitor --snapshot --group capacity --expand. Stale and unknown rows preserve identity and reasons; snapshot rendering does not synthesize a refresh (#146). - Remaining-quota bars fill consistently, all capacity rows stay together, and reset countdowns are separated from burn forecasts. USAGE falls back to input plus output tokens and shows cache hit percentage when provider total tokens are absent (#146, #147).
- Missing-store errors include the selection source, a quoted creation command using global
--db, andLearn: peerhub guide(#121). pending_earlier_recordguidance describes processed-status-dependent outcomes (delivered,not_executed,failed_not_started,uncertain); explain JSON represents context-dependent exit codes as lists (#135).
Fixed
- Monitor QUOTA
RESET-INcounts down from measured providerresets_attimestamps; stale and unknown observations retain-(#146). - Monitor displays cx reset credits and soonest expiry from existing read-only evidence; fixture coverage verifies cc last-good quota and AGE survive a
/usagetimeout (#157). - Windows stderr decoding consults console output and OEM code pages (
GetConsoleOutputCP/GetOEMCP) before UTF-8 replacement, preserving localized launcher errors including cp949 messages; launch failures receiveask_launch_failedguidance (#120). - Bounded terminal provider error summaries survive verbose startup stderr; aggregate cx response text is retained unless explicit phase metadata distinguishes final text from commentary (#127).
- Review follow-ups add an empty-response stderr note, restrict selector guidance to actual selector argument errors, and provide specific guidance for unsupported store schemas, compare-and-swap conflicts, and idempotency conflicts (#153).
Docs
- Peer sandbox limits and an installed-CLI profile smoke recipe, linked from the documentation index (#134, #148).
agsilence-timeout guidance: leave it unset or set it at least as high as--timeout-seconds; long-task examples use--timeout-seconds 7200(#118).- Windows upgrade instructions: stop monitor, upgrade, then restart; explain temporary PyPI index lag (#123).
- Generated guidance and session lifecycle reference with registry parity checks, qualified session-state definitions, safe actions, and contextual exit codes (#135).
- Windows PowerShell operations guide covering parallel asks,
$using:, quoting,--query-file, non-ASCII paths, and parser-verified examples (#136). - Aligned guide, README, remote-ask, and migration documentation with current store selection, write-policy, and recovery rules (#130, #134, #148).
v0.19.0
Breaking
- Implicit
./peerhubstore discovery removed: Removed implicit<cwd>/peerhubsubfolder walk during store discovery (owner-approved O-1 in October 2026 audit). Store discovery now searches.peerhub/core.dbin the current directory and parent directories only. Explicit--db PATH,PEERHUB_DB, and--workspaceselection are unchanged. When no store is selected and a legacy<cwd>/peerhubstore exists, missing-store error emits a hint to use--dbpointing to it; stores of other schema versions remain refused as usual. - Bare monitor changes: Default monitor viewport prioritization now ranks
capacityandpeersahead of other low-priority groups in short viewports (default behaviour change), dropping other groups before clipping quota rows. Loaded quota rows (capacityand peers quota) are shown in full by default across all pools and windows without--expand; in short terminals rows beyond the viewport are disclosed as+N rows hidden by terminal height(distinguishing loaded data from displayed rows). When a detail loop stops early due to viewport height, one line+N rows hidden by terminal heightis emitted with reserved space.
Added
peerhub monitor --expand: human dashboard option (supporting watch and--snapshot) rendering all loaded rows of detail groups (sessions,usage,context,runtime) instead of capping at 2 rows (quota is always fully shown;--expandapplies to other groups). Expanded session rows include the stable session handle. Bounded by existing DB read caps (100) with truncation disclosure; rejects--expandwith--json(Slice 1).- Quota displayed by default: loaded quota rows (
capacityand peers quota) are shown in full by default across all pools and windows without--expand; in short terminals rows beyond the viewport are disclosed as+N rows hidden by terminal height(distinguishing loaded data from displayed rows). - Peers pools: model pools and observed versions metadata in
docs/model-profiles/model-profiles.jsonand packagedmodel-defaults.tomlwith cross-artifact parity verification (S1); multi-pool selection in monitor peers view selecting minimum remaining quota across fresh measured pools for mapped profile models; explicitincompleteandaccount-wide/unmappedstatus handling (S2). - Drift report persistence inside quota observation payload, retaining unknown bucket IDs and comparing installed CLI versions against packaged baselines (S3).
- Monitor model facts drift line (
Facts: needs_recheck (...) - refresh-model-profiles) and detailed JSON output without extra probes (S4). - Offline
peerhub guidesubcommand (<=60 lines, ~900 tokens) providing.standard-first profile table, session reuse examples, delivery safety guidance, discovery commands, and drift recovery (S5). - Compact Safety section in
peerhub guidedetailing per-peer write boundaries (cx sandbox enforced, cc enforced, ag NOT enforced per issue #140), uncertain/pending_earlier_record recovery rules, core.db store hazards, cost side effects, and secrets persistence. - Knowledge Placement Policy in
docs/knowledge-placement.md(13-point policy) governing installed-release essentials, evidence-dependent lessons, and safety guidance placement; linked inCONTRIBUTING.mdand.github/PULL_REQUEST_TEMPLATE.md. - Efficiency section in
peerhub guide(<=3 lines) covering role-based stream reuse,.standard-first economical baseline, and--query-file/--jsontransport choices. - Report Issues section in
peerhub guide(<=3 lines) detailing repository issue submission,gh issue list --searchtriage, environment details, and privacy redaction. - Guide impact policy in
CONTRIBUTING.md, PR verification checklist in.github/PULL_REQUEST_TEMPLATE.md, andguide-impactissue label for tracking safety-fact updates across PRs. - Bounded delta reads in Session Bridge for native, local history, and redirect-candidate delta queries, paging reads and stopping before the current record.
Changed
- Documentation diet: archived obsolete 10,368-line call map (
peerhub-production-call-map-R1.json) and 4 historical debate documents (4,777 lines across session monitoring/reuse/usage review) to Git history, backed by a comprehensive archival ledger (docs/history/ledger-2026-10-17.md) preserving retrieval commands, SHA-256 hashes, and accepted/rejected/deferred decisions. Shrunkdocs/design/README.mdto active/deferred/history links and unified status ownership underdocs/STATUS.md. - Monitor
--legacysunset extended to 0.20.0: explicitly extended the sunset of the hidden deprecated--legacyalias (and frozen schema 1.1 watch) through 0.19.x to 0.20.0; removal deferred as no removal evidence is needed and existing callers remain supported.
Fixed
- Preserved write access on resumed Codex (
cx) sessions when--writableis enabled by passing-c sandbox_mode="workspace-write"onexec resume(resumed sessions previously defaulted to read-only sandbox mode, dropping write permissions even when the session was created writable). Safe read-only (-c sandbox_mode="read-only") is maintained when--writableis not set. Scoped guaranteed read-only sandbox enforcement tocxonly; documentedccread-only enforcement via headless permission denial andagread-only as provider-controlled without sandbox enforcement (known limitation: headlessagydoes not enforce a read-only boundary when--mode accept-editsis omitted). Added opt-in live canary tests for read-only sentinel creation. - ASCII and plain monitor separators: replaced Unicode middle dot (
·) with ASCII pipe (|) in--view plainand non-Unicode outputs, avoiding?replacement artifacts in ASCII terminal environments (#114). - Redirected
--format autoJSON:--format autoemits JSON when standard output is not a TTY (redirected or piped) (#114). - Missing-store JSON error parity: core read commands emit structured JSON (
{"status": "UNAVAILABLE", ...}) when a database is not found and JSON output is requested (or under redirected--format auto), matching the machine error contract (#114).
v0.18.2
Added
- Monitor peers group (default set): per peer quota -> profile/model [config layer] -> latest session (fresh/reused, generation) -> context; unknown stays unknown, stale quota is shown as STALE, no model-specific quota-pool inference, sample truncation disclosed.
- Model-fact provenance: footer with revision, checked date/age and source commands; per-profile source in docs/model-profiles/model-profiles.json; 2026-10-16 CLI observations (cc 2.1.301, codex 0.163.0, agy 1.4.0). Profiles unchanged; agy gemini-4-argon-* noted as available, not selected.
Changed
- Breaking - store schema: schema version 4. Stores written by this version cannot be opened by earlier releases (they refuse with their existing future-schema error); back up .peerhub/core.db before first use. Core runtime connections come from one factory (WAL, busy_timeout, foreign_keys, recursive_triggers).
Notes
- Extension DDL ownership, trigger-definition verification and the rest of the schema-v2 proposal are intentionally deferred (see docs/design/monitor-peers-view-2026-10-16.md).
v0.18.0
Changed
- Breaking — monitor output defaults: bare
peerhub monitornow renders a group-aware
visual dashboard on TTYs and aligned plain sections when redirected. JSON is
explicitly machine-oriented (--json, schema 2.0 by default); the captured
schema 1.1 contract remains available with--schema-version 1.1. The hidden
--legacyalias is deprecated through 0.18.x and will be removed in 0.19.0.
Existing schema 1.1 scripts should use--json --schema-version 1.1explicitly. - Monitor group selection, catalog, defaults, snapshot behavior, and provider
collection cadence are unchanged.