Releases: Garrus800-stack/genesis-agent
v7.1.4 — Session-Aware Memory Architecture
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
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
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.jsdelegate. 776 → 595 LOC. - AdaptiveStrategy.js — Diagnose/propose/apply logic (280 LOC) extracted to
AdaptiveStrategyApply.jsdelegate. 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— TypedServiceMapinterface mapping 60+ service names to their types.resolve<K>()andtryResolve<K>()provide IDE autocompletion.EventPayloads.d.ts— Auto-generated typed payloads for all 335 EventBus events. Regenerate withnode 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
v7.1.1 Quality Gate
Critical Fix
- Windows phantom failures eliminated —
test/index.jsparser matched"Health check 1/1 failed"log lines as test failures. Root cause:(\d+) failedregex picked up log output when Windows appended stderr after stdout. Fix: summary-anchored regexResults: N passed, N failed. Bothdeployment-manageranddynamic-tool-synthesiswere 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-synthesisevent tests:setImmediate→Promise.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
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
selfAwarenesstrait 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
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.jsno longer matches log output containing "failed" as test failures - D-1 resolved —
package-lock.jsoncommitted 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
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 condition —
Settings._load()moved back to constructor;GENESIS_MODELenv var now reliably applied beforeModelBridge.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
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,
errorPatternsarray typed - McpWorker fully typed — 5 ts-ignore removed,
parentPortnull-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)
verifyPlanreturn type: added optionalnote,totalIssuesverifyCodereturn type: added optionalwarnings,details- All 7
checksarray declarations typed asArray<*> - Zero ts-ignore remaining in the code verification pipeline
LearningService (6 → 0)
_metrics.errorPatternstyped fromnever[]toArray<{message, intent, count, lastSeen}>- Pattern matching, sorting, and filtering now fully type-safe
McpWorker (5 → 0)
parentPortnull-guard via destructuring alias +@type {*}cast- Worker context guarantees non-null, TSC now agrees
Backend Constructors (4 → 0)
- AnthropicBackend:
@paramJSDoc for{ baseUrl, apiKey } - OpenAIBackend:
@paramJSDoc for{ baseUrl, apiKey, models }+ spread type fix
Remaining 62 ts-ignore (all categorized)
- 23 prototype-delegated —
Object.assign(Class.prototype, methods)invisible tocheckJs. Architectural pattern, not fixable without abandoning code splitting. - 39 TS inference —
checkJswithout@types/nodecan'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/acornexcluded fromtsconfig.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
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:ciwas missing--includefilter)
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
goalundefined variable —pursue()referencedgoalinstead ofgoalDescriptionwhen creating workspace. Workspace never received the actual goal title. Hidden since v5.2.0. - ShellAgent missing
await—this.run()called withoutawaitinexecutePlan(). Step results were Promise objects,result.okalwaysundefined, sequential dependent steps couldn't detect prior failures. - ConversationMemory
confidenceundefined —existing.confidence > confidencecomparedundefined > 0.8. Added|| 0fallback. - GraphReasoner
relationsmissing —shortestPath()early-return omittedrelationsproperty, inconsistent
v7.0.5 — Hardening: TSC Clean · Schema 100% · CI 5 Gates · 4 Bug Fixes
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
- GitHubEffector —
TIMEOUTSnever imported → runtime crash on GitHub API path - ToolRegistry —
bus.emit()instead ofthis.bus.emit()→ wrong reference - TaskRecorder —
??operator precedence bug → incorrect success flag - CognitiveEvents —
EVENTS.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 fix —
typecheckandci:fullreferenced nonexistenttsconfig.json, now correctly point totsconfig.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 errorsFull analysis: See [genesis-v705-deep-analysis.md] in release assets