Skip to content

Commit 149ea06

Browse files
committed
v2.0.0: hermes bridge processor logging fix, E2E script updates (strray-ai → 0xray)
1 parent d7d4969 commit 149ea06

8 files changed

Lines changed: 237 additions & 88 deletions

File tree

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
# Release Reflection: 1.22.66 → HEAD
2+
3+
**Generated:** 2026-06-05T18:40:36.814Z
4+
**Cadence:** release (since tag v1.22.66)
5+
**Commits examined:** 21
6+
**Span:** v1.22.66..HEAD
7+
8+
## Scope
9+
10+
- **21 commits** with **6616 file changes**
11+
- **+22281 insertions / -5796154 deletions**
12+
- **0 files added, 0 modified, 0 deleted**
13+
14+
## Commit Chronicle
15+
16+
- **v2.0.0: production hardening — security fixes, code quality, test coverage** (d7d4969)
17+
0 files: package-lock.json, package.json, scripts/node/postinstall.cjs, src/__tests__/framework-enforcement-integration.test.ts, src/__tests__/unit/codex-policy.service.test.ts +59 more
18+
19+
- **v2.0.0: add codex rules 67-68, update rule 66, sync CLAUDE.md** (069c657)
20+
64 files: CLAUDE.md, xray/codex.json
21+
22+
- **v2.0.0: add codex rules (61-66), CLAUDE.md, validation criteria update** (58aa548)
23+
2 files: CLAUDE.md, README.md, xray/codex.json
24+
25+
- **v2.0.0: finalize package rename strray-ai → 0xray, strray/ → xray/, docs purge, MCP governance fixes** (2c0fbfc)
26+
3 files: .gitignore, .npmignore, AGENTS-consumer.md, AGENTS-full.md, AGENTS.md +120 more
27+
28+
- **v2: wire three-subsystem architecture — CodexPolicyService, ProposalApplier, opencode-cli-invoker** (63d77db)
29+
125 files: src/__tests__/unit/enforcer-tools-server.test.ts, src/__tests__/unit/opencode-cli-invoker.test.ts, src/__tests__/unit/proposal-applier.test.ts, src/execution/opencode-cli-invoker.ts, src/execution/proposal-applier.ts +4 more
30+
31+
- **v1.22.69: Trinitarium Moral Overlay — governance moral tension scoring** (77f2c49)
32+
9 files: docs/reflections/auto-commit-cadence-2026-06-02.md, docs/reflections/deep/release-v1.22.66-to-head-2026-06-02.md, docs/reflections/deep/release-v1.22.66-to-head-2026-06-03.md, src/governance/governance-core.ts, src/governance/governance-service.ts +4 more
33+
34+
- **v1.22.68: multi-platform install commands, postinstall refactor, README rebuild** (8e2d533)
35+
9 files: .strray/config/features.json, .strray/config/openclaw.json, package.json, scripts/node/postinstall.cjs, src/cli/commands/hermes-install.ts +5 more
36+
37+
- **chore: remove tracked node_modules, ci-test-env, backups from git** (dced77f)
38+
10 files:
39+
40+
- **clean: remove tracked performance-reports and logs/performance-reports (90k generated files)** (aa39b87)
41+
26362 files:
42+
43+
- **v1.22.67** (36b3ee9)
44+
90691 files: AGENTS-consumer.md, AGENTS-full.md, README.md, backups/version-manager-backup-2026-06-02T00-30-22-214Z/CHANGELOG.md, command/dependency-audit.md +96 more
45+
46+
- **fix: strray-ai package rename + E2E test fixes (0 skips, 0 failures)** (7970eac)
47+
101 files: package.json, scripts/test/test-grok-cli-e2e.mjs, scripts/test/test-hermes-e2e.mjs, scripts/test/test-openclaw-e2e.mjs, scripts/test/test-opencode-e2e.mjs +2 more
48+
49+
- **fix: align governance client field names with Dynamo response (solarResonance -> solarIsotopicResonance, relax evaluate validation)** (90bfe10)
50+
7 files: src/integrations/governance/governance-client.ts, src/integrations/governance/index.ts, src/integrations/governance/types.ts
51+
52+
- **v2 direct cleanup: remove old 0xRay identity + clean consumer docs** (d91c67e)
53+
3 files: .npmignore, .opencode/hooks/post-commit, .opencode/hooks/post-push, .opencode/plugin/strray-codex-injection.js, .opencode/state/state.json +6393 more
54+
55+
- **docs: deep reflection on P2-S01 relay cross-check — honest audit of wheel-spinning vs. the original Governance conscience purpose** (b26670b)
56+
6398 files: docs/reflections/deep/p2-s01-execution-ssot-relay-cross-check-journey-2026-05-21.md
57+
58+
- **v2: establish complete compaction-survivable execution foundation for three-subsystem refactor** (4ddf5ec)
59+
1 files: docs/reflections/0xray-active-surface-analysis-grok-cli-2026-05-19.md, docs/reflections/0xray-v2-complete-refactoring-blueprint-2026-05-19.md, docs/reflections/0xray-v2-documentation-index-2026-05-20.md, docs/reflections/0xray-v2-master-refactoring-playbook-2026-05-20.md, docs/reflections/0xray-v2-migration-and-cutover-strategy-2026-05-20.md +10 more
60+
61+
- **docs: add reflection on the Aside subcontext pattern and its architectural implications** (96b772d)
62+
15 files: docs/reflections/aside-subcontext-pattern-2026-05-19.md
63+
64+
- **docs: add aside on the growth arc and realization of 0xRay's deeper architecture** (7750887)
65+
1 files: docs/reflections/0xray-growth-arc-aside-2026-05-19.md
66+
67+
- **docs: add 0xRay three-subsystem architecture vision reflection** (0694f92)
68+
1 files: docs/reflections/0xray-three-subsystem-architecture-vision-2026-05-19.md
69+
70+
- **docs: add deep journey reflection on Grok CLI MCP stability and publish pipeline fixes** (cba8b87)
71+
1 files: docs/reflections/deep/grok-mcp-publish-stability-journey-2026-05-19.md
72+
73+
- **docs: add deep journey reflection on double-dist fix and Dynamo governance pipeline** (c297183)
74+
1 files: docs/reflections/deep/the-path-to-dynamo-journey-2026-05-19.md
75+
76+
- **fix: update tests for new resolveFrameworkPaths behavior + deflake inference-e2e** (4702109)
77+
1 files: .opencode/state/state.json, .strray/codex.json, .strray/config.json, .strray/features.json, .strray/integrations.json +3 more
78+
79+
## Files Added
80+
81+
*(none)*
82+
83+
## Files Modified
84+
85+
*(none)*
86+
87+
## Patterns Observed
88+
89+
- Net code reduction: 5773873 lines removed — simplification effort
90+
- Bug fixes present — stability improvement
91+
- Refactoring detected — architectural debt being addressed
92+
- Version bumps/releases present — release cadence active
93+
94+
## Key Decisions
95+
96+
- Fix: v2.0.0: production hardening — security fixes, code quality, test coverage
97+
- Transition: v2.0.0: finalize package rename strray-ai → 0xray, strray/ → xray/, docs purge, MCP governance fixes
98+
- Structural change: v1.22.68: multi-platform install commands, postinstall refactor, README rebuild
99+
- Removal: chore: remove tracked node_modules, ci-test-env, backups from git
100+
- Removal: clean: remove tracked performance-reports and logs/performance-reports (90k generated files)
101+
- Fix: fix: strray-ai package rename + E2E test fixes (0 skips, 0 failures)
102+
- Fix: fix: align governance client field names with Dynamo response (solarResonance -> solarIsotopicResonance, relax evaluate validation)
103+
- Removal: v2 direct cleanup: remove old 0xRay identity + clean consumer docs
104+
- Structural change: v2: establish complete compaction-survivable execution foundation for three-subsystem refactor
105+
- Fix: docs: add deep journey reflection on Grok CLI MCP stability and publish pipeline fixes
106+
- Fix: docs: add deep journey reflection on double-dist fix and Dynamo governance pipeline
107+
- Fix: fix: update tests for new resolveFrameworkPaths behavior + deflake inference-e2e
108+
109+
## Inference Notes
110+
111+
- Net code reduction: 5773873 lines removed — technical debt being paid down
112+
113+
---
114+
*Generated by StorytellingTriggerProcessor — release cadence — 2026-06-05T18:40:36.814Z*
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Reflection: Hermes Bridge Processor Logging Fix
2+
3+
## Problem
4+
6 Hermes E2E failures: `[pre-processors]` and `[post-processors]` entries missing from activity.log. The test at `test-hermes-e2e.mjs` Phase 4 greps for these tags to verify the bridge pipeline ran.
5+
6+
## Root Causes
7+
8+
### Cause 1: Stale `dist/` (primary)
9+
Source edits to `src/integrations/hermes-agent/bridge.mjs` added `[pre-processors]`/`[post-processors]` logging in March but `dist/` was never rebuilt. The bridge at `~/.hermes/plugins/strray-hermes/bridge.mjs` — the *actual* file called by Hermes — was the June 2 version (27,375 bytes). The updated `dist/integrations/hermes-agent/bridge.mjs` (28,197 bytes) was never deployed.
10+
11+
The Python plugin resolves `BRIDGE_PATH = PLUGIN_DIR / "bridge.mjs"` where `PLUGIN_DIR = ~/.hermes/plugins/strray-hermes/`. The `node_modules/0xray/dist/` bridge is never called directly.
12+
13+
### Cause 2: `Array.isArray(results)` mismatch
14+
`executePreProcessors()` returns `{ success, results: [...] }` (object), but `executePostProcessors()` returns `[...]` (array directly). The bridge code used a single `Array.isArray(results)` check to normalize:
15+
- Pre: `false``details = []`, `processorCount = 0`
16+
- Post: `true``details = results.map(...)`, correct counts
17+
18+
This meant processor details were never included in pre-processor responses, and individual `[pre-processor]` log entries were never written.
19+
20+
## Fix
21+
1. **Normalized return format**: Split the check into `Array.isArray(rawResults) ? rawResults : (rawResults.results || [])` so both pre and post work correctly
22+
2. **Added missing logging**: `handlePreProcess` now logs `[pre-processors] N processor(s)`, `handlePostProcess` logs `[post-processors] N processor(s)`, and `runProcessors` logs individual `[pre-processor] name — ok` / `[post-processor] name — FAILED: err`
23+
3. **Rebuilt dist**: `npm run build && npm pack`
24+
4. **Deployed to plugin dir**: Copied updated `bridge.mjs` (+ `__init__.py`, `schemas.py`, `tools.py`) to `~/.hermes/plugins/strray-hermes/`
25+
26+
## Verification
27+
- Hermes E2E solo: 49/0/0 (was 43/6/0)
28+
- Full consumer E2E gate: Hermes 46/0/0, OpenCode 34/0/0, OpenClaw 96/0/0, Grok CLI 55/0/2 — **all pass**

scripts/test/test-consumer-e2e.mjs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ async function main() {
5151
section('Phase 0: Pack the package');
5252

5353
const packOutput = execSync(`cd "${projectRoot}" && npm pack`, { encoding: 'utf-8', timeout: 60000 });
54-
const tarballMatch = packOutput.match(/strray-ai-(\d+\.\d+\.\d+)\.tgz/);
54+
const tarballMatch = packOutput.match(/(?:strray-ai|0xray)-(\d+\.\d+\.\d+)\.tgz/);
5555
if (!tarballMatch) {
5656
// Fallback: find the newest .tgz in the project root
5757
const files = fs.readdirSync(projectRoot).filter(f => f.endsWith('.tgz'));
@@ -82,7 +82,7 @@ async function main() {
8282
console.log('Package installed from local tarball');
8383

8484
// Verify
85-
const pkgPath = path.join(consumerDir, 'node_modules', 'strray-ai', 'package.json');
85+
const pkgPath = path.join(consumerDir, 'node_modules', '0xray', 'package.json');
8686
if (!fs.existsSync(pkgPath)) {
8787
console.error('Installation verification failed');
8888
process.exit(1);

0 commit comments

Comments
 (0)