For agents, on top of README.md, which they read first.

  • Rule order is priority. Of the rules that hold, the first with something left to do decides. An ending placed after an effect it should pre-empt will not pre-empt it.
  • Every answerable way the Jev facts can fall must show something or do something. The test every_way_the_jev_facts_can_fall_ends_or_does_something walks all of them, split readings included; a new fact or kind needs it extended, or an answerable question can end with nothing to show.
  • A fact's question id (ask::question_id, mostly its name) is in the request to Jev, so renaming one changes the request and abandons every kept response. The name is also the parameter in a /rules link.
  • The network is real, not decoration: next evaluates the joins the diagram draws. Do not add a second code path that decides from the facts directly.
  • The engine is rete's (third-party/rustcrates, never edited from here). This crate holds only the domain: Fact, Value, Effect, End, Note, RULES and the Domain impl. A fact's, effect's or note's name (Domain::*_name) is also its name in a rules file, so renaming one breaks every file that uses it, as well as the diagram.
  • Network is a wrapper over the engine's, by Deref. The Test, Then, Known, Next and Rule here are the engine's types with this domain filled in; add a method that only this domain needs to the wrapper, and anything every domain needs to rete.