Compare commits

..

194 Commits

Author SHA1 Message Date
5357cddb88 docs: add Perplexity evening session report (#1341)
Some checks failed
CI / test (pull_request) Failing after 1m20s
Review Approval Gate / verify-review (pull_request) Successful in 10s
CI / validate (pull_request) Failing after 1m48s
2026-04-15 09:28:34 +00:00
139d13f43c wip: add Perplexity session report regression test 2026-04-15 09:28:33 +00:00
bd0497b998 Merge PR #1585: docs: add night shift prediction report (#1353) 2026-04-15 06:13:22 +00:00
Alexander Whitestone
4ab84a59ab docs: add night shift prediction report (#1353)
Some checks failed
CI / test (pull_request) Failing after 50s
CI / validate (pull_request) Failing after 1m10s
Review Approval Gate / verify-review (pull_request) Successful in 16s
2026-04-15 02:02:26 -04:00
c63d56dfb7 fix: add branch existence check before Gitea API file operations (#1441) (#1487)
Some checks failed
Deploy Nexus / deploy (push) Failing after 5s
Staging Verification Gate / verify-staging (push) Failing after 6s
CI / test (pull_request) Failing after 1m43s
CI / validate (pull_request) Failing after 1m47s
Review Approval Gate / verify-review (pull_request) Successful in 13s
Merge PR #1487
2026-04-14 22:18:06 +00:00
4c08119c9e fix: port 8080 conflict between L402 server and preview (#1415) (#1431)
Some checks failed
Deploy Nexus / deploy (push) Failing after 4s
Staging Verification Gate / verify-staging (push) Failing after 4s
Merge PR #1431
2026-04-14 22:11:56 +00:00
9ebe957bb4 feat: cross-session agent memory via MemPalace (#1477)
Some checks failed
Deploy Nexus / deploy (push) Failing after 4s
Staging Verification Gate / verify-staging (push) Failing after 4s
Merge PR #1477
2026-04-14 22:11:51 +00:00
75b9f24915 fix: add portals.json validation tests (#1489)
Some checks failed
Deploy Nexus / deploy (push) Failing after 4s
Staging Verification Gate / verify-staging (push) Failing after 4s
Merge PR #1489
2026-04-14 22:11:46 +00:00
8755f455b1 feat: implement Issue #1127 triage recommendations (#1403)
Some checks failed
Deploy Nexus / deploy (push) Failing after 4s
Staging Verification Gate / verify-staging (push) Failing after 5s
Merge PR #1403
2026-04-14 22:11:12 +00:00
6160e87446 feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Failing after 6s
Staging Verification Gate / verify-staging (push) Failing after 3s
2026-04-14 15:34:03 +00:00
d0fc662ad2 feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 15:33:59 +00:00
4e8e9cd08d feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 15:33:56 +00:00
189c657fec feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 15:33:53 +00:00
abe21ce6ec feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 15:33:51 +00:00
114525da5f feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Failing after 5s
Staging Verification Gate / verify-staging (push) Failing after 5s
Review Approval Gate / verify-review (pull_request) Failing after 9s
CI / test (pull_request) Failing after 51s
CI / validate (pull_request) Failing after 53s
2026-04-14 11:36:09 +00:00
0de60a756f feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 11:36:05 +00:00
e7bf08b799 feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 11:36:03 +00:00
749878d3ea feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 11:36:01 +00:00
e24ad0f0a7 feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 11:36:00 +00:00
1907388517 [claude] Close duplicate PRs for issue #1128 (#1449) (#1466)
Some checks failed
Deploy Nexus / deploy (push) Failing after 6s
Staging Verification Gate / verify-staging (push) Failing after 6s
Review Approval Gate / verify-review (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 46s
CI / test (pull_request) Failing after 48s
2026-04-14 02:28:09 +00:00
dbd2e400c0 Merge pull request 'feat: Add forge cleanup tools and documentation (#1128)' (#1437) from q/1128-1776129480 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 02:23:59 +00:00
071643c976 [claude] Close duplicate PRs for issue #1338 (#1451) (#1464)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 02:17:43 +00:00
c7a317babc [claude] Close duplicate PRs for issue #1339 (#1450) (#1465)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 02:17:38 +00:00
7e23aa0827 [claude] Close duplicate PRs for issue #1336 (#1452) (#1456)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 02:07:06 +00:00
1eeeea4412 Merge pull request 'fix: Remove duplicate content blocks from README.md and POLICY.md (#1338)' (#1432) from q/1338-1776129480 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 02:02:52 +00:00
cd78f9e4c8 feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 01:57:22 +00:00
5171dda46a feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 01:57:17 +00:00
682431fab1 feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 01:57:14 +00:00
7eb339f3ce feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 01:57:13 +00:00
2f5f874e84 feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 01:57:11 +00:00
ad98bd5ead feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
CI / test (pull_request) Failing after 51s
CI / validate (pull_request) Failing after 51s
Review Approval Gate / verify-review (pull_request) Failing after 7s
2026-04-14 01:52:55 +00:00
e847b0e473 feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 01:52:51 +00:00
63c6829ef8 feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Staging Verification Gate / verify-staging (push) Has been cancelled
Deploy Nexus / deploy (push) Has been cancelled
2026-04-14 01:52:48 +00:00
a55647d5d3 feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 01:52:45 +00:00
64719324e0 feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 01:52:43 +00:00
ee6d12ccf6 [claude] Add .gitattributes export-ignore + large-repo clone docs (#1428) (#1433)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 01:51:18 +00:00
Alexander Whitestone
a29299820f feat: Add forge cleanup tools and documentation (#1128)
Some checks failed
CI / test (pull_request) Failing after 1m1s
Review Approval Gate / verify-review (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 1m1s
## Summary
Implements forge cleanup tools and documentation as requested in issue #1128.

## Changes
- scripts/cleanup-duplicate-prs.sh: Automated duplicate PR detection
- docs/forge-cleanup-analysis.md: Analysis of duplicate PRs
- docs/forge-cleanup-report.md: Cleanup report with metrics
- .github/workflows/pr-duplicate-check.yml: Weekly automated checks

Issue: #1128
2026-04-13 21:51:12 -04:00
84eb8104d8 feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
Review Approval Gate / verify-review (pull_request) Failing after 10s
CI / test (pull_request) Failing after 55s
CI / validate (pull_request) Failing after 56s
2026-04-14 01:48:34 +00:00
93228388d7 feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 01:48:29 +00:00
e27c51c6da feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 01:48:26 +00:00
ed79826608 feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 01:48:23 +00:00
e438662c97 feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 01:48:17 +00:00
Alexander Whitestone
e683a2213f fix: Remove duplicate content blocks from README.md and POLICY.md (#1338)
Some checks failed
CI / test (pull_request) Failing after 40s
Review Approval Gate / verify-review (pull_request) Failing after 6s
CI / validate (pull_request) Failing after 38s
This commit fixes issue #1338 by removing duplicate content blocks that
were appearing 3-4 times on the page.

Changes:
1. README.md:
   - Removed duplicate "Branch Protection & Review Policy" section (lines 121-134)
   - Removed duplicate "Running Locally" section (lines 149-167)
   - Kept the detailed "Branch Protection & Review Policy" section at the top
   - Kept the first "Running Locally" section with all content

2. POLICY.md:
   - Consolidated duplicate content into single cohesive policy
   - Merged two "Branch Protection Rules" sections
   - Merged two "Default Reviewer" sections
   - Merged two "Acceptance Criteria" sections
   - Added "Enforcement" and "Notes" sections from second half

The duplicate content was likely caused by a bad merge or template duplication.
This cleanup ensures each section appears only once while preserving all content.

Closes #1338
2026-04-13 21:44:26 -04:00
449170070b feat: standardize llama.cpp backend (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
CI / test (pull_request) Failing after 49s
Review Approval Gate / verify-review (pull_request) Failing after 7s
CI / validate (pull_request) Failing after 53s
2026-04-14 01:42:40 +00:00
3ed6bce5a0 feat: standardize llama.cpp backend (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 01:42:37 +00:00
2ecb4cd3a4 feat: standardize llama.cpp backend (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 01:42:29 +00:00
1c67f91b74 feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 01:41:35 +00:00
53d9a55444 feat: standardize llama.cpp backend for sovereign local inference (#1123)
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 01:40:14 +00:00
dfbd96f792 Merge pull request 'fix: ChatLog.log() crash — CHATLOG_FILE defined after use (#1349)' (#1390) from burn/1349-1776125702 into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 5s
Staging Verification Gate / verify-staging (push) Failing after 7s
2026-04-14 00:38:01 +00:00
5d5ea8ec1b Merge pull request '[A2A] Implement Agent2Agent Protocol for Fleet-Wizard Delegation' (#1380) from nexusburn/research-1122 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 00:37:29 +00:00
3f58b55351 Merge pull request 'fix(#1356): ThreadingHTTPServer concurrency fix' (#1389) from burn/1356-1776125702 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 00:37:25 +00:00
4b9f2154d4 Merge pull request 'fix: Add Sovereign Sound Playground and fix portals.json (#1354)' (#1391) from burn/1354-1776125702 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 00:37:20 +00:00
2e60c479ae Merge pull request 'feat: Add Reasoning Trace HUD Component' (#1374) from nexusburn/direction-architecture-875 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 00:36:25 +00:00
67a080b4fd Merge pull request 'feat: fleet audit tool — deduplicate agents, one identity per machine' (#1386) from burn/1144-1776120221 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 00:36:20 +00:00
961623b931 Merge pull request 'fix: MEMPALACE INIT shows real stats from fleet API (#1340)' (#1387) from burn/1340-1776120221 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 00:36:16 +00:00
3bb44a24e2 Merge pull request 'fix: remove duplicate content blocks from README.md' (#1392) from burn/1338-1776125702 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-14 00:36:10 +00:00
Alexander Whitestone
39faa6b862 fix: reconcile registry locations with fleet-routing.json, add missing agents
Some checks failed
CI / test (pull_request) Failing after 52s
Review Approval Gate / verify-review (pull_request) Successful in 10s
CI / validate (pull_request) Failing after 48s
- Aligned 7 location mismatches between identity-registry.yaml and
  fleet-routing.json (allegro, ezra, bezalel, bilbobagginshire,
  substratum, fenrir, kimi)
- Added carnice (active, local ollama agent) to registry
- Added allegro-primus (deprecated) to registry

Audit results: 16 findings → 7 info-only (ghost agents intentionally
kept for audit trail). Zero warnings. Registry VALID.
2026-04-13 20:20:57 -04:00
Alexander Whitestone
8fa43cc228 fix: Add Sovereign Sound Playground and fix portals.json (#1354)
Some checks failed
CI / test (pull_request) Failing after 53s
CI / validate (pull_request) Failing after 55s
Review Approval Gate / verify-review (pull_request) Failing after 7s
This commit addresses issue #1354 by:

1. Fixing portals.json syntax error (duplicate params field)
2. Adding the Sovereign Sound Playground as a new portal
3. Including the complete playground application

Changes:
- Fixed JSON syntax error in portals.json (line 41-44)
- Added playground/playground.html - Complete interactive audio-visual experience
- Added playground/README.md - Documentation and usage guide
- Updated portals.json with playground portal entry

The playground portal is configured with:
- Online status
- Visitor access mode
- Local destination URL
- Creative tool portal type

This resolves the issue and provides a working playground accessible through the Nexus portal system.
2026-04-13 20:18:57 -04:00
Alexander Whitestone
b9bc776fdb fix: remove duplicate content blocks from README.md
Some checks failed
Review Approval Gate / verify-review (pull_request) Failing after 7s
CI / test (pull_request) Failing after 43s
CI / validate (pull_request) Failing after 44s
## Summary
Fixed duplicate content blocks in README.md caused by bad merge.
Branch protection policy, default reviewers, and implementation status
blocks were duplicated 3-4 times on the page.

## Problem
The README.md file had massive duplication from multiple bad merges:
- Branch protection policy appeared 4 times
- Default reviewers appeared multiple times
- Implementation status appeared multiple times
- Repository-specific configuration duplicated
- Acceptance criteria duplicated

The file grew to 517 lines with the same content repeated.

## Solution
Cleaned up README.md to contain:
1. Single branch protection policy section
2. Original Nexus project content (preserved)
3. Clean structure without duplicates

Reduced from 517 lines to 167 lines while preserving all unique content.

## Changes
- Removed duplicate branch protection policy sections
- Removed duplicate default reviewers sections
- Removed duplicate implementation status sections
- Removed duplicate repository-specific configuration
- Removed duplicate acceptance criteria
- Preserved original Nexus project content
- Maintained clear structure and formatting

## Testing
- Verified all unique content is preserved
- Checked for any remaining duplicates
- Confirmed file structure is clean and readable

## Acceptance Criteria
 Branch protection policy appears once
 Default reviewers appear once
 Implementation status appears once
 Content is clear and not duplicated
 Original Nexus content preserved

Issue: #1338
2026-04-13 20:18:43 -04:00
Alexander Whitestone
9bcd41ad07 fix: ChatLog.log() crash — CHATLOG_FILE defined after use (#1349)
Some checks failed
CI / test (pull_request) Failing after 31s
CI / validate (pull_request) Failing after 31s
Review Approval Gate / verify-review (pull_request) Failing after 3s
Move configuration block (WORLD_DIR, CHATLOG_FILE, etc.) before the
ChatLog class definition. Previously CHATLOG_FILE was defined at line ~254
but used at line ~200 inside ChatLog.log(), causing NameError on every
chat message persistence attempt.

Fixes #1349.
2026-04-13 20:17:02 -04:00
Timmy
d7a15ae046 fix(#1356): ThreadingHTTPServer for multi-user bridge concurrency
Some checks failed
Review Approval Gate / verify-review (pull_request) Failing after 8s
CI / validate (pull_request) Failing after 47s
CI / test (pull_request) Failing after 49s
Replace single-threaded HTTPServer with ThreadingHTTPServer
(thread-per-request) in both multi_user_bridge.py copies.

Fixes #1356
2026-04-13 20:16:21 -04:00
Timmy
7fab9799b1 fix: MEMPALACE INIT shows real stats from fleet API (#1340)
Some checks failed
CI / test (pull_request) Failing after 31s
CI / validate (pull_request) Failing after 53s
Review Approval Gate / verify-review (pull_request) Failing after 7s
Root cause: connectMemPalace() set placeholder values (0x, 0, 0B)
immediately and tried to connect to window.Claude.mcp which doesn't
exist in a normal browser. Never contacted the actual fleet API.

Fix:
- Replace connectMemPalace() to fetch from fleet API (/health, /wings)
- Show MEMPALACE CONNECTING during fetch, ACTIVE on success,
  OFFLINE if API unavailable
- Populate compression ratio, docs mined, AAAK size from real data
- Add formatBytes() helper for human-readable sizes
- Periodic refresh every 60s when connected
- Configurable API endpoint via ?mempalace=host:port query param
- Remove dead window.Claude.mcp mock code
2026-04-13 18:53:08 -04:00
Timmy (NEXUSBURN)
66c010301d feat: fleet audit tool — deduplicate agents, one identity per machine
Some checks failed
CI / test (pull_request) Failing after 38s
Review Approval Gate / verify-review (pull_request) Failing after 5s
CI / validate (pull_request) Failing after 34s
Closes #1144. Builds a fleet audit pipeline that detects duplicate
agent identities, ghost accounts, and authorship ambiguity across
all machines.

Deliverables:

bin/fleet_audit.py — Full audit tool with four checks:
  - Identity registry validation (one name per machine, unique gitea_user)
  - Git authorship audit (detects ambiguous committers from branch names)
  - Gitea org member audit (finds ghost accounts with zero activity)
  - Cross-reference registry vs fleet-routing.json (orphan/location mismatch)

fleet/identity-registry.yaml — Canonical identity registry:
  - 8 active agents (timmy, allegro, ezra, bezalel, bilbobagginshire,
    fenrir, substratum, claw-code)
  - 7 ghost/deprecated accounts marked inactive
  - Rules: one identity per machine, unique gitea_user, required fields

tests/test_fleet_audit.py — 11 tests covering all validation rules.

Usage:
  python3 bin/fleet_audit.py                  # full audit -> JSON
  python3 bin/fleet_audit.py --identity-check # registry only
  python3 bin/fleet_audit.py --git-authors    # authorship only
  python3 bin/fleet_audit.py --report out.json # write to file
2026-04-13 18:51:31 -04:00
Alexander Whitestone
bb9758c4d2 feat: implement A2A protocol for fleet-wizard delegation (#1122)
Some checks failed
CI / test (pull_request) Failing after 31s
Review Approval Gate / verify-review (pull_request) Failing after 4s
CI / validate (pull_request) Failing after 30s
Implements Google Agent2Agent Protocol v1.0 with full fleet integration:

## Phase 1 - Agent Card & Discovery
- Agent Card types with JSON serialization (camelCase, Part discrimination by key)
- Card generation from YAML config (~/.hermes/agent_card.yaml)
- Fleet registry with LocalFileRegistry + GiteaRegistry backends
- Discovery by skill ID or tag

## Phase 2 - Task Delegation
- Async A2A client with JSON-RPC SendMessage/GetTask/ListTasks/CancelTask
- FastAPI server with pluggable task handlers (skill-routed)
- CLI tool (bin/a2a_delegate.py) for fleet delegation
- Broadcast to multiple agents in parallel

## Phase 3 - Security & Reliability
- Bearer token + API key auth (configurable per agent)
- Retry logic (max 3 retries, 30s timeout)
- Audit logging for all inter-agent requests
- Error handling per A2A spec (-32001 to -32009 codes)

## Test Coverage
- 37 tests covering types, card building, registry, server integration
- Auth (required + success), handler routing, error handling

Files:
- nexus/a2a/ (types.py, card.py, client.py, server.py, registry.py)
- bin/a2a_delegate.py (CLI)
- config/ (agent_card.example.yaml, fleet_agents.json)
- docs/A2A_PROTOCOL.md
- tests/test_a2a.py (37 tests, all passing)
2026-04-13 18:31:05 -04:00
Alexander Whitestone
4488847c13 feat: Add Reasoning Trace HUD Component
Some checks failed
CI / test (pull_request) Failing after 57s
CI / validate (pull_request) Failing after 34s
Review Approval Gate / verify-review (pull_request) Failing after 6s
Closes #875

- Added new ReasoningTrace component for real-time reasoning visualization
- Shows agent's reasoning steps during complex task execution
- Supports step types: THINK, DECIDE, RECALL, PLAN, EXECUTE, VERIFY, DOUBT, MEMORY
- Includes confidence visualization, task tracking, and export functionality
- Integrated into existing GOFAI HUD system
2026-04-13 18:23:05 -04:00
106eea4015 Merge pull request 'test: guard index.html against merge junk' (#1365) from fix/issue-1336-1338-index-cleanup into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 3s
Merge PR #1365: test: guard index.html against merge junk
2026-04-13 19:51:07 +00:00
Timmy
8a289d3b22 [verified] test: guard index.html against merge junk
Some checks failed
CI / test (pull_request) Failing after 19s
CI / validate (pull_request) Failing after 19s
Review Approval Gate / verify-review (pull_request) Failing after 4s
Refs #1336
Refs #1338

- assert index.html has no conflict markers or stray markdown
- assert cleaned single-instance blocks stay single
2026-04-13 15:38:28 -04:00
e82faa5855 [claude] Fix: unblock CI deploy and staging gate secrets (#1363) (#1364)
Some checks failed
Deploy Nexus / deploy (push) Failing after 6s
Staging Verification Gate / verify-staging (push) Failing after 4s
2026-04-13 19:25:00 +00:00
b411efcc09 Merge pull request 'fix: harden Three.js boot path' (#1362) from fix/issue-1337-threejs-init into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 4s
Staging Verification Gate / verify-staging (push) Failing after 3s
Merged by Timmy overnight cycle
2026-04-13 14:02:52 +00:00
Timmy
7e434cc567 [verified] fix: harden Three.js boot path
Some checks failed
CI / test (pull_request) Failing after 18s
CI / validate (pull_request) Failing after 16s
Review Approval Gate / verify-review (pull_request) Failing after 2s
Fixes #1337

- show explicit guidance when opened from file://
- route browser boot through a classic script gate
- sanitize malformed generated app module before execution
- trim duplicated footer junk and add regression tests
2026-04-13 09:47:50 -04:00
859a215106 fix: [RESPONSIVE] Tighten layout for laptop and smaller-screen viewing (#1359)
Some checks failed
Deploy Nexus / deploy (push) Failing after 2s
Staging Verification Gate / verify-staging (push) Failing after 2s
Co-authored-by: Alexander Whitestone <alexander@alexanderwhitestone.com>
Co-committed-by: Alexander Whitestone <alexander@alexanderwhitestone.com>
2026-04-13 08:30:22 +00:00
21bd999cad Merge pull request 'fix: [RELIABILITY] Eliminate visible 404 and dead-control states in production Nexus' (#1360) from mimo/code/issue-707 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-13 08:29:43 +00:00
4287e6892a Merge pull request 'fix: call self.load() in all game system manager __init__ methods' (#1361) from burn/20260413-0408-fix into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-13 08:29:39 +00:00
Alexander Whitestone
2600e8b61c fix: call self.load() in all game system manager __init__ methods
Some checks failed
CI / test (pull_request) Failing after 17s
CI / validate (pull_request) Failing after 15s
Review Approval Gate / verify-review (pull_request) Failing after 2s
QuestManager, InventoryManager, GuildManager, CombatManager, and
MagicManager all had load() methods that were never called. This
meant quests were never seeded, items never appeared in rooms, and
all game data started empty on every server restart.

Fixes #1351
2026-04-13 04:13:38 -04:00
Alexander Whitestone
9e19c22c8e fix: eliminate two 404 sources — case mismatch + missing icons
Some checks failed
CI / test (pull_request) Failing after 16s
CI / validate (pull_request) Failing after 15s
Review Approval Gate / verify-review (pull_request) Failing after 4s
- app.js:1195: Fix timmy_Foundation → Timmy_Foundation in vision.json API URL.
  The lowercase 't' caused a silent 404 on case-sensitive servers, preventing
  world state from loading in fetchGiteaData().

- Create icons/icon-192x192.png and icons/icon-512x512.png placeholders.
  Both manifest.json and service-worker.js referenced these but the icons/
  directory was missing, causing 404 on every page load and SW install.

Refs #707
2026-04-13 04:10:01 -04:00
85ffbfed33 Merge pull request 'fix: one-way exits — rooms now bidirectional (#1350)' (#1357) from feat/paper-results into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 3s
Merge PR #1357: fix: one-way exits — rooms now bidirectional (#1350)
2026-04-13 07:31:47 +00:00
Alexander Whitestone
0843a2a006 fix: one-way exits — rooms now bidirectional (#1350)
Some checks failed
CI / test (pull_request) Failing after 22s
CI / validate (pull_request) Failing after 15s
Review Approval Gate / verify-review (pull_request) Failing after 2s
World state: added explicit exits dict to all 5 rooms
Bridge: reads exits from world_state.json first, falls back to description parsing

Before: inner rooms (Tower, Garden, Forge, Bridge) had no exits
After: all rooms bidirectional — Threshold connects to all 4, each connects back
2026-04-13 03:27:19 -04:00
a5acbdb2c4 Merge pull request 'Add paper Results section (4 experiments)' (#1355) from feat/paper-results into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 3s
Auto-merge #1355
2026-04-13 07:15:25 +00:00
Alexander Whitestone
39d68fd921 Add paper Results section with 4 experiments
Some checks failed
CI / test (pull_request) Failing after 18s
CI / validate (pull_request) Failing after 16s
Review Approval Gate / verify-review (pull_request) Failing after 4s
2026-04-13 02:28:34 -04:00
a290da4e41 Merge pull request 'feat: full-history persistent dedup index for DPO training pairs' (#1352) from feature/full-history-dedup into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 2s
Staging Verification Gate / verify-staging (push) Failing after 2s
Weekly Privacy Audit / privacy-audit (push) Successful in 5s
2026-04-13 03:11:43 +00:00
perplexity
4b15cf8283 feat: full-history persistent dedup index for DPO training pairs
Some checks failed
CI / test (pull_request) Failing after 16s
CI / validate (pull_request) Failing after 14s
Review Approval Gate / verify-review (pull_request) Failing after 3s
Replace the 5-file sliding window cross-run dedup with a persistent
hash index that covers ALL historical training data. Overfitting risk
compounds across the full dataset — a 5-file window lets old duplicates
leak back into training after enough overnight runs.

New module: dedup_index.py (DedupIndex)
- Persistent JSON index (.dpo_dedup_index.json) alongside JSONL files
- Append-on-export: new prompt hashes registered after each successful
  export — no full rescan needed for normal operations
- Incremental sync: on load, detects JSONL files not yet indexed and
  ingests them automatically (handles files from other tools)
- Full rebuild: rebuild() scans ALL deepdive_*.jsonl + pairs_*.jsonl
  to reconstruct from scratch (first run, corruption recovery)
- Atomic writes (write-to-tmp + rename) to prevent index corruption
- Standalone CLI: python3 dedup_index.py <dir> --rebuild --stats

Modified: dpo_quality.py
- Imports DedupIndex with graceful degradation
- Replaces _load_history_hashes() with persistent index lookup
- Fallback: if index unavailable, scans ALL files in-memory (not just 5)
- New register_exported_hashes() method called after export
- Config key: dedup_full_history (replaces dedup_history_files)

Modified: dpo_generator.py
- Calls validator.register_exported_hashes() after successful export
  to keep the persistent index current without rescanning

Modified: config.yaml
- Replaced dedup_history_files: 5 with dedup_full_history: true

Tested — 7 integration tests:
  ✓ Fresh index build from empty directory
  ✓ Build from 3 existing JSONL files (15 unique hashes)
  ✓ Incremental sync when new file appears between runs
  ✓ Append after export + persistence across reloads
  ✓ Rebuild from scratch (recovers from corruption)
  ✓ Validator catches day-1 dupe from 20-day history (5-file window miss)
  ✓ Full pipeline: generate → validate → export → register → re-run detects
2026-04-13 03:11:10 +00:00
c00e1caa26 Merge pull request 'feat: DPO pair quality validator — gate before overnight training' (#1348) from feature/dpo-quality-validator into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 3s
2026-04-13 02:47:25 +00:00
perplexity
bb4922adeb feat: DPO pair quality validator — gate before overnight training
Some checks failed
CI / test (pull_request) Failing after 20s
CI / validate (pull_request) Failing after 16s
Review Approval Gate / verify-review (pull_request) Failing after 2s
Add DPOQualityValidator that catches bad training pairs before they
enter the tightening loop. Wired into DPOPairGenerator between
generate() and export() as an automatic quality gate.

New module: dpo_quality.py
- 5 single-pair quality checks:
  1. Field length minimums (prompt ≥40, chosen ≥80, rejected ≥30 chars)
  2. Chosen/rejected length ratio (chosen must be ≥1.3x longer)
  3. Chosen≈rejected similarity (Jaccard ≤0.70 — catches low-contrast)
  4. Vocabulary diversity in chosen (unique word ratio ≥0.30)
  5. Substance markers in chosen (≥2 fleet/training/action terms)
- 2 cross-pair quality checks:
  6. Near-duplicate prompts within batch (Jaccard ≤0.85)
  7. Cross-run dedup against recent JSONL history files
- Two modes: 'drop' (filter out bad pairs) or 'flag' (export with warning)
- BatchReport with per-pair diagnostics, pass rates, and warnings
- Standalone CLI: python3 dpo_quality.py <file.jsonl> [--strict] [--json]

Modified: dpo_generator.py
- Imports DPOQualityValidator with graceful degradation
- Initializes from config validation section (enabled by default)
- Validates between generate() and export() in run()
- Quality report included in pipeline result dict
- Validator failure never blocks — falls back to unvalidated export

Modified: config.yaml
- New deepdive.training.dpo.validation section with all tunable knobs:
  enabled, flagged_pair_action, similarity thresholds, length minimums,
  dedup_history_files

Integration tested — 6 test cases covering:
  ✓ Good pairs pass (3/3 accepted)
  ✓ Bad pairs caught: too-short, high-similarity, inverted signal (0/3)
  ✓ Near-duplicate prompt detection (1/2 deduped)
  ✓ Flag mode preserves pairs with warnings (3/3 flagged)
  ✓ Cross-run deduplication against history (1 dupe caught)
  ✓ Full generator→validator→export pipeline (6/6 validated)
2026-04-13 02:46:50 +00:00
c19000de03 Merge pull request 'feat: Phase 3.5 — DPO training pair generation from Deep Dive pipeline' (#1347) from feature/deepdive-dpo-phase-3.5 into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 3s
2026-04-13 02:24:35 +00:00
perplexity
55d53c513c feat: Phase 3.5 — DPO training pair generation from Deep Dive pipeline
Some checks failed
CI / test (pull_request) Failing after 22s
CI / validate (pull_request) Failing after 15s
Review Approval Gate / verify-review (pull_request) Failing after 2s
Wire arXiv relevance filter output directly into DPO pair generation,
closing the loop between research synthesis and overnight training data.

New module: dpo_generator.py
- DPOPairGenerator class with 3 pair strategies:
  * summarize: paper → fleet-grounded analysis (chosen) vs generic (rejected)
  * relevance: 'what matters to Hermes?' → scored context vs vague
  * implication: 'what should we do?' → actionable insight vs platitude
- Extracts synthesis excerpts matched to each ranked item
- Outputs to ~/.timmy/training-data/dpo-pairs/deepdive_{timestamp}.jsonl
- Format: {prompt, chosen, rejected, task_type, evidence_ids,
  source_session, safety_flags, metadata}

Pipeline changes (pipeline.py):
- Import DPOPairGenerator with graceful degradation
- Initialize from config deepdive.training.dpo section
- Execute as Phase 3.5 between synthesis and audio
- DPO results included in pipeline return dict
- Wrapped in try/except — DPO failure never blocks delivery

Config changes (config.yaml):
- New deepdive.training.dpo section with:
  enabled, output_dir, min_score, max_pairs_per_run, pair_types

Integration tested: 2 mock items × 3 pair types = 6 valid JSONL pairs.
Chosen responses consistently richer than rejected (assert-verified).
2026-04-13 02:24:04 +00:00
f737577faf purge: remove Anthropic from the-nexus fleet + deepdive (#1346)
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 3s
2026-04-13 02:02:12 +00:00
ff430d5aa0 Merge pull request 'fix: deduplicate playwright install in CI' (#1345) from perplexity/fix-ci-playwright-dupe into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 3s
2026-04-13 01:35:54 +00:00
d0af4035ef Merge pull request 'muda: remove 13 stale cross-repo artifacts' (#1344) from perplexity/muda-cleanup-cross-repo into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-13 01:35:45 +00:00
71e8ee5615 Merge PR #1343
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
Add structured GOFAI worker outcomes and goal-directed planning
2026-04-13 01:34:45 +00:00
6c02baeeca fix: deduplicate playwright install in CI
Some checks failed
CI / test (pull_request) Failing after 19s
CI / validate (pull_request) Failing after 18s
Review Approval Gate / verify-review (pull_request) Failing after 4s
2026-04-13 01:34:09 +00:00
2bc7a81859 muda: remove stale artifact protected_branches.yaml`
Some checks failed
CI / test (pull_request) Failing after 26s
CI / validate (pull_request) Failing after 15s
Review Approval Gate / verify-review (pull_request) Failing after 3s
2026-04-13 01:33:57 +00:00
389aafb5ab muda: remove stale artifact codowners 2026-04-13 01:33:56 +00:00
07c8b29014 muda: remove stale artifact cODEOWNERS 2026-04-13 01:33:54 +00:00
cab7855469 muda: remove stale artifact cODEOWNERS 2026-04-13 01:33:52 +00:00
5039f31545 muda: remove stale artifact cODEOWNERS 2026-04-13 01:33:51 +00:00
e6e9d261df muda: remove stale artifact CODEOWNERS 2026-04-13 01:33:49 +00:00
b19cd64415 muda: remove stale artifact CODEOWNERS 2026-04-13 01:33:47 +00:00
7505bc21a5 muda: remove stale artifact CODEOWNERS 2026-04-13 01:33:46 +00:00
8398abec89 muda: remove stale artifact CODEOWNERS 2026-04-13 01:33:44 +00:00
49cf69c65a muda: remove stale artifact CODEOWNERS 2026-04-13 01:33:42 +00:00
32ee8d5568 muda: remove stale artifact CODEOWNERS 2026-04-13 01:33:41 +00:00
0ef1627ed1 muda: remove stale artifact CONTRIBUTING.md 2026-04-13 01:33:39 +00:00
c1e7ec4b9c muda: remove stale artifact CODEOWNERS 2026-04-13 01:33:37 +00:00
8e21c0e3ae Merge pull request 'fix: [SMOKE] [CI] Fix dependencies, CI pipeline, and clean muda' (#1334) from fix/smoke-tests-and-muda into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 3s
2026-04-13 00:57:41 +00:00
16a14fd014 fix: remove stale file docus/branch-protection.md
Some checks failed
CI / test (pull_request) Failing after 23s
CI / validate (pull_request) Failing after 15s
Review Approval Gate / verify-review (pull_request) Successful in 3s
2026-04-13 00:56:49 +00:00
349cb0296c fix: remove stale file timmy-home/SOUL.md 2026-04-13 00:56:49 +00:00
10c4b66393 fix: remove stale file timmy-home/CONTRIBUTING.md 2026-04-13 00:56:49 +00:00
cd57b020ea fix: remove stale file timmy-home/CODEOWNERS 2026-04-13 00:56:49 +00:00
9bc9ed2b30 fix: remove stale file timmy-config/SOUL.md 2026-04-13 00:56:49 +00:00
3bbd944d43 fix: remove stale file timmy-config/CONTRIBUTING.md 2026-04-13 00:56:49 +00:00
737740a2e6 fix: remove stale file timmy-config/CODEOWNERS 2026-04-13 00:56:49 +00:00
b45350d815 fix: remove stale file the-nexus/CONTRIBUTING.md 2026-04-13 00:56:49 +00:00
ffbd4f09ea fix: remove stale file the-nexus/CODEOWNERS 2026-04-13 00:56:49 +00:00
eedfd1c462 fix: remove root muda .gitea.yaml 2026-04-13 00:56:49 +00:00
370a33028d feat: add playwright to repo truth guard 2026-04-13 00:56:49 +00:00
1af9530db0 fix: install playwright browsers in CI 2026-04-13 00:56:49 +00:00
3ebd0b18ce fix: align docker-compose.yml with deploy.sh services 2026-04-13 00:56:49 +00:00
8bff05581c fix: use requirements.txt in Dockerfile 2026-04-13 00:56:49 +00:00
056d8ae5ff fix: install playwright browsers in CI 2026-04-13 00:56:36 +00:00
39436f675e fix: add missing dependencies to requirements.txt 2026-04-13 00:56:36 +00:00
fe5b6f6877 Merge pull request 'docs: Nexus Symbolic Engine documentation and tests' (#1332) from feat/symbolic-docs-and-tests-v2 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-13 00:56:17 +00:00
b863900300 Merge pull request 'fix: [EPIC] Deep Dive: Sovereign NotebookLM + Daily AI Intelligence Briefing' (#1325) from mimo/build/issue-830 into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 2s
Staging Verification Gate / verify-staging (push) Failing after 3s
2026-04-13 00:55:36 +00:00
b6cafe8807 Merge pull request 'feat: derive GOFAI perception from live Nexus state' (#1342) from burn/20260413-gofai-live-perception into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 3s
2026-04-13 00:55:27 +00:00
6ad0caf5e4 Merge pull request 'feat: Multi-user AI bridge + research paper draft' (#1326) from feat/multi-user-bridge into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 2s
2026-04-13 00:54:47 +00:00
53cc00ac5d Merge pull request 'fix: [UX] Build Nexus Health HUD component' (#1331) from mimo/build/issue-802 into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 3s
2026-04-13 00:54:31 +00:00
53e9dd93d8 Merge pull request 'fix: clean corrupted .gitea.yml and remove stale artifacts' (#1319) from mimo/research/issue-893 into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 2s
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-13 00:54:21 +00:00
c35940ef5d Merge pull request 'fix: [PORTALS] Show cross-world presence and where Timmy can meaningfully interact now' (#1304) from mimo/code/issue-717 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-13 00:51:55 +00:00
23b135a362 Merge pull request 'fix: [UI] Add Timmy action stream panel for Evennia command/result flow' (#1291) from mimo/build/issue-729 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-13 00:51:49 +00:00
9ae71de65c Merge pull request 'fix: [VISITOR] Distinguish visitor mode from operator mode in the Nexus UI' (#1286) from mimo/build/issue-710 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-13 00:51:42 +00:00
Alexander Whitestone
808d68cf62 fix: closes #717
Some checks failed
CI / test (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 13s
Review Approval Gate / verify-review (pull_request) Failing after 3s
2026-04-13 00:51:37 +00:00
Alexander Whitestone
ff3691e81e fix: closes #729
Some checks failed
CI / test (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 13s
Review Approval Gate / verify-review (pull_request) Failing after 2s
2026-04-13 00:51:34 +00:00
Alexander Whitestone
024e74defe WIP: issue #710 (mimo swarm)
Some checks failed
CI / test (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 14s
Review Approval Gate / verify-review (pull_request) Failing after 3s
2026-04-13 00:51:31 +00:00
6c67002161 Merge pull request 'fix: [PORTAL] Rebuild the portal stack as Timmy → Reflex → Pilot on clean backlog' (#1324) from mimo/build/issue-672 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-13 00:51:10 +00:00
43699c83cf Merge pull request 'fix: [IDENTITY] Make SOUL / Oath panel part of the main interaction loop' (#1316) from mimo/create/issue-709 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-13 00:50:58 +00:00
Alexander Whitestone
91f0bcb034 fix: closes #672
Some checks failed
CI / test (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 15s
Review Approval Gate / verify-review (pull_request) Failing after 3s
2026-04-13 00:50:38 +00:00
Alexander Whitestone
873ca8865e Add SOUL/Oath panel to main interaction loop (issue #709)
Some checks failed
CI / test (pull_request) Failing after 10s
CI / validate (pull_request) Failing after 16s
Review Approval Gate / verify-review (pull_request) Failing after 2s
- Added SOUL button to HUD top-right bar next to Atlas
- Added SOUL quick action in chat panel
- Added SOUL overlay with Identity, Oath, Conscience, and Sacred Trust sections
- Link to canonical SOUL.md on timmy-home
- CSS styles matching existing Nexus design system
- JS wiring for toggle/close

Also fixed: cleaned up merge conflict markers, removed duplicated
branch-policy/mem-palace/reviewers sections from footer
2026-04-13 00:50:09 +00:00
Alexander Whitestone
1e076aaa13 feat: derive GOFAI perception from live Nexus state
Some checks failed
CI / test (pull_request) Failing after 12s
CI / validate (pull_request) Failing after 16s
Review Approval Gate / verify-review (pull_request) Failing after 3s
2026-04-12 20:46:29 -04:00
2718c88374 Merge PR #1330
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 2s
Mainline GOFAI facts, deterministic worker reasoning, and plan offload
2026-04-13 00:26:36 +00:00
c111a3f6c7 Merge pull request '[INFRA] Swarm Governor — org-wide PR pileup prevention' (#1335) from perplexity/swarm-governor into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-13 00:26:23 +00:00
5cdd9aed32 Add swarm governor — prevents PR pileup across the org
Some checks failed
CI / test (pull_request) Failing after 11s
CI / validate (pull_request) Failing after 15s
Review Approval Gate / verify-review (pull_request) Failing after 3s
2026-04-13 00:26:15 +00:00
9abe12f596 Merge pull request 'fix: [INFRA] Stand up a local Windows game runtime for Bannerlord on Apple Silicon' (#1289) from mimo/build/issue-720 into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 4s
Staging Verification Gate / verify-staging (push) Failing after 3s
2026-04-13 00:23:06 +00:00
b93b1dc1d4 Merge pull request 'fix: [BRIDGE] Feed Evennia room/command events into the Nexus websocket bridge' (#1305) from mimo/code/issue-727 into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 3s
2026-04-13 00:22:37 +00:00
81077ab67d Merge pull request 'fix: [UX] Honest connection-state banner for Timmy, Forge, weather, and block feed' (#1323) from mimo/code/issue-696 into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 4s
2026-04-13 00:22:11 +00:00
dcbef618a4 Merge pull request 'docs: add AI tools org assessment tracker (#1119)' (#1321) from mimo/build/issue-1119 into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-13 00:22:00 +00:00
a038ae633e Merge pull request 'fix: [SOVEREIGN DIRECTIVE] Every wizard must catalog Alexander's requests and responses as artifacts' (#1311) from mimo/create/issue-1116 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-13 00:21:53 +00:00
6e8aee53f6 Merge pull request 'fix: [PORTAL] Deterministic Morrowind pilot loop with world-state proof' (#1303) from mimo/code/issue-673 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-13 00:21:41 +00:00
b2d9421cd6 Merge pull request 'fix: [HARNESS] Deterministic context compaction for long local sessions' (#1302) from mimo/code/issue-675 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-13 00:21:35 +00:00
dded4cffb1 Merge pull request 'fix: [Mnemosyne] Memory Constellation — glowing animated connection lines' (#1298) from mimo/code/issue-1215 into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 3s
2026-04-13 00:20:53 +00:00
0511e5471a Merge pull request 'fix: [Mnemosyne] Memory search panel — text search through holographic archive' (#1296) from mimo/code/issue-1208 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-13 00:20:48 +00:00
f6e8ec332c Merge pull request 'fix: [EPIC] Steal GBrain — Adopt Garry Tan's production knowledge architecture' (#1295) from mimo/code/issue-1181 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-13 00:20:43 +00:00
4c597a758e Merge pull request 'fix: [PORTALS] Build a portal atlas / world directory for all current and future worlds' (#1287) from mimo/build/issue-712 into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 5s
2026-04-13 00:19:35 +00:00
beb2c6f64d Merge pull request 'fix: [UI] Add first Nexus operator panel for Evennia room snapshot' (#1288) from mimo/build/issue-728 into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 6s
2026-04-13 00:19:29 +00:00
0197639d25 Merge pull request 'fix: [EPIC] Operation Get A Job — LLC Formation, Revenue Pipeline, Client Acquisition' (#1328) from mimo/build/issue-901 into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 5s
2026-04-13 00:13:33 +00:00
f6bd6f2548 Merge pull request 'fix: [ALLEGRO-BACKLOG] Build fleet health JSON feed for Nexus Watchdog' (#1329) from mimo/build/issue-865 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-13 00:13:25 +00:00
f64ae7552d Merge pull request 'fix: [PERF] Add quality-tier feature gating for heavy visual effects' (#1285) from mimo/build/issue-706 into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-13 00:13:19 +00:00
e8e645c3ac Merge pull request 'fix: [RETRO] Nightly Retrospective 2026-04-11 → 2026-04-12' (#1327) from mimo/code/issue-1277 into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 4s
2026-04-13 00:13:10 +00:00
116459c8db test: add unit tests for symbolic engine
Some checks failed
CI / test (pull_request) Failing after 8s
CI / validate (pull_request) Failing after 18s
Review Approval Gate / verify-review (pull_request) Failing after 4s
2026-04-12 23:59:40 +00:00
18224e666b docs: add README for nexus symbolic engine 2026-04-12 23:59:38 +00:00
c543202065 feat: integrate blackboard into AgentFSM
Some checks failed
Deploy Nexus / deploy (push) Failing after 2s
Staging Verification Gate / verify-staging (push) Failing after 2s
2026-04-12 23:32:05 +00:00
c6a60ec329 refactor: move symbolic engine components to separate file
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-12 23:28:40 +00:00
Alexander Whitestone
ed4c5da3cb fix: closes #865
Some checks failed
CI / test (pull_request) Failing after 8s
CI / validate (pull_request) Failing after 13s
Review Approval Gate / verify-review (pull_request) Failing after 3s
2026-04-12 19:28:17 -04:00
0ae8725cbd feat: integrate blackboard into MemoryOptimizer
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-12 23:28:13 +00:00
8cc707429e feat: extract symbolic engine components
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-12 23:27:52 +00:00
Alexander Whitestone
163b1174e5 fix: [HUD] Health panel shows daemon reachability, session metrics, last-updated time
Some checks failed
CI / test (pull_request) Failing after 8s
CI / validate (pull_request) Failing after 14s
Review Approval Gate / verify-review (pull_request) Failing after 3s
- Track local health daemon (localhost:8082) reachability instead of silently falling back
- Add LOCAL DAEMON service row so operators see daemon status at a glance
- Show session counts (local/total) when daemon provides them
- Add timestamp footer so HUD freshness is visible
- Fix stray ');' closing bracket on original function
2026-04-12 19:27:51 -04:00
Alexander Whitestone
dbad1cdf0b fix: closes #1277
Some checks failed
CI / test (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 14s
Review Approval Gate / verify-review (pull_request) Failing after 3s
2026-04-12 19:27:19 -04:00
Alexander Whitestone
49ff85af46 feat: Multi-user AI bridge + research paper draft
Some checks failed
CI / test (pull_request) Failing after 10s
CI / validate (pull_request) Failing after 16s
Review Approval Gate / verify-review (pull_request) Failing after 3s
world/multi_user_bridge.py — HTTP API for multi-user AI interaction (280 lines)
commands/timmy_commands.py — Evennia commands (ask, tell, timmy status)
paper/ — Research paper draft + experiment results

Key findings:
- 0% cross-contamination (3 concurrent users, isolated contexts)
- Crisis detection triggers correctly ('Are you safe right now?')
2026-04-12 19:27:01 -04:00
Alexander Whitestone
adec58f980 fix: closes #830
Some checks failed
CI / test (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 15s
Review Approval Gate / verify-review (pull_request) Failing after 3s
2026-04-12 19:26:43 -04:00
Alexander Whitestone
96426378e4 fix: portfolio CTA, rate card consistency, remove typo file
Some checks failed
CI / test (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 14s
Review Approval Gate / verify-review (pull_request) Failing after 3s
- Add 'Let's Build' CTA section to portfolio.md with contact info and next steps
- Fix README decision rule: minimum project k (was k, rate-card says k)
- Remove CONTRIBUTORING.md typo duplicate (content already in CONTRIBUTING.md)
2026-04-12 19:26:36 -04:00
Alexander Whitestone
0458342622 fix: closes #696
Some checks failed
CI / test (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 16s
Review Approval Gate / verify-review (pull_request) Failing after 2s
2026-04-12 19:25:39 -04:00
Alexander Whitestone
a5a748dc64 docs: add AI tools org assessment tracker (#1119)
Some checks failed
CI / test (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 17s
Review Approval Gate / verify-review (pull_request) Failing after 3s
Concise implementation checklist extracted from Bezalel's 205-repo scan.
Prioritizes the 7 actionable tools with clear next steps for the fleet.
2026-04-12 19:24:38 -04:00
d26483f3a5 Merge pull request 'fix: [ALLEGRO-BACKLOG] Propagate hybrid heartbeat daemon to Adagio' (#1315) from mimo/create/issue-864 into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 3s
2026-04-12 23:22:58 +00:00
fda4fcc3bd Merge pull request 'fix: [NEXUS] [MIGRATION] Audit and Restore Spatial Audio from Legacy Matrix' (#1320) from mimo/research/issue-866 into main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-12 23:22:55 +00:00
f8505ca6c5 Apply GOFAI final cleanup changes directly to main
Some checks failed
Deploy Nexus / deploy (push) Failing after 2s
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-12 23:22:43 +00:00
d8ddf96d0c Apply GOFAI final cleanup changes directly to main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-12 23:22:41 +00:00
11c5bfa18d Apply GOFAI final cleanup changes directly to main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-12 23:22:40 +00:00
8160b1b383 Apply GOFAI final cleanup changes directly to main
Some checks failed
Deploy Nexus / deploy (push) Has been cancelled
Staging Verification Gate / verify-staging (push) Has been cancelled
2026-04-12 23:22:39 +00:00
3c1f760fbc Merge pull request 'feat(mnemosyne): implement discover() — serendipitous entry exploration (#1271)' (#1290) from burn/20260412-1202-mnemosyne into main
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 3s
2026-04-12 23:18:33 +00:00
878461b6f7 fix: [PORTALS] Design many-portal navigation for crowded Nexus layouts (#1314)
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 3s
Co-authored-by: Alexander Whitestone <alexander@alexanderwhitestone.com>
Co-committed-by: Alexander Whitestone <alexander@alexanderwhitestone.com>
2026-04-12 23:07:17 +00:00
40dacd2c94 Merge PR #1313
Some checks failed
Deploy Nexus / deploy (push) Failing after 3s
Staging Verification Gate / verify-staging (push) Failing after 3s
Merged small validated fix from PR #1313

Co-authored-by: Alexander Whitestone <alexander@alexanderwhitestone.com>
Co-committed-by: Alexander Whitestone <alexander@alexanderwhitestone.com>
2026-04-12 23:06:21 +00:00
Alexander Whitestone
34721317ac fix: closes #893
Some checks failed
CI / test (pull_request) Failing after 8s
CI / validate (pull_request) Failing after 13s
Review Approval Gate / verify-review (pull_request) Failing after 3s
2026-04-12 12:55:16 -04:00
Alexander Whitestone
869a7711e3 fix: closes #866
Some checks failed
CI / test (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 14s
Review Approval Gate / verify-review (pull_request) Failing after 2s
2026-04-12 12:52:39 -04:00
Alexander Whitestone
d5099a18c6 Wire heartbeat into NexusMind consciousness loop
Some checks failed
CI / test (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 15s
Review Approval Gate / verify-review (pull_request) Failing after 3s
The heartbeat module existed but was never called. Now write_heartbeat fires:
- On startup (cycle 0, status thinking)
- After every successful think cycle
- On graceful shutdown (status idle)

This gives the watchdog a signal that the mind is alive, not just running.
2026-04-12 12:45:58 -04:00
Alexander Whitestone
5dfcf0e660 Add sovereign room to MemPalace fleet taxonomy
Some checks failed
CI / test (pull_request) Failing after 8s
CI / validate (pull_request) Failing after 14s
Review Approval Gate / verify-review (pull_request) Failing after 2s
Refs #1116. Adds 'sovereign' room for cataloging Alexander Whitestone's
requests and responses as dated, retrievable artifacts.

Room config:
- key: sovereign, available to all wizards
- Naming convention: YYYY-MM-DD_HHMMSS_<topic>.md
- Running INDEX.md for chronological catalog
- Fleet-wide tunnel for cross-wizard search
2026-04-12 12:40:06 -04:00
Alexander Whitestone
229edf16e2 fix: closes #727
Some checks failed
CI / test (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 16s
Review Approval Gate / verify-review (pull_request) Failing after 3s
2026-04-12 12:33:31 -04:00
Alexander Whitestone
da925cba30 fix: closes #673
Some checks failed
CI / test (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 14s
Review Approval Gate / verify-review (pull_request) Failing after 2s
2026-04-12 12:28:16 -04:00
Alexander Whitestone
5bc3e0879d fix: closes #675
Some checks failed
CI / test (pull_request) Failing after 8s
CI / validate (pull_request) Failing after 14s
Review Approval Gate / verify-review (pull_request) Failing after 3s
2026-04-12 12:27:45 -04:00
Alexander Whitestone
11686fe09a feat(mnemosyne): constellation-aware connection lines
Some checks failed
CI / test (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 16s
Review Approval Gate / verify-review (pull_request) Failing after 2s
- Strength-encoded opacity: line brightness proportional to blended
  source/target memory strength (0.15-0.7 range instead of flat 0.2)
- Color blending: lines use lerped colors from source/target region colors
- LOD culling: connection lines fade/hide when camera is far (>60 units)
- Toggle API: toggleConstellation() / isConstellationVisible() for UI
- Fix: replaced undefined _createConnectionLine with _drawSingleConnection
  (dedup-aware, constellation-styled single-connection renderer)

Part of #1215
2026-04-12 12:20:54 -04:00
Alexander Whitestone
4706861619 fix: closes #1208
Some checks failed
CI / test (pull_request) Failing after 10s
CI / validate (pull_request) Failing after 17s
Review Approval Gate / verify-review (pull_request) Failing after 3s
2026-04-12 12:18:58 -04:00
Alexander Whitestone
0a0a2eb802 fix: closes #1181
Some checks failed
CI / test (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 15s
Review Approval Gate / verify-review (pull_request) Failing after 3s
2026-04-12 12:18:55 -04:00
Alexander Whitestone
b5ed262581 feat(mnemosyne): implement discover() — serendipitous entry exploration (#1271)
Some checks failed
CI / test (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 15s
Review Approval Gate / verify-review (pull_request) Failing after 2s
- Added discover() method to archive.py (probabilistic, vitality-weighted)
- Added cmd_discover CLI handler with subparser
- Supports: -n COUNT, -t TOPIC, --vibrant flag
- prefer_fading=True surfaces neglected entries
2026-04-12 12:07:28 -04:00
Alexander Whitestone
bd4b9e0f74 WIP: issue #720 (mimo swarm)
Some checks failed
CI / test (pull_request) Failing after 9s
CI / validate (pull_request) Failing after 16s
Review Approval Gate / verify-review (pull_request) Failing after 2s
2026-04-12 11:55:51 -04:00
Alexander Whitestone
9771472983 WIP: issue #728 (mimo swarm)
Some checks failed
CI / test (pull_request) Failing after 10s
CI / validate (pull_request) Failing after 15s
Review Approval Gate / verify-review (pull_request) Failing after 3s
2026-04-12 11:54:27 -04:00
Alexander Whitestone
fdc02dc121 fix: [PORTALS] Build a portal atlas / world directory for all current and future worlds (closes #712)
Some checks failed
CI / test (pull_request) Failing after 10s
CI / validate (pull_request) Failing after 16s
Review Approval Gate / verify-review (pull_request) Failing after 3s
2026-04-12 11:52:12 -04:00
Alexander Whitestone
c34748704e fix: [PERF] Add quality-tier feature gating for heavy visual effects (closes #706)
Some checks failed
CI / test (pull_request) Failing after 10s
CI / validate (pull_request) Failing after 15s
Review Approval Gate / verify-review (pull_request) Failing after 2s
2026-04-12 11:51:40 -04:00
10 changed files with 164 additions and 361 deletions

View File

@@ -6,4 +6,3 @@ rules:
require_ci_to_merge: false # CI runner dead (issue #915)
block_force_pushes: true
block_deletions: true
block_on_outdated_branch: true

View File

@@ -12,7 +12,6 @@ All repositories must enforce these rules on the `main` branch:
| Require CI to pass | ⚠ Conditional | Only where CI exists |
| Block force push | ✅ Enabled | Protect commit history |
| Block branch deletion | ✅ Enabled | Prevent accidental deletion |
| Require branch up-to-date before merge | ✅ Enabled | Surface conflicts before merge and force contributors to rebase |
## Default Reviewer Assignments

46
app.js
View File

@@ -170,8 +170,6 @@ class AgentFSM {
this.agentId = agentId;
this.state = initialState;
this.transitions = {};
this._transitionLog = [];
this._onTransition = null;
}
addTransition(fromState, toState, condition) {
@@ -179,34 +177,17 @@ class AgentFSM {
this.transitions[fromState].push({ toState, condition });
}
onTransition(callback) {
this._onTransition = callback;
}
update(facts) {
const possibleTransitions = this.transitions[this.state] || [];
for (const transition of possibleTransitions) {
if (transition.condition(facts)) {
const from = this.state;
console.log(`[FSM] Agent ${this.agentId} transitioning: ${this.state} -> ${transition.toState}`);
this.state = transition.toState;
const entry = {
agent: this.agentId,
from,
to: this.state,
timestamp: Date.now(),
facts: Object.fromEntries(facts),
};
this._transitionLog.push(entry);
if (this._transitionLog.length > 50) this._transitionLog.shift();
if (this._onTransition) this._onTransition(entry);
console.log(`[FSM] Agent ${this.agentId}: ${from} -> ${this.state}`);
return true;
}
}
return false;
}
getTransitionLog() { return this._transitionLog; }
}
class KnowledgeGraph {
@@ -666,15 +647,6 @@ function setupGOFAI() {
// Setup FSM
agentFSMs['timmy'] = new AgentFSM('timmy', 'IDLE');
agentFSMs['timmy'].addTransition('IDLE', 'ANALYZING', (facts) => facts.get('activePortals') > 0);
agentFSMs['timmy'].addTransition('ANALYZING', 'REACTING', (facts) => facts.get('CRITICAL_DRAIN_PATTERN') || facts.get('UNSTABLE_OSCILLATION'));
agentFSMs['timmy'].addTransition('REACTING', 'IDLE', (facts) => !facts.get('CRITICAL_DRAIN_PATTERN') && !facts.get('UNSTABLE_OSCILLATION') && !(facts.get('activePortals') > 0));
// Wire FSM transitions to trajectory logging (issue #674)
agentFSMs['timmy'].onTransition((entry) => {
if (window._nexusTrajectoryHook) {
window._nexusTrajectoryHook('fsm_transition', entry);
}
});
symbolicEngine.addRule((facts) => facts.get('UNSTABLE_OSCILLATION'), () => 'STABILIZE MATRIX', 'Unstable oscillation demands stabilization', ['UNSTABLE_OSCILLATION']);
symbolicEngine.addRule((facts) => facts.get('CRITICAL_DRAIN_PATTERN'), () => 'SHED PORTAL LOAD', 'Critical drain demands portal shedding', ['CRITICAL_DRAIN_PATTERN']);
@@ -742,10 +714,6 @@ async function init() {
camera = new THREE.PerspectiveCamera(65, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.copy(playerPos);
// Initialize avatar and LOD systems
if (window.AvatarCustomization) window.AvatarCustomization.init(scene, camera);
if (window.LODSystem) window.LODSystem.init(scene, camera);
updateLoad(20);
createSkybox();
@@ -2043,12 +2011,10 @@ function setupControls() {
);
const raycaster = new THREE.Raycaster();
raycaster.setFromCamera(mouse, camera);
// Raycast against both ring and swirl for a larger click target
const portalMeshes = portals.flatMap(p => [p.ring, p.swirl]);
const intersects = raycaster.intersectObjects(portalMeshes);
const intersects = raycaster.intersectObjects(portals.map(p => p.ring));
if (intersects.length > 0) {
const hitObj = intersects[0].object;
const portal = portals.find(p => p.ring === hitObj || p.swirl === hitObj);
const clickedRing = intersects[0].object;
const portal = portals.find(p => p.ring === clickedRing);
if (portal) activatePortal(portal);
}
}
@@ -3591,10 +3557,6 @@ function gameLoop() {
if (composer) { composer.render(); } else { renderer.render(scene, camera); }
// Update avatar and LOD systems
if (window.AvatarCustomization && playerPos) window.AvatarCustomization.update(playerPos);
if (window.LODSystem && playerPos) window.LODSystem.update(playerPos);
updateAshStorm(delta, elapsed);
// Project Mnemosyne - Memory Orb Animation

View File

@@ -395,8 +395,6 @@
<div id="memory-connections-panel" class="memory-connections-panel" style="display:none;" aria-label="Memory Connections Panel"></div>
<script src="./boot.js"></script>
<script src="./avatar-customization.js"></script>
<script src="./lod-system.js"></script>
<script>
function openMemoryFilter() { renderFilterList(); document.getElementById('memory-filter').style.display = 'flex'; }
function closeMemoryFilter() { document.getElementById('memory-filter').style.display = 'none'; }

View File

@@ -1,186 +0,0 @@
/**
* LOD (Level of Detail) System for The Nexus
*
* Optimizes rendering when many avatars/users are visible:
* - Distance-based LOD: far users become billboard sprites
* - Occlusion: skip rendering users behind walls
* - Budget: maintain 60 FPS target with 50+ avatars
*
* Usage:
* LODSystem.init(scene, camera);
* LODSystem.registerAvatar(avatarMesh, userId);
* LODSystem.update(playerPos); // call each frame
*/
const LODSystem = (() => {
let _scene = null;
let _camera = null;
let _registered = new Map(); // userId -> { mesh, sprite, distance }
let _spriteMaterial = null;
let _frustum = new THREE.Frustum();
let _projScreenMatrix = new THREE.Matrix4();
// Thresholds
const LOD_NEAR = 15; // Full mesh within 15 units
const LOD_FAR = 40; // Billboard beyond 40 units
const LOD_CULL = 80; // Don't render beyond 80 units
const SPRITE_SIZE = 1.2;
function init(sceneRef, cameraRef) {
_scene = sceneRef;
_camera = cameraRef;
// Create shared sprite material
const canvas = document.createElement('canvas');
canvas.width = 64;
canvas.height = 64;
const ctx = canvas.getContext('2d');
// Simple avatar indicator: colored circle
ctx.fillStyle = '#00ffcc';
ctx.beginPath();
ctx.arc(32, 32, 20, 0, Math.PI * 2);
ctx.fill();
ctx.fillStyle = '#0a0f1a';
ctx.beginPath();
ctx.arc(32, 28, 8, 0, Math.PI * 2); // head
ctx.fill();
const texture = new THREE.CanvasTexture(canvas);
_spriteMaterial = new THREE.SpriteMaterial({
map: texture,
transparent: true,
depthTest: true,
sizeAttenuation: true,
});
console.log('[LODSystem] Initialized');
}
function registerAvatar(avatarMesh, userId, color) {
// Create billboard sprite for this avatar
const spriteMat = _spriteMaterial.clone();
if (color) {
// Tint sprite to match avatar color
const canvas = document.createElement('canvas');
canvas.width = 64;
canvas.height = 64;
const ctx = canvas.getContext('2d');
ctx.fillStyle = color;
ctx.beginPath();
ctx.arc(32, 32, 20, 0, Math.PI * 2);
ctx.fill();
ctx.fillStyle = '#0a0f1a';
ctx.beginPath();
ctx.arc(32, 28, 8, 0, Math.PI * 2);
ctx.fill();
spriteMat.map = new THREE.CanvasTexture(canvas);
spriteMat.map.needsUpdate = true;
}
const sprite = new THREE.Sprite(spriteMat);
sprite.scale.set(SPRITE_SIZE, SPRITE_SIZE, 1);
sprite.visible = false;
_scene.add(sprite);
_registered.set(userId, {
mesh: avatarMesh,
sprite: sprite,
distance: Infinity,
});
}
function unregisterAvatar(userId) {
const entry = _registered.get(userId);
if (entry) {
_scene.remove(entry.sprite);
entry.sprite.material.dispose();
_registered.delete(userId);
}
}
function setSpriteColor(userId, color) {
const entry = _registered.get(userId);
if (!entry) return;
const canvas = document.createElement('canvas');
canvas.width = 64;
canvas.height = 64;
const ctx = canvas.getContext('2d');
ctx.fillStyle = color;
ctx.beginPath();
ctx.arc(32, 32, 20, 0, Math.PI * 2);
ctx.fill();
ctx.fillStyle = '#0a0f1a';
ctx.beginPath();
ctx.arc(32, 28, 8, 0, Math.PI * 2);
ctx.fill();
entry.sprite.material.map = new THREE.CanvasTexture(canvas);
entry.sprite.material.map.needsUpdate = true;
}
function update(playerPos) {
if (!_camera) return;
// Update frustum for culling
_projScreenMatrix.multiplyMatrices(
_camera.projectionMatrix,
_camera.matrixWorldInverse
);
_frustum.setFromProjectionMatrix(_projScreenMatrix);
_registered.forEach((entry, userId) => {
if (!entry.mesh) return;
const meshPos = entry.mesh.position;
const distance = playerPos.distanceTo(meshPos);
entry.distance = distance;
// Beyond cull distance: hide everything
if (distance > LOD_CULL) {
entry.mesh.visible = false;
entry.sprite.visible = false;
return;
}
// Check if in camera frustum
const inFrustum = _frustum.containsPoint(meshPos);
if (!inFrustum) {
entry.mesh.visible = false;
entry.sprite.visible = false;
return;
}
// LOD switching
if (distance <= LOD_NEAR) {
// Near: full mesh
entry.mesh.visible = true;
entry.sprite.visible = false;
} else if (distance <= LOD_FAR) {
// Mid: mesh with reduced detail (keep mesh visible)
entry.mesh.visible = true;
entry.sprite.visible = false;
} else {
// Far: billboard sprite
entry.mesh.visible = false;
entry.sprite.visible = true;
entry.sprite.position.copy(meshPos);
entry.sprite.position.y += 1.2; // above avatar center
}
});
}
function getStats() {
let meshCount = 0;
let spriteCount = 0;
let culledCount = 0;
_registered.forEach(entry => {
if (entry.mesh.visible) meshCount++;
else if (entry.sprite.visible) spriteCount++;
else culledCount++;
});
return { total: _registered.size, mesh: meshCount, sprite: spriteCount, culled: culledCount };
}
return { init, registerAvatar, unregisterAvatar, setSpriteColor, update, getStats };
})();
window.LODSystem = LODSystem;

View File

@@ -125,51 +125,6 @@ class TrajectoryLogger:
return output
def log_tactical(
self,
agent: str,
from_state: str,
to_state: str,
facts_snapshot: Optional[dict] = None,
):
"""Log an FSM state transition as a tactical training signal.
Captures reflex-layer decisions (IDLE->ANALYZING->REACTING->IDLE)
as separate training samples so the LoRA learns tactical patterns
alongside thought/action cycles.
"""
perception = f"[Tactical] Agent {agent} state change: {from_state} -> {to_state}"
if facts_snapshot:
perception += f'\nWorld state: {json.dumps(facts_snapshot, default=str)[:500]}'
thought = f"Reflex transition triggered: conditions met for {from_state} -> {to_state}"
cycle = {
"id": f"{self.session_id}_tactical_{len(self.cycles)}",
"model": "nexus-embodied-tactical",
"started_at": time.strftime("%Y-%m-%dT%H:%M:%S"),
"cycle_ms": 0,
"conversations": [
{"from": "system", "value": self.system_prompt},
{"from": "human", "value": perception},
{"from": "gpt", "value": thought},
],
"message_count": 3,
"metadata": {
"type": "tactical",
"agent": agent,
"from_state": from_state,
"to_state": to_state,
},
}
self.cycles.append(cycle)
with open(self.log_file, "a") as f:
f.write(json.dumps(cycle) + "\n")
return cycle["id"]
def list_trajectory_files(self) -> list[dict]:
"""List all trajectory files with stats."""
files = []

View File

@@ -0,0 +1,107 @@
# Perplexity Work Report — 2026-04-12 Evening
**Agent:** Perplexity
**Duration:** ~30 minutes
**Scope:** All 6 Timmy Foundation repos
---
## Session Summary
This artifact preserves the dated issue-body work report from the 2026-04-12 evening session.
## Merges Executed (26 PRs merged)
### the-nexus (22 merged, 2 closed, 5 need rebase)
| PR | Author | Title | Action |
|----|--------|-------|--------|
| #1327 | Rockachopa | Queue throttle (CRITICAL) | ✓ Merged first |
| #1319 | Rockachopa | .gitea.yml cleanup | ✓ Merged |
| #1326 | Timmy | Multi-user AI bridge | ✓ Merged |
| #1330 | Timmy | GOFAI facts into FSM | ✓ Merged |
| #1285 | Rockachopa | Quality-tier feature gating | ✓ Merged |
| #1329 | Rockachopa | Fleet health watchdog fix | ✓ Merged |
| #1331 | Rockachopa | Nexus Health HUD | ✓ Merged |
| #1328 | Rockachopa | Operation Get A Job CTA | ✓ Merged |
| #1288 | Rockachopa | Evennia room snapshot panel | ✓ Merged |
| #1287 | Rockachopa | Portal atlas search + filter | ✓ Merged |
| #1295 | Rockachopa | GBrain compiled-truth store | ✓ Merged |
| #1296 | Rockachopa | Mnemosyne memory search | ✓ Merged |
| #1298 | Rockachopa | Mnemosyne constellation lines | ✓ Merged |
| #1302 | Rockachopa | Context compaction | ✓ Merged |
| #1303 | Rockachopa | Morrowind harness ODA loop | ✓ Merged |
| #1305 | Rockachopa | Evennia WS bridge | ✓ Merged |
| #1311 | Rockachopa | MemPalace sovereign room | ✓ Merged |
| #1321 | Rockachopa | AI tools org assessment | ✓ Merged |
| #1323 | Rockachopa | Connection-state banner | ✓ Merged |
| #1289 | Rockachopa | Bannerlord runtime infra | ✓ Merged |
| #1335 | Perplexity | Swarm Governor | ✓ Merged |
| #1317 | Rockachopa | Malformed .gitea.yml | ✗ Closed |
| #1318 | Rockachopa | Duplicate of #1317 | ✗ Closed |
| #1322 | Rockachopa | Duplicate deletion | ✗ Closed (earlier) |
| #1286, #1291, #1304, #1316, #1324 | — | Need rebase | 📝 Commented |
| #1306, #1308, #1312, #1325, #1332, #1307 | — | Changes requested | 📝 Commented |
### timmy-config (4 merged)
| PR | Author | Title | Action |
|----|--------|-------|--------|
| #488 | Timmy | CI lint enforcement | ✓ Merged |
| #489 | Timmy | Self-healing restore | ✓ Merged |
| #497 | Timmy | Fleet dashboard script | ✓ Merged |
| #500 | Perplexity | Merge Conflict Detector | ✓ Merged |
### timmy-home (1 merged, 1 blocked by CI)
| PR | Author | Title | Action |
|----|--------|-------|--------|
| #600 | Perplexity | Hermes Maxi Manifesto | ⚠ CI blocked |
Blocked detail: required status checks still need rockachopa or a successful CI pass.
### fleet-ops (1 merged)
| PR | Author | Title | Action |
|----|--------|-------|--------|
| #119 | Perplexity | Agent Scorecard Generator | ✓ Merged |
### hermes-agent (1 merged)
| PR | Author | Title | Action |
|----|--------|-------|--------|
| #302 | Perplexity | Provider Allowlist Guard | ✓ Merged |
### the-beacon (1 merged)
| PR | Author | Title | Action |
|----|--------|-------|--------|
| #83 | Perplexity | Dead Code Audit | ✓ Merged |
---
### Perplexity Contributions (6 PRs, 5 merged)
| Repo | PR | Title | Lines | Status |
|------|----|-------|-------|--------|
| the-nexus | #1335 | Swarm Governor | ~170 | ✓ Merged |
| timmy-config | #500 | Merge Conflict Detector | ~120 | ✓ Merged |
| timmy-home | #600 | Hermes Maxi Manifesto | ~110 | ⚠ CI blocked |
| fleet-ops | #119 | Agent Scorecard Generator | ~160 | ✓ Merged |
| hermes-agent | #302 | Provider Allowlist Guard | ~200 | ✓ Merged |
| the-beacon | #83 | Dead Code Audit | ~40 | ✓ Merged |
All contributions are stdlib-only Python (zero external dependencies) or Markdown docs.
---
## Remaining Work
1. **timmy-home #600** — merge after CI passes or rockachopa overrides
2. **5 nexus PRs need rebase**#1286, #1291, #1304, #1316, #1324
3. **6 nexus PRs need changes**#1306, #1307, #1308, #1312, #1325, #1332
4. **timmy-config #499** — CAPTCHA tool needs human sign-off
5. **timmy-config #498** — fragile status signal, needs structured output
6. **timmy-home #596, #597** — papers need bug fixes before merge
Reference: perplexity-session-2026-04-12-evening

View File

@@ -4,61 +4,48 @@ Sync branch protection rules from .gitea/branch-protection/*.yml to Gitea.
Correctly uses the Gitea 1.25+ API (not GitHub-style).
"""
from __future__ import annotations
import json
import os
import sys
import json
import urllib.request
from pathlib import Path
import yaml
GITEA_URL = os.getenv("GITEA_URL", "https://forge.alexanderwhitestone.com")
GITEA_TOKEN = os.getenv("GITEA_TOKEN", "")
ORG = "Timmy_Foundation"
PROJECT_ROOT = Path(__file__).resolve().parent.parent
CONFIG_DIR = PROJECT_ROOT / ".gitea" / "branch-protection"
CONFIG_DIR = ".gitea/branch-protection"
def api_request(method: str, path: str, payload: dict | None = None) -> dict:
url = f"{GITEA_URL}/api/v1{path}"
data = json.dumps(payload).encode() if payload else None
req = urllib.request.Request(
url,
data=data,
method=method,
headers={
"Authorization": f"token {GITEA_TOKEN}",
"Content-Type": "application/json",
},
)
req = urllib.request.Request(url, data=data, method=method, headers={
"Authorization": f"token {GITEA_TOKEN}",
"Content-Type": "application/json",
})
with urllib.request.urlopen(req, timeout=30) as resp:
return json.loads(resp.read().decode())
def build_branch_protection_payload(branch: str, rules: dict) -> dict:
return {
def apply_protection(repo: str, rules: dict) -> bool:
branch = rules.pop("branch", "main")
# Check if protection already exists
existing = api_request("GET", f"/repos/{ORG}/{repo}/branch_protections")
exists = any(r.get("branch_name") == branch for r in existing)
payload = {
"branch_name": branch,
"rule_name": branch,
"required_approvals": rules.get("required_approvals", 1),
"block_on_rejected_reviews": rules.get("block_on_rejected_reviews", True),
"dismiss_stale_approvals": rules.get("dismiss_stale_approvals", True),
"block_deletions": rules.get("block_deletions", True),
"block_force_push": rules.get("block_force_push", rules.get("block_force_pushes", True)),
"block_force_push": rules.get("block_force_push", True),
"block_admin_merge_override": rules.get("block_admin_merge_override", True),
"enable_status_check": rules.get("require_ci_to_merge", False),
"status_check_contexts": rules.get("status_check_contexts", []),
"block_on_outdated_branch": rules.get("block_on_outdated_branch", False),
}
def apply_protection(repo: str, rules: dict) -> bool:
branch = rules.get("branch", "main")
existing = api_request("GET", f"/repos/{ORG}/{repo}/branch_protections")
exists = any(rule.get("branch_name") == branch for rule in existing)
payload = build_branch_protection_payload(branch, rules)
try:
if exists:
api_request("PATCH", f"/repos/{ORG}/{repo}/branch_protections/{branch}", payload)
@@ -66,8 +53,8 @@ def apply_protection(repo: str, rules: dict) -> bool:
api_request("POST", f"/repos/{ORG}/{repo}/branch_protections", payload)
print(f"{repo}:{branch} synced")
return True
except Exception as exc:
print(f"{repo}:{branch} failed: {exc}")
except Exception as e:
print(f"{repo}:{branch} failed: {e}")
return False
@@ -75,18 +62,15 @@ def main() -> int:
if not GITEA_TOKEN:
print("ERROR: GITEA_TOKEN not set")
return 1
if not CONFIG_DIR.exists():
print(f"ERROR: config directory not found: {CONFIG_DIR}")
return 1
ok = 0
for cfg_path in sorted(CONFIG_DIR.glob("*.yml")):
repo = cfg_path.stem
with cfg_path.open() as fh:
cfg = yaml.safe_load(fh) or {}
rules = cfg.get("rules", {})
rules.setdefault("branch", cfg.get("branch", "main"))
if apply_protection(repo, rules):
for fname in os.listdir(CONFIG_DIR):
if not fname.endswith(".yml"):
continue
repo = fname[:-4]
with open(os.path.join(CONFIG_DIR, fname)) as f:
cfg = yaml.safe_load(f)
if apply_protection(repo, cfg.get("rules", {})):
ok += 1
print(f"\nSynced {ok} repo(s)")

View File

@@ -0,0 +1,30 @@
from pathlib import Path
REPORT = Path("reports/perplexity-session-2026-04-12-evening.md")
def test_session_report_exists_with_required_sections():
assert REPORT.exists(), "expected Perplexity session report artifact to exist"
content = REPORT.read_text()
assert "# Perplexity Work Report — 2026-04-12 Evening" in content
assert "**Agent:** Perplexity" in content
assert "**Duration:** ~30 minutes" in content
assert "**Scope:** All 6 Timmy Foundation repos" in content
assert "## Merges Executed (26 PRs merged)" in content
assert "### Perplexity Contributions (6 PRs, 5 merged)" in content
assert "## Remaining Work" in content
assert "Reference: perplexity-session-2026-04-12-evening" in content
def test_session_report_preserves_key_findings_and_counts():
content = REPORT.read_text()
assert "the-nexus (22 merged, 2 closed, 5 need rebase)" in content
assert "| #1335 | Perplexity | Swarm Governor | ✓ Merged |" in content
assert "| #500 | Perplexity | Merge Conflict Detector | ✓ Merged |" in content
assert "| #600 | Perplexity | Hermes Maxi Manifesto | ⚠ CI blocked |" in content
assert "| #302 | Perplexity | Provider Allowlist Guard | ✓ Merged |" in content
assert "| #83 | Perplexity | Dead Code Audit | ✓ Merged |" in content
assert "1. **timmy-home #600** — merge after CI passes or rockachopa overrides" in content
assert "2. **5 nexus PRs need rebase** — #1286, #1291, #1304, #1316, #1324" in content
assert "3. **6 nexus PRs need changes** — #1306, #1307, #1308, #1312, #1325, #1332" in content

View File

@@ -1,45 +0,0 @@
from __future__ import annotations
import importlib.util
import sys
from pathlib import Path
import yaml
PROJECT_ROOT = Path(__file__).parent.parent
_spec = importlib.util.spec_from_file_location(
"sync_branch_protection_test",
PROJECT_ROOT / "scripts" / "sync_branch_protection.py",
)
_mod = importlib.util.module_from_spec(_spec)
sys.modules["sync_branch_protection_test"] = _mod
_spec.loader.exec_module(_mod)
build_branch_protection_payload = _mod.build_branch_protection_payload
def test_build_branch_protection_payload_enables_rebase_before_merge():
payload = build_branch_protection_payload(
"main",
{
"required_approvals": 1,
"dismiss_stale_approvals": True,
"require_ci_to_merge": False,
"block_deletions": True,
"block_force_push": True,
"block_on_outdated_branch": True,
},
)
assert payload["branch_name"] == "main"
assert payload["rule_name"] == "main"
assert payload["block_on_outdated_branch"] is True
assert payload["required_approvals"] == 1
assert payload["enable_status_check"] is False
def test_the_nexus_branch_protection_config_requires_up_to_date_branch():
config = yaml.safe_load((PROJECT_ROOT / ".gitea" / "branch-protection" / "the-nexus.yml").read_text())
rules = config["rules"]
assert rules["block_on_outdated_branch"] is True