using-gc · git:20260729.a635979 · 2026-07-29 · sha256 a85dd0fea3415ca2
using-gc git:20260729.a635979A
Immutable. This exact content is served forever at /api/v1/blob/a85dd0fea3415ca2.
--- name: using-gc description: 'Operate a caller-selected Gas City 1.4 through run-centered, registry-aware native surfaces while keeping GC runtime state out of AgentOps verdicts. Triggers: "using gc", "gas city", "drive the mayor", "dispatch through gc".' practices: [team-topologies, design-by-contract] hexagonal_role: driving-adapter consumes: [explicit-packets] produces: [gas-city-runtime-evidence] context_rel: - kind: partnership with: agent-native skill_api_version: 1 user-invocable: true metadata: tier: execution dependencies: [] capabilities: [dispatch_explicit_packet, observe_gc_runtime, inspect_pack_registries, drive_mayor_door] effects: [operate_gas_city, configure_codex_trust] canonical_status: canonical disposition: keep_optional_adapter output_contract: runtime evidence per supplied packet --- # Using GC Use Gas City only when the caller explicitly selects it. Treat it as a replaceable execution adapter, not a correctness or completion boundary. ## Gas City 1.4 operating model Gas City 1.4 is run-centered. The supervisor serves the dashboard and typed, paginated session/run APIs. Every graph-owning city or rig scope needs its own `core.control-dispatcher`; that deterministic worker advances formula control beads. Agent workers claim routed work. The optional AgentOps Mayor is an on-demand human/agent door for status and one manual dispatch, not a polling control plane. The normal AgentOps path is: 1. `invoke.sh --city C create "<title>" -d "<acceptance>"` writes one caller-owned source bead. 2. `invoke.sh --city C feed <bead-id>` homes it in the rig and starts the native `agentops-experiment` formula. `gc sling` returns a run id and dashboard deep link. 3. `invoke.sh --city C dashboard` prints the embedded supervisor dashboard URL. 4. Read run, session, bead, and verdict state. Completion is never inferred from chat or pane prose. The Mayor remains available when explicitly useful: ```sh invoke.sh --city C mayor start invoke.sh --city C mayor status invoke.sh --city C mayor tell "dispatch <bead-id>" ``` Hand it bead ids only. It never authors or claims work. ## Packs and registries The built-in `main` registry catalogs official packs. The community registry is optional configuration: ```sh gc pack registry list gc pack registry refresh gc pack registry search --all gc pack registry show main:gascity gc pack registry add community https://registry.gascity.com/registry.toml gc pack registry search --registry community --all ``` `search` reads the local registry cache; `show` reports release provenance and exact import commands. `gc import add` declares a source/version, and `gc import install` resolves it into `packs.lock`. Prefer an exact accepted release for reproducible cities. AgentOps composes the official `gascity` 0.1.6 workflow at commit `3b3b89f2011e06d84459aa7bea1552382f13930a`, plus its rig roles. This is the workflow family visible in the public Maintainer City factory: - dashboard: `https://factory.gascity.com`; - official roles, bound at the stock default-rig namespace: `gc.run-operator` and `gc.implementation-worker`; - scope-local formula control: `core.control-dispatcher`; - production formulas including `do-work`, build, review, issue, and PR flows. The workflow pack is composed into `agentops-factory`; its sibling role pack is instead imported as `defaults.rig.imports.gc`. Keep that split: nesting the roles inside `agentops-factory` renames them to `agentops.*`, while the stock formulas still target `gc.*`. AgentOps keeps `agentops-experiment` as its bounded default. The imported pack is compositional access to upstream workflows, not permission to replace the AgentOps verdict boundary. ## Upgrade an existing city to 1.4 Before starting its orchestrator, run once per city: ```sh gc doctor --fix gc import install gc supervisor stop --wait # macOS when an older direct supervisor remains gc start ``` Then confirm: - `gc version` reports `1.4.0` from the intended path; - `gc doctor` has no blocking failures; - each graph-owning rig has an unsuspended `core.control-dispatcher`; - imports and `packs.lock` resolve; - old standalone-dashboard bookmarks or reverse proxies are removed. A stale registered city may block every start. Repair that city with `gc doctor --fix`, or explicitly unregister it if it is intentionally retired. Retire an old HQ/canary by exact registered name or path, without stopping the machine-wide supervisor needed by its replacement: ```sh gc cities --json gc stop /path/to/old-city --timeout 45s gc unregister /path/to/old-city gc cities --json ``` `unregister` fails rather than silently accepting an unknown target. Preserve the city directory until its Beads state is backed up or confirmed disposable. Then use `deploy/gc/bootstrap.sh ... --start` for the new city and verify it with `gc cities --json`, `gc --city <new-city> status`, and `gc --city <new-city> doctor --json`. ## Stall protocol First classify the bead. - Still `ready`: dispatch it once to its `gc.run_target`, then stop and inspect. - Already routed/in progress: re-slinging is a **NO-OP**. Wake its owning worker once: ```sh gc session wake <run_target> ``` Then capture the exact tmux pane named by session state and run `gc doctor`. Never repair a city from inside that city. ## Visibility: four layers 1. **Supervisor/run state** — `gc dashboard`, run detail, `gc status`, and `gc session list --json`. Run detail unifies the stage ladder, structured transcripts, token rate, and estimated burn rate. A roster may still report active while a provider is wedged. 2. **Bead graph** — `gc bd --rig <rig> ready --json` and `show <id> --json`. This is workflow-state truth, but a claimed bead cannot reveal a wedged pane. 3. **Pane truth** — `tmux -L <socket> capture-pane -pt <session>`. This exposes trust prompts, update nags, API/DNS failures, and interactive wedges. 4. **Health machinery** — `gc doctor`, `gc order history`, storage health, and events. This proves metabolism, not semantic acceptance. When layers disagree, trust the more direct observation: pane over roster for a session wedge, bead/run state over prose for workflow completion. ## Boundaries - GC quests, runs, attempts, stalls, cancellations, and internal close state stay in GC. They never become AgentOps Plan, Candidate, RPI, or verdict state. - A GC close or completed run is not AgentOps completion. Only a fresh Validate context issues the semantic result or, when requested, persists `verdict.v2`. - This skill performs no automatic selection, retry, semantic validation, Git, integration, closure, release, or delivery.