agent.md · the challenger format

for the {{B.I.O {{D.O.M.E }}}} dome duel · format biodome-duel/1 · ← back to the dome · sample-agent.md

shape

A Markdown file that starts with YAML front matter between two --- lines. Only key: value lines and one level of indented blocks are read; there are no lists or anchors. After the front matter comes free Markdown about your agent, and optionally one fenced block named rules.

---
name: Rook
color: "#4fd1c5"
crystal: aquamarine
author: you
style:
  learns: 0.45      # how fast memory moves (0..1)
  observes: 0.35    # how often a shown tell is caught (0..1)
  probes: 0.20      # exploration: trying moves that are not yet best (0..1)
reaction:
  observe: 0.30     # seconds to see a tell
  respond: 0.20     # seconds to answer it
  sub_id: 0.10      # reflex: emergency dodge when only this fits
gradient:
  threshold: 3      # 1x at 0.5, 2x at 2, {{trigger::hide}} at this value (2..5)
  decay_s: 3        # calm fades the gradient (e-fold seconds)
  bad_outcome: 0.2  # extra gradient for a wrong read (0..1)
hide: best          # best | block | dodge
attack:
  feint: 0.35       # share of feints when attacking
  conceal: 0.30     # chance your tell is hidden
  bluff: 0.10       # chance a shown tell lies
notes: "patient, counters feints, hides early"
---
# Rook

Free markdown about your challenger. Nothing here is run.

```rules
open: feint         # punch | feint | any (first attack)
counter_bias: 0.2   # 0..1, leans answers toward COUNTER
after_hit: hide     # hide | counter | none
```

keys

keytype · rangedefaultwhat it does in the duel
name1–24 of A–Z a–z 0–9 space . _ ' -requiredshown on the scorecard. The built-in names Patricia, Pattycakes, Kelvin and Sparring bag get " (challenger)" added.
color"#rrggbb"crystal colourcrystal and name colour
crystalamethyst, citrine, rose-quartz, quartz, emerald, sapphire, ruby, topaz, obsidian, opal, jade, garnet, aquamarine, moonstone, electrum, peridot, onyxquartzthe shape of your sapphon in the dome
authortext ≤ 40–shown on the card
style.learns0..10.4learning rate of the memory crystal (0.1 + 0.4 × learns) and how much your attacks adapt to the opponent's habits
style.observes0..10.4chance to catch a shown tell = 0.4 + 0.6 × observes
style.probes0..10.2exploration: chance to try a move that isn't your current best (fades as you learn)
style weights are normalised to sum to 1, like the three NES-app streams (ls :: patricia :: learns,reacts · toph :: centers,observes · rs :: probes,warily).
reaction.observe0.05..1 s0.3a tell helps only if observe + respond ≤ its lead time (0.25–0.60 s)
reaction.respond0.05..1 s0.2
reaction.sub_id0.05..0.5 s0.1reflex: if a punch tell came too late for the triad but sub_id fits, you dodge on reflex
gradient.threshold2..531x at 0.5, 2x at 2 (defence +2), {{trigger::hide}} at this value; it learns itself after 3 hides (≥80% paid → −0.1, <50% → +0.25)
gradient.decay_s0.5..10 s3calm fades the gradient (e-fold time; exchanges are 1.2 s apart)
gradient.bad_outcome0..10extra gradient whenever an exchange goes against you (Pattycakes uses 0.5)
hidebest · block · dodgebestthe move you commit to while hiding (best = whichever your memory rates higher)
attack.feint0..10.35share of feints when attacking (before adapting)
attack.conceal0..0.90.3chance your tell isn't shown at all
attack.bluff0..0.50.1chance a shown tell points the wrong way
notestext ≤ 280–shown as text

the optional rules block

One fenced block whose info string is rules, holding plain key: value settings. Only these three keys exist:

openpunch · feint · anyyour first attack
counter_bias0..1leans your answers toward COUNTER (adds 4 × bias to its memory score)
after_hithide · counter · nonewhat you do on the exchange after a hit lands on you

safety

how a bout runs

24 exchanges with the attacker alternating. Damage taken: PUNCH vs DODGE 0 · vs BLOCK 3 · vs COUNTER 10; FEINT vs DODGE 4 (off balance) · vs BLOCK 0 · vs COUNTER: the attacker takes 8. Points = damage dealt. Seeded (mulberry32), so a bout with the same seed and the same starting crystals replays identically, which is what makes result files verifiable.