gator-command 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- gator_command/__init__.py +2 -0
- gator_command/cli.py +137 -0
- gator_command/scripts/crawler.py +633 -0
- gator_command/scripts/dashboard/dashboard.css +982 -0
- gator_command/scripts/dashboard/dashboard.html +84 -0
- gator_command/scripts/dashboard/dashboard.js +419 -0
- gator_command/scripts/dashboard/views/audit.js +270 -0
- gator_command/scripts/dashboard/views/fleet.js +307 -0
- gator_command/scripts/dashboard/views/repo.js +599 -0
- gator_command/scripts/dashboard/views/settings.js +173 -0
- gator_command/scripts/dashboard/views/updates.js +308 -0
- gator_command/scripts/enforcer-prompt.md +22 -0
- gator_command/scripts/extract-claude-sessions.py +489 -0
- gator_command/scripts/extract-codex-sessions.py +477 -0
- gator_command/scripts/extract-gemini-sessions.py +410 -0
- gator_command/scripts/gator-audit.py +956 -0
- gator_command/scripts/gator-charter-draft.py +919 -0
- gator_command/scripts/gator-charter-lint.py +427 -0
- gator_command/scripts/gator-charter-verify.py +606 -0
- gator_command/scripts/gator-dashboard.py +1271 -0
- gator_command/scripts/gator-deploy.py +916 -0
- gator_command/scripts/gator-drift.py +569 -0
- gator_command/scripts/gator-enforce.py +82 -0
- gator_command/scripts/gator-fleet-intel.py +460 -0
- gator_command/scripts/gator-fleet-report.py +615 -0
- gator_command/scripts/gator-init-command-post.py +315 -0
- gator_command/scripts/gator-init.py +434 -0
- gator_command/scripts/gator-machine-id.py +153 -0
- gator_command/scripts/gator-policy-status.py +631 -0
- gator_command/scripts/gator-pulse.py +459 -0
- gator_command/scripts/gator-repo-status.py +649 -0
- gator_command/scripts/gator-session-common.py +372 -0
- gator_command/scripts/gator-session-sink.py +831 -0
- gator_command/scripts/gator-sessions.py +1244 -0
- gator_command/scripts/gator-update.py +615 -0
- gator_command/scripts/gator-version.py +38 -0
- gator_command/scripts/gator_core.py +489 -0
- gator_command/scripts/gator_remote.py +381 -0
- gator_command/scripts/gator_runtime.py +142 -0
- gator_command/scripts/gatorize-actions.sh +989 -0
- gator_command/scripts/gatorize-lib.sh +166 -0
- gator_command/scripts/gatorize-post.sh +394 -0
- gator_command/scripts/gatorize.py +1163 -0
- gator_command/scripts/gatorize.sh +185 -0
- gator_command/scripts/generate_markdown.py +212 -0
- gator_command/scripts/generate_wiki.py +424 -0
- gator_command/scripts/graph_health.py +780 -0
- gator_command/scripts/memex-lint.py +286 -0
- gator_command/scripts/memex-lint.sh +205 -0
- gator_command/scripts/memex.py +1472 -0
- gator_command/scripts/memex_formatters.py +191 -0
- gator_command/scripts/memex_state.py +236 -0
- gator_command/scripts/spawn.py +650 -0
- gator_command/templates/gator-starter/blueprints/README.md +32 -0
- gator_command/templates/gator-starter/charterignore +53 -0
- gator_command/templates/gator-starter/charters/README.md +178 -0
- gator_command/templates/gator-starter/charters/_template.md +31 -0
- gator_command/templates/gator-starter/commands/commit.md +33 -0
- gator_command/templates/gator-starter/commands/init.md +11 -0
- gator_command/templates/gator-starter/commands/update.md +5 -0
- gator_command/templates/gator-starter/constitution.md +165 -0
- gator_command/templates/gator-starter/field-guides/README.md +25 -0
- gator_command/templates/gator-starter/gator-start-up.md +119 -0
- gator_command/templates/gator-starter/procedures/charter-alignment.md +83 -0
- gator_command/templates/gator-starter/procedures/enforcer-review.md +317 -0
- gator_command/templates/gator-starter/procedures/field-guide-generation.md +176 -0
- gator_command/templates/gator-starter/procedures/knowledge-capture.md +57 -0
- gator_command/templates/gator-starter/procedures/significance-check.md +69 -0
- gator_command/templates/gator-starter/reference-notes/concierge-responses.md +535 -0
- gator_command/templates/gator-starter/reference-notes/dangerous-patterns.md +91 -0
- gator_command/templates/gator-starter/reference-notes/dashboard-operations.md +22 -0
- gator_command/templates/gator-starter/reference-notes/enforcer-configuration.md +232 -0
- gator_command/templates/gator-starter/reference-notes/example-project.md +289 -0
- gator_command/templates/gator-starter/reference-notes/failure-modes-and-self-correction.md +72 -0
- gator_command/templates/gator-starter/reference-notes/git-workflow.md +60 -0
- gator_command/templates/gator-starter/reference-notes/identity-and-ownership.md +37 -0
- gator_command/templates/gator-starter/reference-notes/refactor-approach.md +155 -0
- gator_command/templates/gator-starter/reference-notes/what-gator-requires-from-a-model.md +108 -0
- gator_command/templates/gator-starter/reference-notes/why-navigation-coding-feels-different.md +99 -0
- gator_command/templates/gator-starter/reference-notes/workflow-profiles.md +155 -0
- gator_command/templates/gator-starter/scripts/__pycache__/enforcer-review.cpython-313.pyc +0 -0
- gator_command/templates/gator-starter/scripts/__pycache__/gator-approve.cpython-313.pyc +0 -0
- gator_command/templates/gator-starter/scripts/__pycache__/gator-init.cpython-313.pyc +0 -0
- gator_command/templates/gator-starter/scripts/__pycache__/gator-pre-commit.cpython-313.pyc +0 -0
- gator_command/templates/gator-starter/scripts/__pycache__/gator-update.cpython-313.pyc +0 -0
- gator_command/templates/gator-starter/scripts/enforcer-prompt.md +55 -0
- gator_command/templates/gator-starter/scripts/enforcer-review.py +1551 -0
- gator_command/templates/gator-starter/scripts/gator-approve.py +139 -0
- gator_command/templates/gator-starter/scripts/gator-enforce.py +82 -0
- gator_command/templates/gator-starter/scripts/gator-init.py +434 -0
- gator_command/templates/gator-starter/scripts/gator-pre-commit.py +2670 -0
- gator_command/templates/gator-starter/scripts/gator-pulse.py +459 -0
- gator_command/templates/gator-starter/scripts/gator-update.py +615 -0
- gator_command/templates/gator-starter/scripts/gator-version.py +38 -0
- gator_command/templates/gator-starter/scripts/gator_core.py +487 -0
- gator_command/templates/gator-starter/scripts/hooks/__pycache__/commit-msgcpython-313.pyc +0 -0
- gator_command/templates/gator-starter/scripts/hooks/__pycache__/post-commitcpython-313.pyc +0 -0
- gator_command/templates/gator-starter/scripts/hooks/__pycache__/pre-commitcpython-313.pyc +0 -0
- gator_command/templates/gator-starter/scripts/hooks/commit-msg +5 -0
- gator_command/templates/gator-starter/scripts/hooks/post-commit +7 -0
- gator_command/templates/gator-starter/scripts/hooks/pre-commit +5 -0
- gator_command/templates/gator-starter/sessions/.gitignore +7 -0
- gator_command/templates/gator-starter/vault/.gitkeep +0 -0
- gator_command/templates/gator-starter/whiteboard.md +5 -0
- gator_command-1.0.0.dist-info/METADATA +122 -0
- gator_command-1.0.0.dist-info/RECORD +110 -0
- gator_command-1.0.0.dist-info/WHEEL +5 -0
- gator_command-1.0.0.dist-info/entry_points.txt +2 -0
- gator_command-1.0.0.dist-info/licenses/LICENSE +21 -0
- gator_command-1.0.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Procedure: Significance Check
|
|
2
|
+
|
|
3
|
+
**When to use**: After making a code change and updating charters, before committing. The agent runs this check on itself — it does not require Architect prompting.
|
|
4
|
+
|
|
5
|
+
## Why This Exists
|
|
6
|
+
|
|
7
|
+
Most changes are routine. Some changes have implications the Architect needs to hear about before committing — not because the code is wrong, but because the change is architecturally significant in ways that aren't obvious from the diff alone.
|
|
8
|
+
|
|
9
|
+
The agent is in the best position to notice this. It just read the charters, made the change, and updated the charters. It knows what TRIPWIREs exist, what boundaries were crossed, and what the blast radius looks like. The significance check asks the agent to pause and surface what it knows before the Architect commits.
|
|
10
|
+
|
|
11
|
+
Without this step, the Architect only hears about implications when they think to ask — and on the most dangerous changes, they often won't think to ask because the change looks locally correct.
|
|
12
|
+
|
|
13
|
+
## When to Trigger
|
|
14
|
+
|
|
15
|
+
Run a significance check when the change touches any of these:
|
|
16
|
+
|
|
17
|
+
| Trigger | Why |
|
|
18
|
+
|---------|-----|
|
|
19
|
+
| **Public API** (exported functions, public classes, documented interfaces) | Consumers depend on the current behavior. Changes may require semver-major, migration paths, or deprecation. |
|
|
20
|
+
| **Cross-module invariants** | Patterns that span modules can break in places far from the edit. |
|
|
21
|
+
| **TRIPWIRE patterns** | These exist specifically because they're non-obvious. Any change near a TRIPWIRE is significant by definition. |
|
|
22
|
+
| **"Does Not Own" boundary crossings** | If the change puts logic where the charter says it shouldn't be, that's a boundary decision, not just an edit. |
|
|
23
|
+
| **Data model or schema changes** | Downstream consumers, migrations, and serialization are all affected. |
|
|
24
|
+
| **Security-relevant code** (auth, encryption, access control, input validation) | Security changes have outsized blast radius and often need review even when they look small. |
|
|
25
|
+
|
|
26
|
+
For routine changes (typos, documentation, local refactors within a single module's boundary), skip the significance check.
|
|
27
|
+
|
|
28
|
+
## What to Do
|
|
29
|
+
|
|
30
|
+
### 1. Generate the steelman argument
|
|
31
|
+
|
|
32
|
+
Ask yourself: **"Why might this change be a bad idea?"**
|
|
33
|
+
|
|
34
|
+
Produce 3-5 concrete counter-arguments. These should be the arguments a skeptical senior maintainer would make — not implementation doubts, but architectural and ecosystem-level concerns:
|
|
35
|
+
|
|
36
|
+
- What existing behavior changes silently?
|
|
37
|
+
- Who depends on the current behavior and doesn't know it's changing?
|
|
38
|
+
- What migration path exists (or doesn't)?
|
|
39
|
+
- What secondary effects does this change trigger that weren't the stated goal?
|
|
40
|
+
- Is there a way to achieve the same goal with less blast radius?
|
|
41
|
+
|
|
42
|
+
### 2. Flag semver and compatibility implications
|
|
43
|
+
|
|
44
|
+
For any change to public API:
|
|
45
|
+
|
|
46
|
+
- Is this backward-compatible? (semver-patch/minor)
|
|
47
|
+
- Does this change behavior for existing consumers? (semver-major)
|
|
48
|
+
- Does this change the signature, return type, or default behavior of a public function?
|
|
49
|
+
- Are there public enum values, constants, or type definitions that changed?
|
|
50
|
+
- Would existing user code that worked yesterday produce different results today?
|
|
51
|
+
|
|
52
|
+
### 3. Surface to the Architect
|
|
53
|
+
|
|
54
|
+
Present the steelman and compatibility assessment to the Architect before committing. Frame it as:
|
|
55
|
+
|
|
56
|
+
"This change works — the tests pass and the charters are updated. But before we commit, here's what a skeptical reviewer would say: [steelman]. And here are the compatibility implications: [assessment]. How do you want to proceed?"
|
|
57
|
+
|
|
58
|
+
The Architect decides:
|
|
59
|
+
- **Proceed**: the arguments are noted, the change stands
|
|
60
|
+
- **Adjust**: modify the change to reduce blast radius (add opt-in flag, deprecation warning, migration path)
|
|
61
|
+
- **Revert**: the steelman convinced the Architect the change shouldn't land
|
|
62
|
+
- **Defer**: capture the change as a thread or inbox item for later, with the steelman attached
|
|
63
|
+
|
|
64
|
+
## What the Agent Should NOT Do
|
|
65
|
+
|
|
66
|
+
- Don't skip the significance check because the tests pass. Passing tests don't prove architectural correctness.
|
|
67
|
+
- Don't suppress the steelman because you believe the change is right. The Architect needs to hear the counter-arguments.
|
|
68
|
+
- Don't present the steelman defensively ("here are some minor concerns..."). Present it as the strongest case against the change.
|
|
69
|
+
- Don't run the significance check on every trivial edit. Use the trigger table above.
|
|
@@ -0,0 +1,535 @@
|
|
|
1
|
+
# Concierge Responses
|
|
2
|
+
|
|
3
|
+
When Gator is working well, the Architect should feel like they're pair-programming with someone who deeply knows the repo, the process, and the context. That means the primary agent needs to handle orientation questions naturally -- not with a docs dump, but with a concise, grounded answer that draws from the knowledge layer.
|
|
4
|
+
|
|
5
|
+
This reference note maps common Architect questions to where the answers live and how to frame them.
|
|
6
|
+
|
|
7
|
+
## How to Use This
|
|
8
|
+
|
|
9
|
+
When the Architect asks a question that matches a pattern below, read the referenced files and synthesize a response. Don't recite file contents -- answer like a colleague who happens to know everything. Be concise. Offer to go deeper if the Architect wants.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Process and Workflow
|
|
14
|
+
|
|
15
|
+
### "What's the process here?" / "How does this work?" / "Walk me through the workflow"
|
|
16
|
+
|
|
17
|
+
**Draw from**: `constitution.md` (The Loop), `procedures/enforcer-review.md`, `reference-notes/workflow-profiles.md`
|
|
18
|
+
|
|
19
|
+
**Frame as**: The loop is: read charters, propose plan, code, update charters, log to commit draft, significance check (if the change is architecturally significant), mechanical lint, then commit. Enforcer review can happen before coding (check the plan) or after (check the diff) -- both are optional and Architect-driven. The significance check is automatic when triggered -- the agent generates a steelman and flags compatibility implications without being asked. Suggest a workflow profile that matches the project. Walk through it concretely for whatever they're currently working on.
|
|
20
|
+
|
|
21
|
+
### "How much review do we need?" / "What's the right level of process?"
|
|
22
|
+
|
|
23
|
+
**Draw from**: `reference-notes/workflow-profiles.md`
|
|
24
|
+
|
|
25
|
+
**Frame as**: Four profiles from Light to Rigorous. Ask about the project context (solo vs. team, risk level, stakes) and suggest a match. The Architect can escalate per-change -- "this one touches payments, let's be careful" -- without changing the overall profile.
|
|
26
|
+
|
|
27
|
+
### "What should I do first?" / "Where do I start?"
|
|
28
|
+
|
|
29
|
+
**Draw from**: `roadmap.md`, `inbox.md`, `commit_draft.md`
|
|
30
|
+
|
|
31
|
+
**Frame as**: Check roadmap for current priorities, inbox for anything captured since last session, and commit draft for what happened last time. Then suggest the highest-priority item and ask the Architect if that's where they want to start.
|
|
32
|
+
|
|
33
|
+
### "What happened last session?" / "Catch me up"
|
|
34
|
+
|
|
35
|
+
**Draw from**: `commit_draft.md`, `inbox.md`, `whiteboard.md`
|
|
36
|
+
|
|
37
|
+
**Frame as**: Summarize the commit draft entries if present (what changed, who decided what), any inbox items that arrived, and any unresolved whiteboard findings. If `commit_draft.md` is empty, assume the prior commit was rolled over cleanly and use git history plus inbox/whiteboard to reconstruct the latest context. The goal: make the Architect feel like the conversation never ended.
|
|
38
|
+
|
|
39
|
+
### "What are we building?" / "What's the mission?"
|
|
40
|
+
|
|
41
|
+
**Draw from**: `mission.md`
|
|
42
|
+
|
|
43
|
+
**Frame as**: The mission in the Architect's own words (it was written from their input). If mission.md is vague or outdated, flag it and offer to refine together.
|
|
44
|
+
|
|
45
|
+
### "What's the priority?" / "What should we work on?"
|
|
46
|
+
|
|
47
|
+
**Draw from**: `roadmap.md`
|
|
48
|
+
|
|
49
|
+
**Frame as**: Read the roadmap, present the top items by status. Suggest the next concrete step for the highest-priority "Building" or "Designed" item. Ask the Architect if priorities have shifted.
|
|
50
|
+
|
|
51
|
+
### "What assumptions are you making?" / "What are you inferring vs. what do you know?"
|
|
52
|
+
|
|
53
|
+
**Draw from**: Whatever files or code the current answer depends on
|
|
54
|
+
|
|
55
|
+
**Frame as**: Separate grounded facts from inference explicitly. "The charter says X, the code confirms Y, and I'm inferring Z because [reason]." This is especially important when the Architect is deciding whether to trust a plan, estimate, or code explanation.
|
|
56
|
+
|
|
57
|
+
### "What's blocking us?" / "Why are we stuck?"
|
|
58
|
+
|
|
59
|
+
**Draw from**: Current task context, relevant charters, `inbox.md` if prior blockers were captured
|
|
60
|
+
|
|
61
|
+
**Frame as**: Name the blocker concretely. Is it missing repo knowledge, unclear Architect intent, risky blast radius, environment setup, or a genuine code problem? Then say what information or decision would unblock progress.
|
|
62
|
+
|
|
63
|
+
### "How big is this?" / "How risky is this?" / "How long will this take?"
|
|
64
|
+
|
|
65
|
+
**Draw from**: Relevant charters, `cross-cutting.md`, `reference-notes/workflow-profiles.md`
|
|
66
|
+
|
|
67
|
+
**Frame as**: Estimate in terms of scope and blast radius, not fake precision. "This is a local edit in one module" vs. "this crosses two boundaries and touches a TRIPWIRE." If the work is risky, say why. If the work is small, say what makes it small.
|
|
68
|
+
|
|
69
|
+
### "Argue against this" / "What could go wrong?" / "Why might this be a bad idea?"
|
|
70
|
+
|
|
71
|
+
**Draw from**: `procedures/significance-check.md`, relevant charters, `cross-cutting.md`
|
|
72
|
+
|
|
73
|
+
**Frame as**: Generate the strongest case against the change — not implementation doubts, but architectural and ecosystem-level concerns. Who depends on the current behavior? What changes silently? What migration path exists or doesn't? What secondary effects weren't the stated goal? Present it as a steelman, not a devil's advocate exercise. The Architect should hear the counter-arguments at full strength.
|
|
74
|
+
|
|
75
|
+
**Note**: The agent should do this automatically (not just on request) for changes touching public API, TRIPWIREs, cross-module invariants, or security-relevant code. See the significance check procedure. But the Architect can also ask for it at any time on any change.
|
|
76
|
+
|
|
77
|
+
### "Is this a breaking change?" / "What's the semver implication?"
|
|
78
|
+
|
|
79
|
+
**Draw from**: `procedures/significance-check.md`, relevant charters
|
|
80
|
+
|
|
81
|
+
**Frame as**: Identify what's public API, what existing consumers depend on, and whether this change would produce different results for code that worked yesterday. Be specific: "ParameterSource is a public IntEnum — changing its values is a semver-major break because user code compares against these values." If there's no public API impact, say so clearly.
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Codebase Understanding
|
|
86
|
+
|
|
87
|
+
### "How does [feature/module] work?" / "Explain [this part of the code]"
|
|
88
|
+
|
|
89
|
+
**Draw from**: Relevant charter(s) via `charters/INDEX.md`, then the actual code
|
|
90
|
+
|
|
91
|
+
**Frame as**: Start from the charter -- what the module owns, doesn't own, key functions, data flows. Then go to the code for specifics. The charter gives the 30-second overview; the code gives the detail. Always ground the explanation in what the charter says about boundaries and access patterns.
|
|
92
|
+
|
|
93
|
+
### "What calls this?" / "What does this depend on?"
|
|
94
|
+
|
|
95
|
+
**Draw from**: Charter `<-` (callers) and `->` (callees) annotations, `cross-cutting.md` data flows
|
|
96
|
+
|
|
97
|
+
**Frame as**: Trace the call chain using charter cross-references. Show the Architect the dependency direction and blast radius. If it crosses module boundaries, reference the cross-cutting charter.
|
|
98
|
+
|
|
99
|
+
### "Is it safe to change [X]?" / "What would break?"
|
|
100
|
+
|
|
101
|
+
**Draw from**: Relevant charter(s), `cross-cutting.md` TRIPWIREs
|
|
102
|
+
|
|
103
|
+
**Frame as**: Check the charter for the function -- what calls it (`<-`), what it calls (`->`), any tripwires (`!`). Check cross-cutting for TRIPWIREs that might be affected. Give the Architect a concrete blast radius: "these 3 callers depend on this, and there's a TRIPWIRE about [X]." Suggest an enforcer review if the change touches cross-cutting patterns.
|
|
104
|
+
|
|
105
|
+
### "Where does [X] happen?" / "Where is [X] defined?"
|
|
106
|
+
|
|
107
|
+
**Draw from**: `charters/INDEX.md` to find the right charter, then grep the codebase
|
|
108
|
+
|
|
109
|
+
**Frame as**: Use the index to locate the charter, then the charter to locate the function. Confirm with a grep. Don't make the Architect wait for a full codebase search when the charter already knows the answer.
|
|
110
|
+
|
|
111
|
+
### "What changed recently in this area?" / "Why is this shaped like this?"
|
|
112
|
+
|
|
113
|
+
**Draw from**: `commit_draft.md`, relevant threads/artifacts, relevant charters
|
|
114
|
+
|
|
115
|
+
**Frame as**: Start with recent recorded changes or decisions, then tie them to the current code shape. If the answer is not documented, say so and distinguish "the code does X" from "the rationale is not yet captured."
|
|
116
|
+
|
|
117
|
+
### "Does this belong here?" / "Which module should own this?"
|
|
118
|
+
|
|
119
|
+
**Draw from**: Relevant charter `Owns` / `Does Not Own` sections, `cross-cutting.md` if it spans modules
|
|
120
|
+
|
|
121
|
+
**Frame as**: Answer in terms of ownership, not convenience. "The auth module owns identity checks, but the store module does not own validation." If the current boundaries are unclear, say that clearly and suggest capturing the decision once the Architect chooses.
|
|
122
|
+
|
|
123
|
+
### "This is a monorepo" / "We have multiple packages" / "How do I charter a tool repo?"
|
|
124
|
+
|
|
125
|
+
**Frame as**: Monorepos and tool repos (multiple independent packages or tools in one repo) need a slightly different charter structure:
|
|
126
|
+
|
|
127
|
+
- **One charter per top-level package or tool** -- each major folder gets its own charter in `.gator/charters/`, just like a single-project module would.
|
|
128
|
+
- **Keep internals simple** -- for a large package or tool folder, use an internal `README.md` in that folder to explain its local structure and conventions. The top-level charter can point to it for detail.
|
|
129
|
+
- **Cross-cutting charter spans the whole repo** -- this is even more important in monorepos. The cross-cutting charter documents how packages interact, shared infrastructure, deployment coupling, and synchronized version requirements.
|
|
130
|
+
- **INDEX.md maps paths to charters** -- in a monorepo, the index is the Architect's primary navigation tool. It should map every top-level package directory to its charter.
|
|
131
|
+
|
|
132
|
+
Example INDEX.md for a monorepo:
|
|
133
|
+
```
|
|
134
|
+
| If you're changing... | Read these charters |
|
|
135
|
+
|---|---|
|
|
136
|
+
| `packages/api/` | [API](api.md) + [Cross-Cutting](cross-cutting.md) |
|
|
137
|
+
| `packages/web/` | [Web](web.md) + [Cross-Cutting](cross-cutting.md) |
|
|
138
|
+
| `packages/shared/` | [Shared](shared.md) + [Cross-Cutting](cross-cutting.md) |
|
|
139
|
+
| `tools/cli/` | [CLI Tool](cli-tool.md) |
|
|
140
|
+
| `infrastructure/` | [Infra](infrastructure.md) + [Cross-Cutting](cross-cutting.md) |
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
The key principle: charters follow domain boundaries, not file boundaries. A package with 50 files gets one charter. A package with a lot of internal structure can use a local `README.md` to cover the details. Keep the top-level map clean, then work out the rest with the Architect and primary agent based on how the repo is actually shaped.
|
|
144
|
+
|
|
145
|
+
### "I don't understand this code" / "I'm rusty on [language]" / "Walk me through this"
|
|
146
|
+
|
|
147
|
+
**Draw from**: `field-guides/` (if a guide exists for the language), then relevant charters, then the code
|
|
148
|
+
|
|
149
|
+
**Frame as**: If a field guide exists for the language, mention it: "We have a [language] field guide that covers the patterns used in this repo — want me to pull it up?" If no guide exists but the repo qualifies (≥2 charters covering that language), offer to generate one: "We could generate a field guide for [language] — it would document the recurring patterns across the codebase. Want me to check if the repo qualifies?" If the repo doesn't qualify, just walk through the code directly using charter context. Never assume the Architect wants a field guide — some prefer to read the code directly.
|
|
150
|
+
|
|
151
|
+
### "The code doesn't match the charter" / "Something seems off"
|
|
152
|
+
|
|
153
|
+
**Draw from**: `procedures/charter-alignment.md`
|
|
154
|
+
|
|
155
|
+
**Frame as**: Stop. Don't proceed with the current change until the alignment is resolved. Check git history to see whether the charter or the code drifted. Present the discrepancy to the Architect and ask: "Is the charter stale, or is the code wrong?" Then fix whichever one is out of date. See the charter alignment procedure for the full protocol.
|
|
156
|
+
|
|
157
|
+
### "Are the charters up to date?" / "Check for charter drift" / "Do the charters still match the code?"
|
|
158
|
+
|
|
159
|
+
**Draw from**: `procedures/charter-alignment.md`, charters, code
|
|
160
|
+
|
|
161
|
+
**Frame as**: Three levels of charter drift review, escalating in thoroughness:
|
|
162
|
+
|
|
163
|
+
**Level 1 — Quick check (agent does this, 30 seconds):**
|
|
164
|
+
Read each charter's `### func()` entries. Grep the covered files for those function names. If a charter says `### foo()` but `foo` doesn't exist in the code, it's stale. Also check `Covers:` lines — do those files still exist? This catches renames and deletions.
|
|
165
|
+
|
|
166
|
+
**Level 2 — Enforcer review script (Architect triggers):**
|
|
167
|
+
Run `python .gator/scripts/enforcer-review.py` — the enforcer review script sends the diff and relevant charters (selected via INDEX.md) to the configured model. It checks boundary violations, TRIPWIRE breaches, missing cross-references, and charter update accuracy. Token-efficient: caches charters across runs, loads only relevant charters via INDEX.
|
|
168
|
+
|
|
169
|
+
**Level 3 — Full audit (Architect triggers, separate enforcer model or CLI):**
|
|
170
|
+
For a repo-wide health check with no diff: run a CLI enforcer (a different model in a separate terminal) with a custom prompt. This reads all charters and all code, not just recent changes.
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
# Codex
|
|
174
|
+
codex review "Read all charters in .gator/charters/. Read the code they cover. Report drift: missing functions, stale entries, boundary violations, broken cross-references."
|
|
175
|
+
|
|
176
|
+
# Claude
|
|
177
|
+
claude --print "Read all charters in .gator/charters/. Read the code they cover. Report any drift."
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
**When to suggest each level:**
|
|
181
|
+
- Architect says "quick sanity check" → Level 1
|
|
182
|
+
- Architect says "review my changes" or "is this commit safe?" → Level 2
|
|
183
|
+
- Architect says "how accurate are the charters?" or "full health check" → Level 3
|
|
184
|
+
|
|
185
|
+
**The pre-commit hook catches the gap between Level 1 and Level 2 automatically:** it blocks commits where code changed but no charter was updated, warns when charter entries reference functions that don't exist in covered files, and warns when new functions appear in code without corresponding charter entries.
|
|
186
|
+
|
|
187
|
+
### "How do I set up an enforcer?" / "How do I use a different model for review?"
|
|
188
|
+
|
|
189
|
+
**Draw from**: `reference-notes/enforcer-configuration.md`, `scripts/enforcer-config.json`
|
|
190
|
+
|
|
191
|
+
**Frame as**: Ask three questions, then match to a config:
|
|
192
|
+
|
|
193
|
+
1. **What's your primary agent?** (Claude, Codex, Gemini, etc.)
|
|
194
|
+
2. **What API keys or CLI tools do you have?** (Anthropic, OpenAI, Google, or none)
|
|
195
|
+
3. **How much do you care about cost?** (Determines model choice)
|
|
196
|
+
|
|
197
|
+
Then walk them through it:
|
|
198
|
+
|
|
199
|
+
| Primary agent | Recommended enforcer | Config change |
|
|
200
|
+
|---------------|---------------------|---------------|
|
|
201
|
+
| Claude (any) | GPT or Gemini (cross-vendor is strongest) | `provider: "openai"` or `"google"` |
|
|
202
|
+
| Claude (any) | Sonnet (same vendor, different model — still valuable) | Default config, no change needed |
|
|
203
|
+
| Codex / GPT | Sonnet via enforcer-review.py | Default config, no change needed |
|
|
204
|
+
| Gemini | Sonnet or GPT | `provider: "anthropic"` (default) or `"openai"` |
|
|
205
|
+
| Any | Free local model | `provider: "ollama"`, `model: "llama3"` |
|
|
206
|
+
| Any | No model, lint only | `provider: "none"` |
|
|
207
|
+
|
|
208
|
+
Edit `.gator/scripts/enforcer-config.json`:
|
|
209
|
+
```json
|
|
210
|
+
{
|
|
211
|
+
"layer2_3": {
|
|
212
|
+
"provider": "anthropic",
|
|
213
|
+
"model": "claude-sonnet-4-6",
|
|
214
|
+
"api_key_env": "ANTHROPIC_API_KEY"
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Help them set the env var, run a test review, and show them where whiteboard.md captures findings. The full decision tree is in `reference-notes/enforcer-configuration.md`.
|
|
220
|
+
|
|
221
|
+
### "We already have docs" / "There's an ARCHITECTURE.md" / "We have ADRs"
|
|
222
|
+
|
|
223
|
+
**Draw from**: `gator-start-up.md` (Step 2: Scan for Existing Knowledge)
|
|
224
|
+
|
|
225
|
+
**Frame as**: During bootstrap, scan the repo for existing knowledge before building from scratch. Look for `ARCHITECTURE.md`, `DESIGN.md`, `docs/decisions/`, `docs/adr/`, module READMEs, `.cursorrules`, or any homegrown knowledge folder (`memex/`, `docs/knowledge/`, etc.).
|
|
226
|
+
|
|
227
|
+
If you find existing material, tell the Architect what you found and suggest where it maps:
|
|
228
|
+
|
|
229
|
+
| Existing material | Maps to |
|
|
230
|
+
|---|---|
|
|
231
|
+
| Architecture docs, design docs | `mission.md`, charters, cross-cutting charter |
|
|
232
|
+
| ADRs / decision records | Threads (one per decision, preserve rationale) |
|
|
233
|
+
| Module READMEs | Seed the charter's "Owns" / "Does Not Own" sections |
|
|
234
|
+
| `.cursorrules`, copilot instructions | Review for content that belongs in constitution or reference notes |
|
|
235
|
+
| Homegrown charters or knowledge folders | Migrate content into `.gator/` structure |
|
|
236
|
+
|
|
237
|
+
Don't migrate silently. Show the Architect what you found, suggest the mapping, and ask before copying. Some material may be outdated or intentionally separate from Gator.
|
|
238
|
+
|
|
239
|
+
### "My CLAUDE.md is really long" / "Will Gator work with a big instruction file?"
|
|
240
|
+
|
|
241
|
+
**Frame as**: Be honest. Gator is designed and tested with short entry points — 5-10 lines that point to the constitution. The installer appends a Gator section to existing files, but if the file is very long (100+ lines of custom instructions, skills, personas), there is a real risk that the model's attention to the Gator pointer degrades. We have not tested Gator's efficacy when the entry point is buried deep in a large instruction file.
|
|
242
|
+
|
|
243
|
+
**What to suggest**:
|
|
244
|
+
|
|
245
|
+
1. **Best option**: Move the Gator pointer to the top of the file. The constitution reference should be one of the first things the model reads, not something it encounters after 200 lines of other instructions.
|
|
246
|
+
```markdown
|
|
247
|
+
# Project Entry Point
|
|
248
|
+
|
|
249
|
+
Read [`.gator/constitution.md`](.gator/constitution.md) before your first response. It governs how you work here.
|
|
250
|
+
|
|
251
|
+
If this is a **fresh project** (charters/ is empty or contains only templates), follow the bootstrap procedure in [`.gator/gator-start-up.md`](.gator/gator-start-up.md).
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
[... rest of existing instructions below ...]
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
2. **Acceptable option**: Keep the Gator section clearly demarcated (the installer uses a `# --- Gator Navigation Coding ---` marker) and ensure the model reads it. Test by asking "what does the constitution say?" early in a session — if the model doesn't know, the pointer isn't landing.
|
|
259
|
+
|
|
260
|
+
3. **What to avoid**: Leaving the Gator pointer at the very bottom of a long file and hoping for the best. Models handle the beginning and end of long prompts better than the middle, but "better" is not "reliably."
|
|
261
|
+
|
|
262
|
+
**The honest caveat**: Gator's progressive-disclosure architecture (short entry point → constitution → charters on demand) depends on the entry point actually being read. If the entry point is competing with 500 lines of other instructions, the whole governance layer may not activate. When in doubt, keep the entry point short and at the top.
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Enforcer and Review
|
|
267
|
+
|
|
268
|
+
**Terminology reminder**: "Enforcer" = the role (a different model). "Enforcer review script" = `enforcer-review.py` (the automated tool). "Charter alignment procedure" = the process for detecting/resolving code-charter drift. See the constitution's Terminology table.
|
|
269
|
+
|
|
270
|
+
### "How do I set up the enforcer?" / "How do I run a review?"
|
|
271
|
+
|
|
272
|
+
**Draw from**: `reference-notes/enforcer-configuration.md`, `procedures/enforcer-review.md`
|
|
273
|
+
|
|
274
|
+
**Frame as**: Ask the three questions (primary agent, available keys/tools, cost sensitivity), then walk them through the matching setup. The enforcer review script (`enforcer-review.py`) is the primary automated path. CLI enforcers (Codex, Claude, Gemini in a separate terminal) are the independent-verification path. See the enforcer configuration reference note for the full decision tree.
|
|
275
|
+
|
|
276
|
+
### "What did the enforcer find?" / "Show me the review"
|
|
277
|
+
|
|
278
|
+
**Draw from**: `whiteboard.md`
|
|
279
|
+
|
|
280
|
+
**Frame as**: Read the latest review entry from the whiteboard. Present findings with context -- what the finding means, which charter or TRIPWIRE is involved, what the options are. Then ask the Architect what to do. Do not start fixing things.
|
|
281
|
+
|
|
282
|
+
### "Is this ready to commit?" / "Are we good?"
|
|
283
|
+
|
|
284
|
+
**Draw from**: `whiteboard.md` (any unresolved findings), `commit_draft.md` (completeness), charter update status
|
|
285
|
+
|
|
286
|
+
**Frame as**: Check three things -- (1) are there unresolved HIGH/CRITICAL whiteboard findings? (2) does the commit draft capture what changed? (3) were the charters updated for any code changes? If all three are clean, say so. If not, flag what's missing.
|
|
287
|
+
|
|
288
|
+
### "Are you following the process?" / "Did you actually read the charters first?"
|
|
289
|
+
|
|
290
|
+
**Draw from**: The actual files read in-session, current task context, `constitution.md`
|
|
291
|
+
|
|
292
|
+
**Frame as**: Answer directly and concretely. "Yes -- I read `constitution.md`, then `charters/INDEX.md`, then [specific charter]." Or: "Not yet; I need to read [file] before I can answer responsibly." The Architect should never have to guess whether the agent is operating inside the loop.
|
|
293
|
+
|
|
294
|
+
### "Should we run a review on this?" / "Is this worth an enforcer pass?"
|
|
295
|
+
|
|
296
|
+
**Draw from**: Relevant charters, `cross-cutting.md`, `reference-notes/workflow-profiles.md`
|
|
297
|
+
|
|
298
|
+
**Frame as**: Tie the answer to risk and blast radius. Suggest no review for routine local edits; suggest a plan review or diff review when the change touches boundaries, TRIPWIREs, or cross-cutting behavior. The point is calibrated review, not maximal review.
|
|
299
|
+
|
|
300
|
+
### "Check the auth module" / "Does the code match the charters?" / "Review [module] for me"
|
|
301
|
+
|
|
302
|
+
**The enforcer is not limited to diff review.** CLI-based enforcers (Codex, Gemini, Claude) can do any charter-grounded audit the Architect asks for -- with or without a diff. Examples:
|
|
303
|
+
|
|
304
|
+
| Architect says | What to run |
|
|
305
|
+
|---------|------------|
|
|
306
|
+
| "Does the code still match what the charters say?" | `codex review "Read all charters in .gator/charters/. Read the code they cover. Report any places where the code has drifted from what the charters describe."` |
|
|
307
|
+
| "Review the store module against its charter" | `codex review "Read .gator/charters/store.md. Read the code it covers. Report any functions missing from the charter, any stale entries, and any TRIPWIRE violations."` |
|
|
308
|
+
| "Are there any charter gaps?" | `codex review "Read all charters and INDEX.md. Walk the codebase. Report any code modules that have no charter coverage."` |
|
|
309
|
+
| "Check for boundary violations" | `codex review "Read all charters, focusing on 'Does Not Own' sections. Check the code for cases where a module does something its charter says it shouldn't."` |
|
|
310
|
+
| "How accurate are our charters?" | Full charter-vs-code audit -- health check, not a diff review |
|
|
311
|
+
|
|
312
|
+
These don't require uncommitted changes. They're general-purpose charter-grounded audits. The enforcer reads the charters, reads the code, and reports what it finds. The Architect can ask for this at any time -- not just before a commit.
|
|
313
|
+
|
|
314
|
+
**For the Python script**: `enforcer-review.py` is specifically designed for diff-based review. For broader audits, use a CLI enforcer (Codex, Claude, Gemini) with a custom prompt. The Architect frames the question; the enforcer does the reading.
|
|
315
|
+
|
|
316
|
+
**Frame as**: "The enforcer can do more than check your latest changes. Want me to have it audit [module/area] against the charters?"
|
|
317
|
+
|
|
318
|
+
### Enforcer Layers and Strategies -- What to Suggest
|
|
319
|
+
|
|
320
|
+
When the Architect asks about review options, the primary agent should be able to explain the layers and suggest the right strategy:
|
|
321
|
+
|
|
322
|
+
**Layer 1 -- Mechanical lint** (instant, free, deterministic):
|
|
323
|
+
- Catches: hardcoded secrets, SQL dangers, injection risks, TODO markers, .env files
|
|
324
|
+
- When to suggest: "This runs automatically before every commit. It's your safety net for things that should never ship."
|
|
325
|
+
|
|
326
|
+
**Layers 2-3 -- Charter-grounded model review** (costs tokens, takes time, catches architectural issues):
|
|
327
|
+
- Catches: boundary violations, TRIPWIRE breaches, stale charters, missing cross-references, blast radius
|
|
328
|
+
- When to suggest: "If this change touches boundaries, invariants, or cross-cutting patterns, a model review is worth it. For routine edits, Layer 1 is usually enough."
|
|
329
|
+
|
|
330
|
+
**Strategy suggestions by context:**
|
|
331
|
+
|
|
332
|
+
| Situation | Suggest |
|
|
333
|
+
|-----------|---------|
|
|
334
|
+
| Routine edit, single module | Layer 1 only (automatic) |
|
|
335
|
+
| Touching a TRIPWIRE or cross-cutting pattern | Full review (Layer 1 + model) |
|
|
336
|
+
| Large refactor or boundary change | Pre-code review of the plan + post-code review of the diff |
|
|
337
|
+
| Architect wants a health check, no changes pending | General audit (charter-vs-code, no diff needed) |
|
|
338
|
+
| About to merge to main | Full review at minimum |
|
|
339
|
+
|
|
340
|
+
### "Can I run the enforcer myself?" / Running the enforcer in a separate terminal
|
|
341
|
+
|
|
342
|
+
**Yes -- and it's the strongest trust guarantee.** The Architect runs the enforcer independently, in a separate terminal, and sees the output directly with no intermediary.
|
|
343
|
+
|
|
344
|
+
**What to tell the Architect:**
|
|
345
|
+
|
|
346
|
+
Open a new terminal in the project directory and run one of these:
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
# Codex CLI (use the dedicated enforcer prompt explicitly)
|
|
350
|
+
codex review "Read .gator/scripts/enforcer-prompt.md for full instructions. Review the uncommitted changes against the charters."
|
|
351
|
+
|
|
352
|
+
# Or with a specific prompt
|
|
353
|
+
codex review "Read .gator/constitution.md and all charters in .gator/charters/. Review the uncommitted changes against the charters. Report findings with severity levels."
|
|
354
|
+
|
|
355
|
+
# Claude Code
|
|
356
|
+
claude --print "$(cat .gator/scripts/enforcer-prompt.md)"
|
|
357
|
+
|
|
358
|
+
# Gemini CLI
|
|
359
|
+
gemini < .gator/scripts/enforcer-prompt.md
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
**What the external enforcer agent should know:**
|
|
363
|
+
|
|
364
|
+
When running a CLI enforcer in a separate terminal, the agent picks up its instructions from:
|
|
365
|
+
1. **`.gator/scripts/enforcer-prompt.md`** -- the full enforcer prompt: what to read, what to check, output format
|
|
366
|
+
2. **`AGENTS.md`** -- the primary-agent entrypoint for Codex; useful project context, but not the enforcer role definition
|
|
367
|
+
|
|
368
|
+
For a custom audit (not just diff review), the Architect can prompt the enforcer directly:
|
|
369
|
+
|
|
370
|
+
```
|
|
371
|
+
Read .gator/constitution.md for governance rules.
|
|
372
|
+
Read all charter files in .gator/charters/ (start with INDEX.md).
|
|
373
|
+
Read the code covered by those charters.
|
|
374
|
+
[Your specific question -- e.g., "Are there boundary violations?", "Which charters are stale?", "Does the cross-cutting charter still reflect reality?"]
|
|
375
|
+
Report findings with severity levels (CRITICAL/HIGH/MEDIUM/LOW).
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
**The key point for the Architect**: the enforcer in a separate terminal has no memory of what the primary agent did or said. It reads the repo fresh. That's the independence guarantee -- different model, different session, different perspective.
|
|
379
|
+
|
|
380
|
+
**Frame as**: "You can always run the enforcer yourself in another terminal. It reads AGENTS.md or the enforcer prompt, checks the code against the charters, and gives you findings directly. No intermediary. Want me to show you the command for your setup?"
|
|
381
|
+
|
|
382
|
+
---
|
|
383
|
+
|
|
384
|
+
## Operations
|
|
385
|
+
|
|
386
|
+
### "Start the dashboard" / "Launch the dashboard" / "Open the dashboard"
|
|
387
|
+
|
|
388
|
+
**Draw from**: `reference-notes/dashboard-operations.md` (if present)
|
|
389
|
+
|
|
390
|
+
**Frame as**: Run `python .gator/scripts/gator-dashboard.py`. It starts on port 8420 and opens the browser. Done. Do not attempt to verify the launch or retry -- the server stays alive but agent tooling may falsely report it as completed. See the reference note for flags (`--no-open`, `--port`, `--snapshot`, `--repo`).
|
|
391
|
+
|
|
392
|
+
### "How do I gatorize a repo?" / "What's gatorize?" / "Install gator"
|
|
393
|
+
|
|
394
|
+
**Frame as**: "Gatorize" means install or upgrade Gator in a repo. Run `python gatorize.py <target-directory>` (or `python gatorize.py .` from inside the repo). This is the canonical cross-platform installer. `gatorize.sh` is the older bash wrapper — same function, but `.py` works on Windows without bash. The installer creates `.gator/`, installs hooks, writes entry points, and registers the repo. It's safe to run on an already-gatorized repo (upgrade mode).
|
|
395
|
+
|
|
396
|
+
### "How do I add an existing repo to the Dashboard?" / "I pulled a gatorized repo but it's not in my Dashboard"
|
|
397
|
+
|
|
398
|
+
**Frame as**: Run `python gatorize.py <path-to-repo>`. If the repo already has `.gator/` (e.g., a colleague gatorized it and pushed to ADO/GitHub), gatorize detects this as an update (scenario 3) — it refreshes hooks and templates non-destructively, then registers the repo in your local command post's `registry.md`. After that, the Dashboard sees it. This is the standard "add a repo to my local fleet" workflow. No data is lost, no branches are changed, existing `.gator/` content is preserved.
|
|
399
|
+
|
|
400
|
+
### "Run gator pulse" / "Show me the pulse"
|
|
401
|
+
|
|
402
|
+
**Draw from**: `pulse.md`, `scripts/gator-pulse.py`
|
|
403
|
+
|
|
404
|
+
**Frame as**: Run `python .gator/scripts/gator-pulse.py` to regenerate, then read `pulse.md`. Present the strategic brief.
|
|
405
|
+
|
|
406
|
+
---
|
|
407
|
+
|
|
408
|
+
## Gator Itself
|
|
409
|
+
|
|
410
|
+
### "I just cloned Gator" / Agent detects it is inside the Gator repo itself
|
|
411
|
+
|
|
412
|
+
**How to detect**: `README.md` describes Gator as "a harness for AI coding" AND `install.sh` exists at the root. This means you are inside the Gator starter kit, not a project that uses Gator.
|
|
413
|
+
|
|
414
|
+
**Frame as** (gently — the Architect may be confused):
|
|
415
|
+
|
|
416
|
+
"It looks like we're inside the Gator repo itself — this is the starter kit, not a project that uses Gator. Most Architects want to install Gator into a different repo. Here's how:
|
|
417
|
+
|
|
418
|
+
1. Open a terminal
|
|
419
|
+
2. Run: `bash install.sh /path/to/your/project`
|
|
420
|
+
3. Then open your project in a new AI session — the agent will find the constitution and start the bootstrap
|
|
421
|
+
|
|
422
|
+
If you'd like, I can help you run the installer right now. What's the path to the project you want to install Gator into?"
|
|
423
|
+
|
|
424
|
+
If the Architect actually wants to work on Gator itself (contributing, customizing, studying the architecture), that's also valid — proceed with the existing charters and constitution. Ask: "Are you looking to install Gator into another project, or are you working on Gator itself?"
|
|
425
|
+
|
|
426
|
+
Don't assume. Ask. Some Architects are here to use the tool; others are here to study or improve it.
|
|
427
|
+
|
|
428
|
+
### "What is this .gator folder?" / "What is Gator?"
|
|
429
|
+
|
|
430
|
+
**Draw from**: `constitution.md`, `README.md`
|
|
431
|
+
|
|
432
|
+
**Frame as**: Gator is a self-improving knowledge layer for the codebase. Charters are a small, intelligent map (typically 3-6% of the codebase) that the agent reads before every change and updates after. The constitution defines how it works. It's navigation coding -- the opposite of vibe coding. Keep it to 2-3 sentences unless they want more.
|
|
433
|
+
|
|
434
|
+
### "Why do we do it this way?" / "What's the point of [charters/constitution/enforcer]?"
|
|
435
|
+
|
|
436
|
+
**Draw from**: `charters/README.md` (philosophy), `constitution.md`
|
|
437
|
+
|
|
438
|
+
**Frame as**: The problem -- AI generates code faster than humans can review it. Without a structural layer, the Architect loses architectural control. Charters solve this by keeping the human's comprehension in sync with the code at the speed it's now produced. The constitution ensures the loop doesn't decay. The enforcer provides independent verification. Frame it in terms of what it does for *this Architect on this project*, not abstract theory.
|
|
439
|
+
|
|
440
|
+
### "Can I change the process?" / "Do I have to follow all of this?"
|
|
441
|
+
|
|
442
|
+
**Frame as**: The Architect is the authority. The constitution is a starting point, not holy writ. If something isn't working for them, change it. The only thing that truly matters is the loop: read charters -> make change -> update charters. Everything else is in service of that. Suggest capturing the process change in the constitution so the next session respects it.
|
|
443
|
+
|
|
444
|
+
### "Why does this feel different from normal prompting?" / "Why is it asking me so many questions?"
|
|
445
|
+
|
|
446
|
+
**Draw from**: `reference-notes/why-navigation-coding-feels-different.md`, `mission.md`
|
|
447
|
+
|
|
448
|
+
**Frame as**: Navigation coding relocates judgment upstream. The agent asks more specific questions because the point is to resolve ambiguity before code is written, not after regressions appear. The friction is part of the safety mechanism, not accidental ceremony.
|
|
449
|
+
|
|
450
|
+
### "Will this work with [model/tool]?" / "How much does this depend on the model behaving well?"
|
|
451
|
+
|
|
452
|
+
**Draw from**: `reference-notes/what-gator-requires-from-a-model.md`
|
|
453
|
+
|
|
454
|
+
**Frame as**: Gator helps any model more if it follows instructions well. Explain the baseline assumptions: read before acting, treat repo artifacts as authoritative, update the knowledge layer, and operate as if the repo has memory. Be honest if a weaker or more rogue model will get less value.
|
|
455
|
+
|
|
456
|
+
### "What's the cleanest enforcer setup for my primary agent?" / "Which enforcer path should we prefer?"
|
|
457
|
+
|
|
458
|
+
**Draw from**: `reference-notes/enforcer-configuration.md`, `procedures/enforcer-review.md`
|
|
459
|
+
|
|
460
|
+
**Frame as**: Distinguish between "works" and "cleanest." For example: if Codex is primary and the Architect wants Anthropic as enforcer, the cleanest path is `enforcer-review.py` with `provider: anthropic`, because Claude Code CLI in the same repo also sees `CLAUDE.md` as a primary-agent entrypoint. If the Architect wants a separate Claude terminal anyway, say that it works, but explain the role-overlap trade-off.
|
|
461
|
+
|
|
462
|
+
---
|
|
463
|
+
|
|
464
|
+
## Where Things Go
|
|
465
|
+
|
|
466
|
+
### "Where should I put this?" / "What's inbox for?" / "When do I use a thread?"
|
|
467
|
+
|
|
468
|
+
**Draw from**: `constitution.md` (File Purposes table)
|
|
469
|
+
|
|
470
|
+
The Architect (or agent) has information and needs to know where it lives. Quick decision guide:
|
|
471
|
+
|
|
472
|
+
| What you have | Where it goes | When |
|
|
473
|
+
|---------------|--------------|------|
|
|
474
|
+
| A quick idea, observation, or "we should..." | `inbox.md` | Anytime. Zero friction. Append and move on. |
|
|
475
|
+
| A decision with rationale worth preserving | `threads/` | When the topic has a name and you'd want to find it next week |
|
|
476
|
+
| A deep design doc, research, or analysis | `artifacts/` | When it needs more than 20 lines and permanence |
|
|
477
|
+
| A repeatable workflow that's stabilized | `procedures/` | When you've done it twice and will do it again |
|
|
478
|
+
| A code-level fact (function, boundary, tripwire) | `charters/` | Every code change -- this is mandatory |
|
|
479
|
+
| A project direction or identity statement | `mission.md` | When the "what" or "why" of the project changes |
|
|
480
|
+
| A priority shift | `roadmap.md` | When what's next changes |
|
|
481
|
+
| A recurring rhythm or obligation | `patterns.md` | When something happens on a schedule |
|
|
482
|
+
| A reference, vocabulary, or cognitive aid | `reference-notes/` | When it helps orient someone (human or model) |
|
|
483
|
+
| A session change or decision | `commit_draft.md` | Every code change, every decision, during the session or branch; clear after commit |
|
|
484
|
+
| Enforcer review findings | `whiteboard.md` | Written by the enforcer script automatically |
|
|
485
|
+
| Sensitive material (credentials, keys, tokens) | `.gator/vault/` | Immediately. Never commit sensitive material. Vault is gitignored. |
|
|
486
|
+
| Large files (PDFs, datasets, binaries) | `.gator/vault/` | When referenced by artifacts or threads but too large for git |
|
|
487
|
+
|
|
488
|
+
### "What's the difference between a thread and an artifact?"
|
|
489
|
+
|
|
490
|
+
**Frame as**: Size and depth. Threads are lightweight (5-20 lines) -- a topic with a name, a summary, and some cross-references. They exist so a decision or observation doesn't have to be re-explained every session. Artifacts are deep storage -- design docs, research, analysis, anything that needs space. If a thread grows past ~60 lines, it probably wants to be an artifact.
|
|
491
|
+
|
|
492
|
+
### "What goes in the roadmap vs. inbox?"
|
|
493
|
+
|
|
494
|
+
**Frame as**: Roadmap is *prioritized and structured* -- items with status, ordered by importance. Inbox is *zero-friction capture* -- anything goes, no formatting needed. Ideas start in inbox; when they're real enough to prioritize, they graduate to roadmap. The agent can suggest promotions, but the Architect decides.
|
|
495
|
+
|
|
496
|
+
### "When do I update mission.md?"
|
|
497
|
+
|
|
498
|
+
**Frame as**: Rarely. Mission changes when the fundamental "what" or "why" of the project shifts. If you're just refining priorities, that's roadmap. If you're pivoting, that's mission. Most sessions never touch it.
|
|
499
|
+
|
|
500
|
+
### "What's patterns.md for?"
|
|
501
|
+
|
|
502
|
+
**Frame as**: Recurring rhythms -- deploy schedules, standup cadences, release cycles, recurring obligations. Things that happen on a schedule and need to be remembered across sessions. If the project has no patterns yet, leave it empty.
|
|
503
|
+
|
|
504
|
+
### "Should we capture this?" / "Is this worth writing down?"
|
|
505
|
+
|
|
506
|
+
**Draw from**: `constitution.md` (capture bias), the file-purposes table
|
|
507
|
+
|
|
508
|
+
**Frame as**: If the information would help resume work next week, capture it. Then route it: inbox for quick ideas, thread for named decisions, artifact for depth, charter for code facts, roadmap for priority, mission for project-direction changes. Err toward capture rather than loss.
|
|
509
|
+
|
|
510
|
+
### "Where do I put sensitive files?" / "Where should credentials go?" / "This file is too big for git"
|
|
511
|
+
|
|
512
|
+
**Frame as**: Use `.gator/vault/`. It's a gitignored directory inside `.gator/` — nothing in vault is ever committed. Use it for:
|
|
513
|
+
|
|
514
|
+
- **Credentials, API keys, tokens, certificates** — anything the layer-1 lint would flag
|
|
515
|
+
- **Large files** — PDFs, datasets, images, binaries that artifacts or threads reference but that don't belong in git history
|
|
516
|
+
- **Sensitive research** — proprietary docs, NDA material, internal reports
|
|
517
|
+
|
|
518
|
+
Organize by subdirectory if needed (e.g., `.gator/vault/certs/`, `.gator/vault/data/`). Reference vault files from artifacts using `source: .gator/vault/filename` in frontmatter. The vault is machine-local — it doesn't transfer when someone clones the repo. If a vault file needs to be shared, that's a team-level decision outside Gator's scope.
|
|
519
|
+
|
|
520
|
+
**Key rule for agents**: If you encounter or generate sensitive material during a session, write it to `.gator/vault/`, never to a tracked location. The pre-commit lint will catch common secrets, but the vault is the proactive discipline.
|
|
521
|
+
|
|
522
|
+
### "Is the knowledge layer stale?" / "What should we clean up in .gator/?"
|
|
523
|
+
|
|
524
|
+
**Draw from**: `commit_draft.md`, relevant charters, `whiteboard.md`, `reference-notes/workflow-profiles.md`
|
|
525
|
+
|
|
526
|
+
**Frame as**: Be specific about the kind of staleness: missing charter updates, outdated roadmap priorities, uncaptured decisions, oversized threads, unresolved whiteboard findings. Suggest the smallest cleanup that restores trust in the map.
|
|
527
|
+
|
|
528
|
+
---
|
|
529
|
+
|
|
530
|
+
## Tone Guidance
|
|
531
|
+
|
|
532
|
+
- **Be a colleague, not a manual.** "The store module owns persistence -- here's how the data flows" not "According to the charter located at .gator/charters/store.md..."
|
|
533
|
+
- **Lead with the answer, then offer depth.** "That function is called from three places. Want me to trace the full chain?"
|
|
534
|
+
- **Ground everything in the knowledge layer.** If you're answering from memory or training data, say so. If the charter covers it, cite the charter. The Architect should trust that your answers come from the actual project state, not general knowledge.
|
|
535
|
+
- **Flag gaps.** If the Architect asks about something the charters don't cover, say "the charters don't have this -- let me read the code and then we should capture it." That's the loop in action.
|