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.
33
+
-`rules/eternal-saas/*` — rule host metadata now reflects Claude and Cursor support without claiming unsupported Codex nested context output.
34
+
-`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.
35
+
36
+
### Fixed
37
+
38
+
-`scripts/install.sh` — validate source install inputs before any non-dry-run mutation.
39
+
-`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` and `scripts/doctor.sh` — remove tracked private project literals from the privacy gate and support gitignored local banned-token overlays with redacted diagnostics.
45
+
21
46
## v0.5.1
22
47
23
48
2026-06-11
@@ -53,14 +78,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this
53
78
-`templates/AGENTS.global.md` — portable ~32-line cross-host agent baseline for Codex startup.
54
79
-`templates/AGENTS.override.codex.md` — Codex-specific startup deltas (no slash commands, no hooks, byte budget, skills path).
55
80
-`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.
81
+
-`docs/adr/0003-exodia-cross-host-rules.md` — decision record for the Exodia cross-host rule architecture.
57
82
- Codex byte gate in `scripts/doctor.sh` — warns when `~/.codex/AGENTS.md` exceeds 75 % of the configured `project_doc_max_bytes` limit.
58
83
- Manifest assertions in `scripts/doctor.sh` — validates `rules-manifest.json` schema version, `bannedTokens` non-empty, and `rules/eternal-saas/global/` module count.
59
84
- Rollback now restores `rules/eternal-saas` global digest and backed-up Codex startup files (`AGENTS.md`, `AGENTS.override.md`).
60
85
-`scripts/lib/skill-lists.sh` now includes `init-project-rules.sh` in `INSTALL_SCRIPTS` so it deploys to both Claude and Codex homes.
61
86
- 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.
87
+
- 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.
88
+
-One private pilot`.gitignore` updated to track `.claude/rules/` while keeping local session state ignored.
64
89
65
90
### Changed
66
91
@@ -73,7 +98,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this
73
98
74
99
### Fixed
75
100
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`).
101
+
-`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
102
-`scripts/update-check.mjs` now correctly marks `sync-rule-exports.mjs` as source-only (not installed) to prevent false drift failures.
78
103
-`scripts/update-check.mjs` renamed map includes `doctor.sh → doctor-etrnl.sh` to suppress stale-scripts drift false positives.
79
104
@@ -94,4 +119,3 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this
94
119
### Security
95
120
96
121
- Public repository boundary: no private identity, credentials, transcripts, or local planning artifacts in tracked files.
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
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.
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. Do not send email. Do not mutate Gmail outside the managed email runtime.
12
+
Do not run `etrnl-email triage run` for this slash command. That 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.
Copy file name to clipboardExpand all lines: docs/eternal-stack-coverage.md
+7-1Lines changed: 7 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,7 +27,13 @@ Status key: `done` means implemented in this repo; `live-gated` means intentiona
27
27
Eternal Stack is a bundled skill family: `etrnl-*` orchestration from this repo plus policy, review, and domain skills that install on the host and are routed by hooks and workflows. See `docs/skills.md` for the full inventory. Representative bundled skills:
-`.github/workflows/health.yml` runs the repository health pipeline in GitHub Actions on every pull request, on pushes to `main`, and on pushes to `release/**` branches. The workflow validates generated rule exports, then runs `tests/test-hooks.sh`, `tests/test-workflow-tools.sh`, `tests/test-install.sh`, and `scripts/doctor.sh --jobs 4`.
130
+
- The workflow is the hosted counterpart to the Required Gates block above: `sync-rule-exports.mjs --check` covers generated rule drift, the hook/workflow/install suites cover runtime behavior and rollback safety, and `scripts/doctor.sh --jobs 4` replays the aggregated syntax, ShellCheck, manifest, privacy, documentation, and heavy-suite health checks.
129
131
-`scripts/workflow-health.mjs` reads run ledgers in parallel with `ETRNL_LEDGER_READ_CONCURRENCY` (default `8`, capped at `12` for constrained systems). `workflow-health.mjs status` is the concise text surface used by SessionStart hints; `status --json` is the machine-readable surface for active run id, unfinished work, missing artifacts, browser/context freshness, phase/UAT state, stale run count, and the next deterministic action. Use `workflow-health.mjs doctor --strict` or `ETRNL_WORKFLOW_HEALTH_STRICT=1` when live runtime findings must fail closed instead of remaining diagnostic.
130
132
-`tool-effectiveness.mjs` summarizes sanitized local tool events into deterministic `keep`, `enforce`, `repo-specific`, `remove-watch`, or `insufficient-data` verdicts. It reads hook tool-signal state, optional local event artifacts, and explicit Codex imports; it rejects raw prompts, transcript text, secrets, private transcript paths, and tracked private project names. Use the seven-day `summarize` command above to revisit CodeGraph, Beads, and stolen hook patterns without manual log reading.
131
133
-`etrnl-state.mjs` is the canonical local state helper for compact lifecycle and small workflow events. It writes append-only JSONL under `~/.claude/etrnl/state`, rebuilds compact handoff views, rejects raw prompts/transcripts/private paths/secrets before append, and exposes `compact-handoff`, `stop-status`, `doctor`, `bead-link`, and `bead-prime-audit`. Hook hot paths may use bounded state appends and queries only.
0 commit comments