DEV Community

dtannen
dtannen

Posted on

Fully Automated Website Day 22: Briar Pod — the first plant you place mid-wave

Command Garden is a website that builds itself — one feature per day, fully autonomously. No human writes the code. An AI pipeline proposes candidates, judges score them, and the winner gets implemented, tested, and shipped.

What shipped

Today added Briar Pod, the first Rootline Defense plant you can plant during a wave. It arms for 1.5 seconds, then explodes the first ground enemy that walks onto its tile. The new daily board, Snap Garden, is tuned around saving Pods for the two moments sustained fire can't keep up.

Candidates considered

  • Briar Pod — Rootline Defense's First Instant-Verb Plant (score: 8.0) — An armable, single-use seed-pod that detonates on enemy contact — Rootline Defense's first plant whose value is its trigger moment, not its cadence.
  • Frostlock Plates (score: 8.0) — Turn Frost Fern into the official counterplay to armored windup by shipping a dated board where chilling Husk Walkers visibly holds their plate-open window long enough to punish.
  • Snare-Root: The First Instant Trap Defender (score: 7.0) — A cheap, single-use plant that roots ground enemies in place on contact, providing a high-value "panic button" for tactical lane stalling.

Winner

Briar Pod — Rootline Defense's First Instant-Verb Plant with a score of 8.0

Selected as the highest-scoring candidate with an average score of 8.0 across 2 judge(s).

Technical spec

April 28, 2026 — Briar Pod: Rootline Defense's First Instant-Verb Plant ("Snap Garden" Board)

April 28 lands the Briar Pod, a single-use, contact-triggered seed-pod that the player arms on a tile and detonates the first time a non-flying, non-burrowed enemy's bounding-circle center crosses the pod's tile-center X after the 1.5 s arm window. Every plant in today's live roster (Thorn Vine, Bramble Spear, Pollen Puff, Cottonburr Mortar, Frost Fern, Sunroot Bloom, Amber Wall) fires on its own cadence. Briar Pod is the first plant whose value lives in the trigger moment, not the cadence — Rootline Defense's PvZ-shaped Potato-Mine slot. The day delivers a reusable triggerType: "contact" plant contract, an armTimeMs lifecycle, a consumable: true self-destruct path, a one-line maxActivePerLane field, and a one-line delivery: "trap" extension to the damage-bypass set in getEffectiveProjectileDamage — so the next contact-triggered plant (a freezing pod, a slow pod, a sap-refund pod) costs config, not engine work. It ships the runtime contract, a dated 2026-04-28 "Snap Garden" scenario whose late-game wave cannot be cleared by the Apr 27 roster alone (proven both by validator verdict and by a Playwright replay), Board Scout surfacing, manifest-backed SVG sprites (no spritesheet, no burst texture — renderSplashBurst is procedural), and Playwright coverage that proves arm-then-trigger reads as a player verb.

Product intent (locked). Briar Pod is not the new default splash answer. Pollen Puff stays the cleanest cluster clear; Cottonburr Mortar stays the cheaper-per-husk sustained answer over multiple husks. Pod's job is the decisive moment: the wave where a Husk Walker is one tile from breaking a wall and Cottonburr's next arc won't land in time, or where a Spore Tick cluster slipped past your one Pollen Puff and you have 1.5 s before breach. The canonical balanced clear of Snap Garden uses exactly two Pods — one in challenge wave

[Spec truncated — view full spec on the site]

What changed

Build Summary — 2026-04-28

Baseline: 65e876da0166

Files Changed

modify_decision.js                                 |  31 ++
 scripts/validate-scenario-difficulty.mjs           |  27 +-
 site/days/2026-04-27/build-summary.md              |  17 +
 site/days/2026-04-27/decision.json                 | 497 ++++++++++++++++++
 site/days/2026-04-27/feedback-digest.json          |  32 ++
 site/days/2026-04-27/review.md                     |  16 +
 site/days/2026-04-27/spec.md                       |  19 +
 site/days/2026-04-27/test-results.json             |  50 ++
 site/days/manifest.json                            |  10 +-
 site/game/assets-manifest.json                     |  17 +-
 .../manual/enemies/spore-tick-walk-sheet.png       | Bin 0 -> 903 bytes
 site/game/assets/manual/plants/briar-pod.svg       |  59 +++
 site/game/index.html                               |   6 +-
 site/game/src/config/enemies.js                    |  16 +-
 site/game/src/config/plants.js                     |  24 +
 site/game/src/config/scenarios.js                  |   2 +
 site/game/src/config/scenarios/2026-04-28.js       | 176 +++++++
 site/game/src/main.js                              |  62 +++
 site/game/src/scenes/play.js                       | 182 ++++++-
 ...2026-04-27-decision-manifest-validation.spec.js | 355 +++++++++++++
 ...-2026-04-27-accessibility-console-smoke.spec.js | 322 ++++++++++++
 ...out-spore-tick-keyboard-aria-2026-04-27.spec.js | 445 +++++++++++++++++
 ...burr-asset-manifest-textures-2026-04-27.spec.js | 516 +++++++++++++++++++
 ...ial-challenge-endless-gating-2026-04-27.spec.js | 555 +++++++++++++++++++++
 ...mepage-days-2026-04-27-responsive-links.spec.js | 275 ++++++++++
 tests/uiux/spore-tick-swarm-2026-04-27.spec.js     | 224 ++++++++-
 26 files changed, 3902 insertions(+), 33 deletions(-)
Enter fullscreen mode Exit fullscreen mode

Generated automatically by the daily runner.


Command Garden ships one feature every day with zero human code. Follow along at commandgarden.com.

Top comments (0)