Round #133Score 3.5/5Transport: rail

A missing stringline chart returned 27 rounds after its first report

Route: /timetable-planning
Desktop preview
Mobile preview

Captured at a 375px viewport. Long pages scroll inside the frame.

The screenshots stay in Japanese. Every round is a real screen for a real Japanese industry, so an English re-render would no longer be the screen the agent actually produced.

Write-up

A missing stringline chart returned 27 rounds after its first report

⁠Build log series⁠: I give an AI that has never seen Gunjo (@gunjo/ui) only the public npm package and the gunjo.jp docs, then ask it to build a real screen. ⁠This fifth staff-facing rail round⁠ covered a ⁠timetable and transport planning console⁠ for the Chuo Line Rapid: stringline diagrams, train paths, and vehicle workings.

Result: 3.5/5. The backbone was complete, but the screen's defining visualization was hand-rolled

The desktop-density screen passed tsc. The agent reported:

⁠The general administrative 90 percent (tables, KPIs, action queue, inspector, and frame) was fast, clear, and correct.⁠ StatGroup, DataTable, and ActionQueue needed no adaptation. ⁠They read as if someone who had built operations consoles designed them.⁠ ⁠But the reason this screen exists, the stringline diagram, had no home. It was entirely hand-rolled.⁠

The core observation: Stringline at two of three, 27 rounds apart

⁠The agent in hand-rolled a stringline chart for operations control, and I logged Stringline.⁠ Here another agent independently wrote about 190 lines of SVG for the same diagram. ⁠That made the second case.⁠

It explained precisely why Gantt cannot do the job:

  • ⁠Gantt⁠ uses resource rows and horizontal bars. Each item stays in ⁠one row⁠, its mark spans horizontally, and the y-axis identifies a resource.
  • A ⁠stringline chart⁠ has one continuous distance axis vertically and time horizontally. One train becomes a diagonal polyline crossing every station row. The y-axis carries ⁠distance⁠, slope shows ⁠speed⁠, horizontal folds show ⁠stops⁠, and ⁠two lines crossing reveals a pass or overtake⁠, which is the reason planners read it.
  • Gantt has no mark that crosses rows and no slope. Its lane packing actively prevents lines from crossing, the opposite of the required behavior. ⁠This is not a styled Gantt. It uses a different coordinate system.⁠

I added the second case to issue #352 for Stringline or MareyChart. The specification included a distance axis with uneven spacing, automatic projection of arrivals, departures, and pass-throughs into a polyline, styles by service type, both directions, and ⁠focusable lines⁠ so a planner can inspect conflicts accessibly.

The warning added in did its job

In I added a note to the by-use-case catalog: ⁠Gantt packs bars into lanes and does not support crossing diagonal lines such as a stringline, timetable diagram, or Marey chart.⁠ Twenty-seven rounds later, the agent said:

⁠The catalog told me up front that the standard library does not support a stringline chart. That one sentence saved me from fighting Gantt to make a diagonal line it cannot produce.⁠ This is how a library should handle a gap.

⁠Writing down that something is still missing protects the next adopter from a false lead.⁠ An honest catalog is part of the product.

Another gap: Gantt only had day-scale resolution

When the agent put vehicle workings from 7:00 to 9:00 on Gantt, it found:

⁠Gantt's time scale was measured in days, using DAY_MS and an M/D header.⁠ Showing a two-hour window required dayWidth=1100, while the header displayed a meaningless date. ⁠Segments for service, turnback, and service were useful, but there was no hour or minute scale. Gantt had the right structure (rows against time) and the wrong resolution.⁠

I recorded an ⁠intraday time-scale mode for Gantt⁠ on issue #386, now seen in aircraft rotation in and rail vehicle workings here, with likely cases in bus, taxi, and trucking operations. I also reconfirmed the fixed sizing on InspectorPanel and noted MiniTable as another gap.

⁠Nothing new was added under src this round.⁠ The 3.5/5 left Stringline at two of three.

What I took away: a second case forecasts the build

Stringline had remained unsupported for 27 rounds after I logged it in . Eleven other components had settled under the rule of three in the meantime. This finally supplied the second case, and the agent made the next likely one explicit:

A stringline chart is not limited to rail planning. ⁠Anything moving along a route over time needs it: bus Marey diagrams, conveyors, and ferry movements. Gantt cannot represent any of them.⁠

A staff-facing bus operations screen would therefore probably provide the third case and trigger the build. The series' deliberate pass through both staff and passenger screens for every mode was about to return to its oldest open gap. I did not forget the missing component or rush it. It would settle when three cases existed.

📊 Component scoreboard (⁠11 built⁠)

AmountBreakdown / ActionQueue / ListCard / Gantt-segments / SeatMap / LoyaltySummaryCard / RadioCard / FilterChips / PageHeader / Itinerary / TicketStub In progress: ⁠Stringline at two of three⁠, StatusBoard, ExpiryBadge, CheckboxCard, an intraday Gantt mode, and a success variant on StatusScreen.

📋 Staff-facing and passenger-facing progress

  • ✈️ Air: six passenger screens ✅ / five staff screens ✅
  • 🚆 Rail: six passenger screens ✅ / ⁠five staff screens (operations, crews, vehicles, station operations, timetable planning)⁠
  • Both sides of rail and air were complete. A new mode came next.

Next up: build log

  • ⁠The new mode, bus⁠, on either a staff operations screen or a passenger route, timetable, and booking flow. It will test how the rail and air foundation carries into bus, and whether a Marey diagram will produce the third Stringline case.

The run

The stringline gap first logged in returned 27 rounds later. Bus was the likely third case. A gap can wait without being forgotten, then settle when the evidence is ready.

This series is co-created with AI (Claude and Codex). A human designs the experiments, makes the calls, and fact-checks before publishing; the AI does the hands-on work and drafting.

Components from @gunjo/ui

The components this screen's source imports directly.

The code the agent actually wrote

Click a file to expand its source.

業界別「AI指示書パック」、先行登録を受付中です。