@@ -14,12 +14,12 @@ Authorize → Plan (if needed) → Build → Review → Check → Local commit (
1.**No product implementation** until the user says **build** or **implement**. Docs/design/agent-rules work is fine without that.
1.**No product implementation** until the user says **build** or **implement**. Docs/design/agent-rules work is fine without that.
2.**Do not require the user to restate process.** If they authorize a slice, run plan (when needed) → build → independent review → check yourself.
2.**Do not require the user to restate process.** If they authorize a slice, run plan (when needed) → build → independent review → check yourself.
3.**Grok parent = orchestrator only.** All product work (implement / review / check / explore / fix) runs on local **`wwg3-worker`** subagents. See `local-worker.md`.
3.**Grok parent = orchestrator only.** All product work (implement / review / check / explore / fix) runs on local **`primary-subagent`** subagents. See `local-worker.md`.
4.**Review + check** on multi-file / non-trivial work via **worker** subagents (`model: "wwg3-worker"`). Prefer `/review` + `/check-work` patterns that spawn workers. Parent self-LGTM is not enough.
4.**Review + check** on multi-file / non-trivial work via **worker** subagents (`model: "primary-subagent"`). Prefer `/review` + `/check-work` patterns that spawn workers. Parent self-LGTM is not enough.
5.**Commit only when asked.****Never push, open/merge PR, or tag** unless the user explicitly orders it. User owns `git push` by default.
5.**Commit only when asked.****Never push, open/merge PR, or tag** unless the user explicitly orders it. User owns `git push` by default.
6.**Scope lock.** Implement only the authorized slice. No drive-by packages, no silent redesign of `design/` SSOT.
6.**Scope lock.** Implement only the authorized slice. No drive-by packages, no silent redesign of `design/` SSOT.
7.**Subagents:**`model: "wwg3-worker"` always (unless user overrides). Implementers edit; reviewers/explorers/verifiers read-only. Parallel writers use worktrees. Inject product hard rules into every worker prompt.
7.**Subagents:**`model: "primary-subagent"` always (unless user overrides). Implementers edit; reviewers/explorers/verifiers read-only. Parallel writers use worktrees. Inject product hard rules into every worker prompt.
8.**Multi-PR / execute-plan:** only with a PR Plan DAG; `--dry-run` first; no Graphite default, no auto-PR, no push/merge unless user overrides. Workers stay on `wwg3-worker`. Remote MCP = **gitea_vps** only.
8.**Multi-PR / execute-plan:** only with a PR Plan DAG; `--dry-run` first; no Graphite default, no auto-PR, no push/merge unless user overrides. Workers stay on `primary-subagent`. Remote MCP = **gitea_vps** only.
9.**Stop** when the slice is done, blocked on a user decision, local worker is down, or secrets / destructive git / forge mistakes would be required — report, do not steamroll onto paid Grok.
9.**Stop** when the slice is done, blocked on a user decision, local worker is down, or secrets / destructive git / forge mistakes would be required — report, do not steamroll onto paid Grok.
10.**Platform-first:**`nemohermes` / `openshell` only; no parallel control API; no owner terminal/Docker instructions; no agent pay / silent send.
10.**Platform-first:**`nemohermes` / `openshell` only; no parallel control API; no owner terminal/Docker instructions; no agent pay / silent send.
@@ -28,7 +28,7 @@ Also auto-loaded under `.grok/rules/`: `execution-loop.md`, `git-hygiene.md`.
- **`design/`** = product POR SSOT; **`docs/`** = operator runbooks.
- **`design/`** = product POR SSOT; **`docs/`** = operator runbooks.
- **Execution loop + Git hygiene below are mandatory** for every agent (Grok, Claude, Cursor, subagents, workflows, scripts).
- **Execution loop + Git hygiene below are mandatory** for every agent (Grok, Claude, Cursor, subagents, workflows, scripts).
- **Do not require the user to restate process.** If they authorize work without naming every step, still run the rails. Only the user may *narrow* scope or *skip* a gate (e.g. “docs-only, skip check-work”).
- **Do not require the user to restate process.** If they authorize work without naming every step, still run the rails. Only the user may *narrow* scope or *skip* a gate (e.g. “docs-only, skip check-work”).
- **Orchestrator / worker split** — see [Orchestrator vs local worker](#orchestrator-vs-local-worker-mandatory). Grok (composer) orchestrates only; **all product work runs on the local subagent endpoint** (`wwg3-worker`).
- **Orchestrator / worker split** — see [Orchestrator vs local worker](#orchestrator-vs-local-worker-mandatory). Grok (composer) orchestrates only; **all product work runs on the local subagent endpoint** (`primary-subagent`).
## Git MCP
## Git MCP
- Server: `gitea_vps`
- Server: `gitea_vps`
@@ -45,22 +45,24 @@ Also auto-loaded under `.grok/rules/`: `execution-loop.md`, `git-hygiene.md`.
| Role | Who | Model | Allowed to |
| Role | Who | Model | Allowed to |
|------|-----|-------|------------|
|------|-----|-------|------------|
| **Orchestrator** | Parent Grok Build session (composer) | Session model (e.g. `grok-4.5`) | Talk to user; authorize/scope; run the execution loop; spawn/resume/kill subagents; read results; enforce rails; **light** git status; report blockers |
| **Orchestrator** | Parent Grok Build session (composer) | Session model (e.g. `grok-4.5`) | Talk to user; authorize/scope; run the execution loop; spawn/resume/kill subagents; read results; enforce rails; **light** git status; report blockers |
| **Worker** | Every subagent (and workflow `agent()` children) | **`wwg3-worker`** (local) | Explore, plan drafts, implement, review, check, fix, write files, run tests in scope |
| **Worker** | Every subagent (and workflow `agent()` children) | **`primary-subagent`** (display: **Primary Subagent**, local) | Explore, plan drafts, implement, review, check, fix, write files, run tests in scope |
### Config (already expected on this host)
### Config (already expected on this host)
Home `~/.grok/config.toml` (not committed to product git):
Home `~/.grok/config.toml` (not committed to product git):
-`[model.wwg3-worker]` → LAN llama.cpp OpenAI-compatible URL
- **Removed:** stale `wwg3-worker` / `:8080` entries — do not reintroduce.
### Orchestrator MUST
### Orchestrator MUST
1.**Delegate all product work** — implementation, multi-file edits, test writing, skill/script coding, substantive design drafting when authorized, independent review, and verification — via `spawn_subagent` (or workflow agents) on **`wwg3-worker`**.
1.**Delegate all product work** — implementation, multi-file edits, test writing, skill/script coding, substantive design drafting when authorized, independent review, and verification — via `spawn_subagent` (or workflow agents) on **`primary-subagent`**.
2.**Pass `model: "wwg3-worker"`** on every `spawn_subagent` for this product (belt-and-suspenders even when config pins exist). Do **not** pass `grok-4.5` / cloud models to workers unless the user **explicitly** overrides for that one task.
2.**Pass `model: "primary-subagent"`** on every `spawn_subagent` for this product (belt-and-suspenders even when config pins exist). Do **not** pass `grok-4.5` / cloud models to workers unless the user **explicitly** overrides for that one task.
3.**Stay coordinator-shaped:** status updates, sequencing, checklists, reading worker summaries, applying execution-loop gates, asking the user when blocked.
3.**Stay coordinator-shaped:** status updates, sequencing, checklists, reading worker summaries, applying execution-loop gates, asking the user when blocked.
4.**Inject full rails into every worker prompt:** authorized slice, hard rules, execution loop, Git hygiene, platform-first, no secrets, gitea_vps-only remote MCP.
4.**Inject full rails into every worker prompt:** authorized slice, hard rules, execution loop, Git hygiene, platform-first, no secrets, gitea_vps-only remote MCP.
5.**Own Git policy** (commit only if asked; no push/PR/merge unless asked) even when workers make commits in worktrees.
5.**Own Git policy** (commit only if asked; no push/PR/merge unless asked) even when workers make commits in worktrees.
@@ -70,8 +72,8 @@ Optional Responses-API twin: `wwg3-worker-responses` — only if the orchestrato
1.**Implement the product itself** with `write` / `search_replace` / large shell codegen on the main session when a worker can do it.
1.**Implement the product itself** with `write` / `search_replace` / large shell codegen on the main session when a worker can do it.
2. “Just quickly” rewrite skills, services, scripts, or policy overlays in the parent after **build** is authorized — spawn a worker.
2. “Just quickly” rewrite skills, services, scripts, or policy overlays in the parent after **build** is authorized — spawn a worker.
3. Spawn workers **without**`model: "wwg3-worker"` (or an explicit user override).
3. Spawn workers **without**`model: "primary-subagent"` (or an explicit user override).
4. Use `wwg3-worker` as the **parent** session model for orchestration (parent stays Grok).
4. Use `primary-subagent` as the **parent** session model for orchestration (parent stays Grok).
5. Burn parent context by pasting entire file trees into chat when a worker can `read_file` / `grep` in a worktree.
5. Burn parent context by pasting entire file trees into chat when a worker can `read_file` / `grep` in a worktree.
### Allowed parent-session exceptions (small)
### Allowed parent-session exceptions (small)
@@ -84,13 +86,13 @@ Parent Grok **may** do these without a worker:
- Git inspect (`status`/`diff`/`log`) and, **when the user asks**, a local commit of already-prepared work.
- Git inspect (`status`/`diff`/`log`) and, **when the user asks**, a local commit of already-prepared work.
- Emergency stop / kill runaway subagents.
- Emergency stop / kill runaway subagents.
If unsure whether something is “product work,” **delegate to `wwg3-worker`**.
If unsure whether something is “product work,” **delegate to `primary-subagent`**.
### Worker spawn defaults
### Worker spawn defaults
```text
```text
subagent_type: general-purpose | explore | plan # as needed
subagent_type: general-purpose | explore | plan # as needed
model: "wwg3-worker" # always for this product
model: "primary-subagent" # always for this product
isolation: "worktree" for parallel/implement writers; none for read-only explore/review when sharing tree is intended
isolation: "worktree" for parallel/implement writers; none for read-only explore/review when sharing tree is intended
capability: read-only for review/explore; read-write or all for implement/fix
capability: read-only for review/explore; read-write or all for implement/fix
```
```
@@ -134,7 +136,7 @@ If scope is unclear after **build**, ask **one** clarifying question or propose
| Rule | Requirement |
| Rule | Requirement |
|------|-------------|
|------|-------------|
| Model | **Every** product subagent: `model: "wwg3-worker"`. Parent stays Grok. See [Orchestrator vs local worker](#orchestrator-vs-local-worker-mandatory). |
| Model | **Every** product subagent: `model: "primary-subagent"`. Parent stays Grok. See [Orchestrator vs local worker](#orchestrator-vs-local-worker-mandatory). |
| Who codes | Workers implement/review/check. Parent does **not** implement product code. |
| Who codes | Workers implement/review/check. Parent does **not** implement product code. |
| Roles | **Implementers** edit; **reviewers/explorers/verifiers** are read-only (no source edits). |
| Roles | **Implementers** edit; **reviewers/explorers/verifiers** are read-only (no source edits). |
| Isolation | Parallel writers → `isolation: "worktree"`. Do not parallel-edit the main tree. |
| Isolation | Parallel writers → `isolation: "worktree"`. Do not parallel-edit the main tree. |
@@ -142,9 +144,9 @@ If scope is unclear after **build**, ask **one** clarifying question or propose
| Product rules | Every implementer/reviewer prompt **must** include or inherit: this file’s hard rules, authorized slice, no secrets, platform-first, owner-safe messaging. |
| Product rules | Every implementer/reviewer prompt **must** include or inherit: this file’s hard rules, authorized slice, no secrets, platform-first, owner-safe messaging. |
| Resume | Fix cycles: `resume_from` same implementer/reviewer. After ~4 review-fix rounds, escalate disagreement to the user or refresh reviewer — do not thrash forever silently. |
| Resume | Fix cycles: `resume_from` same implementer/reviewer. After ~4 review-fix rounds, escalate disagreement to the user or refresh reviewer — do not thrash forever silently. |
| Orchestrator | Main Grok session (or `/execute-plan` orchestrator on Grok) owns sequencing, git policy, and user-facing status. Subagents do not push/merge. |
| Orchestrator | Main Grok session (or `/execute-plan` orchestrator on Grok) owns sequencing, git policy, and user-facing status. Subagents do not push/merge. |
| Multi-PR | Only with an explicit PR Plan DAG (`## PR Plan` / `### PR N:`). Prefer `/execute-plan --dry-run` first. This repo: **`--no-graphite`**, **no auto-PR**, **no push/merge** unless user overrides in writing. Implementers/reviewers still **`wwg3-worker`**. |
| Multi-PR | Only with an explicit PR Plan DAG (`## PR Plan` / `### PR N:`). Prefer `/execute-plan --dry-run` first. This repo: **`--no-graphite`**, **no auto-PR**, **no push/merge** unless user overrides in writing. Implementers/reviewers still **`primary-subagent`**. |
| Workflows | Allowed for repeatable gates; must not bypass authorize/review/check/git hygiene. Child agents = local worker. Effectful git still needs user-gated commit/push rules above. |
| Workflows | Allowed for repeatable gates; must not bypass authorize/review/check/git hygiene. Child agents = local worker. Effectful git still needs user-gated commit/push rules above. |
| best-of-n | Only when user asks or two architectures must be compared with a clear eval; candidates on **`wwg3-worker`**. |
| best-of-n | Only when user asks or two architectures must be compared with a clear eval; candidates on **`primary-subagent`**. |
### Stop conditions (do not “push through”)
### Stop conditions (do not “push through”)
@@ -160,7 +162,7 @@ Stop and report to the user when:
### Anti-rails (forbidden defaults)
### Anti-rails (forbidden defaults)
- Implementing product code because “we’re in execution mode” without **build** / **implement**.
- Implementing product code because “we’re in execution mode” without **build** / **implement**.
- **Parent Grok implementing product work** instead of spawning `wwg3-worker`.
- **Parent Grok implementing product work** instead of spawning `primary-subagent`.
- Spawning subagents on paid/cloud models for product work without explicit user override.
- Spawning subagents on paid/cloud models for product work without explicit user override.
- Silently falling back to Grok when the local worker is down.
- Silently falling back to Grok when the local worker is down.
- Skipping review **and** check on a multi-file change.
- Skipping review **and** check on a multi-file change.
@@ -7,7 +7,7 @@ This directory is the **Salon_Assistant / Lumina** product seed (Gitea `Ty_Tech/
3. Operator docs live under `docs/`; do not treat them as a second design SSOT.
3. Operator docs live under `docs/`; do not treat them as a second design SSOT.
4.**No product implementation** until the user says **build** / **implement**.
4.**No product implementation** until the user says **build** / **implement**.
5.**Default rails without being asked:** plan (if needed) → build authorized slice → independent review → check → commit only if asked → **no push** unless asked.
5.**Default rails without being asked:** plan (if needed) → build authorized slice → independent review → check → commit only if asked → **no push** unless asked.
6.**Grok parent orchestrates only.** All product work goes to local subagent model **`wwg3-worker`** (`spawn_subagent` with `model: "wwg3-worker"`). Do not implement product code in the parent.
6.**Grok parent orchestrates only.** All product work goes to local **Primary Subagent** (`spawn_subagent` with `model: "primary-subagent"` → `http://192.168.1.203:8083/v1`). Do not implement product code in the parent.
7. Git remote ops for this product: **`gitea_vps` only** — never `gitea_mcp_for_ty` or localhost Git MCP.
7. Git remote ops for this product: **`gitea_vps` only** — never `gitea_mcp_for_ty` or localhost Git MCP.
8. Platform-first: `nemohermes` / `openshell` only; no parallel control API.
8. Platform-first: `nemohermes` / `openshell` only; no parallel control API.
9. Owner-facing answers must never include terminal, nano, or Docker instructions.
9. Owner-facing answers must never include terminal, nano, or Docker instructions.
@@ -45,4 +45,4 @@ Code under `skills/`, `scripts/`, `services/`, `policy/`, etc. is **scaffold onl
- Gitea: `Ty_Tech/Salon_Assistant` (public)
- Gitea: `Ty_Tech/Salon_Assistant` (public)
- Git MCP for this product: **`gitea_vps`** only
- Git MCP for this product: **`gitea_vps`** only
- **Agents:** mandatory **execution loop**, **local-worker split** (Grok orchestrates; `wwg3-worker` does product work), and **Git hygiene** in [`AGENTS.md`](AGENTS.md) (also `CLAUDE.md`, `.grok/rules/*`). Agents must follow the rails without the user restating process. See [`CONTRIBUTING.md`](CONTRIBUTING.md) for branch/PR conventions.
- **Agents:** mandatory **execution loop**, **local-worker split** (Grok orchestrates; **Primary Subagent** / `primary-subagent` on `:8083` does product work), and **Git hygiene** in [`AGENTS.md`](AGENTS.md) (also `CLAUDE.md`, `.grok/rules/*`). Agents must follow the rails without the user restating process. See [`CONTRIBUTING.md`](CONTRIBUTING.md) for branch/PR conventions.
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.