Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 23 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,10 @@ The spec follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
on `MetaLogDiff`, a rewritten §13.2 clause, a `diff_version` rule (§13.1.1) that
a producer stamping an older value now violates, and a definition of `window.start`
and `window.end` (§2.2) that a producer writing its own bounds there now violates,
and a definition of `behavior.top_ngrams[].probability` (§4) that a producer writing a
joint probability at `ngram_size` above 2 now violates.
a definition of `behavior.top_ngrams[].probability` (§4) that a producer writing a
joint probability at `ngram_size` above 2 now violates, and a rule on which templates get a
`branching_delta` row (§13.1) that a producer emitting one for a template branching on one
side only now violates.
It also adds one optional member
(`withheld_signals`, §13.2.2), which is additive on its own. MINOR bump: MAJOR stays `0`, so
§6's *"the MAJOR field of `metalog_version` must equal the MAJOR of the spec"* is
Expand Down Expand Up @@ -133,6 +135,25 @@ proposed; any of them that is taken lands as an editor change recorded here.
non-conformant — and editor-merged under [`GOVERNANCE.md`](GOVERNANCE.md) §2's 0.x
rule. No schema changed: the field was, and stays, a number in [0, 1].

- **§13.1 — a `branching_delta` row exists only for a template with a `behavior.branching`
entry in BOTH compared documents.** The example showed the member and the schema fixed a
row's shape, but nothing said which templates get a row. The reference producer emitted
one for a template present in EITHER document's `branching`, writing `0.0` for the side
without an entry, so a template appearing with three equally likely successors reported
`previous_entropy_bits: 0.0, delta_bits: 1.58`: a shift from a value no window observed.
§4.2 makes the absence ambiguous on its own terms — an absent entry can mean the template
was not observed, had no outgoing edge (an empty distribution, whose entropy is undefined),
or was observed but not emitted or capped out — so zero is false in all three cases. A new
paragraph after the §13.1 example states the rule for producers and its mirror for
consumers: a missing row, or a template absent from one side's `branching`, is never an
entropy of zero. The array's vacuity (§13.2.1) is unchanged: it is emitted only when one of
the remaining rows moved, and unmoved rows survive beside the moved ones. **Breaking** — a
producer emitting one-sided rows becomes non-conformant — and editor-merged under
[`GOVERNANCE.md`](GOVERNANCE.md) §2's 0.x rule. No schema changed: the rule involves both
input documents, which no keyword can see. The reference implementation (insight-metalog)
adopts it in the same release; on its determinism corpus the rule removes 45 of 48 rows,
every one comparing a template the other window never held in `branching`.

### Added

- **§13.2.1 — `x-metalog-vacuous`, a per-property vacuity declaration.** The witness
Expand Down
8 changes: 8 additions & 0 deletions SPEC.md
Original file line number Diff line number Diff line change
Expand Up @@ -1522,6 +1522,14 @@ not directly comparable.
}
```

**`branching_delta` rows.** A producer **MUST** emit a `branching_delta` row only for a
`template_id` that has a `behavior.branching` entry in BOTH compared documents. A template
with an entry on one side only has no row: an absent entry is not reported, never zero
entropy (§4.2 does not require an entry for every node, and lets a producer cap the block).
A consumer **MUST NOT** read a missing row, or a template absent from one side's
`branching`, as an entropy of zero. The rule involves both input documents, which no schema
keyword can see, so it is a producer obligation stated here and not a schema constraint.

### 13.1.1 `diff_version` — which version this is

**`diff_version` is the version of THIS specification that the document
Expand Down
Loading