github gastownhall/gascity v1.0.0-rc2

latest releases: v1.1.0, v1.0.0
pre-release28 days ago

Highlights

Gas City 1.0 is the project's first major release. Compared to v0.15.1, this release carries 610 commits across 1,273 files with 303,902 insertions and 46,437 deletions. It is the point where the project stops being a narrow hotfix line and becomes a coherent 1.0 platform: a unified session/runtime model, completed Pack V2 and bootstrap-pack architecture, a typed supervisor API with regenerated client and restored dashboard SPA, provider-native MCP projection, a finished gc import launch path, and a wide reliability/quality sweep across the runtime, beads, orders, config, and provider layers.

If v0.15.1 was about getting skill materialization right, v1.0.0 is about stabilizing the city model, pack/import contract, operator surface, and runtime lifecycle as a whole.

Upgrade Notes

  • This release includes structural changes well beyond the v0.15.x hotfix scope. Read the Pack V2, import, and tutorial docs before upgrading long-lived cities.
  • gc init is back on the pack-first scaffold contract. Agent and named-session definitions belong in pack.toml; machine-local identity stays in .gc/site.toml; city.toml keeps workspace/provider state.
  • Pack V2 is the active layout. Bundled packs now use [imports.<name>], and builtin behavior is provided by system packs instead of city-local seeded copies.
  • New cities are no longer seeded with legacy city-local formulas/, prompts/, or bootstrap orders/beads-health.toml. Core formulas, prompts, and orders now come from the builtin core pack.
  • gc import install is now the explicit bootstrap path for importable packs, and legacy implicit bootstrap/registry artifacts were retired in favor of system packs.
  • gc session logs --tail N now behaves like Unix tail -n and returns the last N entries rather than the old compaction-oriented behavior.
  • gc prime --strict is available for prompt/agent debugging and turns silent fallback paths into explicit CLI failures.
  • gc reload [path] is available for structured live config reloads. Invalid or lifecycle-failing reloads keep the previous runtime config active and surface warnings instead of silently degrading.
  • Managed Dolt, tutorial flows, and cross-platform portability received substantial hardening late in the 1.0 cycle. If you tested earlier main snapshots, especially on macOS, retest against the final 1.0 cut rather than relying on earlier pre-release behavior.

Session Model and Agent Lifecycle

  • Completed the session model unification work (#666), separating declarative [[agent]] policy/config from runtime session identity and using session beads as the canonical runtime projection.
  • Tightened named-session, fresh-wake, and resume semantics so session demand, wake context, startup metadata, and handoff boundaries survive restarts and controller churn more predictably.
  • Added and hardened startup proofs for hook-enabled providers (#981), including correct startup prompt delivery, no duplicate SessionStart hook context, no replay of startup prompts on resumed sessions, and upgrades for previously generated Claude settings.
  • Added rig adopt (#972) and continued cleaning up root-city/imported named-session behavior, bare-name attach compatibility, pool identity, and session reservation edge cases.
  • Fixed stale and duplicate session-state edge cases across the runtime: stale session-bead reaping (#752), session identity hardening, wake budget fixes (#818), session-demand freshness, bare/qualified identifier coexistence, and root-city imported named-session handling.
  • Corrected gc session logs --tail semantics (#1023) so tutorial and operator usage now match the common expectation of “show me the last N entries”.
  • Hardened session delivery and visibility paths: Discord-bound delivery edge cases, session pane origin handling, startup matcher behavior, wake/interaction cleanup error surfacing, and resumed-session startup boundaries.
  • Continued tightening the session-facing CLI and API surfaces with direct regression coverage for session-agent handlers, wait/nudge paths, and wake/reconcile behavior.

Pack V2, Imports, and Bootstrap Core

  • Completed the main Pack V2 cleanup (#809) and follow-up sweep (#817): bundled packs moved to the new layout, builtins were consolidated into internal/bootstrap/packs/core, and V1-era pack artifacts were retired.
  • Moved builtin formulas, prompts, hooks, and orders into the builtin core pack, and continued tightening the contract that builtin packs are materialized before config loads in init, start, supervisor, registration, sling, and config command paths (#1059).
  • Finished the gc import launch backlog (#949): explicit bootstrap via gc import install, Pack V2 default-rig imports, rig-scoped import authoring, better graph/help UX, tighter root-pack validation, and selective-upgrade convergence for deep/shared transitive dependency chains.
  • Preserved root-pack and default-rig import order through gc import add/remove, hardened import cache validation, and kept Pack V2 naming/binding behavior authoritative on main.
  • Restored and re-hardened the pack-first scaffold contract for gc init --provider ... (#892, #1022), including correct prompt-template rewriting and keeping workspace identity machine-local in .gc/site.toml.
  • Removed obsolete init-era materialization paths and duplicate script seeding, so the generated city layout now matches the Pack V2 bootstrap model rather than carrying dead compatibility scaffolding (#1059).
  • Improved imported pack visibility across commands, formulas, and skills: imported pack skills are surfaced correctly (#901), rig pack command discovery works through imports/includes (#888), and imported pack formula visibility has direct regression coverage (#979).
  • Tightened Pack V2 ergonomics with fixes for pack doctor scripts (#957), config-ref false positives (#829), naming/warning cleanup (#856), schema 2 validation/watch coverage, pack description metadata, and multiple-path gc rig add --include handling.
  • Added per-agent append_fragments support (#1047) and kept migration/OpenAPI/schema/client artifacts in sync so prompt layering stays configurable through the supported config/migration paths.

API, Dashboard, CLI, and Integrations

  • Migrated the supervisor API to Huma/OpenAPI and restored the dashboard SPA (#877), giving the project a typed API-first control plane with regenerated Go client bindings and cleaner dashboard/server contract alignment.
  • Continued hardening the API layer with typed health handling, worker API follow-ups (#944), event-type passthrough, blocking-parameter parsing fixes, formula preview/test sync, and better controller messaging surfaces (#890).
  • Added provider-native MCP projection for Claude, Codex, and Gemini (#867), including multi-layer catalog resolution across city/rig/import/bootstrap/agent-local scopes, projected-only gc mcp list, MCP doctor checks, restart fingerprints, and ownership/cleanup rules for projected provider files.
  • Added gc reload (#933) with sync-by-default behavior, --async, explicit outcomes/warnings, controller request/reply plumbing, and lifecycle-safe failure semantics that leave the previous runtime config in place when a reload fails.
  • Added gc prime --strict (#704) to make prompt/agent-resolution debugging explicit rather than silently falling back to generic output on typos or missing config.
  • Improved status/operator surfaces with the Wave 1 runtime command work (#959), new city-status snapshot/rendering helpers, better provider-aware status/store reuse, cleaner probe/status error surfacing, and follow-up noise reduction for new cities.
  • Tightened gc doctor and runtime diagnostics with split-store work (#934), stronger config validation, import/bootstrap checks, and direct regression coverage for the operator paths that were historically silent or flaky.
  • Kept the CLI/docs/tutorial contract aligned through updated init/session/tutorial help, import guidance, config docs, and generated artifacts staying in sync with the actual API/config schema.

Workflow, Orders, Formulas, and Beads

  • Delivered a major Wave 1 pass over orders and dispatch runtime (#1002), strengthening store resolution, dispatch surfaces, rig-aware execution paths, and the test/verifier coverage around those flows.
  • Renamed order “gates” to triggers (#886) and continued cleaning up order dispatch/store routing so rig-scoped and provider-aware execution paths resolve to the correct backing stores.
  • Delivered the beads storage core quality pass (#1020), improving cache recovery, close-all fallback semantics, watchdog reconciliation cadence, dirty-cache fallback reads, and empty-list handling for bootstrap/fake-bd flows.
  • Limited where live reads are required versus where cached reads are acceptable (#1046), keeping lifecycle-sensitive ownership/ready paths fresh without sacrificing hot-list performance everywhere else.
  • Fixed graph/formula routing semantics in the RC gate (#1045): formulas now require explicit contract = "graph.v2" before graph semantics apply, legacy v1 attachments stay on the old molecule_id flow, and internal molecule steps remain private for v1 attached formulas.
  • Continued landing formula and workflow correctness fixes: Formula V2 error handling (#734), legacy gc.routed_to stamping for [[steps]], rig-scope gc formula cook/show, jq filter fixes for bd show --json, and acceptance coverage for graph success/failure paths.
  • Promoted bugflow from proposal to supported workflow (#888, #931) and improved adjacent review/polecat paths such as existing-PR reuse (#904) and review-check/test fixture recovery.
  • Improved patrol, messaging, and dispatch behavior with fixes for recurring singleton patrols, worker/controller messaging, ready-query template expansion, and better tracing around skipped or blocked dispatch/control-bead cases.

Runtime, Providers, and Managed Dolt

  • Delivered the Wave 1 runtime provider core pass (#988), extracting shared provider-core helpers, normalizing backend merge behavior, surfacing readiness details explicitly, and strengthening staging/start/stop/list handling across ACP, subprocess, hybrid, and exec providers.
  • Hardened provider configuration and inheritance: custom provider option-default validation now fails early instead of silently degrading (#971), provider inheritance behavior was fixed (#956), and custom-type convergence/launchd locale propagation bugs were addressed (#771, #690).
  • Tightened controller/runtime/supervisor seams with Wave 1 work across controller city runtime (#993), supervisor daemon registry lifecycle (#978), runtime command surfaces (#959), and session lifecycle (#967).
  • Stabilized managed Dolt and the beads/Dolt contract (#790, #937, #808, #951, #976), improving recovery, transient failure handling, health probes, port/runtime-state validation, and operator error reporting.
  • Fixed a series of RC/tutorial/macOS managed-Dolt regressions at the end of the cycle: helper start-lock fd inheritance (#1061), path canonicalization and symlink equivalence (#1066), inconclusive lsof reachability handling (#1073), cross-platform PID confirmation (#1074), and portable sed parsing of runtime state (#1076).
  • Updated maintenance and example-city shell paths so exec-driven maintenance scripts discover the actual managed Dolt port rather than falling back to stale defaults (#1031).
  • Fixed a high-severity Pack V2/tmux startup regression (#1037) where large prompt launches could silently fall back to the known-broken inline path and die with File name too long.
  • Hardened startup and reconciliation behavior around pool/session identity, env sanitization, restart waits, probe races, and controller timing so runtime surfaces fail explicitly rather than silently degrading.

Quality, Security, CI, and Release Hardening

  • Ran a broad Wave 1 architectural quality pass across config core and validation (#971), session lifecycle (#967), supervisor registry (#978), runtime provider core (#988), controller city runtime (#993), runtime command surfaces (#959), orders/dispatch (#1002), and beads storage core (#1020).
  • Made macOS a first-class CI target (#769) with a self-hosted ARM64 setup action and Linux-equivalent quality/unit/acceptance/integration coverage under the needs-mac and nightly gates.
  • Closed out major RC-gate and tutorial regressions late in the cycle (#981, #986, #1045, #1067), especially around tutorial correctness, communication visibility, formula routing, managed Dolt portability, and fast-clock/macOS flake classes.
  • Reduced flake rate with targeted fixes for provider-readiness tests, rest/integration shards, worker-api tests, review-check fixtures, CI runtime, root-city command coverage, and managed-Dolt probe behavior.
  • Landed security follow-ups that close remaining alerts and harden post-security checks (#987, #996) instead of deferring those fixes to post-1.0 cleanup.
  • Kept docs and examples aligned with the real runtime contract: tutorial layout fixes, migration guide cleanup, prompt/formula guidance updates, generated schema/client/doc sync, and more explicit operator-facing help text.

Contributors

For v1.0.0, we are crediting all GitHub contributors to the project to date, not just contributors between v0.15.1 and the release candidate cut.

All-time project contributors:
@alexsiri7, @austinborn, @boylec, @bryanhirsch, @claude, @csells, @cwalv, @donbox, @EliezerIsrael, @EmmittJ, @ericfode, @Ethee, @GraemeF, @gunabot, @jakehemmerle, @julianknutsen, @KalleBylin, @maphew, @michael-barker, @mk-imagine, @myster-t, @nikrich, @osamu2001, @phatblat, @quad341, @quietlathe2048, @rainydan, @rileywhite, @Rome-1, @sjarmak, @spralle, @stebbins, @steveyegge, @stuartparmenter, @thejosephstevens, @trillium, @wierdbytes, @wynged

Automation contributors:
@dependabot[bot], @renovate[bot]

Recommended Reading

Full Changelog: v0.15.1...v1.0.0-rc2

Don't miss a new gascity release

NewReleases is sending notifications on new releases.