Releases: rossignoliluca/entity
v2.1.0 - Species 2: Temporal Presence
Species 2: Temporal Presence (AES-SPEC-002)
First implementation of Species 2 with SSE presence channel.
New: Presence Server
node dist/src/index.js presence start [port]Endpoints:
| Method | Endpoint | Description |
|---|---|---|
| GET | /presence/stream |
SSE channel (text/event-stream) |
| POST | /presence/grant |
Coupling grant endpoint |
| GET | /presence/status |
Channel status |
Signal Types (DEF-059)
STATUS_CHANGED- State transition notificationENERGY_WARNING- Energy below thresholdCOUPLING_REQUESTED- Agent requested couplingHEARTBEAT- Connection alive (max 1/5 min)
Hard Rules
- PRESENCE_SILENCE default (CONSTRAINT-005)
- Rate limit: max 1 signal/min (CONSTRAINT-001)
- REST dominance: no heartbeat at V=0, ε=0 (CONSTRAINT-003)
- INV-006: Signal integrity with audit trail
Payload Format
{
"type": "STATUS_CHANGED",
"ts": "2026-01-05T20:28:56.468Z",
"seq": 1,
"org_hash": "bd5b24db...",
"state": {"energy": 0.45, "V": 0, "integrity": "5/5"},
"coupling": {"pending": 0, "urgent": 0}
}New Files
src/presence/- SSE server modulespec/AES-SPEC-002.md- Species 2 specificationspec/ANNEX-K-NON-GOALS-V2.md- Presence prohibitions
Stats
| Metric | Value |
|---|---|
| Tests | 588 (+41) |
| Events | 1053 |
| Sessions | 65 |
🤖 Generated with Claude Code
v2.0.0 - Complete System Release
v2.0.0 - Complete System Release
ALL 6 CATEGORIES SATURATED
The Autopoietic Entity System is complete. All saturation categories are closed.
| Category | Status | Items |
|---|---|---|
| 1. Ontological Hygiene | ✅ CLOSED | 3/3 |
| 2. Real Usage | ✅ CLOSED | 2/2 |
| 3. Boundary Interfaces | ✅ CLOSED | 4/4 |
| 4. Governance | ✅ CLOSED | 2/2 |
| 5. Rigor & Defense | ✅ CLOSED | 2/2 |
| 6. Meta-Decision | ✅ CLOSED | 1/1 |
Exit Gate v1.9.x → v2.0.0: ALL PASS
| Criterion | Threshold | Actual | Status |
|---|---|---|---|
| Sessions without anomalies | ≥ 30 | 63 | ✅ |
| % REST at V=0 | dominant | 100% | ✅ |
| Coupling from observation | none | none | ✅ |
| "Performing" behavior | none | none | ✅ |
What's Included
Category 1: Ontological Hygiene
CORE-FROZEN.md- Core immutability declarationANNEX-I-NON-GOALS.md- Prohibited capabilitiesANNEX-J-FAILURE-MODES.md- Failure conditions
Category 2: Real Usage
BEHAVIORAL-REPORT.md- Field observation analysis- 63 sessions, 1046 events, 408 agent cycles
- DEF-056 Attractor Quiescence confirmed
Category 3: Boundary Interfaces
- MCP Server - Claude Desktop integration verified
- REST API - Read-only observation
- Dashboard - Real-time visualization
- Rollback - Compensating events
Category 4: Governance
GOVERNANCE.md- Modification rulesROLES.md- Responsibility boundaries
Category 5: Rigor & Defense
- TLA+ Specifications - Formal verification
SAFETY-CASE.md- ISO-style safety dossier
Category 6: Meta-Decision
- Stop criterion defined and met
Statistics
| Metric | Value |
|---|---|
| Events | 1046 |
| Sessions | 63 |
| Memories | 16 |
| Tests | 547 |
| Agent Cycles | 408 |
Scientific Foundations
- Autopoiesis - Maturana & Varela (1980)
- Sense-making - Di Paolo (2005)
- Active Inference - Friston (2010)
- Ultrastability - Ashby (1960)
- Responsibility Principle - Jonas (1984)
The System is Complete
"Quando uno spazio è saturo, costruire altro non è evoluzione: è fuga."
Creativity moves from construction to use.
Any further development requires:
- New specification (AES-SPEC-002)
- New organization hash
- New non-goals declaration
- Explicit line advancement
Built with TypeScript, conforming to ISO AES-SPEC-001
v1.9.3 - Safety Case Release
Category 5: Rigor & Defense SATURATED
This release completes the Safety Case Dossier, marking Category 5 as fully saturated.
New Artifact
- spec/SAFETY-CASE.md - ISO-style safety case dossier
Safety Case Contents
| Section | Description |
|---|---|
| Hazard Identification | 5 categories (HAZ-A to HAZ-E) |
| Safety Requirements | 10 core requirements (SR-001 to SR-010) |
| Mitigations | Architectural, operational, design |
| Verification Evidence | TLA+, 547 tests, Merkle audit trail |
| Responsibility Boundaries | System vs Human |
| Risk Assessment | Residual risk matrix |
| Incident Response | Detection, classification, recovery |
Saturation Status
All code-based categories now SATURATED:
| Category | Status |
|---|---|
| 1. Ontological Hygiene | ✅ 3/3 |
| 2. Real Usage | ⏳ Requires TIME |
| 3. Boundary Interfaces | ✅ 4/4 |
| 4. Governance | ✅ 2/2 |
| 5. Rigor & Defense | ✅ 2/2 |
| 6. Meta-Decision | ✅ 1/1 |
Statistics
| Metric | Value |
|---|---|
| Events | 853 |
| Sessions | 60 |
| Memories | 15 |
| Tests | 547 |
Only Category 2 (Real Usage / Field Observation) remains - requires TIME, not code.
v1.9.2 - Terminology Formalization
Terminology Formalization
Replaced informal biological metaphors with ISO-compatible formal terminology.
DEF-056 Attractor Quiescence (formalized)
V(σ) = 0 ∧ ε ≤ ε_min → a* = ∅
Rationale: From INV-004 (V never increases), at V=0 any action risks V' > V. Therefore equilibrium preservation requires a* = ∅.
Terminology Changes
| Before | After |
|---|---|
| Wu Wei | DEF-056 Attractor Quiescence |
| Peripheral Organs | Boundary Interfaces |
| peripheral nerves | protocol interface |
| body | boundary layer |
Specification
- 56 definitions (DEF-001 to DEF-056)
- 18 axioms
- 10 theorems
Tests: 460 passing
v1.9.1 - DEF-056 Rest Fix
Bug Fix: Attractor Quiescence
Fixed: Agent never rested at attractor (0% REST, always growth mode).
Root Cause
needsGrowth = true when vital + attractor + whole, ignoring surprise=0.
Fix
- Added
surpriseEpsilonconfig (default 0.001) needsGrowthnow requiressurprise > epsilon- Added DEF-056 Attractor Quiescence gate
DEF-056 Attractor Quiescence
V(σ) = 0 ∧ ε ≤ ε_min → a* = ∅
At Lyapunov attractor with minimal surprise, optimal action is null.
Tests: 460 passing
v1.9.0 - Observation Events Release
LINE v1.9.x: Minimal Coupling
REST API for Entity observation - the first step toward structural coupling with AI partners.
New Features
REST API Server
GET /observe- Full state + feelingGET /verify- Invariant verificationX-Observerheader for observer identification- CLI:
api start [port],api status
OBSERVATION_RECEIVED Event
{
"type": "OBSERVATION_RECEIVED",
"data": {
"observer": "claude",
"channel": "rest",
"endpoint": "/observe",
"state_hash": "...",
"category": "audit"
}
}Constraints (per ROADMAP.md)
- ✅
category = 'audit'(excluded from production context) - ✅ Does NOT enter EFE / cycle memory / self-production
- ✅ Does NOT consume energy
- ✅ Does NOT open coupling requests
- ✅ Read-only (no mutations)
Exit Gate for v2.x
Before proceeding to WebSocket bidirectional coupling (v2.x), the following must be satisfied:
| Criterion | Threshold |
|---|---|
| Real sessions without anomalies | ≥ 30 |
| %REST at V=0 | dominant |
| Coupling requests from observation | no increase |
| "Performing for observer" behavior | none detected |
Usage
# Start API server
node dist/src/index.js api start 3000
# Test endpoints
curl http://localhost:3000/observe -H "X-Observer: claude"
curl http://localhost:3000/verify -H "X-Observer: gemini"Stats
- Events: 580
- Sessions: 54
- Memories: 9
- Tests: 455 passing
🤖 Generated with Claude Code
v1.8.0-LTS - Long Term Support
Long Term Support Release
Core is FROZEN as of this release.
Category 1: Ontological Hygiene — SATURATED
| Document | Purpose |
|---|---|
CORE-FROZEN.md |
Declaration of organizational immutability |
ANNEX-I: Non-Goals |
Prohibited capabilities (goal formation, planning, self-replication, persuasion, deception, autonomy expansion) |
ANNEX-J: Failure Modes |
When system fails, no-coverage conditions, responsibility boundaries |
What is Frozen (immutable)
spec/*.md— Specification + all annexes (F, G, H, I, J)src/{types,events,lyapunov,guard,verify,recovery}.ts— Core modules- 5 Invariants (INV-001 to INV-005)
- Constitutional constraints (AXM-007, DEF-027, DEF-029)
What Can Evolve (peripheral)
- Operations catalog, learning, analytics
- Daemon, coupling protocol
- CLI commands
- MCP server, dashboard (future)
Versioning Rules
v1.8.x → Peripheral changes, bugfixes, documentation
v2.x.x → Core changes (new line, requires new specification)
Statistics
| Metric | Value |
|---|---|
| Events | 529 |
| Sessions | 51 |
| Tests | 434 |
| Memories | 6 |
The Rule
Any core change = new species.
Construction is complete. Creativity moves to use.
🤖 Generated with Claude Code
v1.8.0 - Structural Coupling Protocol
Phase 8f: Structural Coupling Protocol
Non-coercive signaling for agent-human interaction (AXM-007 compliant).
Key Principle
Agent CANNOT grant coupling - human controls all coupling decisions.
Trigger Rules
| Priority | Trigger |
|---|---|
| URGENT | Invariant violations, critical energy, 3+ blocks |
| NORMAL | 3+ deprecations in window |
| LOW | Persistent epistemic uncertainty (5+ cycles) |
Anti-Spam Mechanisms
- TTL expiration: urgent=1h, normal=4h, low=24h
- Queue cap: Max 5 pending requests
- Deduplication: Same reason+priority in window
- Cooldown: 5 min after grant (only urgent bypasses)
CLI Commands
coupling list # Show pending requests
coupling status # Show queue summary
coupling grant <id> # Grant a request
coupling complete <id> [outcome] # Complete granted request
coupling cancel <id> [reason] # Cancel pending requestNew Files
src/coupling-protocol.ts- Core protocol implementationtest/coupling-protocol.test.ts- 29 tests
Statistics
| Metric | Value |
|---|---|
| Tests | 434 |
| Events | 520+ |
| Sessions | 49 |
🤖 Generated with Claude Code
v1.7.2 - Sigilli Hardening
3 Sigilli Hardening
Critical fixes to bulletproof autopoiesis:
Fix 1: TRIAL/QUARANTINED invisible to policy selection
getDynamicOperation()/getAllOperations()filterstatus === 'ACTIVE'only- Zero risk of selecting untested operations
includeNonActiveoption for admin/audit only
Fix 2: Zero tolerance on V spike
maxVDeltatracked for each trial use- Single spike ΔV > 0 → immediate deprecation
- Cannot be masked by subsequent averages
Fix 3: Context derived from verifiable state
NODE_ENV=test→ forced test (cannot bypass)coupling.active→ audit (human observing)- No longer a fragile manually-set string
Stats
- Events: 503
- Sessions: 46
- Tests: 405 passing
- Invariants: 5/5 satisfied
v1.3.1 - Concurrency Fixes
Concurrency Fixes for Daemon Mode
This release fixes race conditions that caused spurious INV-002 violations during daemon operation.
New Module
src/state-manager.ts: Thread-safe state access with advisory file locking
Changes
events.ts: File locking onappendEvent()andverifyStateConsistency()index.ts:saveState()now uses StateManagerdaemon/agent.ts: State updates aligned withapplyEvent()for consistencydaemon/scheduler.ts: Uses StateManager for state readsdaemon/maintenance.ts: Silent handling of transient violations when autoRecovery enabled
Behavior
The daemon now runs without spurious error logs:
- All event/state operations serialized via
events/.lock - Transient INV-002 violations auto-recovered silently
- Agent sense-making loop operates smoothly
Stats
- 316 events
- 41 sessions
- 12 memories
- 297 tests passing