Initial commit — Singular Particular Space v1

Homepage (site/index.html): integration-v14 promoted, Writings section
integrated with 33 pieces clustered by type (stories/essays/miscellany),
Writings welcome lightbox, content frame at 98% opacity.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-27 12:09:22 +02:00
commit 5422131782
359 changed files with 117437 additions and 0 deletions

View File

@@ -0,0 +1,232 @@
# Content Mapping: Fiction
A template for producing structured annotation data from fiction and historically-situated narrative writing. Output is a `.md` content map file consumed by a build agent. Do not write HTML here.
---
## Step 0 — Classify the Source
Before mapping, determine:
- **Historically situated?** Story uses real events, places, dates, institutions → accuracy-checking is required alongside literary analysis.
- **Pure fiction?** No historical anchors → analytical lenses only.
- **Challenge/constraint fiction?** Written to a brief → note the constraints; they affect how you read intentionality.
---
## Step 1 — Read the Source Completely
Do not begin mapping until you have read the full text. Identify:
1. **The surface story** — what literally happens
2. **The underneath story** — what the text is actually about (often different)
3. **The narrator's position** — first person? Reliable? What do they not notice about themselves?
4. **Historical claims** — any named events, dates, places, institutions, objects, honours, or technologies that can be fact-checked
5. **Language patterns** — naming conventions, who gets interiority, who gets appearance, whose grief is legitimate
---
## Step 2 — Choose Analytical Lenses
Fiction supports multiple valid readings. Choose 24 lenses that the text genuinely rewards. Do not force a lens onto text that doesn't earn it.
**Available lenses (not exhaustive):**
| Lens | Apply when... |
|---|---|
| Unreliable narrator | First-person narration; gap between what narrator claims and what text shows |
| Male gaze / naming | Women defined by appearance or social function; asymmetric interiority |
| Class position | Character claims outsider status but participates in the system they critique |
| Historical accuracy | Text makes factual claims about real events, objects, or honours |
| Epistolary / form | Story told through letters, documents — what the form conceals matters |
| The unseen character | A character who drives the plot but never speaks or is never named |
| Constraint analysis | Challenge fiction — how well are required elements absorbed vs engineered |
For each chosen lens, note: *what specific passages earn this reading?* If you can't answer, drop the lens.
---
## Step 3 — Map Annotation Components
### 3a. Decoders
Inline interactive elements. Applied to a specific phrase in the prose. Appear on click as a floating panel.
**Apply a decoder when:**
- A phrase needs factual unpacking (historical event, named place, military honour)
- A phrase is a pivot point in the narrative that the reader might miss
- A character classification is introduced (naming systems, taxonomy)
- A contradiction opens between what the narrator says and what they show
- A spelling or factual error exists in the source text
**Decoder metadata — use TOON for the structured fields:**
```toon
decoders[N]{id,phrase,color,tag,label}:
dec-[slug],"exact phrase from text",[default|pink|cyan|amber|red],Tag Text,Panel Heading
```
**Decoder bodies — use YAML for body text (contains commas, complex content):**
```yaml
decoder_bodies:
dec-[slug]: >
24 sentences. State the fact, the contradiction, or the lens observation.
Be direct. No hedging within the panel itself — hedging belongs in bias notes.
dec-[slug]-link: https://...
```
**Color convention** (establish per-project, document here):
- Assign one color per analytical lens or content type
- Be consistent: if pink = unreliable narrator catches, every narrator catch is pink
- Red = factual error or significant historical inaccuracy
---
### 3b. Lightboxes
Full-screen overlay panels. Triggered from inline text. Use when a topic is too large for a decoder (needs multiple sections, a timeline, or extended context).
**Apply a lightbox when:**
- A decoder body would exceed 5 sentences
- The topic has meaningful sub-sections (what it is / what the text gets right / what came after)
- The text assumes reader knowledge of something substantial (a war, a legal concept, a cultural tradition)
```yaml
lightboxes:
lb-[slug]:
eyebrow: Category label (e.g. "Historical Context")
title: Lightbox heading
color: cyan | amber | default
sections:
- heading: Section heading
body: >
Paragraph text.
- heading: Section heading
body: >
Paragraph text.
source_url: https://...
source_label: Link label text
```
---
### 3c. Accordions
Expandable sections within educational tabs. One open at a time.
```yaml
accordions:
tab-[tab-id]:
- heading: Question or section title
body: >
Extended prose. Can be multiple paragraphs. Separate with blank lines.
**Bold** for emphasis. No decoders inside accordions.
- heading: ...
body: >
...
```
---
### 3d. Tab Architecture
Four tabs is the default. Rename to fit the content.
```toon
tabs[4]{id,label,color,purpose}:
story,"The Story",white,Full source text with inline decoders and lightbox triggers
[lens-1-id],[Lens 1 Name],[color],Educational deep-dive on first analytical lens
[lens-2-id],[Lens 2 Name],[color],Educational deep-dive on second analytical lens
further,"Further Reading",white,Curated external links
```
Add a fifth tab only if the text genuinely requires it. Three lenses in three tabs is acceptable if all three are earned.
---
### 3e. Further Reading
```toon
further_reading[N]{group,title,url,desc,color}:
"Lens 1","Link Title","https://...","One-line description",default
"Lens 1","Link Title","https://...","One-line description",default
"Lens 2","Link Title","https://...","One-line description",cyan
```
Groups correspond to tabs. Use the same color as the tab they belong to.
---
## Step 4 — Bias Notes
Every analytical tab requires one bias note. Placed at the top of the tab, before the accordions.
Rules:
- One sentence acknowledging the limitation. Then stop.
- State the specific bias, not a generic disclaimer.
- If you have a preference for the narrator or a character, say so — it shapes the analysis.
- Do not write "I am an AI" — write what the actual bias is.
```yaml
bias_notes:
tab-[lens-1-id]: >
One sentence. Specific bias. What it shapes in the analysis below.
tab-[lens-2-id]: >
One sentence. Specific bias.
```
---
## Step 5 — Historical Accuracy (if applicable)
If the source text makes historical claims, produce an accuracy table before the decoder map.
```toon
historical_claims[N]{claim,verdict,detail}:
"Claim as stated in text",accurate,"Supporting detail or correction"
"Claim as stated in text",inaccurate,"What is actually true; what error was made"
"Claim as stated in text",plausible,"Consistent with the period; unverifiable at this level of detail"
"Claim as stated in text",anachronism,"Object/concept/institution did not exist at the stated time"
```
Inaccurate claims must become decoder annotations in the source text. Use `color: red`.
---
## Step 6 — The Story Section
Format the source text for the build agent. The text is sacred — reproduce it exactly including original spelling errors. Mark decoder and lightbox trigger points.
Use this notation inline in the prose block:
```
[DECODER:dec-slug] exact phrase in text [/DECODER]
[LIGHTBOX:lb-slug] phrase that triggers lightbox [/LIGHTBOX]
[ORDER] "Dialogue that functions as a section break or order" [/ORDER]
[LETTER-START:muriel|marcus|neutral] [/LETTER-START]
[LETTER-END] [/LETTER-END]
```
---
## Output Format
The completed content map is a single `.md` file structured as:
```
# Content Map: [Story Title]
## Source Classification
## Chosen Lenses
## Historical Accuracy Table (if applicable)
## Tab Definitions (TOON)
## Decoders (TOON metadata + YAML bodies)
## Lightboxes (YAML)
## Accordions (YAML)
## Bias Notes (YAML)
## Further Reading (TOON)
## Source Text (annotated)
```
This file is the complete specification for the build agent. The build agent needs nothing else except `annotated-writing-build.md`.