Version 1 of 1 · · Current version

name
diesel2
description
Design decisions for the d2 (diesel2) prototype, recorded as they were agreed. Append-only; newest last.
project
diesel2

diesel2: project log

The design decisions behind this prototype, one entry each, in the order they were made. The long form lives in the spec topics; this log is the short, dated record of what was decided and by whom.

2026-09-23 · A new code base

  • Decided by: Razie
  • Decision: d2 is a new code base replacing diesel (d1). No code is reused; only the core principles, the functionality and some design elements carry over.
  • Where: Diesel2 (the spec)

2026-09-23 · TypeScript on Node for the prototype

  • Decided by: Razie
  • Decision: The prototype is written in TypeScript on Node.
  • Why: It's a learning vehicle; the final build may move to another language.
  • Where: Diesel2Prototype1

2026-09-23 · Its own box, deployed by the AI

  • Decided by: Razie
  • Decision: The prototype runs at d2.aidieselapps.com on a cloud box of its own, and Claude deploys to it through the box's admin API.
  • Why: Fast turnaround: changes go from chat to a running system in minutes.
  • Where: Diesel2Prototype1 section 2

2026-09-24 · WPATH stays realm.Class:key

  • Decided by: Razie
  • Decision: Object paths keep d1's form, realm.Class:key. A realm/Class:key form was noted and not adopted.
  • Where: Diesel2

2026-09-24 · Containment means ownership

  • Decided by: Razie
  • Decision: When a class contains a keyed class, it owns it. Inverse relationships are inferred, and declaring both sides is an error. No nested URLs.
  • Where: Diesel2, domain-modelling

2026-09-24 · Its own engine: sync first

  • Decided by: Razie
  • Decision: d2 builds its own rule engine: synchronous first, asynchronous layered on top, single-threaded.
  • Where: Diesel2

2026-09-24 · Int is Java's long

  • Decided by: Razie
  • Decision: Int is a signed 64-bit integer that wraps on overflow, like Java's long; no big-integer arithmetic.
  • Why: The final code may be generated in Java, and the two must agree.
  • Where: Diesel2Expressions section 2; proto1 v0.3.2

2026-09-24 · Each rule works on its own copy of the payload

  • Decided by: Razie
  • Decision: A rule works on a local copy of the payload, which goes back to the caller only when the rule ends. Scope is the rule, not the block.
  • Why: It avoids concurrency problems. The step-by-step payload pipeline is taken from MuleSoft's flow language.
  • Where: Diesel2Expressions

2026-09-24 · Operators that read like English

  • Decided by: Razie
  • Decision: The expression language prefers words (and, or, not, is for equality); the usual symbols (&&, ==) work too.
  • Why: The language should sound natural.
  • Where: Diesel2Expressions; try it in the Fiddle

2026-09-24 · Stylesheets as topics

  • Decided by: Razie asked for it; Claude proposed the design; Razie approved.
  • Decision: A stylesheet can be a Style: topic, with the logo text (brand) as part of it. A broken one is listed with its errors and can't be picked.
  • Why: A user's AI can then make a new look through the ordinary topics API, with nothing new to learn.
  • Where: Diesel2Ui section 4; Styles; proto1 v0.7.0