5fe8f228c1
Add a read-only /ecosystem page that consumes the sibling services' JSON APIs (Nexus entities, Praxis attention, Hexis capabilities), fetched concurrently with honest per-panel error states. Siblings stay headless — mavweb is their human surface (arch §16). Wired via mavweb -nexus/-praxis/-hexis flags; mavweb joins the ecosystem compose network. Fix mobile horizontal overflow across all pages: .content is a flex child with default min-width:auto, so it refused to shrink below the tables' intrinsic width. min-width:0 lets wide tables pan inside .scroll instead of dragging the page sideways. Verified via CDP geometry check (scrollWidth === clientWidth at 430px). Also includes in-progress Ethos UI redesign, ecosystem deploy compose, and planning docs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
26 lines
1.3 KiB
HTML
26 lines
1.3 KiB
HTML
{{template "shellTop" "trace"}}
|
|
<h1>Rule Trace</h1>
|
|
<div class="hint mb-4">{{.Now | ago}} — winner: <strong>{{if .Winner}}{{.Winner}}{{else}}nothing fired{{end}}</strong></div>
|
|
<div class=scroll><table class=mono>
|
|
<tr><th>rule<th>sev<th>predicate<th>gate<th>blocked by<th>detail<th>selected<th>lost to</tr>
|
|
{{range .Rules}}<tr>
|
|
<td>{{.RuleName}}</td>
|
|
<td>{{.Severity}}</td>
|
|
<td class={{if .PredicateResult}}green{{else}}gray{{end}}>{{.PredicateResult}}</td>
|
|
<td class={{if .GateResult}}green{{else if .GateBlockedBy}}red{{else}}gray{{end}}>{{.GateResult}}</td>
|
|
<td>{{.GateBlockedBy}}</td>
|
|
<td><details><summary>gate</summary>
|
|
<span class=hint>snooze_until:</span> {{.GateDetail.SnoozeUntil | fmtTime}}<br>
|
|
<span class=hint>cooldown_until:</span> {{.GateDetail.CooldownUntil | fmtTime}}<br>
|
|
<span class=hint>quiet_hours:</span> {{.GateDetail.QuietHours}}<br>
|
|
<span class=hint>calendar_busy:</span> {{.GateDetail.CalendarBusy}}<br>
|
|
<span class=hint>presence:</span> {{.GateDetail.Presence}}<br>
|
|
<span class=hint>inert_keys_missing:</span> {{if .GateDetail.InertKeysMissing}}{{join .GateDetail.InertKeysMissing ", "}}{{else}}—{{end}}
|
|
</details></td>
|
|
<td class={{if .WasSelected}}green{{end}}>{{.WasSelected}}</td>
|
|
<td>{{.LostTo}}</td>
|
|
</tr>{{end}}
|
|
</table></div>
|
|
{{template "shellBottom"}}
|
|
</html>
|