You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-`scripts/sync-rule-exports.mjs` and `scripts/init-project-rules.sh` — manifest-driven rule sync now validates profile membership, generated Cursor exports, privacy overlays, and install-time Cursor checksums.
34
+
-`scripts/init-project-rules.sh` — installs generated Cursor `.mdc` modules alongside Claude rules, validates Cursor exports, and tracks Cursor checksums in the install receipt.
35
+
-`rules/eternal-saas/*` — rule host metadata now reflects Claude and Cursor support without claiming unsupported Codex nested context output.
36
+
- Email triage runtime references now use the `etrnl-email` command pattern across guards, canaries, slash commands, and fixtures instead of legacy `vivaz-email` naming.
37
+
-`hooks/cc-sessionstart-restore.sh`, `scripts/lib/etrnl-state-core.mjs`, and `scripts/workflow-health.mjs` — track session reset boundaries so `/new` and `/clear` isolate stale compact handoff state.
38
+
-`scripts/bootstrap-tools.sh` and `scripts/tool-stack-check.mjs` — support validated `ETRNL_CODEGRAPH_NPM_SPEC` and `ETRNL_BEADS_NPM_SPEC` overrides for pinned global tool installs.
39
+
- Bundled skill namespaces now align around `@example-suite`, `money-vo-discipline`, and `orpc-patterns` naming across policy skills, routing lists, and vendored bundles.
40
+
-`skills/bundled/stripe-best-practices` — hardens Stripe guidance from advisory wording to explicit policy gates for API versions, payment-surface selection, test/migration expectations, and Connect settlement/dispute behavior.
41
+
42
+
### Fixed
43
+
44
+
-`scripts/install.sh` — validate source install inputs before any non-dry-run mutation.
45
+
-`hooks/cc-stop-verifier.sh`, `hooks/cc-pretooluse-guard.sh`, and `scripts/code-health-ledger-check.mjs` — close enforcement gaps for invalid Stop JSON, live hook writes, and prompt-only code-health audits.
-`rules-manifest.json`, `scripts/privacy-banned-token-check.mjs`, and `scripts/doctor.sh` — remove tracked private project literals from the privacy gate and support standalone or doctor-integrated banned-token scans with gitignored local overlays and redacted diagnostics.
51
+
21
52
## v0.5.1
22
53
23
54
2026-06-11
@@ -53,14 +84,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this
53
84
-`templates/AGENTS.global.md` — portable ~32-line cross-host agent baseline for Codex startup.
54
85
-`templates/AGENTS.override.codex.md` — Codex-specific startup deltas (no slash commands, no hooks, byte budget, skills path).
55
86
-`docs/rules.md` — cross-host rules reference: module catalog, host activation per tool, install and drift-check commands.
56
-
-`docs/adr/0003-cross-host-rule-stack.md` — decision record for the Exodia cross-host rule architecture.
87
+
-`docs/adr/0003-exodia-cross-host-rules.md` — decision record for the Exodia cross-host rule architecture.
57
88
- Codex byte gate in `scripts/doctor.sh` — warns when `~/.codex/AGENTS.md` exceeds 75 % of the configured `project_doc_max_bytes` limit.
58
89
- Manifest assertions in `scripts/doctor.sh` — validates `rules-manifest.json` schema version, `bannedTokens` non-empty, and `rules/eternal-saas/global/` module count.
59
90
- Rollback now restores `rules/eternal-saas` global digest and backed-up Codex startup files (`AGENTS.md`, `AGENTS.override.md`).
60
91
-`scripts/lib/skill-lists.sh` now includes `init-project-rules.sh` in `INSTALL_SCRIPTS` so it deploys to both Claude and Codex homes.
61
92
- Prompt router extended: "prune AGENTS/claude/rules", "rule bloat", "AGENTS.md/CLAUDE.md too long", "trim AGENTS/CLAUDE.md", and "startup file/context too long" prompts now route to `etrnl-ops-agent-files`. Three new skill-triggering fixture cases added.
62
-
- Six project pilots with the eternal-saas pack: core-suite, agency-tbd, tcg-collector, mimo-finance, vivaz-website, and sbcc-portal — each with project-specific `local-overrides.md`, pruned `AGENTS.md`, and removed old flat rule files.
63
-
-sbcc-portal`.gitignore` updated to track `.claude/rules/` while keeping local session state ignored.
93
+
- Six private project pilots with the eternal-saas pack, each with project-specific `local-overrides.md`, pruned `AGENTS.md`, and removed old flat rule files.
94
+
-One private pilot`.gitignore` updated to track `.claude/rules/` while keeping local session state ignored.
64
95
65
96
### Changed
66
97
@@ -73,7 +104,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this
73
104
74
105
### Fixed
75
106
76
-
-`scripts/plan-readiness-check.mjs` no longer flags hyphenated proper names such as the `agency-tbd` repo as a `TBD` placeholder; standalone `TBD` markers still fail (regression tests in `tests/test-workflow-tools.sh`).
107
+
-`scripts/plan-readiness-check.mjs` no longer flags hyphenated proper names such as the `example-agency` repo as a `TBD` placeholder; standalone `TBD` markers still fail (regression tests in `tests/test-workflow-tools.sh`).
77
108
-`scripts/update-check.mjs` now correctly marks `sync-rule-exports.mjs` as source-only (not installed) to prevent false drift failures.
78
109
-`scripts/update-check.mjs` renamed map includes `doctor.sh → doctor-etrnl.sh` to suppress stale-scripts drift false positives.
79
110
@@ -94,4 +125,3 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this
94
125
### Security
95
126
96
127
- Public repository boundary: no private identity, credentials, transcripts, or local planning artifacts in tracked files.
|[rtk-ai/rtk](https://github.com/rtk-ai/rtk)| Codex deterministic command rewrite via `codex-rtk-pre-tool-use.sh`|
45
+
|[rtk-ai/rtk](https://github.com/rtk-ai/rtk)|Optional Codex command rewrite helper via `codex-rtk-pre-tool-use.sh`; separate from the Claude/Cursor rule pack|
@@ -49,7 +51,7 @@ Eternal Stack reimplements useful mechanisms from public agent-tooling projects
49
51
50
52
## Claude Code
51
53
52
-
Eternal Stack targets [Claude Code](https://docs.anthropic.com/en/docs/claude-code) hook and skill surfaces. Codex parity helpers install under `~/.codex/etrnl/` when you use both hosts.
54
+
Eternal Stack targets [Claude Code](https://docs.anthropic.com/en/docs/claude-code) hook and skill surfaces. The reusable rule pack exports to Claude and Cursor; optional Codex helper state installs under `~/.codex/etrnl/` when you use both hosts.
Copy file name to clipboardExpand all lines: README.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -53,7 +53,7 @@ tests/test-hooks.sh
53
53
54
54
**Hooks** — enforcement at tool boundaries. Full catalog and lifecycle wiring: [docs/hooks.md](docs/hooks.md). Pretool and stop rules: [docs/guards.md](docs/guards.md). Regression: [tests/test-hooks.sh](tests/test-hooks.sh).
55
55
56
-
**Skills** — repeatable workflows as `/etrnl-*` commands, grouped by namespace (`dev`, `audit`, `ops`, `comm`). Inventory: [docs/skills.md](docs/skills.md).
56
+
**Skills** — repeatable workflows as `/etrnl-*` commands, grouped by namespace (`dev`, `audit`, `ops`, `comm`). Bundled domain skills include `domain-cli`, `domain-cloud-native`, `domain-embedded`, `domain-fintech`, `domain-iot`, `domain-ml`, and `domain-web`. Inventory: [docs/skills.md](docs/skills.md).
57
57
58
58
**Scripts** — deterministic helpers for ledgers, browser QA, workflow health, code-health inventory, deep-audit validation, and release hygiene.
59
59
@@ -86,7 +86,7 @@ Don't skip those steps. Strict mode with untested hooks will interrupt things yo
86
86
|[CLAUDE.md](CLAUDE.md)| Thin Claude Code wrapper that imports `AGENTS.md`|
87
87
|[docs/hooks.md](docs/hooks.md)| Hook reference: every `cc-*` entrypoint, events, default vs strict |
Copy file name to clipboardExpand all lines: commands/email-triage.md
+10-10Lines changed: 10 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,5 @@
1
1
---
2
-
description: Run VIVAZ email Inbox Zero triage for one account, then open the action queue.
2
+
description: Run managed email Inbox Zero triage for one account, then open the action queue.
3
3
argument-hint: <account-id>
4
4
allowed-tools: Bash
5
5
---
@@ -8,41 +8,41 @@ Account argument from the slash command: `$ARGUMENTS`
8
8
9
9
Treat the argument as the account id. If it is empty, ask the repository owner for the account id and stop.
10
10
11
-
Do not handwrite Gmail commands. Do not send email. Do not mutate Gmail outside the VIVAZ email runtime.
12
-
Do not run `vivaz-email triage run` for this slash command. That is a dry classification path and does not clear INBOX.
11
+
Do not handwrite Gmail commands, send email, or mutate Gmail outside the managed email runtime.
12
+
Avoid `etrnl-email triage run` for this slash command; it is a dry classification path and does not clear INBOX.
13
13
14
14
Phase 1 is Inbox Zero. Triage every email in INBOX, archive known bad-quality emails, label action/waiting/manual-review items, remove them from INBOX, and provider-verify INBOX is zero:
If verification does not show `inbox_zero_verified: true`, `inbox_count: 0`, and either `gmail_mutated: true` or `queue_ready_without_mutation: true`, do not show queue items. Continue Inbox Zero triage first or paste the runtime blocker.
27
27
28
28
If `guarded-run` exits with `TRIAGE_GUARD_ML_DISAGREED`, do not ask the repository owner whether to continue. Inspect the runtime evidence, patch deterministic triage rules/cache when appropriate, then rerun the guarded command:
If the queue item shows a proposed reply with a draft id, run the outgoing reply checker before asking the repository owner to approve or send it:
43
43
44
44
```bash
45
-
vivaz-email drafts check --draft-id <draft-id>
45
+
etrnl-email drafts check --draft-id <draft-id>
46
46
```
47
47
48
48
If the checker returns any issue, stop and surface the failed draft check with the exact issue list. Do not improvise manual rewrites, and do not ask the repository owner to approve or send a failed draft until the runtime provides a checked replacement draft.
Copy file name to clipboardExpand all lines: docs/adr/0003-exodia-cross-host-rules.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,11 +7,11 @@ date: 2026-06-10
7
7
8
8
## Context
9
9
10
-
Claude Code, Codex, and Cursor each provide native agent-context surfaces (`.claude/rules/` with `paths:` frontmatter, `AGENTS.md`nesting, and `.mdc` with `globs`), but the rule content is currently authored separately for each project. This creates drift, duplication, and inconsistent enforcement surfaces across repos.
10
+
Claude Code, Codex, and Cursor each provide native agent-context surfaces (`.claude/rules/` with `paths:` frontmatter, global `AGENTS.md`startup context, and `.mdc` with `globs`), but the rule content is currently authored separately for each project. This creates drift, duplication, and inconsistent enforcement surfaces across repos.
11
11
12
12
Host features verified on 2026-06-10:
13
13
-**Claude Code** natively loads `.claude/rules/` and `~/.claude/rules/` with `paths:` frontmatter scoping; no hooks needed.
14
-
-**Codex** reads `~/.codex/AGENTS.md` and `AGENTS.override.md`; nested `AGENTS.md` files are its only depth mechanism; no glob or import syntax.
14
+
-**Codex** reads `~/.codex/AGENTS.md` and `AGENTS.override.md`; this repo installs the global startup digest and does not install project-depth rule modules for Codex.
15
15
-**Cursor**`.mdc` files with `globs`, `description`, and `alwaysApply` are native; Cursor has no user-level rules directory (settings UI only).
16
16
17
17
`scripts/install.sh` already syncs `rules/etrnl` to `~/.claude/rules/etrnl` with an atomic tmp/old swap and implements `ETRNL_INSTALL_STARTUP` gating for startup files. The bundled skill family already publishes Eternal-stack patterns publicly (`money-vo-discipline`, `abacatepay-integration`, `eternal-best-practices`).
@@ -24,11 +24,11 @@ This record is ADR 0003. ADR 0002 is taken by `etrnl-state-and-compact-handoff`.
24
24
25
25
### 2. Privacy boundary
26
26
27
-
The `eternal-saas` rule pack ships publicly. Excluded from tracked rule files: client business names, account facts, credentials, transcripts, and personal identity. Client-repo rollout lists stay in local gitignored planning paths. Enforcement: `rules-manifest.json` carries `privacy.bannedTokens`; `sync-rule-exports.mjs --check` fails when a tracked rule file contains one.
27
+
The `eternal-saas` rule pack ships publicly. Excluded from tracked rule files: client business names, account facts, credentials, transcripts, and personal identity. Client-repo rollout lists stay in local gitignored planning paths. Enforcement: `rules-manifest.json` carries generic privacy sentinel tokens plus optional untracked local token files; `sync-rule-exports.mjs --check` fails when a tracked rule file contains one.
28
28
29
-
### 3. Codex scoped depth via nested AGENTS.md
29
+
### 3. Codex uses the startup digest
30
30
31
-
Each rule module may declare `codexNested: <relative-dir>`; `sync-rule-exports.mjs` emits a nested `AGENTS.md` for declared modules; undeclared modules ride the root digest only. No import syntax exists in Codex — `@` imports are never used in Codex files.
31
+
The project rule pack installs to Claude Code and Cursor project surfaces. Codex receives the shared baseline through `~/.codex/AGENTS.md` and `AGENTS.override.md`; no nested project `AGENTS.md` files are generated by `sync-rule-exports.mjs` or `init-project-rules.sh`.
32
32
33
33
### 4. Byte budget is read, not assumed
34
34
@@ -48,7 +48,7 @@ All project-pack installs use file copies. Symlinks break for other clones, CI,
48
48
49
49
## Consequences
50
50
51
-
- One source of truth for rule content; Claude `.claude/rules/`, Cursor `.mdc`, and Codex `AGENTS.md`files are generated or installed from the same module.
51
+
- One source of truth for project rule content; Claude `.claude/rules/` and Cursor `.mdc`files are generated or installed from the same module. Codex receives the global baseline through startup files.
52
52
-`sync-rule-exports.mjs --check` in the test suite prevents host-twin drift and banned-token leaks.
53
53
- The byte-gate in `doctor.sh` keeps Codex context under the effective limit; the explicit fallback prevents silent overflow.
54
54
- Checksum-tracked installs let pilot repos self-classify drift without re-running install.
0 commit comments