GOVINDFROM commited on
Commit
42709ea
Β·
verified Β·
1 Parent(s): 966940b

final findings

Browse files
Files changed (1) hide show
  1. 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.