⚔️

Zorg's Dungeon Maker

Knowledge Base & Traceability Graph

Honesty ledger

"A status word is a claim. Probe it, or write Unknown." — adapted from the

AEA framework's Honesty Gate (architecture.artof.link/comparison.html).

Every FR-xx / NFR-xx defined in GAME_SPEC.md gets exactly one row here.

scripts/check-honesty-ledger.mjs (run by .github/workflows/governance.yml

on every PR) fails the build if:

  • a row is missing or an ID doesn't exist in GAME_SPEC.md (stale/orphaned row),
  • the Status value isn't one of the five allowed words below, or
  • Status is anything but Unknown/Planned and Evidence is empty.
  • scripts/check-requirements-trace.mjs additionally fails the build if a row

    says Simulated, Probed (date), or Live & Probed but no test file under

    packages/ or apps/ actually references that ID — closing a ticket, or

    writing a table row, is not proof.

    Allowed statuses

    StatusMeaning
    UnknownNot verified. Default for everything not yet built.
    PlannedScheduled (e.g. tied to a build-plan phase) but not started.
    SimulatedProven by an automated, deterministic test — no live/physical run yet.
    Probed (YYYY-MM-DD)Verified against a real build/device/server on that date.
    Live & ProbedVerified in production and still actively monitored.

    Ledger

    IDStatusEvidence
    FR-1Simulatedpackages/engine/src/loader.test.ts
    FR-2Simulatedpackages/engine/src/loader.test.ts
    FR-3Simulatedpackages/engine/src/loader.test.ts
    FR-4Unknown
    FR-5Unknown
    FR-6Unknown
    FR-7Unknown
    FR-8Unknown
    FR-9Unknown
    FR-10Simulatedpackages/engine/src/geometry.test.ts
    FR-11Unknown
    FR-12Unknown
    FR-13Unknown
    FR-14Unknown
    FR-15Unknown
    FR-16Unknown
    FR-17Unknown
    FR-18Unknown
    FR-19Unknown
    FR-20Unknown
    FR-21Unknown
    FR-22Unknown
    FR-23Unknown
    FR-24Unknown
    FR-25Unknown
    FR-26Unknown
    FR-27Unknown
    FR-28Unknown
    FR-29Unknown
    FR-30Unknown
    FR-31Unknown
    FR-32Unknown
    FR-33Unknown
    FR-34Unknown
    FR-35Unknown
    FR-36Unknown
    FR-37Unknown
    FR-38Unknown
    FR-39Unknown
    FR-40Unknown
    FR-41Unknown
    FR-42Unknown
    FR-43Unknown
    FR-44Unknown
    FR-45Unknown
    FR-46Unknown
    NFR-1Unknown
    NFR-2Unknown
    NFR-3Unknown
    NFR-4Unknown
    NFR-5Unknown
    NFR-6Unknown
    NFR-7Unknown
    NFR-8Unknown
    NFR-9Unknown
    NFR-10Unknown