# Resolving a message

> A message from the developer is not simply answered.

Page: Methodology · Start
Canonical: https://banes-lab.com/disciplined-methodology#resolving-a-message

This section is stop 5 of 102 in the learning route. Previous: [04 - Adversarial by default](https://banes-lab.com/disciplined-methodology/start/adversarial-by-default.md). Next: [06 - Three encodings](https://banes-lab.com/disciplined-methodology/start/three-encodings.md). It builds on [01 - The loop](https://banes-lab.com/disciplined-methodology/start/the-loop.md).

A message from the developer is not simply answered. It is first understood as a whole, in one pass, before any reply is written, by reading it through the fifteen questions shown in [E1·a the readings](https://banes-lab.com/disciplined-methodology#resolving-a-message-panel-a). This is the [orient](https://banes-lab.com/records/stage/orient.md) node of [the loop](https://banes-lab.com/disciplined-methodology/start/the-loop.md) applied to a request. It matters because most drift starts here: a request answered at its surface is one the model answered without reading what lies under it.

### Fifteen readings, one pass

A message answered only at its surface gets wrong the details that only its structure would have shown. A request to rename a function is answered by renaming the function, and three collectors that found it by a naming pattern quietly stop finding anything, because the model never asked what the name was connected to. A reply forms from the first plausible reading of a message, and the first reading is the surface.

For this reason I treat the structure behind a request as what is being asked about, and the wording as evidence about that structure. A message is understood before it is answered, rather than answered from its first reading. In practice, the model is asked to read a request through the fifteen questions in their order before replying, and to write the reply as that understanding, in connected sentences rather than under headings.

To check this, take a reply and ask which of the fifteen questions it rests on. A reply that skipped one is incomplete rather than concise, and the question it skipped is where its mistake will be. The questions scale with the request. A one-line request that comes down to one file and one edit still goes through them, but they take a moment and most of the answers are empty; an empty answer is still an answer, not a skipped question.

The fifteen questions are what turn this kind of judgement into something a check can enforce, because each one has a defined kind of answer. [Identity](https://banes-lab.com/records/reason/node-ont-identity.md) asks what exists, and the answer is a set. [Structure](https://banes-lab.com/records/reason/node-ont-structure.md) asks how the parts are arranged, and the answer is an ordering. [Relation](https://banes-lab.com/records/reason/node-ont-relation.md) asks what a thing connects to, and the answer is a graph. [Probability](https://banes-lab.com/records/reason/node-ont-probability.md) asks how sure each reading is, and the answer is a number between zero and one. The others, [composition](https://banes-lab.com/records/reason/node-ont-composition.md), [space](https://banes-lab.com/records/reason/node-ont-space.md), [time](https://banes-lab.com/records/reason/node-ont-time.md), [state](https://banes-lab.com/records/reason/node-ont-state.md), [change](https://banes-lab.com/records/reason/node-ont-change.md), [behaviour](https://banes-lab.com/records/reason/node-ont-behaviour.md), [function](https://banes-lab.com/records/reason/node-ont-function.md), [cause](https://banes-lab.com/records/reason/node-ont-cause.md), [meaning](https://banes-lab.com/records/reason/node-ont-meaning.md), [scale](https://banes-lab.com/records/reason/node-ont-scale.md) and [novelty](https://banes-lab.com/records/reason/node-ont-novelty.md), each have a kind of answer of their own.

A question with a defined kind of answer can be turned into a condition that a check can test. What that condition does from there is described in [from intent to predicate](https://banes-lab.com/software-architecture/coverage/an-architecture-is-its-predicate-set.md), on the architecture page, and that is how a reading the developer did once becomes a check that runs every time.

[Introspection](https://banes-lab.com/records/arch/introspection.md) means looking one level below the [abstraction](https://banes-lab.com/records/arch/abstraction.md) a thing presents. A document's list of sections is its surface, and the rule that decides what may go into a section is its structure. A function's signature is its surface, and which state it owns and how long that state lives are its structure. A count is a surface, and the scope it was counted over is its structure. Reading at that level is what makes the first reading of a request agree with the final [verification](https://banes-lab.com/records/arch/verification.md) of its result, because both are then looking at the same thing.

E1·a the readings

```mermaid
flowchart TB
message["A message arrives"]
subgraph readings["Read whole, in order"]
identity["What exists"]
composition["What it is made of"]
structure["How the parts are arranged"]
relation["What it connects to"]
space["Where it sits"]
time["When it happens"]
state["The condition it is in"]
change["How it is already moving"]
behaviour["What it does"]
function["The role that doing serves"]
cause["Why it happens"]
meaning["What it signifies"]
scale["The level it lives at"]
probability["How sure each reading is"]
novelty["What cuts against expectation"]
end
reply["The reply is that understanding, made explicit"]
message --> identity --> composition --> structure --> relation --> space --> time --> state --> change --> behaviour --> function --> cause --> meaning --> scale --> probability --> novelty --> reply
```

## Links to

- [Orient](https://banes-lab.com/records/stage/orient.md)
- [The loop](https://banes-lab.com/disciplined-methodology/start/the-loop.md)
- [Ont Identity](https://banes-lab.com/records/reason/node-ont-identity.md)
- [Ont Structure](https://banes-lab.com/records/reason/node-ont-structure.md)
- [Ont Relation](https://banes-lab.com/records/reason/node-ont-relation.md)
- [Ont Probability](https://banes-lab.com/records/reason/node-ont-probability.md)
- [Ont Composition](https://banes-lab.com/records/reason/node-ont-composition.md)
- [Ont Space](https://banes-lab.com/records/reason/node-ont-space.md)
- [Ont Time](https://banes-lab.com/records/reason/node-ont-time.md)
- [Ont State](https://banes-lab.com/records/reason/node-ont-state.md)
- [Ont Change](https://banes-lab.com/records/reason/node-ont-change.md)
- [Ont Behaviour](https://banes-lab.com/records/reason/node-ont-behaviour.md)
- [Ont Function](https://banes-lab.com/records/reason/node-ont-function.md)
- [Ont Cause](https://banes-lab.com/records/reason/node-ont-cause.md)
- [Ont Meaning](https://banes-lab.com/records/reason/node-ont-meaning.md)
- [Ont Scale](https://banes-lab.com/records/reason/node-ont-scale.md)
- [Ont Novelty](https://banes-lab.com/records/reason/node-ont-novelty.md)
- [From intent to predicate](https://banes-lab.com/software-architecture/coverage/an-architecture-is-its-predicate-set.md)
- [Introspection](https://banes-lab.com/records/arch/introspection.md)
- [Abstraction](https://banes-lab.com/records/arch/abstraction.md)
- [Verification](https://banes-lab.com/records/arch/verification.md)

## Linked from

- [From intent to predicate](https://banes-lab.com/software-architecture/coverage/an-architecture-is-its-predicate-set.md)
