Merge pull request #93 from markov-kernel/fix/mayor-session-hooks

fix: deploy SessionStart hooks in gt install for Mayor role
This commit is contained in:
Steve Yegge
2026-01-04 13:09:24 -08:00
committed by GitHub
3 changed files with 29 additions and 1 deletions
+9
View File
@@ -49,6 +49,9 @@ jobs:
git config --global user.name "CI Bot"
git config --global user.email "ci@gastown.test"
- name: Generate embedded files
run: go generate ./internal/formula/...
- name: Build
run: go build -v ./cmd/gt
@@ -66,6 +69,9 @@ jobs:
with:
go-version: '1.24'
- name: Generate embedded files
run: go generate ./internal/formula/...
- name: golangci-lint
uses: golangci/golangci-lint-action@v9
with:
@@ -91,6 +97,9 @@ jobs:
- name: Install beads (bd)
run: go install github.com/steveyegge/beads/cmd/bd@latest
- name: Generate embedded files
run: go generate ./internal/formula/...
- name: Build gt
run: go build -v -o gt ./cmd/gt
+10 -1
View File
@@ -29,8 +29,17 @@ jobs:
git config --global user.name "CI Bot"
git config --global user.email "ci@gastown.test"
- name: Install beads (bd)
run: go install github.com/steveyegge/beads/cmd/bd@latest
- name: Add to PATH
run: echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
- name: Generate embedded files
run: go generate ./internal/formula/...
- name: Build
run: go build -v ./cmd/gt
- name: Run integration tests
run: go test -v -tags=integration -timeout=4m ./...
run: go test -v -tags=integration -timeout=4m ./internal/cmd/...
+10
View File
@@ -11,6 +11,7 @@ import (
"github.com/spf13/cobra"
"github.com/steveyegge/gastown/internal/beads"
"github.com/steveyegge/gastown/internal/claude"
"github.com/steveyegge/gastown/internal/config"
"github.com/steveyegge/gastown/internal/deps"
"github.com/steveyegge/gastown/internal/formula"
@@ -178,6 +179,15 @@ func runInstall(cmd *cobra.Command, args []string) error {
fmt.Printf(" ✓ Created CLAUDE.md\n")
}
// Ensure Mayor has Claude settings with SessionStart hooks.
// This ensures gt prime runs on Claude startup, which outputs the Mayor
// delegation protocol - critical for preventing direct implementation.
if err := claude.EnsureSettingsForRole(absPath, "mayor"); err != nil {
fmt.Printf(" %s Could not create .claude/settings.json: %v\n", style.Dim.Render("⚠"), err)
} else {
fmt.Printf(" ✓ Created .claude/settings.json\n")
}
// Initialize town-level beads database (optional)
// Town beads (hq- prefix) stores mayor mail, cross-rig coordination, and handoffs.
// Rig beads are separate and have their own prefixes.