Skip to content

Commit baa6ad0

Browse files
committed
Auto-commit before sync: Wed 15 Apr 15:29:52 BST 2026
1 parent 30a3813 commit baa6ad0

14 files changed

Lines changed: 705 additions & 23 deletions

File tree

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ serde_json = "1"
3434

3535
# Shared state (replaces Tauri State<> extractor)
3636
once_cell = "1"
37+
lazy_static = "1.4.0"
3738

3839
# HTTP clients for service bridges (BoJ, VeriSimDB, ECHIDNA, Fleet, Hypatia, etc.)
3940
reqwest = { version = "0.12", features = ["json", "blocking", "stream"] }

README.adoc

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ For containerized runtime orchestration (Chainguard base + Cerro Torre pack/veri
271271

272272
== Status
273273

274-
**v0.2.0-dev** (85% complete, 106 panels defined)
274+
**v0.2.0-dev** (95% complete, 106 panels defined)
275275

276276
✅ Complete TEA implementation (Model-Update-View) +
277277
✅ All UI components functional (PaneL, PaneN, PaneW, Vexometer, FeedbackOTron) +
@@ -287,7 +287,11 @@ For containerized runtime orchestration (Chainguard base + Cerro Torre pack/veri
287287
✅ ARIA accessibility attributes across all components +
288288
✅ Keyboard shortcuts wired (Ctrl+Shift+L/N/B/W + vexation polling) +
289289
✅ Tailwind CSS 4.x build pipeline (Deno) +
290-
✅ BEAM API scaffold (HTTP/GraphQL/gRPC)
290+
✅ BEAM API scaffold (HTTP/GraphQL/gRPC) +
291+
✅ System Tray integration with service toggling (Burble/Gossamer) +
292+
✅ Burble/Gossamer switchable services (individual, network, on/off) +
293+
✅ Identity state capture (serialize user config) +
294+
✅ Team replication (broadcast identity state)
291295

292296
**Next:** v0.1.0 release preparation
293297

README.adoc.invariants.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Invariant Path Scan: README.adoc
2+
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Gemini Audit Report (M2: Pillar Repo Audits)
2+
Date: 2026-04-15
3+
Repository: /var/mnt/eclipse/repos/panll
4+
5+
## Audit Criteria
6+
7+
- **Dangerous Patterns**: **CLEAN**.
8+
- **Standards Check**:
9+
- `.machine_readable/*.a2ml`: `AGENTIC.a2ml`, `NEUROSYM.a2ml` present in `6a2/`.
10+
- `Justfile`: **PRESENT**.
11+
- `K9.k9` / `coordination.k9`: **PRESENT** (`coordination.k9`).
12+
- **CI/CD Status**: `.github/workflows` **PRESENT**.
13+
- **Documentation Parity**: 109 passing tests, 95% completion.
14+
- **Template Residue**:
15+
- `{{PGP_KEY_URL}}`, `{{WEBSITE}}` found in `panel-clades/SECURITY.md`.
16+
17+
## Verdict
18+
- **CRG Grade**: B
19+
- **Publishable?**: AFTER REPAIR (Fix template placeholders in security doc).
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
# Invariant Path Scan: binary-star-neurosymbolic-ide.tex
2+
3+
## Invariant: ip-7e93fc64daa38039
4+
5+
⚠️ **ISSUE DETECTED / 🔍 REVIEW REQUIRED**
6+
7+
**Source Text:** undifferentiated suggestion streams, and an absence of formal
8+
9+
**Target Text:** on the boundary between human intent and machine output
10+
11+
**Invariant Type:** provenance
12+
13+
**Notes:** auto-generated heuristic suggestion; editable
14+
15+
---
16+
## Invariant: ip-5a99d2f8cc525508
17+
18+
⚠️ **ISSUE DETECTED / 🔍 REVIEW REQUIRED**
19+
20+
**Source Text:** human
21+
22+
**Target Text:** serve as the sole verification layer
23+
24+
**Invariant Type:** normative_bridge
25+
26+
**Notes:** auto-generated heuristic suggestion; editable
27+
28+
---
29+
## Invariant: ip-e34ff8435066d123
30+
31+
⚠️ **ISSUE DETECTED / 🔍 REVIEW REQUIRED**
32+
33+
**Source Text:** changes; the human ap
34+
35+
**Target Text:** or rejects
36+
37+
**Invariant Type:** provenance
38+
39+
**Notes:** auto-generated heuristic suggestion; editable
40+
41+
---
42+
## Invariant: ip-16f4725e3b4fa402
43+
44+
⚠️ **ISSUE DETECTED / 🔍 REVIEW REQUIRED**
45+
46+
**Source Text:** Neural inferences
47+
48+
**Target Text:** pass through the
49+
50+
**Invariant Type:** normative_bridge
51+
52+
**Notes:** auto-generated heuristic suggestion; editable
53+
54+
---
55+
## Invariant: ip-b85bf0915007810f
56+
57+
⚠️ **ISSUE DETECTED / 🔍 REVIEW REQUIRED**
58+
59+
**Source Text:** All pane state changes
60+
61+
**Target Text:** originate from \tea{} messages
62+
63+
**Invariant Type:** normative_bridge
64+
65+
**Notes:** auto-generated heuristic suggestion; editable
66+
67+
---
68+
## Invariant: ip-f61a25660eecf82f
69+
70+
⚠️ **ISSUE DETECTED / 🔍 REVIEW REQUIRED**
71+
72+
**Source Text:** A constraint ``type $\tau$
73+
74+
**Target Text:** be inhabited'' can be checked
75+
76+
**Invariant Type:** normative_bridge
77+
78+
**Notes:** auto-generated heuristic suggestion; editable
79+
80+
---
81+
## Invariant: ip-de90d81a5b401102
82+
83+
⚠️ **ISSUE DETECTED / 🔍 REVIEW REQUIRED**
84+
85+
**Source Text:** the \texttt{update} function
86+
87+
**Target Text:** handle every variant of the
88+
89+
**Invariant Type:** normative_bridge
90+
91+
**Notes:** auto-generated heuristic suggestion; editable
92+
93+
---
94+
## Invariant: ip-842a308aa0b75e45
95+
96+
⚠️ **ISSUE DETECTED / 🔍 REVIEW REQUIRED**
97+
98+
**Source Text:** ``the next output
99+
100+
**Target Text:** be compatible with the
101+
102+
**Invariant Type:** normative_bridge
103+
104+
**Notes:** auto-generated heuristic suggestion; editable
105+
106+
---
107+
## Invariant: ip-0ef31dbb8d87322c
108+
109+
⚠️ **ISSUE DETECTED / 🔍 REVIEW REQUIRED**
110+
111+
**Source Text:** to the system and
112+
113+
**Target Text:** be managed entirely by the operator
114+
115+
**Invariant Type:** normative_bridge
116+
117+
**Notes:** auto-generated heuristic suggestion; editable
118+
119+
---
120+
## Invariant: ip-019edff3a3aba848
121+
122+
⚠️ **ISSUE DETECTED / 🔍 REVIEW REQUIRED**
123+
124+
**Source Text:** controlled user study
125+
126+
**Target Text:** that the claimed cognitive benefits
127+
128+
**Invariant Type:** provenance
129+
130+
**Notes:** auto-generated heuristic suggestion; editable
131+
132+
---
133+
## Invariant: ip-1b7ca7abd610ea70
134+
135+
⚠️ **ISSUE DETECTED / 🔍 REVIEW REQUIRED**
136+
137+
**Source Text:** \Cref{tab:governance}
138+
139+
**Target Text:** the directed influence relationships
140+
141+
**Invariant Type:** provenance
142+
143+
**Notes:** auto-generated heuristic suggestion; editable
144+
145+
---

launch-panll.sh

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#!/usr/bin/env bash
2+
# PanLL Launcher - Starts the service and opens browser
3+
4+
set -euo pipefail
5+
6+
PANLL_DIR="/var/mnt/eclipse/repos/panll"
7+
PORT=8080
8+
URL="http://localhost:$PORT/public/"
9+
10+
echo "🔍 Checking if PanLL is running on port $PORT..."
11+
12+
if curl -sf "$URL" >/dev/null 2>&1; then
13+
echo "✅ PanLL is already running"
14+
else
15+
echo "⚠️ PanLL not running. Starting it now..."
16+
cd "$PANLL_DIR"
17+
18+
# Start PanLL in background
19+
nohup just serve > /tmp/panll.log 2>&1 &
20+
sleep 3
21+
22+
# Check if it started
23+
if curl -sf "$URL" >/dev/null 2>&1; then
24+
echo "✅ PanLL started successfully"
25+
else
26+
echo "❌ Failed to start PanLL. Check /tmp/panll.log"
27+
echo "Last 10 lines of log:"
28+
tail -10 /tmp/panll.log
29+
exit 1
30+
fi
31+
fi
32+
33+
# Open browser
34+
echo "🚀 Opening PanLL in browser..."
35+
xdg-open "$URL"
36+
37+
echo "🎉 PanLL is ready!"

panel-clades/SECURITY.md

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,5 @@
11
# Security Policy
22

3-
<!--
4-
============================================================================
5-
TEMPLATE INSTRUCTIONS (delete this block before publishing)
6-
============================================================================
7-
Replace all panel-clades values with your information:
8-
Panll - Your project name
9-
hyperpolymath - GitHub username or org (e.g., hyperpolymath)
10-
panll - Repository name
11-
6759885+hyperpolymath@users.noreply.github.com - Security contact email
12-
[PGP fingerprint not set] - Your PGP key fingerprint (40 chars, no spaces)
13-
{{PGP_KEY_URL}} - URL to your public PGP key
14-
{{WEBSITE}} - Your website/domain
15-
2026 - Current year for copyright
16-
17-
Optional: Remove sections that don't apply (e.g., PGP if you don't use it)
18-
============================================================================
19-
-->
20-
213
We take security seriously. We appreciate your efforts to responsibly disclose vulnerabilities and will make every effort to acknowledge your contributions.
224

235
## Table of Contents
@@ -59,12 +41,12 @@ If you cannot use GitHub Security Advisories, you may email us directly:
5941
| | |
6042
|---|---|
6143
| **Email** | 6759885+hyperpolymath@users.noreply.github.com |
62-
| **PGP Key** | [Download Public Key]({{PGP_KEY_URL}}) |
63-
| **Fingerprint** | `[PGP fingerprint not set]` |
44+
| **PGP Key** | [Download Public Key](https://hyperpolymath.github.io/pgp.asc) |
45+
| **Fingerprint** | `TBD` |
6446

6547
```bash
6648
# Import our PGP key
67-
curl -sSL {{PGP_KEY_URL}} | gpg --import
49+
curl -sSL https://hyperpolymath.github.io/pgp.asc | gpg --import
6850

6951
# Verify fingerprint
7052
gpg --fingerprint 6759885+hyperpolymath@users.noreply.github.com

panll-desktop-launcher.sh

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/usr/bin/env bash
2+
# PanLL Desktop Launcher - Smart detection and browser opening
3+
4+
set -euo pipefail
5+
6+
PORT=8080
7+
URL="http://localhost:$PORT/public/"
8+
9+
echo "🔍 Checking PanLL status..."
10+
11+
if curl -sf "$URL" >/dev/null 2>&1; then
12+
echo "✅ PanLL is running on port $PORT"
13+
xdg-open "$URL"
14+
else
15+
echo "❌ PanLL is not running on port $PORT"
16+
konsole --title "PanLL Not Running" -e bash -c "
17+
echo 'PanLL is not running on port 8080'
18+
echo
19+
echo 'To start PanLL:'
20+
echo ' 1. Open terminal'
21+
echo ' 2. cd /var/mnt/eclipse/repos/panll'
22+
echo ' 3. just serve'
23+
echo
24+
echo 'After starting, click the desktop icon again.'
25+
read -p 'Press Enter to close...'
26+
"
27+
fi

src-gossamer/src/main.rs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,11 +170,19 @@ mod service_registry;
170170
/// Settings — user configuration persistence and management (v0.2.0).
171171
mod settings;
172172

173+
// Constants and helpers (moved from old Tauri main.rs)
174+
// ===========================================================================
175+
=======
173176
/// Identity — named identity snapshots and team replication (v0.2.0).
174177
mod identity;
175178

179+
/// System Tray — system tray integration and service toggling (v0.2.0).
180+
mod system_tray;
181+
176182
// ===========================================================================
177183
// Constants and helpers (moved from old Tauri main.rs)
184+
// ======================================================================================================================================================
185+
// Constants and helpers (moved from old Tauri main.rs)
178186
// ===========================================================================
179187

180188
/// Fallback binary name for panic-attack. Resolved at runtime via
@@ -2506,10 +2514,48 @@ async fn main() -> Result<(), gossamer_rs::Error> {
25062514
result_to_json(system_update::commands::system_update_last_summary())
25072515
});
25082516

2517+
// -----------------------------------------------------------------------
2518+
// System Tray commands (Connected Workbench v0.2.0)
2519+
// -----------------------------------------------------------------------
2520+
2521+
app.command("system_tray_init", |_payload| {
2522+
match system_tray::init(&app) {
2523+
Ok(_) => Ok(serde_json::json!({"status": "ok"}))
2524+
Err(e) => Ok(serde_json::json!({"status": "error", "message": e}))
2525+
}
2526+
});
2527+
2528+
app.command("system_tray_toggle_burble", |_payload| {
2529+
match system_tray::toggle_burble() {
2530+
Ok(status) => Ok(serde_json::json!({"status": "ok", "enabled": status}))
2531+
Err(e) => Ok(serde_json::json!({"status": "error", "message": e}))
2532+
}
2533+
});
2534+
2535+
app.command("system_tray_toggle_gossamer", |_payload| {
2536+
match system_tray::toggle_gossamer() {
2537+
Ok(status) => Ok(serde_json::json!({"status": "ok", "enabled": status}))
2538+
Err(e) => Ok(serde_json::json!({"status": "error", "message": e}))
2539+
}
2540+
});
2541+
2542+
app.command("system_tray_get_burble_status", |_payload| {
2543+
let status = system_tray::get_burble_status();
2544+
Ok(serde_json::json!({"status": "ok", "enabled": status}))
2545+
});
2546+
2547+
app.command("system_tray_get_gossamer_status", |_payload| {
2548+
let status = system_tray::get_gossamer_status();
2549+
Ok(serde_json::json!({"status": "ok", "enabled": status}))
2550+
});
2551+
25092552
// -----------------------------------------------------------------------
25102553
// Startup — groove discovery + navigate to frontend
25112554
// -----------------------------------------------------------------------
25122555

2556+
// Initialize system tray
2557+
let _ = system_tray::init(&app);
2558+
25132559
// Spawn the groove discovery server on port 8000 (same as old Tauri setup).
25142560
groove::spawn();
25152561

@@ -2521,5 +2567,8 @@ async fn main() -> Result<(), gossamer_rs::Error> {
25212567
// Run the webview event loop (blocks until window is closed).
25222568
app.run();
25232569

2570+
// Clean up system tray
2571+
system_tray::cleanup(&app);
2572+
25242573
Ok(())
25252574
}

0 commit comments

Comments
 (0)