final findings
Browse files- METHODOLOGY.md +187 -0
METHODOLOGY.md
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# A methodology for dynamic narrative state in long-form generation
|
| 2 |
+
|
| 3 |
+
What the evidence supports, what it rules out, and the one design the evidence
|
| 4 |
+
points at that has not yet been tested.
|
| 5 |
+
|
| 6 |
+
---
|
| 7 |
+
|
| 8 |
+
## 1. The situation, stated honestly
|
| 9 |
+
|
| 10 |
+
Two things are established here, on 9,000 generated chapters and 28 annotated
|
| 11 |
+
novels:
|
| 12 |
+
|
| 13 |
+
**Established positive.** A revision-aware narrative state, maintained under an
|
| 14 |
+
explicit update calculus, holds **0.000** self-contradictory slots against
|
| 15 |
+
**0.370β0.423** for an append-only store β replicated at 1.5B, 3B and 7B,
|
| 16 |
+
scored against human annotation, with no LLM in the metric.
|
| 17 |
+
|
| 18 |
+
**Established negative.** Serialising that state into the writer's prompt does
|
| 19 |
+
not help generation. Alone it is *worse than no memory at all* (+0.083
|
| 20 |
+
violation rate, CI excludes zero); added to recent text it still loses to
|
| 21 |
+
simply pasting the previous chapter (+0.071, CI excludes zero).
|
| 22 |
+
|
| 23 |
+
The negative is not an isolated accident. It **independently replicates a known
|
| 24 |
+
result**: the Narrative World Model paper's own ablation found that serialising
|
| 25 |
+
current state scored 0.358 while *query-conditioned retrieval over the same
|
| 26 |
+
state* scored 0.898. Their "State Memory" condition is, structurally, exactly
|
| 27 |
+
our `dsg-state`. We reproduced their failure mode without having tested their
|
| 28 |
+
success mode.
|
| 29 |
+
|
| 30 |
+
That is the opening.
|
| 31 |
+
|
| 32 |
+
## 2. The claim worth making
|
| 33 |
+
|
| 34 |
+
> **A narrative state is not a context to carry. It is an index to query and a
|
| 35 |
+
> constraint to check.**
|
| 36 |
+
|
| 37 |
+
Three consequences, each an independent contribution:
|
| 38 |
+
|
| 39 |
+
### C1 β The state as a measurement instrument (proven)
|
| 40 |
+
|
| 41 |
+
The calculus already does something no LLM judge can: it decides, from an
|
| 42 |
+
inspectable lexicon rather than a model's opinion, whether two assertions
|
| 43 |
+
conflict β and distinguishes *the world changed* (`SUPERSEDE`) from *the text
|
| 44 |
+
contradicted itself* (`REVISE`). Immutable predicates cannot change within a
|
| 45 |
+
story, so a `REVISE` on one **is** a continuity error, by definition rather
|
| 46 |
+
than by judgement.
|
| 47 |
+
|
| 48 |
+
This yields a consistency metric for *any* long text, generated or written,
|
| 49 |
+
that needs no annotation and no judge. That is the contribution the evidence
|
| 50 |
+
most strongly supports, and it is a measurement contribution rather than a
|
| 51 |
+
leaderboard one.
|
| 52 |
+
|
| 53 |
+
### C2 β Beat-conditioned retrieval β **TESTED, AND IT FAILS**
|
| 54 |
+
|
| 55 |
+
Instead of serialising the whole state, retrieve only what the *next beat*
|
| 56 |
+
implicates: the entities it names, their immutable canon, and their current
|
| 57 |
+
mutable state. Everything else is withheld.
|
| 58 |
+
|
| 59 |
+
The prediction was that querying the state would succeed where serialising it
|
| 60 |
+
failed. It did not. Beat-conditioned retrieval scores **0.571** β worse than
|
| 61 |
+
giving the writer *no memory at all* (0.487; Ξ +0.083, CI [+0.038, +0.125],
|
| 62 |
+
losing on 17 of 30 stories) and statistically indistinguishable from the
|
| 63 |
+
serialised digest it was meant to fix (0.588).
|
| 64 |
+
|
| 65 |
+
Retrieval plus the previous chapter (0.317) is indistinguishable from the
|
| 66 |
+
previous chapter alone (0.312; Ξ +0.004, CI spans zero, 8β7). The graph
|
| 67 |
+
contributes nothing a writer needs.
|
| 68 |
+
|
| 69 |
+
**This kills the conditioning line, and it does so cleanly.** Pre-registered
|
| 70 |
+
falsifier 1 fired: the failure is the state, not its serialisation.
|
| 71 |
+
|
| 72 |
+
The decisive detail is that it is **not** an extraction ceiling. In this run the
|
| 73 |
+
state held **0.492** of the planted canon β half of it, correctly, at the moment
|
| 74 |
+
of writing β and conditioning on it still added nothing. Fixing extraction would
|
| 75 |
+
not have rescued this.
|
| 76 |
+
|
| 77 |
+
### C3 β A benchmark with no annotation and no judge
|
| 78 |
+
|
| 79 |
+
Planted canon drawn from closed vocabularies makes a continuity violation a
|
| 80 |
+
deterministic string test near a mention of its subject. Paired with
|
| 81 |
+
`on_premise` β does the chapter write about the story it was asked for β it
|
| 82 |
+
resists the failure mode that nearly produced a false positive here: a
|
| 83 |
+
degenerate model scored a 7Γ "improvement" purely by ceasing to mention the
|
| 84 |
+
characters.
|
| 85 |
+
|
| 86 |
+
The corpus is synthetic by necessity (controlled gold), which is the honest
|
| 87 |
+
limitation; the *method* transfers to any premise with checkable attributes.
|
| 88 |
+
|
| 89 |
+
## 3. Experimental design
|
| 90 |
+
|
| 91 |
+
One backbone, one GPU, conditions paired within story so every comparison is
|
| 92 |
+
like-for-like.
|
| 93 |
+
|
| 94 |
+
| condition | memory given for chapter *t* |
|
| 95 |
+
| --- | --- |
|
| 96 |
+
| `none` | premise + beat |
|
| 97 |
+
| `previous-chapter` | + the previous chapter (**the incumbent to beat: 0.308**) |
|
| 98 |
+
| `full-transcript` | + everything so far, truncated (0.329) |
|
| 99 |
+
| `state-digest` | + the serialised state (0.588 β the known-failing cell) |
|
| 100 |
+
| `digest + previous` | + both (0.379) |
|
| 101 |
+
| **`beat-retrieval`** | **+ only the canon of entities the beat implicates** |
|
| 102 |
+
| **`beat-retrieval + previous`** | **+ that, and the previous chapter** |
|
| 103 |
+
| **`β¦ + guard`** | **+ the graph may reject and demand a rewrite** |
|
| 104 |
+
|
| 105 |
+
**Primary metric.** Cumulative canon violation by chapter β monotone, since
|
| 106 |
+
continuity once broken stays broken.
|
| 107 |
+
**Guard metrics.** `on_premise` (a condition that stops writing about the story
|
| 108 |
+
cannot be credited), `restatement_rate`, `canon_capture`.
|
| 109 |
+
**Cost metric.** Prompt tokens per chapter, which is where a retrieved slice
|
| 110 |
+
should dominate a growing transcript.
|
| 111 |
+
**Statistics.** Paired bootstrap over stories, effect sizes with intervals, no
|
| 112 |
+
reliance on p-values at n=30.
|
| 113 |
+
|
| 114 |
+
### Pre-registered falsifiers
|
| 115 |
+
|
| 116 |
+
1. `beat-retrieval` β `state-digest` β the failure is the *state*, not its
|
| 117 |
+
serialisation, and the conditioning line is finished.
|
| 118 |
+
2. `beat-retrieval + previous` β€ `previous-chapter` β the graph adds nothing a
|
| 119 |
+
writer needs; report it and stop.
|
| 120 |
+
3. The guard remains null β detection is too sparse to control generation, and
|
| 121 |
+
extraction is the only remaining lever.
|
| 122 |
+
4. Any condition wins while `on_premise` falls β an artefact, not a result.
|
| 123 |
+
|
| 124 |
+
## 3a. Outcome: four conditioning designs, three runs, 12,600 chapters
|
| 125 |
+
|
| 126 |
+
| memory | violations β | tokens | verdict |
|
| 127 |
+
| --- | --- | --- | --- |
|
| 128 |
+
| none | 0.487 | 112 | floor |
|
| 129 |
+
| previous chapter | 0.312 | 1,017 | **strong, cheap incumbent** |
|
| 130 |
+
| full transcript | 0.254 | 5,362 | best, at 5Γ the context |
|
| 131 |
+
| serialised digest | 0.588 | 357 | worse than nothing |
|
| 132 |
+
| digest + previous | 0.379 | 1,194 | loses to previous alone |
|
| 133 |
+
| beat retrieval | 0.571 | 212 | worse than nothing |
|
| 134 |
+
| beat retrieval + previous | 0.317 | 1,098 | ties previous alone |
|
| 135 |
+
| + graph guard | 0.317 | 1,095 | no effect (ns) |
|
| 136 |
+
|
| 137 |
+
Every design that puts narrative state into the writer's prompt either loses to
|
| 138 |
+
a baseline or ties one that is cheaper. The guard never moves a number. The
|
| 139 |
+
conclusion is not "needs more work" β it is that this is the wrong use of the
|
| 140 |
+
object.
|
| 141 |
+
|
| 142 |
+
## 4. The binding constraint, named
|
| 143 |
+
|
| 144 |
+
Extraction. Capture by canon type at chapter 20:
|
| 145 |
+
|
| 146 |
+
| type | captured |
|
| 147 |
+
| --- | --- |
|
| 148 |
+
| eye colour | 0.50 |
|
| 149 |
+
| trade | 0.38 |
|
| 150 |
+
| hair | 0.33 |
|
| 151 |
+
| birthplace | 0.23 |
|
| 152 |
+
| **object material** | **0.12** |
|
| 153 |
+
|
| 154 |
+
The extractor is character-centric and largely ignores objects, so half the
|
| 155 |
+
planted canon never enters the state. No amount of work on the calculus
|
| 156 |
+
recovers that. If C2 fails, this is the only honest place left to work, and it
|
| 157 |
+
is a smaller, better-posed problem than anything downstream.
|
| 158 |
+
|
| 159 |
+
## 5. Why this is publishable either way
|
| 160 |
+
|
| 161 |
+
The branch resolved to the second one, and it resolved cleanly:
|
| 162 |
+
|
| 163 |
+
> **A maintained narrative state is a measurement instrument, not a
|
| 164 |
+
> conditioning signal.**
|
| 165 |
+
|
| 166 |
+
That is a defensible finding rather than a consolation. It rests on four
|
| 167 |
+
conditioning designs across three runs and 12,600 generated chapters, each
|
| 168 |
+
falsifier stated before the run; on a diagnosis that rules out the obvious
|
| 169 |
+
escape (capture was 0.492 and it still did not help); and on an independent
|
| 170 |
+
replication of a published negative β the Narrative World Model's serialised
|
| 171 |
+
`State Memory` condition β obtained with a 3B open model instead of a frontier
|
| 172 |
+
API.
|
| 173 |
+
|
| 174 |
+
What survives, and what a submission should be built on:
|
| 175 |
+
|
| 176 |
+
- **C1, the measurement instrument.** 0.000 self-contradictory slots against
|
| 177 |
+
0.370β0.423, at three model sizes, scored against human annotation with no
|
| 178 |
+
LLM in the metric.
|
| 179 |
+
- **C3, the benchmark.** Planted canon plus premise adherence, no annotation and
|
| 180 |
+
no judge, already demonstrated to catch a degenerate model that scored a
|
| 181 |
+
spurious 7Γ win by ceasing to write about the story.
|
| 182 |
+
- **The negative itself**, which is worth reporting because the field is
|
| 183 |
+
actively building state-conditioned writers and this is evidence, with
|
| 184 |
+
intervals, that the obvious version does not work.
|
| 185 |
+
|
| 186 |
+
What is *not* supported, and should not be claimed: that a dynamic story graph
|
| 187 |
+
improves long-form generation. It does not, in any form tested here.
|