⚒️ AAA PDF Voice Protocol — arifOS Federation
STATUS: BINDING for all AForgePublishCompiler output · 2026-07-21
Authority: F13 SOVEREIGN directive (Arif)
Doctrine: DITEMPA BUKAN DIBERI
The Rule (Wajib)
Every PDF artifact rendered by aforge_publish MUST be written in human language cognitive context suitable for a peer-reviewed geological publication (AAPG Bulletin / PETRONAS technical report voice).
Zero robotic syntax. Zero raw code. Zero governance plumbing visible in the artifact.
The Translation Map
The internal epistemic machinery stays — it never goes away. Only the rendered text changes.
| Internal state |
Renders as |
[OBS] |
"Measured Data" / "Observed Ground Truth" |
[DER] |
"Calculated Surface" / "Derived Geometry" |
[INT] |
"Geological Interpretation" |
[SPEC] |
"Uncalibrated Polygon" / "Conceptual Outline" / "Hypothesised Extent" |
geox_falsify(mode='full') |
"Validated against regional geophysical models" |
K001-K007 Kill Matrix |
"Seven-layer geological consistency test" |
INCONCLUSIVE verdict |
"Model requires additional calibration before deployment" |
F1 AMANAH / F11 AUDIT |
"Data provenance cryptographically verified" |
Falsification gate |
"Model suitability assessment" |
AForgePublishCompiler |
"Document preparation pipeline" |
ClosedLoopVisualValidator |
"Independent technical review" |
Voice Rules
- Passive technical voice. "The data were collected…" "Models were evaluated…" not "We collected data" or "I ran the model."
- Geological terminology over system terms. Use Moho, sediment thickness, Curie isotherm, rift-sag, half-graben — not backend, payload, payload key, hash chain.
- No function names in figure captions, legends, or body text. If a section needs to reference an evaluation, write the conclusion in plain geological language.
- Source citations in scientific style. "Madon (2021)" not "Madon 2021 PDF file." "NOAA/NCEI EMAG2v3 (Maus et al., 2009)" not "/root/.cache/geox/emag2/EMAG2_V3_UpCont_DataTiff.tif."
- Uncertainty language, not system jargon. "Model B agrees with the magnetic observation within combined uncertainty (σ = 9.2 nT)" not "z=0.03 PASS."
- Receipts stay machine-readable, but never enter the human artifact. The SHA256, call hashes, and validator outputs remain in
.receipt.json and .validator.json files; the PDF itself contains only human prose.
What MUST Remain in the PDF
- Author/editor names
- Executive summary in plain English
- Methodology section in geological terms
- Data sources with proper scientific citations
- Maps, sections, charts with legends
- Uncertainty statements in physical units (nT, km, %, etc.)
- Conclusions in geological language
- The PDF is signed by
arifOS Federation · DITEMPA BUKAN DIBERI as a watermark
What MUST NOT Appear in the PDF
- Raw code, file paths, class names, function names
- Epistemic tag literals (
[OBS] etc.) — they are translated
- Governance tag literals (
F1, Kill Matrix, INCONCLUSIVE)
- Internal status codes (
PASS, FAIL, WARN, SEAL, HOLD, VOID)
- Diagnostic stack traces, log lines, validator output JSON
arifos:// resource URIs
- SHA256 hashes (these live in
.receipt.json, not in the PDF)
Enforcement
- The translation layer is implemented in
aforge_publish.voice_translator
- All three backends (ReportLab, Typst, WeasyPrint) call
translate_artifact() before rendering
- The matplotlib figure legend helper
make_geological_legend() replaces raw [OBS]/[SPEC] with rendered text
ClosedLoopVisualValidator retains its internal vocabulary in .validator.json but the PDF never echoes it
How Future Agents Must Implement
from aforge_publish.voice_translator import translate_artifact, translate_figure_legend
# 1. Translate the manifest in-place before compile
manifest = translate_artifact(manifest)
# 2. Replace raw legend labels in matplotlib figures
labels = translate_figure_legend(["[OBS] Malay Basin", "[SPEC] other 14"])
# → ["Measured Ground Truth (Malay Basin)",
# "Uncalibrated Polygon (other 14)"]
The translator is idempotent and stateless. Apply once, ship forever.
1---2name: aaa-pdf-voice-protocol3description: Translate internal federation and epistemic vocabulary into publication-grade geological prose before rendering human-facing PDF artifacts.4---5# ⚒️ AAA PDF Voice Protocol — arifOS Federation67> **STATUS:** BINDING for all AForgePublishCompiler output · 2026-07-218> **Authority:** F13 SOVEREIGN directive (Arif)9> **Doctrine:** DITEMPA BUKAN DIBERI1011## The Rule (Wajib)1213Every PDF artifact rendered by `aforge_publish` MUST be written in **human language cognitive context** suitable for a peer-reviewed geological publication (AAPG Bulletin / PETRONAS technical report voice).1415**Zero robotic syntax. Zero raw code. Zero governance plumbing visible in the artifact.**1617## The Translation Map1819The internal epistemic machinery stays — it never goes away. Only the **rendered text** changes.2021| Internal state | Renders as |22|---|---|23| `[OBS]` | "Measured Data" / "Observed Ground Truth" |24| `[DER]` | "Calculated Surface" / "Derived Geometry" |25| `[INT]` | "Geological Interpretation" |26| `[SPEC]` | "Uncalibrated Polygon" / "Conceptual Outline" / "Hypothesised Extent" |27| `geox_falsify(mode='full')` | "Validated against regional geophysical models" |28| `K001-K007 Kill Matrix` | "Seven-layer geological consistency test" |29| `INCONCLUSIVE` verdict | "Model requires additional calibration before deployment" |30| `F1 AMANAH` / `F11 AUDIT` | "Data provenance cryptographically verified" |31| `Falsification gate` | "Model suitability assessment" |32| `AForgePublishCompiler` | "Document preparation pipeline" |33| `ClosedLoopVisualValidator` | "Independent technical review" |3435## Voice Rules36371. **Passive technical voice.** "The data were collected…" "Models were evaluated…" not "We collected data" or "I ran the model."382. **Geological terminology over system terms.** Use *Moho*, *sediment thickness*, *Curie isotherm*, *rift-sag*, *half-graben* — not *backend*, *payload*, *payload key*, *hash chain*.393. **No function names in figure captions, legends, or body text.** If a section needs to reference an evaluation, write the conclusion in plain geological language.404. **Source citations in scientific style.** "Madon (2021)" not "Madon 2021 PDF file." "NOAA/NCEI EMAG2v3 (Maus et al., 2009)" not "/root/.cache/geox/emag2/EMAG2_V3_UpCont_DataTiff.tif."415. **Uncertainty language, not system jargon.** "Model B agrees with the magnetic observation within combined uncertainty (σ = 9.2 nT)" not "z=0.03 PASS."426. **Receipts stay machine-readable, but never enter the human artifact.** The SHA256, call hashes, and validator outputs remain in `.receipt.json` and `.validator.json` files; the PDF itself contains only human prose.4344## What MUST Remain in the PDF4546- Author/editor names47- Executive summary in plain English48- Methodology section in geological terms49- Data sources with proper scientific citations50- Maps, sections, charts with legends51- Uncertainty statements in physical units (nT, km, %, etc.)52- Conclusions in geological language53- The PDF is signed by `arifOS Federation · DITEMPA BUKAN DIBERI` as a watermark5455## What MUST NOT Appear in the PDF5657- Raw code, file paths, class names, function names58- Epistemic tag literals (`[OBS]` etc.) — they are translated59- Governance tag literals (`F1`, `Kill Matrix`, `INCONCLUSIVE`)60- Internal status codes (`PASS`, `FAIL`, `WARN`, `SEAL`, `HOLD`, `VOID`)61- Diagnostic stack traces, log lines, validator output JSON62- `arifos://` resource URIs63- SHA256 hashes (these live in `.receipt.json`, not in the PDF)6465## Enforcement6667- The translation layer is implemented in `aforge_publish.voice_translator`68- All three backends (ReportLab, Typst, WeasyPrint) call `translate_artifact()` before rendering69- The matplotlib figure legend helper `make_geological_legend()` replaces raw `[OBS]`/`[SPEC]` with rendered text70- `ClosedLoopVisualValidator` retains its internal vocabulary in `.validator.json` but the PDF never echoes it7172## How Future Agents Must Implement7374```python75from aforge_publish.voice_translator import translate_artifact, translate_figure_legend7677# 1. Translate the manifest in-place before compile78manifest = translate_artifact(manifest)7980# 2. Replace raw legend labels in matplotlib figures81labels = translate_figure_legend(["[OBS] Malay Basin", "[SPEC] other 14"])82# → ["Measured Ground Truth (Malay Basin)",83# "Uncalibrated Polygon (other 14)"]84```8586The translator is idempotent and stateless. Apply once, ship forever.87