marla.knowledge

Deterministic, non-learned retrieval over the static Plan Maker knowledge base – no vector database, no embeddings.

Deterministic lightweight RAG over the static NASimEmu knowledge base (spec section 8).

No vector database, no embeddings, no learned retrieval: rules are matched by evaluating fixed boolean predicates over the request’s visible observation summary and the current legal action types, and returned in the knowledge file’s own stable order. Nothing here changes across runs given the same inputs, and nothing here is learned or updated from previous MARLA runs.

class marla.knowledge.retriever.KnowledgeBase(version: 'str', rules: 'tuple[KnowledgeRule, ...]')[source]

Bases: object

Parameters:
rules: tuple[KnowledgeRule, ...]
version: str
class marla.knowledge.retriever.KnowledgeRule(id: 'str', observation_flags: 'tuple[str, ...]', legal_action_types: 'tuple[str, ...]', text: 'str')[source]

Bases: object

Parameters:
id: str
legal_action_types: tuple[str, ...]
observation_flags: tuple[str, ...]
text: str
marla.knowledge.retriever.compute_observation_flags(observation)[source]

Derive boolean observation flags from the request’s visible observation summary.

observation is the JSON summary built by environment.observation_summary.build_observation_summary: a dict with a hosts list (each host carrying access, reachable, and the known_services/known_processes/known_os name lists – all visible-only) plus the scenario-wide sensitive_hosts_total/ sensitive_hosts_with_root_access capture-target progress counts.

Parameters:

observation (dict[str, Any])

Return type:

set[str]

marla.knowledge.retriever.load_knowledge_base(path)[source]
Parameters:

path (str | Path)

Return type:

KnowledgeBase

marla.knowledge.retriever.resolve_knowledge_path(path)[source]

Resolve a package://marla/... or plain filesystem knowledge path reference.

Parameters:

path (str)

Return type:

Path

marla.knowledge.retriever.retrieve_rules(knowledge_base, observation, legal_action_types)[source]

Deterministic predicate evaluation; returns a stable ordered subset.

A rule matches when ALL of its observation_flags are currently active (vacuously true if empty) AND at least one of its legal_action_types is present among the current legal actions (vacuously true if empty, i.e. the rule applies regardless of type).

Parameters:
Return type:

list[KnowledgeRule]