Commit Graph

715 Commits

Author SHA1 Message Date
4e2a353ba3 feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
c3d0400918 feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
1fb98ff769 feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
a3570df3b2 feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
a62d39470f feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
4fb292ca43 feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
4b0e375697 [claude] Close duplicate PRs for issue #1128 (#1449) (#1466) 2026-04-15 21:24:01 -04:00
Alexander Whitestone
17be3c8804 feat: Add forge cleanup tools and documentation (#1128)
## 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-15 21:24:01 -04:00
6bbd1c2baf [claude] Close duplicate PRs for issue #1338 (#1451) (#1464) 2026-04-15 21:24:01 -04:00
604f73a1b8 [claude] Close duplicate PRs for issue #1339 (#1450) (#1465) 2026-04-15 21:24:01 -04:00
825a2c8a94 [claude] Close duplicate PRs for issue #1336 (#1452) (#1456) 2026-04-15 21:24:01 -04:00
Alexander Whitestone
b2f4bd0448 fix: Remove duplicate content blocks from README.md and POLICY.md (#1338)
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-15 21:24:01 -04:00
40502cf91c feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
2c2181cbaf feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
3cb45008f6 feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
7d475151ea feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
181d4ce933 feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
ecbd104d03 feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
6e3ea2637c feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
779a65cd83 feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
bc48abd970 feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
a3f1688cb7 feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
a80d749f69 [claude] Add .gitattributes export-ignore + large-repo clone docs (#1428) (#1433) 2026-04-15 21:24:01 -04:00
e7ab9fbe17 feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
c61c8bb030 feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
8fd5d57864 feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
3b5c62fa76 feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
a4f76705df feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
dc74a84192 feat: standardize llama.cpp backend (#1123) 2026-04-15 21:24:01 -04:00
48f85da0c0 feat: standardize llama.cpp backend (#1123) 2026-04-15 21:24:01 -04:00
a0443a7003 feat: standardize llama.cpp backend (#1123) 2026-04-15 21:24:01 -04:00
428a9da3bd feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
3361100830 feat: standardize llama.cpp backend for sovereign local inference (#1123) 2026-04-15 21:24:01 -04:00
Alexander Whitestone
6da8d627b6 fix: ChatLog.log() crash — CHATLOG_FILE defined after use (#1349)
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-15 21:24:01 -04:00
Alexander Whitestone
ec2a427a7a feat: implement A2A protocol for fleet-wizard delegation (#1122)
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-15 21:24:01 -04:00
Timmy
d19f62476c fix(#1356): ThreadingHTTPServer for multi-user bridge concurrency
Replace single-threaded HTTPServer with ThreadingHTTPServer
(thread-per-request) in both multi_user_bridge.py copies.

Fixes #1356
2026-04-15 21:24:01 -04:00
Alexander Whitestone
b178b4ad98 fix: Add Sovereign Sound Playground and fix portals.json (#1354)
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-15 21:24:01 -04:00
Alexander Whitestone
a96dac0d8a feat: Add Reasoning Trace HUD Component
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-15 21:24:01 -04:00
Alexander Whitestone
76298f9255 fix: reconcile registry locations with fleet-routing.json, add missing agents
- 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-15 21:24:01 -04:00
Timmy (NEXUSBURN)
4215ef786f feat: fleet audit tool — deduplicate agents, one identity per machine
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-15 21:24:01 -04:00
Timmy
9ce8c0b5a7 fix: MEMPALACE INIT shows real stats from fleet API (#1340)
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-15 21:24:01 -04:00
Alexander Whitestone
e23ba71cf3 fix: remove duplicate content blocks from README.md
## 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-15 21:24:01 -04:00
Timmy
9d1040265a [verified] test: guard index.html against merge junk
Refs #1336
Refs #1338

- assert index.html has no conflict markers or stray markdown
- assert cleaned single-instance blocks stay single
2026-04-15 21:24:01 -04:00
6878f206ee [claude] Fix: unblock CI deploy and staging gate secrets (#1363) (#1364) 2026-04-15 21:24:01 -04:00
Timmy
8faa930baf [verified] fix: harden Three.js boot path
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-15 21:24:01 -04:00
b9de0d7003 fix: [RESPONSIVE] Tighten layout for laptop and smaller-screen viewing (#1359)
Co-authored-by: Alexander Whitestone <alexander@alexanderwhitestone.com>
Co-committed-by: Alexander Whitestone <alexander@alexanderwhitestone.com>
2026-04-15 21:24:01 -04:00
Alexander Whitestone
c5ce9cd7aa fix: eliminate two 404 sources — case mismatch + missing icons
- 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-15 21:24:01 -04:00
Alexander Whitestone
60eea86c93 fix: call self.load() in all game system manager __init__ methods
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-15 21:24:01 -04:00
Alexander Whitestone
23deb761dc fix: one-way exits — rooms now bidirectional (#1350)
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-15 21:24:01 -04:00
Alexander Whitestone
2872b04ca9 Add paper Results section with 4 experiments 2026-04-15 21:24:01 -04:00