Skip to content

The loop, for real

How a feature ships

Not a diagram — a real run. The PR below fixed a production bug (#136) using the same issue → prometeo → forja → centinela loop that every TradePilot feature travels.

ISSUE

Charts render empty on the production dashboard

A FeedbackFAB report from the live deploy. The issue body was pre-filled by the FAB's diagnostic bundler — stack trace, URL, user agent, and the reproduction steps all arrived in one click.

bug report via FeedbackFAB · artemiop.com/inceptor/demos/dashboard/

Dashboard charts render empty in production

URL: https://artemiop.com/inceptor/demos/dashboard/

Browser: Chrome 124, macOS 14.4

Reproduction: Load /demos/dashboard/ — the "Issues by label" bar chart shows axes and category ticks but zero bars. The "Open vs closed" donut shows its legend but no segments. KPI cards load correctly. Reproduction rate: 100%.

Console: No errors. Recharts receives the data (verified via React DevTools) but the entry animation never fires inside an Astro island, leaving all shapes at opacity 0.

PLAN

prometeo decomposes the fix

The orchestrator dispatched prometeo, which read the audit finding (docs/AUDIT-2026-06.md §3.3), located the root cause, and produced a dependency-aware plan.

Behavior contracts

  1. After mounting DashboardIsland, the bar chart must render at least one bar (visible fill) without any scroll or interaction.
  2. After mounting DashboardIsland, the donut chart must render at least one colored segment.
  3. No existing chart test may regress.

Root cause

Recharts 3.8 entry animations run via a CSS transition that requires a layout pass. Inside Astro's client:visible islands, the animation never triggers — shapes stay at their initial transform/opacity. Fix: isAnimationActive={false} on every Recharts wrapper.

tdd-tier: strict

Red commit (failing test) must land before the implementation commit. centinela will grep for the Tdd-Red: trailer.

COMMITS

forja implements — red then green

forja branched from main, wrote the failing test first (red), then the fix. The Tdd-Red: trailer in the green commit is machine-readable — centinela greps for it.

red

test(charts): red for isAnimationActive on all six wrappers (#136)

SHA: 4a9f1c2 · vitest --run → FAIL (isAnimationActive not set)

green

fix(charts): disable Recharts entry animation in Astro islands (#136)

Add isAnimationActive={false} to bar-chart, donut-chart, area-chart,
line-chart, gauge, sparkline. Sparkline already had the flag — no change.

Tdd-Red: 4a9f1c2

extra

fix(dashboard): Skeleton while loading, friendly empty state (#136)

SHA: 7e3d88a · replaces bare "…" placeholders with Skeleton; no-data state

VERDICT

centinela approves — PR #136 merges

centinela ran npm run build, npm run check, npm run test, and the forbidden-import scan. All passed. The green commit carried the required Tdd-Red: trailer — TDD gate satisfied.

APPROVED centinela · 2026-06-09

build: 0 errors, 0 warnings

check: astro check 0 diagnostics

test: 532 passed, 0 failed

forbidden imports: none found

TDD gate: Tdd-Red: 4a9f1c2 → green commit 7e3d88a

Run it yourself

Your repo. Your loop.

Every fork ships the same three sub-agents, the same governance substrate, and the same FeedbackFAB. File an issue — the loop starts itself.

npm create inceptor-app

Report an issue

Show diagnostics

Environment

 

Console errors

 

Failed requests