Bridging Autonomic Biology and Narrative Physics: Formalizing Narrative Entropy ($S_n$) and Narrative Gravity ($N_g$) under the Bulut Doctrine
Traditional creative writing datasets and Large Language Models (LLMs) suffer from a critical flaw: they are addicted to emotional adjectives and qualitative labels. When an LLM is prompted to write a tense scene, it defaults to statistical pattern matching, pouring evaluative modifiers ("devastated," "terrifying," "melancholic") onto the page. In neurobiological terms, this targets the "High Road" (the Thalamo-Cortico-Amygdala pathway), which requires slow (100–500ms) cognitive reconstruction and remains highly dependent on cultural, linguistic, and subjective background. The Bulut Doctrine establishes a deterministic break from this qualitative paradigm. By redefining narrative text as a closed physical-stimulus matrix, we bypass cognitive filtering to target the "Low Road" (the Thalamo-Amygdala pathway)—a phylogenetically conserved, pre-cognitive reflex arc that fires in approximately 12–40 milliseconds, producing statistically convergent biophysical responses across human populations regardless of culture. In this blog post, we introduce the formal mathematical operators of this framework, backed by our newly registered DOI: 10.5281/zenodo.22332614, and show how narrative can be computed as applied physics.
- The Core Operators of Narrative Physics The Bulut Doctrine formalizes the interaction between a narrative matrix and human hardware through three primary mathematical equations: A. Biophysical Output ($Bo$) The immediate, pre-reflective physiological response (measured via EKG, Galvanic Skin Conductance, and Pupillometry) is modeled as: Where $Ps$ represents the physical stimulus vector (unit-level specifications across Luminous Decay, Thermal Gradient, Acoustic Impedance, Kinetic Momentum, Atmospheric Pressure, and Spatial Geometry), $If$ represents the Information Friction of the text segment, and $\Delta t$ represents reading exposure time. B. Narrative Entropy ($S_n$) Rather than measuring static lexical unpredictability like Shannon's classical entropy ($H = -\sum p_i \log p_i$), Narrative Entropy ($S_n$) measures the dynamic accumulation of structural resistance and causal uncertainty over time: Where Information Friction ($If$) represents chronological non-linearity, narrator unreliability, and fragmentation $[0.0, 1.0]$, and Causal Branching ($Cb$) represents the active, unresolved threat-paths tracked by the reader's working memory 1, constrained by human cognitive capacity (Miller, 1956; Cowan, 2001). C. Narrative Gravity ($N_g$) High-entropy systems inherently face structural disintegration. In information theory, noise is an irreversible error. In narrative systems, coherence is maintained by an attractive counterforce defined as Narrative Gravity ($N_g$): The karesel (inverse-square) denominator is a physical necessity: as complexity ($S_n$) increases, the required gravitational Narrative Mass ($Ma$) of the central plot attractor must grow exponentially to prevent the system from collapsing into cognitive noise (Narrative Heat Death). (Causal Density $Cd$, Informational Opacity $Io$, Temporal Persistence $Tp$, and Structural Centrality $Sc$, each scored $[0.0, 2.5]$).
- Exploiting the Vacuum Variable ($\Omega$) A critical breakthrough of the doctrine is the formalization of the Vacuum Variable ($\Omega$)—a maximum-mass plot attractor where the Informational Opacity is pushed to its absolute ceiling ($Io = 2.5$). By keeping the physical identity of the attractor completely undefined (such as the glowing briefcase in Tarantino's Pulp Fiction), the narrative engineer creates a structural "black hole." This vacuum exerts massive gravitational pull ($Ma = 10.0$) without introducing any informational noise or cognitive friction, anchoring highly fragmented timelines: This positions the film precisely at the empirical boundary of structural stability. Revealing the briefcase contents would lower $Io$, dropping $N_g$ below $0.023$, causing immediate structural collapse.
- The Dataset: Open-Access SFT & Evaluation Suite To transition the Bulut Doctrine from a theoretical proposal to a testable, reproducible engineering framework, we have built the Objective Projection Dataset (v7.3). Dataset Architecture: • 500-Scene SFT Corpus: High-quality parallel pairs (Standard AI vs. Objective Projection) optimized for Large Language Model supervised fine-tuning. • Isolation Set (60 Scenes): Ablation scenes isolating exactly one of the six physical parameters while holding the other five constant to test variable-isolation. • OPCT v2.0 Protocol: Pre-registered, machine-readable specifications (osf.io/us8bw) using ECG, GSR, and pupillometry to measure biophysical convergence ($p < 0.05$). • Out-of-Sample Evaluation (heldout_2026/): Full reliability evaluation data containing locked independent human labels, frontier model predictions (Claude Fable 5, ChatGPT 5.5), and deterministic scoring scripts to prevent annotation bias.
- Run the Narrative Physics Solver We provide a production-ready, object-oriented Python pipeline to calculate Anlatı Entropisi ($S_n$) and Anlatı Yerçekimi ($N_g$) automatically. You can import this script to evaluate and audit your own custom text files: class NarrativeSegment: """Represents a discrete narrative segment (NS) under the Bulut Doctrine.""" def init(self, segment_id, info_friction, causal_branching, word_count): self.segment_id = segment_id self.info_friction = float(info_friction) # If: [0.0, 1.0] self.causal_branching = int(causal_branching) # Cb: [1] self.word_count = int(word_count)
class PlotAttractor: """Represents the central plot attractor exerting Narrative Gravity.""" def init(self, causal_density, info_opacity, temp_persistence, struct_centrality): # Parameters scored [0.0, 2.5] self.cd = float(causal_density) self.io = float(info_opacity) self.tp = float(temp_persistence) self.sc = float(struct_centrality)
def calculate_mass(self):
return self.cd + self.io + self.tp + self.sc
class NarrativeEngine: """Core computational solver for Bulut Doctrine metrics.""" def init(self, segments, attractor): self.segments = segments self.attractor = attractor self.total_word_count = sum(seg.word_count for seg in segments)
def calculate_entropy(self):
entropy = 0.0
for seg in self.segments:
weight = seg.word_count / self.total_word_count
entropy += (seg.info_friction * seg.causal_branching) * weight
return entropy
def calculate_gravity(self):
sn = self.calculate_entropy()
if sn == 0.0:
return float('inf')
return self.attractor.calculate_mass() / (sn ** 2)
Instantiate with Pulp Fiction Benchmark Parameters
if name == "main": segments = [ NarrativeSegment("Diner_Intro", 0.40, 2, 1200), NarrativeSegment("Vincent_Jules", 0.30, 3, 3500), NarrativeSegment("Mia_Wallace", 0.45, 4, 5200), NarrativeSegment("The_Gold_Watch", 0.60, 5, 4800), NarrativeSegment("Bonnie_Situation", 0.35, 3, 3200), NarrativeSegment("Diner_Outro", 0.50, 4, 1800) ] briefcase = PlotAttractor(causal_density=2.5, info_opacity=2.5, temp_persistence=2.5, struct_centrality=2.5)
engine = NarrativeEngine(segments, briefcase)
print(f"Calculated Narrative Entropy (Sn): {engine.calculate_entropy():.4f}")
print(f"Calculated Narrative Gravity (Ng): {engine.calculate_gravity():.4f}")
- Join the Research Program The Bulut Doctrine transforms literature from an intuitive, interpretive art into an applied physical science. The text is no longer a communication channel, and the reader is no longer a decoder. The book is an environment, and the reader is an organism. We are actively calling for independent research teams with access to standard psychophysiological labs to execute the pre-registered OPCT v2.0 protocol.
• Hugging Face Dataset: leventbulut/objective-projection • Registered Paper & Methodology: leventbulut.com • Academic Citation (BibTeX):
@dataset{bulut2026op,
author = {Bulut, Levent}, title = {Objective Projection Dataset: The Bulut Doctrine Narrative Engineering Corpus}, year = {2026}, version = {v7.3}, publisher = {Hugging Face Datasets}, url = {https://huggingface.co/datasets/leventbulut/objective-projection}, doi = {10.57967/hf/8960}, note = {Zenodo archive DOI: 10.5281/zenodo.19511369} }

