Files
alvis bedb527145
Some checks failed
ClawSweeper Dispatch / dispatch (push) Has been cancelled
CodeQL / Security High (actions) (push) Has been cancelled
CodeQL / Security High (channel-runtime-boundary) (push) Has been cancelled
CodeQL / Security High (core-auth-secrets) (push) Has been cancelled
CodeQL / Security High (mcp-process-tool-boundary) (push) Has been cancelled
CodeQL / Security High (network-ssrf-boundary) (push) Has been cancelled
CodeQL / Security High (plugin-trust-boundary) (push) Has been cancelled
CodeQL / Security High (process-exec-boundary) (push) Has been cancelled
Docs Sync Publish Repo / sync-publish-repo (push) Has been cancelled
Docs / docs (push) Has been cancelled
OpenClaw Stable Main Closeout / Resolve stable release closeout inputs (push) Has been cancelled
OpenClaw Stable Main Closeout / Verify stable main closeout (push) Has been cancelled
Workflow Sanity / no-tabs (push) Has been cancelled
Workflow Sanity / actionlint (push) Has been cancelled
Workflow Sanity / generated-doc-baselines (push) Has been cancelled
CI / runner-admission (push) Has been cancelled
CI / preflight (push) Has been cancelled
CI / security-fast (push) Has been cancelled
CI / pnpm-store-warmup (push) Has been cancelled
CI / build-artifacts (push) Has been cancelled
CI / native-i18n (push) Has been cancelled
CI / ${{ matrix.check_name }} (push) Has been cancelled
CI / ${{ matrix.checkName }} (push) Has been cancelled
CI / checks-node-compat-node22 (push) Has been cancelled
CI / check-bundled-channel-config-metadata (push) Has been cancelled
CI / check-dependencies (push) Has been cancelled
CI / check-guards (push) Has been cancelled
CI / check-lint (push) Has been cancelled
CI / check-prod-types (push) Has been cancelled
CI / check-shrinkwrap (push) Has been cancelled
CI / check-test-types (push) Has been cancelled
CI / check-additional-boundaries-a (push) Has been cancelled
CI / check-additional-boundaries-bcd (push) Has been cancelled
CI / check-additional-extension-bundled (push) Has been cancelled
CI / check-additional-extension-channels (push) Has been cancelled
CI / check-additional-extension-package-boundary (push) Has been cancelled
CI / check-additional-runtime-topology-architecture (push) Has been cancelled
CI / check-session-accessor-boundary (push) Has been cancelled
CI / check-session-transcript-reader-boundary (push) Has been cancelled
CI / check-docs (push) Has been cancelled
CI / skills-python (push) Has been cancelled
CI / macos-swift (push) Has been cancelled
CI / ios-build (push) Has been cancelled
CI / ci-timings-summary (push) Has been cancelled
Native App Locale Refresh / Refresh native fa (push) Has been cancelled
Native App Locale Refresh / Refresh native fr (push) Has been cancelled
Native App Locale Refresh / Refresh native hi (push) Has been cancelled
Native App Locale Refresh / Refresh native id (push) Has been cancelled
Native App Locale Refresh / Refresh native it (push) Has been cancelled
Native App Locale Refresh / Refresh native ja-JP (push) Has been cancelled
Control UI Locale Refresh / plan (push) Has been cancelled
Control UI Locale Refresh / Refresh ${{ matrix.locale }} (push) Has been cancelled
Control UI Locale Refresh / Commit control UI locale refresh (push) Has been cancelled
Live Media Runner Image / Build live media runner image (push) Has been cancelled
Native App Locale Refresh / Refresh native ar (push) Has been cancelled
Native App Locale Refresh / Refresh native de (push) Has been cancelled
Native App Locale Refresh / Refresh native es (push) Has been cancelled
Native App Locale Refresh / Refresh native ko (push) Has been cancelled
Native App Locale Refresh / Refresh native nl (push) Has been cancelled
Native App Locale Refresh / Refresh native pl (push) Has been cancelled
Native App Locale Refresh / Refresh native pt-BR (push) Has been cancelled
Native App Locale Refresh / Refresh native ru (push) Has been cancelled
Native App Locale Refresh / Refresh native sv (push) Has been cancelled
Native App Locale Refresh / Refresh native th (push) Has been cancelled
Native App Locale Refresh / Refresh native tr (push) Has been cancelled
Native App Locale Refresh / Refresh native uk (push) Has been cancelled
Native App Locale Refresh / Refresh native vi (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-CN (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-TW (push) Has been cancelled
Native App Locale Refresh / Commit native locale refresh (push) Has been cancelled
Plugin Init Scaffold Validation / Validate provider scaffold (push) Has been cancelled
Plugin NPM Release / preview_plugins_npm (push) Has been cancelled
Plugin NPM Release / Validate release publish approval (push) Has been cancelled
Plugin NPM Release / preview_plugin_pack (push) Has been cancelled
Plugin NPM Release / publish_plugins_npm (push) Has been cancelled
Sandbox Common Smoke / sandbox-common-smoke (push) Has been cancelled
Website Installer Sync / static (push) Has been cancelled
Website Installer Sync / linux-docker (push) Has been cancelled
Website Installer Sync / macos-installer (push) Has been cancelled
Website Installer Sync / windows-installer (push) Has been cancelled
Website Installer Sync / sync-website (push) Has been cancelled
Vendor OpenClaw source as Adolf fork baseline
Adolf is a fork/vendored clone of github.com/openclaw/openclaw (v2026.6.11),
free to diverge. Tree copied sans upstream .git; upstream remote added for
future syncs. Node pinned to 24 (.nvmrc); engines already require >=22.19.
Preserves docs/ARCHITECTURE.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LeqyaxJF2nbRXJtae2kNB2
2026-07-05 09:36:54 +00:00

9.9 KiB

role, summary, status, requires
role summary status requires
experimental Folk register for OpenProse—a literary/folklore alternative keyword set. Whimsical, theatrical, rooted in fairy tale and myth. For benchmarking against the functional register. draft prose.md

OpenProse Folk Register

This is a skin layer. It requires prose.md to be loaded first. All execution semantics, state management, and VM behavior are defined there. This file only provides keyword translations.

An alternative register for OpenProse that leans into literary, theatrical, and folklore terminology. The functional register prioritizes utility and clarity; the folk register prioritizes whimsy and narrative flow.

How to Use

  1. Load prose.md first (execution semantics)
  2. Load this file (keyword translations)
  3. When parsing .prose files, accept folk keywords as aliases for functional keywords
  4. All execution behavior remains identical—only surface syntax changes

Design constraint: Still aims to be "structured but self-evident" per the language tenets—just self-evident to a different sensibility.


Complete Translation Map

Core Constructs

Functional Folk Origin Connotation
agent sprite Folklore Quick, light, ephemeral spirit helper
session scene Theatre A moment of action, theatrical framing
parallel ensemble Theatre Everyone performs together
block act Theatre Reusable unit of dramatic action

Composition & Binding

Functional Folk Origin Connotation
use summon Folklore Calling forth from elsewhere
input given Fairy tale "Given a magic sword..."
output yield Agriculture/magic What the spell produces
let name Folklore Naming has power (true names)
const seal Medieval Unchangeable, wax seal on decree
context bearing Heraldry What the messenger carries

Control Flow

Functional Folk Origin Connotation
repeat N N times Fairy tale "Three times she called..."
for...in for each...among Narrative Slightly more storytelling
loop loop Already poetic, unchanged
until until Already works, unchanged
while while Already works, unchanged
choice crossroads Folklore Fateful decisions at the crossroads
option path Journey Which path to take
if when Narrative "When the moon rises..."
elif or when Narrative Continued conditional
else otherwise Storytelling Natural narrative alternative

Error Handling

Functional Folk Origin Connotation
try venture Adventure Attempting something uncertain
catch should it fail Narrative Conditional failure handling
finally ever after Fairy tale "And ever after..."
throw cry Drama Raising alarm, calling out
retry persist Quest Keep trying against odds

Session Properties

Functional Folk Origin Connotation
prompt charge Chivalry Giving a quest or duty
model voice Theatre Which voice speaks

Unchanged

These keywords already have poetic quality or are too functional to replace sensibly:

  • **...** discretion markers — already "breaking the fourth wall"
  • loop, until, while — already work narratively
  • map, filter, reduce, pmap — pipeline operators, functional is fine
  • max — constraint modifier
  • as — aliasing
  • Model names: sonnet, opus, haiku — already poetic

Side-by-Side Comparison

Simple Program

# Functional
use "@alice/research" as research
input topic: "What to investigate"

agent helper:
  model: sonnet

let findings = session: helper
  prompt: "Research {topic}"

output summary = session "Summarize"
  context: findings
# Folk
summon "@alice/research" as research
given topic: "What to investigate"

sprite helper:
  voice: sonnet

name findings = scene: helper
  charge: "Research {topic}"

yield summary = scene "Summarize"
  bearing: findings

Parallel Execution

# Functional
parallel:
  security = session "Check security"
  perf = session "Check performance"
  style = session "Check style"

session "Synthesize review"
  context: { security, perf, style }
# Folk
ensemble:
  security = scene "Check security"
  perf = scene "Check performance"
  style = scene "Check style"

scene "Synthesize review"
  bearing: { security, perf, style }

Loop with Condition

# Functional
loop until **the code is bug-free** (max: 5):
  session "Find and fix bugs"
# Folk
loop until **the code is bug-free** (max: 5):
  scene "Find and fix bugs"

Error Handling

# Functional
try:
  session "Risky operation"
catch as err:
  session "Handle error"
    context: err
finally:
  session "Cleanup"
# Folk
venture:
  scene "Risky operation"
should it fail as err:
  scene "Handle error"
    bearing: err
ever after:
  scene "Cleanup"

Choice Block

# Functional
choice **the severity level**:
  option "Critical":
    session "Escalate immediately"
  option "Minor":
    session "Log for later"
# Folk
crossroads **the severity level**:
  path "Critical":
    scene "Escalate immediately"
  path "Minor":
    scene "Log for later"

Conditionals

# Functional
if **has security issues**:
  session "Fix security"
elif **has performance issues**:
  session "Optimize"
else:
  session "Approve"
# Folk
when **has security issues**:
  scene "Fix security"
or when **has performance issues**:
  scene "Optimize"
otherwise:
  scene "Approve"

Reusable Blocks

# Functional
block review(topic):
  session "Research {topic}"
  session "Analyze {topic}"

do review("quantum computing")
# Folk
act review(topic):
  scene "Research {topic}"
  scene "Analyze {topic}"

perform review("quantum computing")

The Case For Folk

  1. "OpenProse" is literary. Prose is a literary form—why not lean in?
  2. Fourth wall is theatrical. **...** already uses theatre terminology.
  3. Signals difference. Literary terms say "this is not your typical DSL."
  4. Internally consistent. Everything draws from folklore/theatre/narrative.
  5. Memorable. sprite, scene, crossroads stick in the mind.
  6. Model names already fit. sonnet, opus, haiku are poetic forms.

The Case Against Folk

  1. Cultural knowledge required. Not everyone knows folklore tropes.
  2. Harder to Google. "OpenProse summon" vs "OpenProse import."
  3. May feel precious. Some users want utilitarian tools.
  4. Translation overhead. Mental mapping to familiar concepts.

Alternatives Considered

For sprite (ephemeral agent)

Keyword Origin Rejected because
spark English Good but less folklore
wisp English Too insubstantial
herald English More messenger than worker
courier French Good functional alternative, not literary
envoy French Formal, diplomatic

For shade (persistent agent, if implemented)

Keyword Origin Rejected because
daemon Greek/Unix Unix "always running" connotation
oracle Greek Too "read-only" feeling
spirit Latin Too close to sprite
specter Latin Negative/spooky connotation
genius Roman Overloaded (smart person)

For ensemble (parallel)

Keyword Origin Rejected because
chorus Greek Everyone speaks same thing, not different
troupe French Good alternative, slightly less clear
company Theatre Overloaded (business)

For crossroads (choice)

Keyword Origin Rejected because
fork Path Too technical (git fork)
branch Tree Also too technical
divergence Latin Too abstract

Verdict

Preserved for benchmarking against the functional register. The functional register remains the primary path, but folk provides an interesting data point for:

  1. Learnability — Which is easier for newcomers?
  2. Memorability — Which sticks better?
  3. Error rates — Which leads to fewer mistakes?
  4. Preference — Which do users actually prefer?

A future experiment could present both registers and measure outcomes.