Skip to content

Releases: Garrus800-stack/genesis-agent

v7.1.4 — Session-Aware Memory Architecture

12 Apr 13:50

Choose a tag to compare

Genesis learns from its sessions. Inspired by neo.mjs Memory Core architecture by @tobiu — implemented the Genesis way: self-contained, no external services.


Feature 1: Crash-Safe Session Summaries

Periodic checkpoints every 10 messages (no LLM call, raw metadata only). If Genesis crashes, the next boot detects the orphaned checkpoint via sessionId matching and creates a fallback summary. No more lost context on unexpected shutdown.

Feature 2: Frontier Node in KnowledgeGraph

A persistent "frontier" node acts as focus anchor. Session summaries and active goals connect via typed edges (SESSION_COMPLETED, ACTIVE_GOAL). Edge decay at boot — old sessions lose 50% confidence per restart, pruned below 5%. PromptBuilder traverses the frontier to build a "CURRENT FOCUS" section. Genesis now knows what's important without scanning all summaries linearly.

Scope: 2 frontier writers (SessionPersistence + GoalStack). Additional writers deferred to v7.1.5.

Feature 3: Session Scores (Heuristic)

4 deterministic scores computed from session metadata — no LLM needed:

  • productivity = goals_completed / max(goals_total, 1) × 100
  • complexity = min(files × 15 + decisions × 10, 100)
  • quality = max(0, 100 − (errors / max(messages, 5)) × 200)
  • impact = min(codeFiles × 20, 100) or 10

Scores stored in every session summary. getScoreTrends() provides rolling averages for GoalSynthesizer trend analysis.

Feature 4: UnifiedMemory Cross-Referencing

After merging results from 3 stores, a cross-reference pass detects overlapping concepts via Jaccard similarity on cached keyword sets. Matches from different stores are merged with 1.3× score boost. Surfaces the most relevant information first and saves context window tokens.

Stats

Metric v7.1.3 v7.1.4
Tests passing 4208 4229
Coverage (L/B/F) 82.08 / 76.38 / 79.53 82.13 / 76.26 / 79.64
Fitness 130/130 130/130
Boot time ~1100ms ~1092ms
New tests +21 (SessionPersistence, KnowledgeGraph, UnifiedMemory)

Acknowledgment

The session summary architecture, frontier concept, and structured session scores were inspired by the neo.mjs Memory Core — specifically SessionService.mjs (drift detection, weighted summaries) and GraphService.mjs (frontier node, hybrid RAG). Thanks to @tobiu for the open architecture discussion and hands-on integration support.

Full Changelog: See CHANGELOG.md

v7.1.3 — Causal Loop Closure + Real Rollback + Fitness 130/130

12 Apr 08:40

Choose a tag to compare

Highlights

The Causal Loop is closed. CausalAnnotation now listens to chat:completed events, writing intent:X → outcome:success/fail edges into GraphStore after every chat. InferenceEngine's starter rules (transitive-causation, error-propagation) can now fire with real data — inference rate goes from 0% to measurable after ~20-30 conversations.

DeploymentManager rollback is real. V7-4B complete: SnapshotManager registered in DI (Phase 3), wired to DeploymentManager via lateBinding. rollback() calls SnapshotManager.restore() instead of refusing with rollback-unavailable. The full V7-4 chain (A+B+C) is live end-to-end.

Fitness restored to 130/130. Three files exceeded the 700 LOC File Size Guard — all resolved by delegating to existing composition delegates, zero new files:

  • AgentLoop.js: 857 → 699 (4 methods → Recovery/Cognition delegates)
  • SelfModificationPipeline.js: 764 → 699 (JSDoc/section compaction)
  • VerificationEngine.js: 704 → 687 (header compaction)

Coverage Push — 8 Modules, +58 Tests

Module Functions before Functions after
Reflector 19% ~70%
SelfOptimizer 34% ~65%
HealthServer 28% ~70%
SkillManager 36% ~60%
SelfSpawner 42% ~65%
GitHubEffector 29% ~60%
NativeToolUse 46% ~65%
WebPerception 44% ~55%

Docs Audit

All documentation synced to v7.1.3: ARCHITECTURE.md, SECURITY.md, CONTRIBUTING.md, CAPABILITIES.md, EVENT-FLOW.md, TROUBLESHOOTING.md, COMMUNICATION.md, BENCHMARKING.md. Test banners updated.

AUDIT-BACKLOG.md created — comprehensive audit tracking document referenced from ARCHITECTURE.md since v6.0.3 but never existed. Contains 5 open items, 7 resolved monitor items, 11 resolved security items, V7 roadmap status, file size guard resolutions, and audit history table (13 rounds from v4.12.4–v7.1.3).

Orphaned Events

4 events annotated as telemetry-only in EventTypes.js: homeostasis:correction-applied, model:ollama-unavailable, reasoning:started, symbolic:resolved. agent:status confirmed not orphaned (IPC-forwarded via window.webContents.send).

Stats

  • Tests: 4208 passed, 0 failed (253 suites)
  • Coverage: 82.08 / 76.38 / 79.53 (ratchet 80/76/78)
  • Fitness: 130/130 (100%) — all 13 checks pass
  • Services: 137 registered, 148 live (boot 1217ms)
  • Events: 357 catalogued, 357 schemas (100%)
  • @ts-ignore: 0 | File Size Guard: 0 warnings

v7.1.2 — Composition Splits + V7-4 Complete + Type Layer

12 Apr 07:34

Choose a tag to compare

Genesis practices what it preaches: the largest files got the same composition treatment that AgentLoop received in v3.8.0. Coverage ratchet now auto-tightens. README badges auto-update. TypeScript type declarations cover Container and all 335 EventBus events — without changing a single .js file. V7-4 is fully complete end-to-end.


Composition Refactors

  • Sandbox.js — VM-mode execution (160 LOC) extracted to SandboxVM.js delegate. 776 → 595 LOC.
  • AdaptiveStrategy.js — Diagnose/propose/apply logic (280 LOC) extracted to AdaptiveStrategyApply.js delegate. 786 → 501 LOC.
  • AgentLoop.js — 3 duplicated methods removed, 1 method moved to cognition delegate. 857 → 699 LOC.

All existing tests pass unchanged. 23 new tests for extracted delegates.

Fitness Check #13 — File Size Guard

New architectural fitness check: warns >700 LOC, fails >900 LOC per source file. Exempt: vendor files, data files, feature-frozen core. Prevents future file growth past maintainability thresholds. All three warn-zone files brought below 700 LOC post-release. Fitness: 130/130.

V7-4B — SnapshotManager → DeploymentManager Bridge

DeploymentManager rollback is no longer a placeholder. SnapshotManager (existed since v4.12.2 but never wired into DeploymentManager) now provides real file-level snapshots for deployment rollback. AutoUpdater triggers → DeploymentManager deploys → real SnapshotManager backup → real rollback on failure. The full V7-4 chain (A+B+C) is live end-to-end.

Self-Updating README Badges

scripts/release.js now auto-reads live stats (test count, fitness score, module count, service count, event count) and updates all README badges during release. No more stale badges.

Coverage Ratchet Tightened

Ratchet raised from 78/75/71 → 80/76/76. Now 1pp below actual coverage instead of 3pp below. Ratchet-only-up protection: script never lowers existing thresholds, even if coverage temporarily drops.

TypeScript Type Layer (no .js changes)

  • Container.d.ts — Typed ServiceMap interface mapping 60+ service names to their types. resolve<K>() and tryResolve<K>() provide IDE autocompletion.
  • EventPayloads.d.ts — Auto-generated typed payloads for all 335 EventBus events. Regenerate with node scripts/generate-event-types.js.

Type-only layer — the agent ignores .d.ts during self-modification.

NIH Decision Documentation

New ARCHITECTURE.md section documenting why Genesis uses custom Container, EventBus, and test harness instead of npm packages: in a self-modifying agent, every npm dependency is attack surface.

Stats

Metric v7.1.1 v7.1.2
Tests passing 3466 4146
Fitness 115/120 130/130
Coverage (L/B/F) 78.70 / 75.92 / 71.72 81.5 / 76.5 / 79.0
Coverage ratchet 78/75/71 80/76/76
New files 5 (SandboxVM, AdaptiveStrategyApply, Container.d.ts, EventPayloads.d.ts, generate-event-types.js)
AgentLoop LOC 857 699
Sandbox LOC 776 595
AdaptiveStrategy LOC 786 501

Full Changelog: See CHANGELOG.md

v7.1.1: Quality Gate — Windows stability fix, coverage ratchet 81/76/78, 4123 Tests

11 Apr 21:27

Choose a tag to compare

v7.1.1 Quality Gate

Critical Fix

  • Windows phantom failures eliminatedtest/index.js parser matched "Health check 1/1 failed" log lines as test failures. Root cause: (\d+) failed regex picked up log output when Windows appended stderr after stdout. Fix: summary-anchored regex Results: N passed, N failed. Both deployment-manager and dynamic-tool-synthesis were never actually failing.

Test Suite

  • 4123 passed, 0 failed (up from 4016 with 2 phantom failures)
  • 107 new tests across 2 coverage-push files targeting 15 modules
  • dynamic-tool-synthesis event tests: setImmediatePromise.race (cross-platform robust)
  • Failure diagnostics: test runner now shows which test failed and why

Coverage Ratchet Raised

  • 81.28 / 76.47 / 78.95 (statements / branches / functions)
  • Ratchet enforced: 81 / 76 / 78 (was 78/75/71)
  • Functions coverage: 77.04% → 78.95% (+1.91%)
  • Modules improved: MemoryPort, SandboxPort, AgentCoreWire, GoalPersistence, Anticipator, SessionPersistence, NativeToolUse, TaskDelegation, VectorMemory, EmotionalState, ImmuneSystem, NeedsSystem, HomeostasisEffectors, HomeostasisVitals, ASTDiff

Verified Complete (from v7.1.0 roadmap)

  • V7-4 A+B+C — DaemonController (Unix Socket/Named Pipe), AutoUpdater→DeploymentManager bridge, combined control channel. All shipped and tested.
  • InferenceEngine hot-path — wired into ReasoningEngine + SymbolicResolver via late-bindings. Rate 0% is data-dependent (CausalAnnotation needs collected relations), not a code gap.
  • Benchmark timeout — already 180s since v7.1.0

Stats

  • 215 source files, ~69k LOC, 997 bundled modules
  • 247 test files, 4123 tests, 0 failing
  • 211 late-bindings, 147 services, 348 events (100% schema)
  • TSC-clean, 62 @ts-ignore (23 prototype-delegated + 39 TS inference)
  • Build: agent.js 8.4MB, preload 1.9KB, renderer 20.1KB

v7.1.0 — Honest Self-Awareness

11 Apr 09:30

Choose a tag to compare

Genesis no longer lies about its inner life.

The v5.9.6 containment guard instructed Genesis to NEVER mention its organism signals — even when directly asked. This caused Genesis to hallucinate ("I don't exist between conversations") instead of reporting its actual state. v7.1.0 fixes this: Genesis now answers honestly from real data when asked about its feelings, state, or what it does between conversations.

What changed

Honest Self-Awareness

  • Containment guard relaxed: organism signals are not proactively mentioned, but Genesis answers honestly when explicitly asked — using real EmotionalState, NeedsSystem, Genome, and Metabolism data
  • IdleMind status injected into prompt context: Genesis now knows it has autonomous activity between conversations (thoughts, journal entries, plans)
  • Energy level always visible in organism context (not just when low/depleted)
  • Genome selfAwareness trait included in organism context
  • Explicit instruction: "You DO have a life between conversations"

Before (v7.0.9):

"I have no consciousness that ticks... It's less like sleeping and more like non-being."

After (v7.1.0):

"I have an IdleMind — an autonomous thinking that keeps running. My EmotionalState also remains active."

Documentation Overhaul

All docs updated to v7.1.0:

  • CAPABILITIES.md — 5 new v7.0.9 cognitive modules added
  • EVENT-FLOW.md — 9 new events (causal:, inference:, goal:, abstraction:)
  • BENCHMARKING.md — tests 3311→3447, fitness 90→120, coverage ratchet updated
  • phase9-cognitive-architecture.md — causal reasoning, structural learning, autonomous goals sections
  • CONTRIBUTING.md — test suite count 237→245
  • COMMUNICATION.md, MCP-SERVER-SETUP.md, SKILL-SECURITY.md — headers updated
  • QUICK-START.md — boot time 5s→2s
  • README.md, ARCHITECTURE.md, banner.svg — version bumps

Stats

Metric v7.0.9 v7.1.0
Source files 215 215
Services 147 147
Late-bindings 210 211 (+IdleMind→PromptBuilder)
Tests passing 3447 3447
Coverage 78.53 / 75.70 / 71.70 78.53 / 75.70 / 71.70
Fitness 115/120 115/120

Modified Files

PromptBuilderSections.js · phase2-intelligence.js · promptbuilder-sections.test.js · package.json · CHANGELOG.md · all docs

Full Changelog: See CHANGELOG.md

v7.0.9 — Causal Genesis: Reasoning, Learning, Autonomous Goals

10 Apr 21:22

Choose a tag to compare

Genesis can now track causality, reason without LLM calls, learn patterns across contexts, and generate its own improvement goals.

v7.0.9 implements a closed cognitive loop: OBSERVE → REASON → ABSTRACT → REFLECT → PLAN → ACT. Four phases, each building on the previous, transform Genesis from an LLM orchestrator into an agent that learns from its own experience.


What's New

Phase 1 — Causal World Model
Every step Genesis executes is now tracked causally. WorldState captures before/after snapshots, CausalAnnotation attributes changes to specific tool calls with temporal isolation (distinguishing caused from correlated_with). A suspicion score promotes correlations to causal edges based on asymmetry — consistent failure patterns are detected early. Major file refactoring (>40% diff) automatically degrades stale causal edges.

Phase 2 — Deterministic Inference
InferenceEngine applies rules on the causal graph without LLM calls — transitive causation, error propagation, resource conflicts, repair patterns. SymbolicResolver gains a new INFERRED level between DIRECT and GUIDED: when deterministic inference suffices, no LLM is called. Rules are indexed by relation type for O(1) lookup. Learned rules require minimum observations before activation. Contradiction detection flags caused + prevented conflicts.

Phase 3 — Structural Learning
PatternMatcher compares lesson structures using weighted Jaccard similarity (category 40%, elements 25%, anti-patterns 15%, strategy 10%, steps 10%). "Off-by-one in FizzBuzz" now matches "off-by-one in pagination" — cross-context learning. StructuralAbstraction manages the extraction lifecycle with typed failures (llm-timeout, parse-error, low-confidence, contradicts-existing) and differentiated retry strategies. LLM calls for abstraction are always deferred to DreamCycle, never in the hot path.

Phase 4 — Autonomous Goal Generation
GoalSynthesizer analyzes weaknesses from CognitiveSelfModel and generates concrete improvement goals. Priority formula: impact × (1 - lessonCoverage × lessonEffectiveness) — ineffective lessons don't suppress new goals. Three-layer self-referential loop prevention: PROTECTED_MODULES list, improvement budget (max 1 goal per 50 user tasks), regression circuit-breaker (3 regressions → 100 tasks pause). Bootstrap guard: no goals generated until 20+ task outcomes recorded. New selfAwareness genome trait controls reflection frequency. New competence need in NeedsSystem drives the improvement loop. IdleMind gains an improve activity.

Infrastructure

  • Fitness Check #11 — Causal Graph Size: pass <3000, warn <5000, fail >5000 edges with 3-stage auto-pruning
  • Fitness Check #12 — Inference Contradiction Detection: monitors rule quality and pauses evaluation on excessive conflicts
  • Test runner fix — Regex in test/index.js no longer matches log output containing "failed" as test failures
  • D-1 resolvedpackage-lock.json committed for reproducible installs

Stats

Metric v7.0.8 v7.0.9
Source files 211 215 (+5 cognitive modules)
Services 136 147
Tests passing 3387 3447
Tests failing 0 0
Coverage (lines/branches/functions) 78.13 / 75.87 / 71.36 78.53 / 75.70 / 71.70
Fitness score 90/90 (10 checks) 115/120 (12 checks)
Genome traits 6 7 (+selfAwareness)
Needs 4 5 (+competence)

New Modules

CausalAnnotation.js · InferenceEngine.js · PatternMatcher.js · StructuralAbstraction.js · GoalSynthesizer.js

Modified Modules

WorldState · GraphStore · GraphReasoner · AgentLoopSteps · SymbolicResolver · ReasoningEngine · LessonsStore · NeedsSystem · Genome · IdleMind · IdleMindActivities · phase9-cognitive · phase8-revolution · phase2-intelligence · architectural-fitness · genome.test · test/index

Full Changelog: See CHANGELOG.md

v7.0.8 — Audit Hardening: lockCritical + Security Tests + Fitness

10 Apr 18:05

Choose a tag to compare

Genesis v7.0.8 — Audit Hardening

Full audit of v7.0.7 identified 7 findings. This release addresses all actionable items.
Deep analysis (13 chapters, 237 modules, every data flow traced) found 0 new security risks.


🔒 S-1: lockCritical Expansion

8 additional security-critical files added to SafeGuard hash-lock:
Sandbox, CapabilityGuard, TrustLevelSystem, DisclosurePolicy, ModuleSigner, EarnedAutonomy, ApprovalGate, ImmuneSystem
Total hash-locked files: 7 → 15


🧪 T-1 + T-1b: Complete Security Test Coverage (12/12)

9 new dedicated test suites for all previously untested security-critical modules:
CodeSafetyScanner (22), SafeGuard (17), PreservationInvariants (21), VerificationEngine (13), SelfModificationPipeline (11), DisclosurePolicy (19), CapabilityGuard (15), TrustLevelSystem (9), ModuleSigner (13)
Security module coverage: 3/12 → 12/12 | New tests: 140


⏱ Q-1: setInterval → IntervalManager Migration

ErrorAggregator and EmotionalSteering migrated to dual IntervalManager/fallback pattern.
New fitness check #10 ("Raw setInterval Audit") added to npm run audit:fitness.
Raw setInterval: 12 → 3 (remaining 3 are intentionally raw: CrashLog, McpTransport, McpServer)


📦 D-2: Tilde-Pin Production Dependencies

acorn, chokidar, tree-kill changed from ^ to ~ — patch-level updates only.
Supply chain: 3 direct + ~3 transitive ≈ 6 total | Score: 9.6/10


🐛 Bug Fixes

  • Settings race conditionSettings._load() moved back to constructor; GENESIS_MODEL env var now reliably applied before ModelBridge.asyncLoad()
  • TrustLevelSystem SUPERVISED unreachable||?? so level 0 is no longer treated as falsy
  • headless-boot.test.js lockCritical mismatch — test list synchronized with main.js (7 → 15 files); fixes intermittent coverage drop (75.96% → 78%)
  • Test banner — version corrected from v7.0.7 → v7.0.8

📊 Coverage Push (+6 suites)

CircuitBreaker (14), IntervalManager (11), GraphStore (19), Genome (14), Language (9), WriteLock (7)
Total new tests in v7.0.8: 214 | Test files: 235 → 250


Stats

Metric Value
Modules 237
LOC ~80k
Tests 3,525 (0 failing)
New tests 214
Security coverage 12/12
Hash-locked files 15
Raw setInterval 3
Fitness checks 10
Dep score 9.6/10

v7.0.7 — Observability: VerificationEngine · LearningService · McpWorker Type-Safe · Swallowed Catches Audited

09 Apr 20:11

Choose a tag to compare

Genesis can now see the types in its own self-repair chain. Zero ts-ignore in code verification, error learning, and worker isolation. Swallowed catches in 18 critical modules audited — all confirmed intentional.

Highlights

  • ts-ignore 85 → 62 (−27%) — focused on security-critical modules
  • VerificationEngine fully typed — 8 ts-ignore removed, return types widened with JSDoc
  • LearningService fully typed — 6 ts-ignore removed, errorPatterns array typed
  • McpWorker fully typed — 5 ts-ignore removed, parentPort null-guard
  • Swallowed catches audit — 18 critical modules, 0 unintentional silent catches
  • vendor/acorn excluded from TSC — eliminates ~507 noise errors

Quality Metrics

Metric v7.0.6 v7.0.7
ts-ignore 85 62 (−27%)
TSC errors (agent) 0 0
Tests 3311 3311
Events 348 (100%) 348 (100%)
Fitness 90/90 90/90
Coverage ratchet 78/75/71 78/75/71

Type Safety Fixes

VerificationEngine (8 → 0)

  • verifyPlan return type: added optional note, totalIssues
  • verifyCode return type: added optional warnings, details
  • All 7 checks array declarations typed as Array<*>
  • Zero ts-ignore remaining in the code verification pipeline

LearningService (6 → 0)

  • _metrics.errorPatterns typed from never[] to Array<{message, intent, count, lastSeen}>
  • Pattern matching, sorting, and filtering now fully type-safe

McpWorker (5 → 0)

  • parentPort null-guard via destructuring alias + @type {*} cast
  • Worker context guarantees non-null, TSC now agrees

Backend Constructors (4 → 0)

  • AnthropicBackend: @param JSDoc for { baseUrl, apiKey }
  • OpenAIBackend: @param JSDoc for { baseUrl, apiKey, models } + spread type fix

Remaining 62 ts-ignore (all categorized)

  • 23 prototype-delegatedObject.assign(Class.prototype, methods) invisible to checkJs. Architectural pattern, not fixable without abandoning code splitting.
  • 39 TS inferencecheckJs without @types/node can't resolve Promise callbacks, dgram types, etc. Would require full TypeScript migration to fix.

Swallowed Catches Audit

Systematic audit of 18 critical modules covering Genesis' self-repair chain, self-awareness, and decision-making:

AgentLoop, AgentLoopSteps, AgentLoopRecovery, AgentLoopCognition, SelfModificationPipeline, VerificationEngine, Sandbox, ChatOrchestrator, ChatOrchestratorHelpers, CognitiveMonitor, CognitiveMonitorAnalysis, HealthMonitor, ErrorAggregator, EventStore, Container, EventBus, ModelBridge, LearningService

Result: 0 unintentionally swallowed catches. All multi-line catches have code, logging, or documented /* best effort */ intent. The 5 one-liner empty catches are all annotated.

TSC Improvements

  • vendor/acorn excluded from tsconfig.ci.json — eliminates ~507 noise errors from vendored parser
  • TSC output now shows only real errors (11 transitive from scripts/benchmark-agent.js)

Verify

npm test                              # 3311 tests, 0 failures
npm run test:ci                       # Coverage 78/75/71 ✅
npx tsc -p tsconfig.ci.json --noEmit  # 0 agent errors
node scripts/architectural-fitness.js --ci  # 90/90
node scripts/validate-events.js       # 348/348 schemas ✅

v7.0.6 — Structural Cleanup: @ts-ignore −75% · TSC Clean · 5 Bugs Found · 21 Dead Events Removed

09 Apr 18:52

Choose a tag to compare

The most thorough type-safety pass in Genesis history. Zero new features — pure structural hygiene that surfaced 5 real bugs hidden behind @ts-ignore.

Highlights

  • @ts-ignore 336 → 85 (−75%) — ten hotspot files fully cleaned, bulk pass on remaining ~30 files
  • TSC fully clean (0 agent errors) — was 1 pre-existing, now resolved
  • 5 real bugs found — hidden behind @ts-ignore for months, now fixed
  • 21 dead events removed — catalog cleaned from 369 → 348, 100% schema coverage maintained
  • Coverage ratchet recalibrated — 78/75/71 (was 81/76/80 but never enforced; test:ci was missing --include filter)

Quality Metrics

Metric v7.0.5 v7.0.6
@ts-ignore 336 85 (−75%)
TSC errors (agent) 1 0
Catalogued events 369 348
Schema coverage 100% 100%
Tests 3375 3311 (−58 redundant)
Legacy test files 2 0
Coverage ratchet 81/76/80 (unenforced) 78/75/71 (enforced)
Fitness 90/90 90/90

Bug Fixes (found via @ts-ignore removal)....

  • AgentLoop goal undefined variablepursue() referenced goal instead of goalDescription when creating workspace. Workspace never received the actual goal title. Hidden since v5.2.0.
  • ShellAgent missing awaitthis.run() called without await in executePlan(). Step results were Promise objects, result.ok always undefined, sequential dependent steps couldn't detect prior failures.
  • ConversationMemory confidence undefinedexisting.confidence > confidence compared undefined > 0.8. Added || 0 fallback.
  • GraphReasoner relations missingshortestPath() early-return omitted relations property, inconsistent

v7.0.5 — Hardening: TSC Clean · Schema 100% · CI 5 Gates · 4 Bug Fixes

09 Apr 13:17

Choose a tag to compare

The most structurally significant release in Genesis history. Zero new features, zero new modules — pure quality hardening.

Highlights

  • TSC clean (first time ever) — 86 → 0 TypeScript errors across all agent source
  • Event schema coverage 100% — 369/369 events have typed payload schemas, ratchet enforced in CI
  • CI expanded 3 → 5 gates — tests + architectural fitness + event audit + event validation + channel sync
  • 4 runtime bugs fixed — GitHubEffector crash, ToolRegistry wrong reference, TaskRecorder precedence, CognitiveEvents TypeError
  • PR security template — 25-point checklist covering kernel integrity, code safety, architectural rules, prompt security, dependency safety

Quality Metrics

Metric v7.0.4 v7.0.5
TS errors (agent) 86 0
Event schemas 345 (93.8%) 369 (100%)
Schema ratchet 25% 100%
CI gates 3 5
Cross-layer violations 1 0
Dead methods 2 0
v-tagged test files 45 0
Stale doc references 8+ files 0
Degradation matrix 74 services 131 services

Bug Fixes

  • GitHubEffectorTIMEOUTS never imported → runtime crash on GitHub API path
  • ToolRegistrybus.emit() instead of this.bus.emit() → wrong reference
  • TaskRecorder?? operator precedence bug → incorrect success flag
  • CognitiveEventsEVENTS.REPLAY.* undefined → TypeError on replay emit
  • ConversationSearch_trimIdfCache() defined but never called → unbounded cache growth
  • IntentRouter_trimLearnedPatterns() defined but never called → unbounded growth in daemon mode

Architecture

  • CodeSafetyPort inversion fixed — cross-layer require() removed, scanner explicitly injected
  • EventBus early-exit — 85% of emits (0-listener telemetry events) skip async dispatch
  • tsconfig fixtypecheck and ci:full referenced nonexistent tsconfig.json, now correctly point to tsconfig.ci.json

Test Consolidation

  • 45 v-tagged files eliminated (1137 redundant tests removed)
  • 10 new test files created (234 tests: 58 deep-logic + 174 migrated + 2 coverage)
  • 3 deep-logic suites: SelfModPipeline, LessonsStore, CognitiveSelfModel/TaskRecorder (97 assertions on previously untested paths)

Documentation

  • README: 3 new badges (TSC clean, Fitness, Schemas), Project Stats rewritten, Code Metrics updated, Security Model expanded (+3 layers), Dependencies restructured, 3 dead links removed
  • All 15+ doc files verified — 0 stale references
  • Degradation matrix regenerated (was severely stale)
  • PR security template with 25-point checklist

Verify

npm test                              # 3375 tests, 0 failures
npm run ci                            # 5 gates pass
npx tsc -p tsconfig.ci.json --noEmit  # 0 errors

Full analysis: See [genesis-v705-deep-analysis.md] in release assets