mirror of
https://github.com/okieselbach/AutopilotMonitor.git
synced 2026-10-23 20:26:10 +00:00
e5cb3c4f5e
All 54 shipped analyze rules get role, summary, subject and key facts as
{{signal.key}} templates, each with a minor version bump so the self-seed
picks them up. Values were checked against stored findings, the rows that
receive the block at read time.
- ENRL-001 repeats the outcome only: the 0x87D1041C paragraph and the
placeholder note are gone, labels read "ESP step that failed" / "ESP
error code", remediation is "Find the cause". This changes its alert text.
- ENRL-002 says the sweep "closed" the session (it can end Incomplete).
- ID-002 and ID-004 gain evidence-only conditions (unexpected account
names; IME token failure count and codes); firing and confidence are
unchanged.
- Resolution: facts sharing a label are alternatives, an exact repeat of
label and value is left out (new shared fixture case, web module and
its generated MCP copy).
- Ratchet: every built-in presentation passes the save validator, uses
qualified tokens only, and each token names a condition of the rule and
a key its source records (RuleTemplateInterpolator.TokenRegex internal).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rule presentation — shared cases
An analyze rule's optional presentation block (role, summary, subject, key facts) is stored as
raw {{token}} templates, like the explanation. cases.json is the one definition of how a
renderer resolves it against a finding's matchedConditions: which facts are left out, when the
summary falls back to the explanation, and when a subject counts. Token resolution itself is the
one in ../rule-template-interpolation.
Implementations that run every case:
- Web —
resolvePresentationinsrc/Web/autopilot-monitor-web/lib/rulePresentation.ts(test:lib/__tests__/rulePresentation.test.ts) - MCP server — the generated copy
src/McpServer/autopilot-monitor-mcp/src/generated/rule-presentation.generated.ts(test:src/__tests__/rule-presentation.test.ts)
A change to the resolution goes into cases.json first.