Governance Convergence — Phase 1 Inventory¶
Status: COMPLETE for canonical sources (non-worktree, non-cache) Date: 2026-09-16 Scope: BluCity
.claude/rules/, CLAUDE.md, AGENTS.md,.codex/, GEMINI.md
1. BluCity .claude/rules/ — 13 Files, 5,575 LOC¶
These are Claude-vendor-specific project rules. They load automatically for Claude sessions inside BluCity. Every one of these is replicated 3× across worktrees (BluCity/, convergence/, release-main-convergence/).
Classification Records¶
git-completion-law.md — 78 lines¶
SCOPE=GLOBAL AUTHORITY_CLAIM=AUTHORITATIVE
CLUSTER=GIT_COMPLETION, WORKTREE_HYGIENE
DUPLICATES=GEMINI.md (worktree law section)
ENFORCED=PARTIALLY (prose only, no CI gate)
TARGET=C (Gas City config) + D (GitLab CI)
MECHANISM=gc doctor check + shared CI for uncommitted/unpushed/unmerged
DISPOSITION=SPLIT: worktree paths → Gas City config; commit chain → shared CI gate
delegation-grant.md — 219 lines¶
SCOPE=GLOBAL AUTHORITY_CLAIM=AUTHORITATIVE (NOT YET IN FORCE)
CLUSTER=DELEGATION
DUPLICATES=action-classes.md (delegated authority section)
ENFORCED=NONE — explicitly "APPROVED FOR ISSUANCE, NOT YET IN FORCE"
TARGET=B (ContractPlane + Cedar + Compliance Engine)
MECHANISM=Cedar Lease entity + policy evaluation + Compliance Engine runtime
DISPOSITION=KEEP as grant record; enforce via Cedar Lease issuance
use-what-we-have.md — 75 lines¶
SCOPE=GLOBAL AUTHORITY_CLAIM=AUTHORITATIVE
CLUSTER=REUSE_EXISTING_CAPABILITY
DUPLICATES=deletion-is-the-deliverable.md, ownership-audit-law.md (decision hierarchy)
ENFORCED=PARTIALLY (prose only)
TARGET=A (Gas City prompt fragments)
MECHANISM=Gas City global_fragments + gc import check / gc import install
DISPOSITION=MERGE into shared fragment "reuse-first"; deduplicate with deletion-is-the-deliverable
pack-overlays.md — 21 lines¶
SCOPE=PROJECT AUTHORITY_CLAIM=AUTHORITATIVE
CLUSTER=PACK_OVERLAYS
DUPLICATES=BluCity/overlays/AGENTS.md (13 lines — ~90% overlap)
ENFORCED=YES (gc doctor checks, partial)
TARGET=C (Gas City config)
MECHANISM=gc doctor + pack.toml validation
DISPOSITION=MERGE with overlays/AGENTS.md → single project-local doc
HANDOFF-2026-09-14.md — 1,021 lines¶
SCOPE=SESSION/TEMPORARY AUTHORITY_CLAIM=DERIVED (session state dump)
CLUSTER=HANDOFF
DUPLICATES=None
ENFORCED=N/A
TARGET=E (BluCity-Docs → ledger/agent-memory/) or Beads notes
MECHANISM=Bead handoff notes; not a permanent rule
DISPOSITION=ARCHIVE to BluCity-Docs/ledger/; REMOVE from .claude/rules/
[!WARNING] 1,021 lines of session state loaded into every Claude session as a "rule." This is the single largest context waste in the estate. Not a rule — a dated session handoff.
drupal-standard.md — 842 lines¶
SCOPE=DOMAIN (Drupal) AUTHORITY_CLAIM=AUTHORITATIVE
CLUSTER=DRUPAL_STANDARD
DUPLICATES=BluCity-Docs Engineering-Standard drupal-standard.md (partial)
ENFORCED=PARTIALLY (prose + some CI)
TARGET=A (prompt fragment for Drupal agents) + D (CI enforcement)
MECHANISM=Gas City per-agent fragment (drupal role); shared CI lint
DISPOSITION=SPLIT: principles → shared fragment; probes → CI; examples → docs
ownership-audit-law.md — 629 lines¶
SCOPE=GLOBAL AUTHORITY_CLAIM=AUTHORITATIVE
CLUSTER=OWNERSHIP_BOUNDARIES, PROVENANCE
DUPLICATES=deletion-is-the-deliverable.md, use-what-we-have.md
ENFORCED=PARTIALLY (prose only, audit prompt is manual)
TARGET=A (prompt fragment) + D (CI structural probes)
MECHANISM=shared fragment "ownership-audit"; CI dependency probes
DISPOSITION=EXTRACT: audit prompt → shared fragment; probes → CI; examples → docs
deletion-is-the-deliverable.md — 370 lines¶
SCOPE=GLOBAL AUTHORITY_CLAIM=AUTHORITATIVE
CLUSTER=DELETION_CLEANUP, REUSE_EXISTING_CAPABILITY
DUPLICATES=ownership-audit-law.md, use-what-we-have.md
ENFORCED=PARTIALLY (prose only)
TARGET=A (prompt fragment)
MECHANISM=Gas City global_fragment "deletion-first"
DISPOSITION=MERGE with use-what-we-have → single "reuse-and-delete-first" fragment
success-is-the-effect.md — 791 lines¶
SCOPE=GLOBAL AUTHORITY_CLAIM=AUTHORITATIVE
CLUSTER=SUCCESS_ACCEPTANCE, PROVENANCE
DUPLICATES=ownership-audit-law.md (verification methodology)
ENFORCED=NO (pure prose)
TARGET=A (prompt fragment)
MECHANISM=Gas City global_fragment "verify-the-effect"
DISPOSITION=EXTRACT: core rules → shared fragment; worked examples → docs
agent-identity-and-provenance.md — 300 lines¶
SCOPE=GLOBAL AUTHORITY_CLAIM=AUTHORITATIVE
CLUSTER=AGENT_IDENTITY, PROVENANCE
DUPLICATES=GEMINI.md (identity section), action-classes.md
ENFORCED=PARTIALLY (designed for CI + Cedar)
TARGET=B (Cedar) + C (Gas City gt prime) + D (CI commit trailer check)
MECHANISM=gt prime + Cedar + CI provenance gate
DISPOSITION=KEEP as reference; enforce via gt prime + CI + Cedar
action-classes.md — 321 lines¶
SCOPE=GLOBAL AUTHORITY_CLAIM=AUTHORITATIVE
CLUSTER=ACTION_CLASSIFICATION, DELEGATION, SECRETS
DUPLICATES=delegation-grant.md, agent-identity-and-provenance.md
ENFORCED=PARTIALLY (designed for Cedar + credential separation)
TARGET=B (Cedar) + C (Gas City config)
MECHANISM=Cedar policy evaluation on action class
DISPOSITION=MERGE action class model with delegation-grant → unified Cedar spec
beads-work-ownership.md — 871 lines¶
SCOPE=GLOBAL AUTHORITY_CLAIM=AUTHORITATIVE
CLUSTER=WORK_AUTHORITY, BEADS_OWNERSHIP
DUPLICATES=GEMINI.md (beads work authority — extensive overlap)
ENFORCED=PARTIALLY (gc hook pull model, bd commands)
TARGET=A (prompt fragment) + C (Gas City hook/formula)
MECHANISM=Gas City gc hook --claim + formula cook + bd ready
DISPOSITION=EXTRACT: work protocol → Gas City hook/formula; guidance → shared fragment
beads-scope.md — 44 lines¶
SCOPE=PROJECT AUTHORITY_CLAIM=AUTHORITATIVE
CLUSTER=WORK_AUTHORITY
DUPLICATES=None (unique topology reference)
ENFORCED=YES (gc doctor bd-split-store check)
TARGET=C (Gas City config)
MECHANISM=gc doctor checks; site-rigs.toml validation
DISPOSITION=KEEP as project-local reference; validate via gc doctor
2. CLAUDE.md Files — 6 Canonical Sources¶
| File | Lines | Type | Content |
|---|---|---|---|
| seo-pack/CLAUDE.md | 77 | GENERATED scaffold | Generic template |
| validation-city/CLAUDE.md | 77 | GENERATED scaffold | Identical template |
| .agents/agents/CLAUDE.md | 9 | STUB | "Reference canonical GitLab source" |
| upstream-agui/CLAUDE.md | 9 | STUB | Same |
| BluCity-Docs/CLAUDE.md | 9 | STUB | Same |
| dashboard/CLAUDE.md | 9 | STUB | Same |
Two patterns: 77-line scaffold templates and 9-line stubs. Neither contains project-specific governance.
3. AGENTS.md Files¶
OSSA Role Definitions (10-line stubs)¶
| Role | Summary |
|---|---|
blu |
Lead Architect + Local Coordinator |
drupal |
Drupal Product Specialist |
foundry |
Platform, API & CLI Specialist |
harbormaster |
NAS & Durable Data Authority |
mayor |
Production Mayor |
refinery |
GitLab, CI & Release Specialist |
sentinel |
Security, Policy & Supply-Chain |
witness |
Independent Verification & Evidence |
[!IMPORTANT] 10-line stubs, not agent config. Gas City agent config belongs in
agent.toml/pack.toml, not AGENTS.md.
Project-level AGENTS.md¶
| File | Lines | Purpose |
|---|---|---|
| Estate root | ~100 | Bootstrap index |
| BluCity-Packs | ~20 | Pack development |
| BluCity-Docs | ~20 | Documentation |
| overlays | 13 | Near-duplicate of pack-overlays.md |
4. Codex Configuration¶
Two Independent Hook Systems¶
Estate root (.codex/hooks.json — 98 lines):
| Hook | Script | Purpose |
|---|---|---|
| SessionStart | session-start-loader.sh (11KB) |
Bootstrap loader |
| SessionStart | bd codex-hook SessionStart |
Beads context |
| PreToolUse | pre-tool-policy-block.sh |
Policy gate |
| PostToolUse | post-bash-policy-check.sh |
Post-exec check |
| UserPromptSubmit | user-prompt-anti-churn.sh |
Anti-churn |
| UserPromptSubmit | bd codex-hook UserPromptSubmit |
Beads refresh |
| Pre/PostCompact | bd codex-hook variants |
Beads context |
BluCity project (BluCity/.codex/hooks.json — 50 lines):
| Hook | Command | Purpose |
|---|---|---|
| SessionStart | gc prime --hook |
Gas City priming |
| UserPromptSubmit | gc nudge drain --inject |
Work drain |
| UserPromptSubmit | gc mail check --inject |
Mail check |
| PreCompact | gc handoff --auto |
Handoff |
[!WARNING] Two hook systems fire independently. Estate root = Beads + policy. BluCity = Gas City. Interaction unspecified.
Agent Definitions (9 files)¶
| Agent | Lines | Status |
|---|---|---|
oracle-infra.toml |
9,369 | Pre-Gas City inline prompt |
done-gate.toml |
5,938 | Pre-Gas City inline prompt |
quality-gate.toml |
3,376 | Pre-Gas City inline prompt |
test-writer.toml |
1,766 | Pre-Gas City inline prompt |
drupal-specialist.toml |
1,391 | Pre-Gas City inline prompt |
frontend-specialist.toml |
1,393 | Pre-Gas City inline prompt |
researcher.toml |
857 | Pre-Gas City inline prompt |
reviewer.toml |
786 | Pre-Gas City inline prompt |
test-runner.toml |
752 | Pre-Gas City inline prompt |
[!CAUTION] 25,628 lines of inline agent prompts. All from May 5, all predate Gas City composition. Replace with Gas City pack-composed agent definitions.
5. Estate Root¶
| File | Lines | Vendor | Overlap |
|---|---|---|---|
| AGENTS.md | ~100 | Multi | Bootstrap — unique |
| GEMINI.md | ~300 | Gemini | ~80% overlap with .claude/rules/ |
6. Summary¶
Raw Numbers¶
| Category | Files | LOC |
|---|---|---|
.claude/rules/ |
13 | 5,575 |
| CLAUDE.md | 6 | 190 |
| AGENTS.md | 20+ | ~400 |
.codex/ config |
4 | 215 |
.codex/agents/ |
9 | 25,628 |
.codex/hooks/ |
10 | ~1,100 |
| GEMINI.md | 1 | ~300 |
| Total | — | ~33,400 |
Duplication Matrix¶
| Pair | Overlap |
|---|---|
| GEMINI.md ↔ .claude/rules/ | ~80% content |
| pack-overlays.md ↔ overlays/AGENTS.md | ~90% content |
| deletion ↔ use-what-we-have ↔ ownership | Decision hierarchy 3× |
| action-classes ↔ delegation-grant | Cedar Lease model 2× |
| agent-identity ↔ GEMINI.md identity section | ~70% content |
Enforcement Status¶
| Status | Count | LOC |
|---|---|---|
| Mechanically enforced | 2 | 65 |
| Designed for enforcement (not yet) | 4 | 1,159 |
| No enforcement path | 7 | 4,351 |
The Rule That States the Problem¶
From action-classes.md:
CONTROL = "THE AGENT REMEMBERS" → THE RULE IS INCOMPLETE
4,351 lines of rules have no enforcement mechanism. They are hopes with documentation.
7. Open Questions¶
- HANDOFF-2026-09-14.md — archive and remove from
.claude/rules/? (Saves 1,021 lines of context per session.) - Codex agent .toml files (25,628 LOC, all May 5) — still active or superseded by Gas City?
- Two hook systems — unify under Gas City, or are they intentionally separate?
- GEMINI.md ↔ .claude/rules/ — Phase 4 designs single-author policy projecting to both?