0Start here
This page is the on-ramp. It answers three questions in order — what the calculus is for, what one maneuver looks like worked end to end, and how it sits next to the frameworks you already use — before the framework page states the system formally. Dotted terms link to the glossary.
0.1The thirty-second version
Security teams answer coverage questions from a control inventory: the EDR is deployed, the rule is enabled, so the technique is covered. That inventory cannot tell you that the rule's telemetry died last Tuesday, that the rule keys on a filename the adversary changes for free, or that nobody ever tested whether it fires.
Maneuver Calculus models one adversary procedure at a time — what it needs, what it does, what it leaves behind — and derives the coverage answer from what your detections are actually keyed on and actually receiving, instead of taking anyone's word for it. Where the model cannot derive an answer it returns the gap rather than a verdict: an unmodeled behavior is never reported as covered.
0.2One maneuver, three ways
The same structure, in three vocabularies. Flip the register and every plate below keeps its shape while its words change: a physical analogy (a bank robbery), the cyber case (LSASS credential dumping, T1003.001), and the formal model (spec notation, ontology terms, axioms). If the plain telling and the specification carry the same shape, the notation was never the hard part — the modelling underneath it was. The physical column is an analogy register, a teaching aid, never a synonym for the fixed vocabulary.
A thief disabling the lock on a bank’s back door. Before, they must reach the lock, move the pins, and turn it; the move is to defeat the lock; after, the lock is open and the door lets them through. The part that cannot change is all three boxes taken together — change any one and it is no longer the same maneuver. Underneath sit two ways of doing it: pick the lock, or forge a key. A rake pick, a hook pick, this gang’s tools — all still “pick the lock” to us. One entry, not fifty.
{P}, mechanism m, postcondition {Q}. This is invariant core A; the tool used is a swappable variant.An operator already at SYSTEM integrity reads credential material out of LSASS. That need·do·get is invariant core A — read it live. Underneath are swappable variants: a userland read, a syscall/handle-dup route. LSASS actually carries three cores, not one: A read memory live, B write it to disk (which yields a file, not yet a credential), C execute inside LSASS (A’s ending, reached with write access rather than an outside read). This plate is core A. Which tool ran is tradecraft; the reading itself is what cannot be dropped.
{P} m {Q}; the stripped triple ⟨P*, m*, Q*⟩ it aligns to is the invariant core.{P} m {Q} (§4.1). Identity is the stripped triple ⟨P*, m*, Q*⟩; two cores differing in any component are distinct (§4.4.3). Required = removing it stops the effect (§4.4.3.1).mc:ManeuverRecord · mc:InvariantCore (disjoint individuals) · mc:ImplementationVariant ⊑ mc:ManeuverRecord. Clauses via mc:hasPreconditionClause/mc:hasPostconditionClause, body mc:composesPrimitive; core via mc:coreRequiresState (P*), mc:invariantComposes (m*), mc:coreRequiresEffect (Q*); mc:alignsToCore derived; mc:serves an mc:Objective.A maneuver record is a Hoare triple {P} m {Q} — a precondition it requires, a mechanism, a postcondition it yields (§4.1). Its identity is the stripped triple ⟨P*, m*, Q*⟩, what every aligned record structurally requires; two cores differing in any component are distinct (§4.4.3). An element is required exactly when removing it stops the record reaching its effect (§4.4.3.1). A tool realizes the core but is not part of it — the trivial core ⟨∅,∅,∅⟩ is never named (§4.4.5.3).
One goal, four genuinely different maneuvers: disable the lock, blow the door, take off the hinges, or get a person to open it. You fit a lock whose pins cannot be moved — so Maneuver 1 stops in every way of doing it, including ways nobody has written down. That is a real, honest win; say it that way. But you did not block the goal: three other maneuvers reach it and your lock does nothing about them. And if you had blocked only rake picks, you would not even have blocked Maneuver 1.
The objective — credential access — is reached by several maneuvers. RunAsPPL and Credential Guard act on core A (read LSASS live), so they stop every variant of A: userland read, syscall/handle-dup, and any route not yet catalogued. They do nothing to core B (dump to disk), core C (execute inside), or the unmodeled sibling paths — SAM-hive, DCSync, NTDS.dit, LSA secrets. A defence stops a whole maneuver, or one way of doing one maneuver; nothing stops the objective. A control keyed only on minidumps would not even stop core A.
mc:Objective served by several records; a break transfers class-wide only when it acts on the invariant core.detect placement never breaks anything (§9.2). Transfer holds iff the placement acts on the core (§4.7.1).mc:breaksManeuver · mc:alignsToCore · mc:tierAgainstCore · mc:serves / mc:Objective. Distinct cores are distinct mc:InvariantCore individuals.A placement structurally breaks a maneuver when it stops it reaching its effect; a detect placement never breaks anything (§9.2). A result transfers to every aligned record exactly when the placement acts on the invariant core; acting on one record’s variation is a result for that record alone (§4.7.1). Scope follows a lattice: core → class-wide; several variations → those records; one variation → that record (§4.7.3). The mc:Objective is carried, not a criterion (§4.4.5).
Coverage is not a colour on a wall chart. One camera is unplugged — that watcher is blind — but the strong-room guard and the delivery ledger still watch, so this maneuver stays seen. What you never drew a plan for is a different matter: a door missing from your drawings is not a guarded door. Silence there is a gap to escalate, never a tick in the “covered” column.
Detection health is four-valued and derived from the telemetry underneath, not read off a dashboard. Impairing Sysmon blinds faceUserlandHandle; faceKernelRead (ETW-Ti) and faceMDMP (File/DLP) stay healthy, so core A is still seen. Health is computed, so killing one source moves every verdict resting on it. Separately, the Zone E sibling paths — SAM-hive, DCSync, NTDS.dit, remote LSASS, LSA secrets — have no record at all. Unmodeled is not covered: the honest output is the gap, escalated. Not tested is not covered either.
coverage record carries each face’s status (§8.2). Unmodeled is silence, escalated — never a covered verdict (§10.4).o1 spanning (L5, core), o2/o3 discriminating (L2/L3, variation). Health flows from control state through the grounding chain.Each detection face carries a four-valued status — live, degraded, uncertain, blind — evaluated over the telemetry it grounds on (§8.2); a face is blind when its trigger requirement is unsatisfied. A maneuver with no record, a sibling path never modeled, and a cell never authored are all unmodeled, and unmodeled MUST NOT be reported as covered; absence of a record is not evidence of coverage (§10.4).
Where the defence lands decides how far the win travels. Un-pickable pins act on the part that cannot change, so they beat every way of picking — and ways nobody has written down. A sign reading “no rake picks” acts on one particular way; it stops the rake and nothing else — not the hook pick, not forging. Same door, two very different claims, with very different lifetimes.
A detection keyed on the invariant core — “a non-LSASS context reads LSASS credential memory,” visible via ETW-Ti (o1, spanning, L5) — fires whichever variant of core A ran: userland read, syscall/handle-dup, or a route not yet catalogued. That result transfers across the whole class. A detection keyed on a variation — the minidump written to disk (o2, discriminating, L2) — covers only that route; swap to a userland read and it is silent. Grounding fixes the scope.
m* has class-wide scope; a placement on one record’s variation has single-record scope (§4.7).mc:alignsToCore (derived) · mc:tierAgainstCore · mc:ImplementationVariant. Core-grounded ⇒ spanning; variation-grounded ⇒ discriminating.The transfer rule (§4.7.1): a defensive result established against one aligned record transfers to every aligned record exactly when the placement acts on the invariant core. A placement on a record’s variation establishes a result for that record alone. Grounding fixes role — core-grounded is spanning, variation-grounded is discriminating (§7.2.1) — and the scope lattice (§4.7.3) reads the reach off where the placement lands.
0.3If you already use ATT&CK
Maneuver Calculus does not replace ATT&CK and does not fork it. Tactics and technique
IDs stay exactly where they are: objectives map to tactics, technique IDs live on the
technique and are carried, never redefined. Alignment is by SKOS mapping —
exactMatch, closeMatch, relatedMatch — never by
subclassing into another taxonomy.
What differs is altitude. ATT&CK names what a behaviour is; the calculus works one level below, at the individual procedure, where a maneuver is defined by what it requires and what it yields rather than by its label. Many procedures implement one technique, so the relation is many-to-many.
What that buys you is three things a coverage matrix does not attempt. Pre- and postconditions link into a computed graph of what a step makes possible next. Each detection carries a four-valued health derived from the telemetry beneath it, so killing one control moves every verdict that rested on it. And "covered" stops being a colour on a matrix and becomes a record of five separately-derived dimensions — is something breaking this, is anything still watching, what is it keyed on, has it been shown to work, does it fire on benign activity too. Where the model can't answer, it says unmodeled and escalates. The full matrices are on the alignment page.
0.4What you can do today
- Detection engineers and threat researchers — read the framework for what a detection should be keyed on (robustness, L1–L5) and how telemetry loss propagates; argue with it.
- Incident responders — read the results and the full transcripts: six frozen scenarios, each run twice, scored per decision point against a key sealed in advance.
- Ontology and semantic-web engineers — the machine ontology (mc-core 0.4.20.2:
459 terms, 24 derivation rules, SHACL shapes, self-verifying) is prepared and will be
deposited; its namespace is
https://maneuvercalculus.org/ontology/core#. - Anyone citing — see How do I cite it?
- Anyone confused — that is useful. Tell us which sentence lost you; see How do I contribute?
0.5Where to go next
Next is the framework — the shape of the system in seven parts. It assumes you have read §0.2 above. If a paragraph there is doing too much work, the glossary carries the plain reading of every term.