Bro extension intercepts LinkedIn DOM. Pushes posts/analytics to MDSMS fleet-linkedin via gateway. No headless Chrome required.
Shadow SDK WASM
Go shadow cells → .wasm
shadow-engine Go cells compile to WASM and run in Bro extension. All 2,450 cells available browser-side. Joffe-Math runs locally.
Gate Badge
γ₁ always lit
Toolbar badge shows fleet health. Green = all tiers up. Yellow = 1 tier down. Red = cascade degraded. Gold = Grail Protocol fires.
Manifest
cli-registry/pemos-browser-engine
manifest.yaml: 5 components, NSIS + .deb installers, 6 test targets. msi01 gate required before shipping to any master domain.
TEMPL INTEGRATION — GO-NATIVE HTML (a-h/templ)
templ — type-safe HTML in Go · 10,217 stars · the missing piece
Components are Go functions. Compiler catches HTML mistakes. fleet data structs → templ → HTML. No more string soup in handlers.
// fleet-sync/pemos-portal-v2/components/concept.templpackage components
import"github.com/eose-sre/pemos-portal-v2/pkg/shadow"// ConceptCard renders one fleet concept with sorry count + Grail progresstemplConceptCard(c shadow.Concept) {
<div class="concept-card">
<div class="cc-sym">{ c.Symbol }</div>
<div class="cc-name">{ c.Name }</div>
<div class="cc-desc">{ c.Description }</div>
// type-safe: SorryCount is int, compiler verifiesif c.SorryCount == 0 {
<span class="badge proved">✅ PROVED</span>
} else {
<span class="badge boss">{ strconv.Itoa(c.SorryCount) } sorrys</span>
}
<a href={ templ.URL("https://" + c.FleetPage) }>fleet page →</a>
</div>
}
// ShadowMatrix renders the full concept × language × format gridtemplShadowMatrix(concepts []shadow.Concept) {
<table class="matrix">
for _, c := range concepts {
<tr><td>{ c.Name }</td>
<td>✓</td> // Go — always 0<td>✓</td> // Python — always 0<td>{ strconv.Itoa(c.SorryCount) }</td> // Lean4<td>✓</td> // C — always 0<td>✓</td> // TypeScript — always 0
</tr>
}
</table>
}
Next step: go get github.com/a-h/templ@latest in portal-v2 (needs Go 1.23+).
Generate components with templ generate.
Serves via templ.Handler(ConceptCard(c)) — no string building.
50 GOAT FORMATS — EVERY CONCEPT RENDERED 250 WAYS
SHADOW ENGINE CLI
# Build the shadow-gen binary
cd fleet-sync/cli-registry/shadow-engine
go build -o shadow-gen ./cmd/shadow-gen/
# List concepts + sorry counts
./shadow-gen concepts
# Generate all 245 cells for γ₁ (proved — 0 Lean4 sorrys)
./shadow-gen generate gamma1
# Generate ALL: 10 concepts × 49 formats × 5 languages = 2,450 cells
./shadow-gen generate-all
# Print the sorry matrix
./shadow-gen matrix
# Fleet-wide stats + Grail progress
./shadow-gen stats