Skip to content

David/csells port fix#79

Open
davidmiuraactualai wants to merge 38 commits into
csells/port-to-packs-v2from
david/csells_port_fix
Open

David/csells port fix#79
davidmiuraactualai wants to merge 38 commits into
csells/port-to-packs-v2from
david/csells_port_fix

Conversation

@davidmiuraactualai

Copy link
Copy Markdown
Contributor

No description provided.

davidmiuraactualai and others added 30 commits April 16, 2026 13:48
* Fix rigs

* Update rigs
* Add sling

* Cleanup

* Remove old structure
* Add sling

* Cleanup

* Remove old structure

* Add factory_activity_agent LLM skill for activity lifecycle and gc CLI operations

Wraps scripts/factory_activity_agent.py and gc CLI v0.14.1 as a Claude Code / Codex
skill with install/delete/status/doctor/diagnose commands, gc quick reference,
activity map, troubleshooting guide, and installation instructions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Rename factory_activity_agent skill to factory-activity-agent

Skill names may only contain lowercase letters, numbers, and hyphens.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add skill and factory_activity_agent

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move prerequisites baseline factory setup into activities/ following the
same pattern as labs (L2) and workshops (W2). Copies all packs to
B1/gascity/step_0/packs/. Preserves prerequisites/ and packs/ dirs.

Also includes factory-activity-agent skill updates.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…44)

* Fold PROMPT.md facilitation into session READMEs (#16)

Removes the 9 sister PROMPT.md files (W1-W4, L1-L4, C1) and folds
their facilitation guidance inline into each session's README as a
new "Agent Facilitation Guide" section. The guide is additive — the
step-by-step walkthrough is unchanged; the guide activates only when
a participant asks an AI agent to walk them through the session.

Each guide includes session-specific guiding questions keyed to
pivotal steps, core concepts the participant must articulate before
moving on, project-type tailoring, config-discipline checkpoints,
and an exit-criteria check.

Also updates stale PROMPT.md references in the root README,
curriculum/README, and three spots inside W1/README.

* Simplify Project Overview to 5 focused questions (#17)

Rewrites the Project Overview template and the Fired Up Pizza
reference overview around the five questions specified in the issue:
what it does, goals & success criteria, scope & constraints, key
roles & users, and domain context.

Removes the Size/Type/Languages/Resource-Constraints section and the
SDLC Service Integrations inventory from the template — those belong
in the Project Manifest (structured) rather than the Overview (brief).

The Overview is the first thing a participant writes, so less
scaffolding means more energy left for actual thinking.

* Add Community & Support section with Slack links (#19)

Points participants to the Actual AI User Community Slack workspace
and the #sfi-help-desk channel for real-time curriculum support.
Placed near the top of the README so participants see it when they
hit a blocker, not buried at the bottom.

* Consolidate prerequisites and system requirements in README (#20, #26)

Resolves #20: makes prerequisites and quickstart easier to find —
System Requirements (OS, CLI coding agents) are spelled out on the
main README, and the README now links directly to the Gas City
Installation Guide and the in-repo Quickstart.

Resolves #26: removes the separate installation.md in favor of the
single Gas City Installation Guide link, and eliminates the duplicate
my-factory/PROJECT_MANIFEST.md (the template in curriculum/ is the
source of truth).

Also moves PROJECT_OVERVIEW_TEMPLATE.md to the repo root for
discoverability and trims the README's Integrations / Getting Started
tails into a concise "Next Steps" pointer to W1.

* Interleave Agent Guide callouts with participant steps

Replaces the standalone "Agent Facilitation Guide" section at the top
of each session README with inline "> **Agent Guide:** ..." callouts
placed at the steps they apply to. Each README now has:

- A short preamble telling an agent to look for the inline callouts.
- Agent Guide callouts at pivotal steps — guiding questions to ask,
  anti-patterns to flag, config-discipline checkpoints.
- A "Concept Check" block just before the Exit Criteria with the core
  ideas the participant must articulate before moving on.

Brittle "Before Step 2.1" cross-references are gone; each guide now
lives next to the step it modifies. A solo participant can ignore
the callouts; an agent walking the README gets the right prompt at
the right moment.

Covers W1–W4, L1–L4, C1. Also updates the 3 outward-facing pointers
(root README, curriculum/README, W1's "Using Your Local Agent"
section) to describe the new shape.
* Add skill install instructions

* add start here
Fills in the previously-empty "Scrolling in a tmux session acts as
mousekey input" section with a prose explanation of the alternate
screen buffer root cause, an annotated screenshot of Terminal's
Profiles -> Keyboard pane with the "Scroll alternate screen"
checkbox highlighted, and the step-by-step fix.

Refs: sfi-yke
* Order agents

* Prep w3

* Order agents 2

* Update w3

* scope improver, fixes

* Works

* feat: bake actual-skill into designer & improver packs, fix --no-tailor

- Vendor actual-skill (SKILL.md + references + scripts) into designer
  and improver pack overlays
- Add actual-adr-sync formula step to mol-design-cycle (after a11y-check)
  and mol-feedback-harvest (after propose)
- Fix architect's broken actual-adr-sync step: add --no-tailor flag to
  all actual adr-bot commands (claude-cli runner hangs inside agent sessions)
- Update designer, improver, and architect prompt templates with
  actual-skill section and --no-tailor instructions
- Add actual CLI warning to designer and improver doctor checks
- Update AGENT_PACK.md to reflect 5 packs vendoring the skill

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: make actual-adr-sync MANDATORY in all agent work loops

The architect was silently skipping the ADR sync step because the
prompt work loop said "if available, skip gracefully" — too soft.
Changed all three prompts (architect, designer, improver) to use
"MANDATORY" language with explicit bash commands inline, matching
the formula step's enforcement level.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Use mail send

* Fix install remove session cleanup and bead cleanup

* fix: remove redundant gc restart that causes config-drift

The install script ran gc start then gc restart back-to-back.
gc restart does unregister/register which changes the config hash,
immediately draining sessions that gc start just spawned. Now uses
gc stop → gc start only.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* Rename needs-plan label to needs-pm in W3 PM pack

The PM routing label now follows the agent-naming convention used by
other packs (needs-design, needs-architecture, etc.) — identifying
the target agent rather than the action.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add W3 Fired Up Pizza project manifest

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add W1

* add w1

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* Update instructions

* Update instructions

* Update instructions
* Fix W1 city.toml: add command to providers.claude so claude-personal2 is used

The workspace-level start_command escape hatch in gc is only reached when
no provider name is resolved. Since provider = "claude" was already set,
start_command = "claude-personal2" was silently ignored at runtime. The
fix is to set command = "claude-personal2" inside [providers.claude] so
the resolved provider spec points to the correct binary.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add supervisor agents (deacon/witness) and fix worker pool config for W1 factory

- Port gastown deacon (city-scoped) and witness (rig-scoped) as supervisor pack
  with named_session mode=always so they stay alive to route work
- Add deacon routing table: dispatches labelled beads via gc sling to correct agent
- Add witness orphan recovery: resets in_progress beads with no active session
- Add mol-deacon-patrol and mol-witness-patrol formulas
- Fix all 9 worker packs: min_active_sessions 1→0, max_active_sessions 2→1
  (with min=1, gc reconciler won't inject formulas via order gate)
- Add work_query per agent so gc hook --inject finds the right beads by label
- Include supervisor pack in all/pack.toml

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix work_query overrides and deacon template vars

- Remove work_query overrides from 7 worker packs: label-based queries
  break formula wisp pickup; default gc.routed_to query is correct
- Fix deacon prompt: city-scoped agent has no .RigName; discover rig
  dynamically via gc config at runtime instead

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add named_session on_demand to worker agents to enable auto-start

Pool agents with min_active_sessions=0 require scale_check to create new
sessions; work_query only wakes existing sessions. Named sessions with
mode=on_demand auto-create when work_query detects pending work (via
gc.routed_to metadata matching). This is the correct pattern for
on-demand singleton agents that self-start when sling routes them work.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix W1 factory agent wakeup: work_query, order gates, supervisor, deployer

- Add work_query to all 8 worker agent named_sessions so on_demand sessions
  auto-start when labeled beads exist in the rig db (gc bd --rig {{.Rig}} list)
- Fix order gate conditions: replace bd ready | grep -q . (always true) with
  rig-aware check using $GC_RIG env var and jq -e 'length > 0'
- Set min_active_sessions=0 on all worker agents
- Port deacon+witness supervisor pattern from gastown to W1
- Add needs-deploy route to deacon patrol; fix flood-sling with --no-assignee
  filter and --assignee post-sling to prevent re-dispatch
- Add deployer pack with complete agent config, order gate, and 3-step formula
- Fix factory_activity_agent.py initial bead: use gc bd --rig create --label
  instead of gc sling (sling has no --label flag)
- Fix START_HERE.md send-task command to use gc bd --rig create --label

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix planner handoff: make needs-architecture mandatory, no skipping to pm

The planner was routing directly to pm for 'simple' tasks due to 'and/or'
language in the handoff step. Every task must go through architect — the
architect decides all downstream routing, not the planner.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Enforce architect→designer→pm routing: no skipping stages

Architect handoff: always routes to needs-design, never needs-pm.
Routing rule added explicitly — architect owns architecture only.

Designer formula: add triage step as first step to assess whether
UI/UX design is actually needed.
- No design needed: fast-path directly to needs-pm child bead + close root
- Design needed: proceed through wireframe/a11y, then create needs-pm
  child beads (not relabel root) for resulting implementation work

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add mol-tdd-build formula: polecat pattern + red/green TDD for W1 builder

- New mol-tdd-build.formula.toml: 7-step formula (load-context,
  workspace-setup, preflight, red, green, self-review, submit-and-exit)
- Worktree isolation + feature branch per task (builder/<bead-id>)
- Hard gates: RED must fail, GREEN must pass before proceeding
- Rejection-aware resume via metadata.work_dir/branch
- gc runtime drain-ack self-terminates after submit
- Deacon route-ready-to-build now uses --on mol-tdd-build

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix mol-deacon-patrol schema and installer custom type registration

- mol-deacon-patrol.formula.toml: name→formula, prompt→description,
  add title to all steps, add version=1 (deacon had to self-fix at runtime)
- factory_activity_agent.py: replace manual convoy patch with gc doctor --fix
  to register all 11 required custom types (molecule, session, convoy, etc.)
  Missing types blocked on_demand session creation after install

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Set default claude:

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* Fix W1 city.toml: add command to providers.claude so claude-personal2 is used

The workspace-level start_command escape hatch in gc is only reached when
no provider name is resolved. Since provider = "claude" was already set,
start_command = "claude-personal2" was silently ignored at runtime. The
fix is to set command = "claude-personal2" inside [providers.claude] so
the resolved provider spec points to the correct binary.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add supervisor agents (deacon/witness) and fix worker pool config for W1 factory

- Port gastown deacon (city-scoped) and witness (rig-scoped) as supervisor pack
  with named_session mode=always so they stay alive to route work
- Add deacon routing table: dispatches labelled beads via gc sling to correct agent
- Add witness orphan recovery: resets in_progress beads with no active session
- Add mol-deacon-patrol and mol-witness-patrol formulas
- Fix all 9 worker packs: min_active_sessions 1→0, max_active_sessions 2→1
  (with min=1, gc reconciler won't inject formulas via order gate)
- Add work_query per agent so gc hook --inject finds the right beads by label
- Include supervisor pack in all/pack.toml

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix work_query overrides and deacon template vars

- Remove work_query overrides from 7 worker packs: label-based queries
  break formula wisp pickup; default gc.routed_to query is correct
- Fix deacon prompt: city-scoped agent has no .RigName; discover rig
  dynamically via gc config at runtime instead

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add named_session on_demand to worker agents to enable auto-start

Pool agents with min_active_sessions=0 require scale_check to create new
sessions; work_query only wakes existing sessions. Named sessions with
mode=on_demand auto-create when work_query detects pending work (via
gc.routed_to metadata matching). This is the correct pattern for
on-demand singleton agents that self-start when sling routes them work.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix W1 factory agent wakeup: work_query, order gates, supervisor, deployer

- Add work_query to all 8 worker agent named_sessions so on_demand sessions
  auto-start when labeled beads exist in the rig db (gc bd --rig {{.Rig}} list)
- Fix order gate conditions: replace bd ready | grep -q . (always true) with
  rig-aware check using $GC_RIG env var and jq -e 'length > 0'
- Set min_active_sessions=0 on all worker agents
- Port deacon+witness supervisor pattern from gastown to W1
- Add needs-deploy route to deacon patrol; fix flood-sling with --no-assignee
  filter and --assignee post-sling to prevent re-dispatch
- Add deployer pack with complete agent config, order gate, and 3-step formula
- Fix factory_activity_agent.py initial bead: use gc bd --rig create --label
  instead of gc sling (sling has no --label flag)
- Fix START_HERE.md send-task command to use gc bd --rig create --label

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix planner handoff: make needs-architecture mandatory, no skipping to pm

The planner was routing directly to pm for 'simple' tasks due to 'and/or'
language in the handoff step. Every task must go through architect — the
architect decides all downstream routing, not the planner.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Enforce architect→designer→pm routing: no skipping stages

Architect handoff: always routes to needs-design, never needs-pm.
Routing rule added explicitly — architect owns architecture only.

Designer formula: add triage step as first step to assess whether
UI/UX design is actually needed.
- No design needed: fast-path directly to needs-pm child bead + close root
- Design needed: proceed through wireframe/a11y, then create needs-pm
  child beads (not relabel root) for resulting implementation work

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add mol-tdd-build formula: polecat pattern + red/green TDD for W1 builder

- New mol-tdd-build.formula.toml: 7-step formula (load-context,
  workspace-setup, preflight, red, green, self-review, submit-and-exit)
- Worktree isolation + feature branch per task (builder/<bead-id>)
- Hard gates: RED must fail, GREEN must pass before proceeding
- Rejection-aware resume via metadata.work_dir/branch
- gc runtime drain-ack self-terminates after submit
- Deacon route-ready-to-build now uses --on mol-tdd-build

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix mol-deacon-patrol schema and installer custom type registration

- mol-deacon-patrol.formula.toml: name→formula, prompt→description,
  add title to all steps, add version=1 (deacon had to self-fix at runtime)
- factory_activity_agent.py: replace manual convoy patch with gc doctor --fix
  to register all 11 required custom types (molecule, session, convoy, etc.)
  Missing types blocked on_demand session creation after install

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Set default claude:

* Upgrade W1 architect to produce formal architecture documents

- Expand design step template to 12 sections: requirements, constraints,
  framework, libraries, erDiagram data model, flowchart use cases,
  autonumber sequence diagrams with per-step prose, security, integrations,
  risks, and trade-offs
- All Mermaid diagrams use VS Code-renderable syntax; sequence diagrams
  require autonumber and a numbered prose legend after each diagram
- Update architect.md.tmpl work loop to enumerate all new sections

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix W1 architect handoff: route to designer, use full agent path

- Change needs-pm → needs-design so architect routes to designer
  (matching the mol-architect-review formula's ROUTING RULE)
- Change gc.routed_to to /designer
- Use {{.Rig}}/designer (full path) instead of bare "pm" to avoid
  ambiguous ID errors when gc mail send resolves the recipient

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Wire W1 builder to mol-tdd-build (polecat pattern)

- Change builder intake order gate from mol-build-from-spec → mol-tdd-build
- Add explicit instruction in builder prompt: always use mol-tdd-build,
  pour one if no molecule is present on the bead

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* Complete workshop v2 with agent hook

* Add .gitkeep overlay for all agents in packs

* Reorganize troubleshooting and polish curriculum presentation

Troubleshooting is now a topic-scoped directory so a facilitator can
share a single link when a participant says "I'm having trouble with X":

- Split TROUBLESHOOTING.md into troubleshooting/{README,gas-city,
  cli-coding-agents,beads,tmux}.md. Each issue is written
  Symptom / Cause / Fix under a stable ## Issue: heading so anchors
  like gas-city.md#issue-gc-dashboard-serve-fails-with-address-already-in-use
  are easy to link.
- cli-coding-agents.md covers both slash-command/skill-install failures
  and the multi-account workflow from prerequisites/coding_agent_switcher.md,
  with API billing (ANTHROPIC_API_KEY / OPENAI_API_KEY / GEMINI_API_KEY)
  as the recommended quota-exhaustion fix and aisw account switching as
  the subscription-only alternative.
- Repo README.md and W1 guide repointed at the new directory.

Curriculum polish:

- Extracted the factory-activity-agent installation + command reference
  out of W1 into docs/factory-activity-agent-commands.md so every W/L
  session can link to one canonical page.
- W1 guide: rewrote the session opener as an Overview, gave each Part
  a Goal line, and delegated the command reference to docs/.
- L1-L4, W2-W4, C1 READMEs: removed "Agent Guide" sidebars and renamed
  "Inline Insight" to "Insight" for consistency; trimmed a few insight
  boxes whose content had aged out.
- Repo README.md: promoted the Improver to a full 7th-role row in the
  agent table rather than a trailing sidebar note.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Update top-level goals for curriculum and add ticket import script for W1

* Update goals on all curriculum guides, and add docs/ copying to installation script

* Update WORKSHOP_1_GUIDE.md language and steps

* Improve language around beads and its use as the task layer

* Be consistent about + and & usage

* Update W1 and perform some repo cleanup

* Update time estimates to more precise figures

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Add Excalidraw MCP integration to W1 designer agent

Replaces ASCII art wireframes with visual Excalidraw diagrams in the W1
designer pack. Adds excalidraw-mcp server via overlay .mcp.json, an
excalidraw-diagrams skill, updated prompt/formula, prerequisites doc,
doctor checks, and a TDD test suite (11 tests, all green).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix Excalidraw binary names and verification

- excalidraw-export-cli installs as `excalidraw-export` (not `excalidraw-export-cli`)
- excalidraw-mcp hangs on --version (MCP stdio server); use command -v to verify
- No Homebrew formula; npm is the only install method
- Update all references: settings.json permission, skill, formula, prompt, doctor, tests

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix W1 agent gates and named session demand detection

Three bugs prevented agents from auto-starting when labeled beads appeared:

1. order.toml check: `$GC_RIG` is not injected by gc into gate condition
   subprocess envs, and `{{.Rig}}` is not template-interpolated in check
   commands. Replaced both with the hardcoded rig name `w1-project`.

2. named_session work_query: `work_query` was in the [[named_session]] TOML
   block, but NamedSession struct has no such field — silently ignored by the
   TOML parser. Moved to [[agent]] block where Agent.WorkQuery is defined.

3. work_query format: the jq-pipe-to-/dev/null pattern (`| jq -e 'length > 0'
   > /dev/null 2>&1`) suppresses all stdout. The reconciler's
   workQueryHasReadyWork() needs the raw JSON array from bd, not an exit code.
   Removed the jq pipe so bd --json output flows to stdout.

Also switches city.toml provider command from `claude` to `claude-personal2`
to match the user's multi-account setup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Set default claude

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* Add codex provider support to W1 gascity packs (TDD)

- Register [providers.codex] in city.toml with command="codex" and
  default options (permission_mode=unrestricted, effort=xhigh)
- Add workspace.install_agent_hooks=["claude","codex"] so hook files
  are installed for both providers without per-pack changes
- Remove claude-specific option_defaults.model="opus" from architect
  agent; model defaults now live in [providers.*] in city.toml
- Add tests/test_codex_support.py (6 tests, red/green TDD)

Switching the factory to codex is now one line in city.toml:
  provider = "claude"  →  provider = "codex"

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add city.toml config

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* Remove Agent Guide callouts from curriculum guides

Strips the `> **Agent Guide:** ...` blockquote callouts from all workshop, lab, and capstone guides so the participant-facing material reads without agent-facing coaching asides.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Rewrite W2–W4, L1–L4, C1 guides + seed W1 reference source

- Install script (scripts/factory_activity_agent.py): on W1 install, seed
  the project workspace with the reference Fired Up Pizza source
  scaffold (index.html, package.json, tsconfig.json, src/) so the
  factory plans and builds against an existing codebase. Factory output
  artifacts (work-packages/, docs/adr/, design/, review-reports/,
  release-gates/, feedback-loops/, DECISIONS.md, etc.) are intentionally
  not seeded.
- W1 agent prompts (planner, architect, designer, builder, reviewer):
  add an "Existing source code" context block describing the seeded
  Vite+React+TypeScript scaffold.
- Curriculum guides (W2, W3, W4, L1, L2, L3, L4, C1) rewritten in the
  W1 style:
  * Framework-agnostic goals and concepts; framework-specific commands
    (`gc`, `bd`) appear only when acting through the framework.
  * "Session workspace note" replaced by "Overview"; "Prerequisites"
    sections removed.
  * Fired Up Pizza references compressed to a single linked `>` block
    per guide.
  * Each session uses `/factory-activity-agent install <X>` and
    carries forward the prior session's artifacts (PROJECT_MANIFEST,
    factory-pipeline, iteration log, work-packages/, docs/adr/, etc.).
  * New content per the session's new goal/deliverable:
    - W2: factory-pipeline.md mapping individual AI workflow onto the
      pipeline
    - W3: four coordination channels (mail, work items, files, external
      services) + install a new channel
    - W4: improvement-criteria.md and one demonstrated improvement loop
    - L1: PROJECT_MANIFEST authoring + Planner input-source wiring
    - L2: Planner + Architect with one skill/CLI capability each
    - L3: Designer + Coder with one MCP each
    - L4: Reviewer + Deployer wired to PROJECT_MANIFEST.md Review
      Standards and Release Criteria
    - C1: end-to-end run on an unfamiliar feature with a run report
      audited against W4 criteria
  * Architecture diagrams refreshed per session.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Fix carry-forward command ordering + add mkdir -p guards

Problems surfaced by a cross-session trace:
- Individual `cp file1 file2` commands ran before any `mkdir -p docs`
  on the destination, and only W1 and W3 install scripts seed `docs/`.
  W4, L1, L3, L4, C1 were left without a docs/ directory at the time
  the first cp ran.
- L1's Option B (`rm -rf l1-project && ln -s your-repo l1-project`)
  destroyed the install scaffold and left the rig registration pointing
  at a nonexistent path. Removed.
- W2's `factory-pipeline.md` was written at workspace root while every
  later session read from `docs/factory-pipeline.md`. Normalised to
  `docs/factory-pipeline.md`.

Fixes:
- W2: `mkdir -p docs && touch docs/factory-pipeline.md`; all in-doc
  references updated to `docs/factory-pipeline.md`.
- L1: removed Option B; added `mkdir -p docs` guards before copies.
- W3: `mkdir -p w3-project/docs` guard (install seeds it today, but
  the guard makes the command robust).
- L2: reordered so bulk `cp -R l1-project/. l2-project/` runs first
  (creates the full tree), then `mkdir -p` + overlay copies of
  `coordination-channels.md` and `PROJECT_MANIFEST.md` from W3.
- L3 & L4: reduced to a single bulk `cp -R <prev>/. <this>/`. The
  bulk copy brings every artifact forward (manifest, work-packages,
  ADRs, design, iteration log, factory-pipeline, coordination-channels,
  source) without ordering hazards.
- W4: `mkdir -p w4-project/docs` before individual copies of
  `factory-iterations.md` and `PROJECT_MANIFEST.md`.
- C1: bulk copy first, then `mkdir -p c1-project/docs` + overlay copy
  of `improvement-criteria.md` from W4.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Update all architecture diagrams

* Move carry-forward into the install script

Participants no longer need to run mkdir/cp/rsync by hand between
sessions.  `/factory-activity-agent install <X>` now auto-copies the
relevant artifacts from prior sessions' project workspaces into the
one being installed.

Install script:
- Added CARRY_FORWARD rules mapping each activity to a list of
  (prior_activity, src_rel, dst_rel) tuples. Empty or trailing-slash
  src_rel means "copy as a directory" (rsync -a src/ dst/); otherwise
  it's a file copy with a `mkdir -p` guard on the destination parent.
- Added carry_forward() that runs the rules. Missing prior-session
  workspaces are skipped with a note rather than failing (participants
  may install out of order).
- Wired into install() between README generation and the sling setup
  task, so the prior session's content (including its README) wins.

Rules per session:
  L1 ← W2   docs/factory-pipeline.md
  W3 ← L1   docs/PROJECT_MANIFEST.md, docs/factory-pipeline.md
  L2 ← L1   bulk
     ← W3   docs/coordination-channels.md, docs/PROJECT_MANIFEST.md
  L3 ← L2   bulk
  L4 ← L3   bulk
  W4 ← L4   docs/factory-iterations.md, docs/PROJECT_MANIFEST.md,
            review-reports/, release-gates/
  C1 ← L4   bulk
     ← W4   docs/improvement-criteria.md

Guide updates:
- Replaced every manual Step-2 "Carry forward" block with a short
  "Confirm X was carried forward" note + an `ls` spot-check.
- C1 gains an explicit Step 3 for mirroring pack customization from
  the L4 *factory* directory (pack prompts live in the factory dir,
  not the project dir, so the carry-forward doesn't cover them).
- L1 keeps its manual `cp -R ~/path/to/your-repo/. l1-project/` step
  — the install can't know where the participant's repo lives.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Seed W4/L1/L3/L4/C1 with W1's pack set so install works for every session

Only W1, W2, W3, L2 shipped with `activities/<X>/gascity/step_0/packs/`,
so `/factory-activity-agent install <X>` fails fast with `Error: Activity
<X> has no gascity packs at ...` for the remaining five sessions. The
new guides all assume install works, so this gap blocks the full
install-per-session flow.

Option A: seed each missing session with a copy of W1's complete pack
set (planner, architect, designer, builder, reviewer, deployer,
validator, improver, supervisor, pm, all) as a generic starting point.
Each session can customise its packs later without pulling a separate
infrastructure change.

Verified by running `python3 scripts/factory_activity_agent.py install
<X> --mode dry-run` for every session — all nine now run to completion
and fire their carry-forward rules.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Reset the title, goals and deliverables back to pre-gen state

* Update brew extract command to include --force

* Updates to WORKSHOP_3_GUIDE.md

* git checkout origin/main -- activities

* Revert changes to factory_activity_agent.py

* Final top-level README updates

* Update slack community section

* Update README cover and shift images/ items

* Update README title

* six-agent -> 6-agent, plus remove README contents for reference project

* Update README activity guide links

* Make C1 unambiguous (remove L5 refs)

* Move PROJECT_MANIFEST_TEMPLATE.md

* Update WORKSHOP_1_GUIDE.md

* WIP W2 updates

* Update skill script to install guides one level higher

* Update WORKSHOP_2_GUIDE.md

* Update LAB_1_GUIDE.md

* Update W2, W3, and L2

* Add runaway loop image

* Add UNDER CONSTRUCTION notes for unfinished sections

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Delete the self-referential symlink at
skills/factory-activity-agent/factory-activity-agent which pointed to
/Users/austin/... and is unused by any script or doc. Replace the
leaked ~/Users/austin~/Projects/... path in WORKSHOP_3_GUIDE.md:235
with the standard ~/Projects/factory/... path used elsewhere in the
guide.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
davidmiuraactualai and others added 8 commits April 21, 2026 16:41
…#73)

* Update curriculum with new  folder, updated guidance, simpler exit criteria, and back-up project load steps

* Remove refs to  folder
* Fix rig beads DB lost after install due to redundant factory restart

gc rig add stores the rig DB in the rig's .beads/embeddeddolt/ but the
city's Dolt server data_dir only covers the city's .beads/dolt/. gc rig
add's internal restart registers both. The subsequent explicit gc stop/start
in Step 5 regenerated the server config with only the city data_dir, wiping
the rig DB (lp/wp/etc) and causing rig:beads failures on gc doctor.

Fix: move close_stale_sessions before gc rig add, remove the explicit
gc stop/start (gc rig add's own restart is the last one), and wait for
the reconciler after rig add instead.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix beads prefix collisions between same-category activities

gc strips digits when deriving the beads prefix from directory names:
'w1-gc-factory' → 'wgf', 'w2-gc-factory' → 'wgf'. When W1 and W2 run
simultaneously, they share the same Dolt database name causing an
exclusive-lock conflict — the second factory's server can't load its
databases and the install fails at the sling step.

Fix: after gc stop (Step 3), rename the city Dolt DB dir and patch
config.yaml from the auto-generated prefix to the activity-unique prefix
(e.g. 'wgf' → 'w2f', 'lgf' → 'l2f'). For the rig, pre-seed the rig's
.beads/config.yaml before gc rig add so bd init creates the DB under the
right name (e.g. 'w2p' instead of 'wp'). A fallback rename + restart
fires only when gc rig add ignores the pre-seeded config.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Simplify rig prefix fix: use gc rig add --prefix instead of pre-seed

gc rig add supports --prefix to set the beads prefix directly. Use it
instead of pre-seeding .beads/config.yaml and falling back to a rename.
The pre-seed approach caused gc rig add to detect the existing config and
refuse to run without the --prefix flag anyway, so passing --prefix is
both simpler and more correct.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add labs

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…#74)

* Add C1 reference c1-run-report.md and align curriculum guide pointers

- Adds reference-project/fired-up-pizza/docs/c1-run-report.md as the worked
  example C1 participants will mirror — covers feature pick, run summary,
  intervention log, audit against all six W4 improvement criteria, one
  follow-up loop, and the ship/loop/retire decision.
- Extends factory-iterations.md with the two C1-run interventions, defers
  the previously-queued Loop 2 Planner lever in favour of the
  C1-surfaced Criterion 2 lever, and refreshes the patterns-surfaced
  section with the new data.
- Updates README.md, CAPSTONE_1_GUIDE.md, and WORKSHOP_4_GUIDE.md to
  point at the new c1-run-report.md and the existing factory-iterations.md.
- Cleans up the WORKSHOP_2/3/4 reference snippets so each one describes
  the doc it actually references, and fixes a broken W1 → W2 link
  (was WORKSHOP_1_GUIDE.md, now WORKSHOP_2_GUIDE.md).
- Removes the stale "Bring to next session" carry-forward checklists from
  L3 and L4 (the per-session install steps already pull these in).

* Align W4/C1 ownership of factory-iterations.md and c1-run-report.md

Makes it unambiguous across the README Session Map, each guide's
Fired-Up-Pizza reference block, deliverables list, and exit criteria
that:

- factory-iterations.md is authored in W4 (Part 4 Step 3 is the first
  instruction that writes to it).
- c1-run-report.md is authored in C1 (Part 4). C1 appends rows to
  factory-iterations.md but does not author it.

Changes:

- W4 title deliverable + ## Deliverable section now list
  factory-iterations.md as a first-class W4 deliverable (was missing).
- W4 Part 1 expected-docs list no longer claims factory-iterations.md
  is already present — it is created later in Part 4 of the same guide.
- C1 title deliverable clarifies that factory-iterations.md is extended
  here but authored in W4; adds "(from W4)" next to it in C1 Part 1's
  expected-docs list to match the existing "(from W4)" on
  improvement-criteria.md.
- L3 and L4 expected-docs lists no longer claim factory-iterations.md
  is carried in — it is authored in W4, which happens after both labs.
- README Backup Project Setup section now lists c1-run-report.md in
  the reference set (it is newly present in the reference project).
Prompt templates were querying beads with --assignee="\$GC_SESSION_NAME"
(e.g. w1-project--builder), but beads are assigned using the slash-
qualified alias (e.g. w1-project/builder). Tier 1 and Tier 2 lookups
always missed pre-assigned and in-progress work as a result.

Fixes all 63 affected templates across W1-W4, L1-L4, and C1. The
proposed patch in the bug report was correct but incomplete -- it omitted
L3 (5 files), L4 (8 files), and C1 (8 files).

Each template now computes GC_WORK_ASSIGNEE from GC_ALIAS when set,
falling back to converting the session-safe -- form back to /.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Force-tracked despite .gitignore since this overlay ships Claude Code
settings and skills as part of the pack.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants