Filter policy playground
Design and test policies for the proposed ground-up MeshCore forwarding engine. The playground models phased evaluation, immutable receive-time matches, explicit priority and stop behavior, ACL ownership, compact typed conditions, and accumulated forwarding decisions.
Everything runs locally in this browser. Channel keys, packet facts, and policy drafts are not uploaded anywhere.
This page targets the new policy-engine idea, not today's FPF7 file or
existing set flood.* commands. Its readable policy language,
JSON, and Base64 bundle are a prototype for design testing. Current
firmware cannot install these policies yet.
Build a policy
The presets below reproduce common examples from Flood Filtering and Moderation in the proposed rule model.
This policy controls flood retransmission only. Direct packets carry a supplied route and stay outside the filter, matching today's firmware. Local packet delivery also happens independently of the relay decision. Rules that can limit relayed REQ, RESPONSE, TXT_MSG, ANON_REQ, or PATH traffic receive a prominent warning because they can still reduce multi-hop remote-login reach. The analyzer warns instead of silently exempting those floods, because an exemption would make the documented high-traffic rules behave differently.
Rule builder
Create a policy rule
Common match settings
Common actions
Choosing a phase-specific action automatically selects a compatible phase and ACL owner. Open the advanced section to inspect or override those choices.
Advanced execution, ownership, and flood route
Direct packets already carry a supplied path and are intentionally outside this engine. The route condition below only distinguishes unscoped floods from transport-scoped floods.
Policy draft
Rules in execution order
Rules match the same immutable packet facts. Ordering is phase, then descending priority, then stable rule ID. Drop decisions are sticky.
Immutable packet simulator
Explain an evaluation
Read a raw MeshCore packet
Paste an on-air packet as hexadecimal. The decoder follows the MeshCore wire format, displays its header, route, pbyte path, and clear payload envelope, then loads only facts actually present on the wire into the simulator.
Import and explain
Paste readable policy or a saved draft
Accepts one-line policy set ... when ... do ... definitions,
playground JSON, or a playground Base64 bundle.
Export
Move or save this design
Proposed human-readable definition. Current firmware does not accept it yet.
Structured draft used by this page.
Browser-playground interchange only. It is not the final packed firmware codec.
Proposed evaluation contract
The simulator uses these rules:
- Only flood retransmission enters the policy. Direct routing and local packet delivery remain outside it.
- Every matcher reads the same immutable receive-time packet facts.
- Rules run by phase, descending priority, then stable rule ID.
- A drop decision is sticky and cannot be undone by a later rule.
- The first matching scope, timing, queue, and retry action in execution order wins.
- All matching token-bucket rate constraints remain attached to the decision.
stop=phaseskips later rules in that phase.stop=policyskips later configurable rules, but never mandatory packet validation or radio safety.- Shadow rules report what they would do without changing the decision or stopping other rules.
- Expensive facts such as channel authentication, decryption, and path-table lookup are resolved once per packet and reused by every matching rule.
The byte-budget display is deliberately approximate until the packed firmware codec exists. It demonstrates why simple mappings should not reserve a maximum- sized structure for every possible condition and action.