Epheme Port
app preview
This is the local Epheme Port app. It renders from your repo's .bafgo/ folder via bafgo serve, not from a hosted service. The rules below are sample data.
bafgo serve · five views
Overview

Rules, traced end to end.

The layer between what was decided and what actually shipped: every rule, why it exists, and its live link to code, tests, and the demo.

12rules
2in review
7verified
94%coverage
1stale link
#R-123 Timer keeps running while the screen sleeps 3 files 7 unit demo 2 e2e verified ▾
The rule
when: a timer is active and the display sleeps
then: the countdown continues
     the chime still fires at zero
Why it exists
Product decision: timers must stay trustworthy while cooking away from the device. src: product/2026-10-02
State
draftspecifiedimplementedreviewapprovedverified
Traceability
ruleR-123 · keeps running while asleep
codetimer.js · tick() · index.htmlsatisfied
unittimer-core.test.js · 7 passinggreen
demopreview.epheme.org/r-123approved
e2etimer-sleep.spec.js · 2 greengreen
#R-124 Shopping list persists across sessions 2 files 5 unit demo e2e in review ▾
The rule
when: items are checked off and the app reloads
then: the list restores with the same items
Why it exists
Existing behavior: the list is already stored in localStorage; the rule formalizes the contract. src: repo/list-core.js
State
draftspecifiedimplementedreviewapprovedverified
Traceability
ruleR-124 · persists across sessions
codelist-core.js · list.htmlsatisfied
unitlist-core.test.js · 5 passinggreen
demopreview.epheme.org/r-124awaiting review
#R-125 Converter rounds to sensible precision 1 file 9 unit demo e2e implemented ▾
The rule
when: a conversion yields a repeating decimal
then: the result rounds to two decimals
Why it exists
Product decision: kitchen measurements shouldn't show 3.333333 cups. src: product/2026-09-18
State
draftspecifiedimplementedreviewapprovedverified
Traceability
ruleR-125 · rounds to two decimals
codeconvert.html · round()satisfied
unitconverter tests · 9 passinggreen
demopreview.epheme.org/r-125stale · test no longer covers the then clause
#R-126 Recipe sharing link expires after 24 hours code unit demo e2e specified ▾
The rule
when: a share code is older than 24 hours
then: the relay rejects it with 410
Why it exists
Existing behavior: the share relay already has a TTL; the rule pins the exact boundary. src: api/share.js
State
draftspecifiedimplementedreviewapprovedverified
#R-128 Dark mode feels right at night · exploratory human review draft ▾
Exploratory rule
Not expressible as when → then: it's design taste. Routes to the exploratory track, where a human reviews a demo rather than a generated test. No automated tests are produced.
State
draftspecifiedimplementedreviewapprovedverified
Gate

Review queue

You gate the demo. Approve and the tests get written; reject and the work goes back.

#CH-42 · R-124 Shopping list persists across sessions in review
preview.epheme.org/r-124
Shopping list
3 items
restores after reload ✓
Change
+ list-core.js (persistence) · + list-core.test.js (5 tests) · 1 file changed, 42 insertions
#CH-47 · R-128 Dark mode feels right at night exploratory
preview.epheme.org/r-128
Kitchen timer
9:41 PM
dark mode preview
Exploratory review
Not a testable rule. It's human judgment on feel, so no automated tests are generated from this track.
Editor

Write the rule.

Start in plain language, shape it into a when → then, and add a note on why it exists, so reviewers can see the reasoning.

src: product/2026-10-02
your key · your provider · never stored or billed by the port
whena timer is active
whenthe display sleeps
thenthe countdown continues
thenthe chime still fires at zero
all conditions must hold · alternatives become separate rules
Exploratory rules skip generated tests. A human reviews a demo instead, and no when → then is required.
Journeys

Statements, end to end.

Plain-English steps QA and Product read, each tied to the rules it exercises and its latest recorded outcome.

#J3-01 The release date is the start, plus the sentence, minus the credit passes → passed
#J3-02 The SSA report has legacy's fields and layout known-defect → confirmed
#J3-04 Waiting on D-SSA-001 for the date format waiting-on-decision
Upload

Bring a spec in.

Drop a Markdown spec into .bafgo/specs/ as-is — a quick way to hand an agent a document from another tool.