The gap that did not appear told me as much as the ones that did
/network-planningCaptured 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
The gap that did not appear told me as much as the ones that did
Build log series: Each round, an AI with no prior Gunjo (
@gunjo/ui) experience builds a real screen from the public npm package and the gunjo.jp docs alone. This was the fifth staff-facing air screen, a network, timetable, and slot planning console covering routes and frequencies, arrival and departure slots, and aircraft rotation. It brings staff-facing air to five screens, fully symmetrical with rail.
Result: 4/5, with the backbone nearly complete
The screen passed tsc at desktop density. The agent reported:
As a console of data tables and lists of items awaiting action, this is close to finished.
DataTablefor routes and frequencies, withMeterand a break-eventargetturning load factor red;ActionQueuefor items requiring action, whose docstring names disruption and cancellation outright;StatGroup; andMeter, all of which have been through real operations and dispatch work. The accessibility basics are better than most teams write by hand.
The core observation: a gap that did not appear confirmed a prediction
In #133, rail timetable planning, the agent said a stringline chart is needed not only for rail but for anything that moves along a route over time (bus Marey diagrams, conveyors, shipping) and that Gantt cannot produce one, which pointed to a third Stringline case on a staff-facing bus screen.
This round was also a chance to test the negative side of that prediction: would air network planning call for a stringline chart?
The agent: "No stringline was needed, and that gap is specific to rail. Airline slots and rotations are resources against time, rows on a clock, which is the shape
GanttandScheduleGridalready target. There is no fixed-track time-against-distance dimension here, so I never once reached for a stringline. Its absence is correct, not an oversight."
The measurement agrees: zero hand-rolled stringline charts, against one each in #106 and #133 on rail. So Stringline is a gap specific to things moving along a route, and it does not arise structurally in air network planning. The prediction that the third Stringline case comes from bus was confirmed by the gap failing to appear. A map of missing components is only accurate once the places they do not appear are settled too.
The other core observation: intraday resolution on Gantt landed twice in one screen
The agent: "Aircraft rotation:
Ganttplaces bars correctly to the minute, but the header stays on dates, with no 06:00, 12:00, or 18:00 ticks. It is the only component that needs aresolutionortickIntervalprop. Arrival and departure slots:ScheduleGridis a discrete matrix with no time axis and no idea of capacity, so I built the sixteen-hour columns myself and computed the congestion."
Two requests converged on one component: a resolution="hour" mode on Gantt, or a ResourceTimeGrid with resources against a time axis and a capacity tone per cell. I reconfirmed issue #386, where rail vehicle operations in #133 and rotations and slots here make a clear second and third case. Rotations, vehicle operations, and slots are all intraday, so this gap is one step from being built. I noted alongside it that misusing PageHeader on desktop has now happened three times, where the mobile app bar gets used on desktop and the agent then falls back to a hand-rolled <header>.
No component went into src this round. The 4/5 reconfirmed the intraday Gantt mode and confirmed the absence of Stringline.
What I took away: settling where a gap does not appear is part of drawing the map
The value of depth is not only in finding gaps. This round needed no new component at all, and still settled two things:
-
Stringlinedoes not appear in air, which confirms it belongs to rail and bus, the fixed-route modes, and backs the prediction that its third case comes from bus. - The intraday Gantt mode lands in air too, the same gap as rail in #133, which makes it a cross-mode piece that is one step from being built.
A gap gets built once three cases accumulate, and being able to map in advance which modes will and will not produce those cases makes the priority and the timing of a build readable. A round that added no component still raised the resolution of the map.
📊 Component scoreboard (11 built)
AmountBreakdown / ActionQueue / ListCard / Gantt-segments / SeatMap / LoyaltySummaryCard / RadioCard / FilterChips / PageHeader / Itinerary / TicketStub In progress: an intraday Gantt mode or ResourceTimeGrid, one step from being built, StatusBoard at two of three, Stringline at two of three, next from bus, ExpiryBadge, and CheckboxCard.
📋 Staff-facing and passenger-facing progress: rail and air are both fully symmetrical at five staff and six passenger screens
- ✈️ Air: passenger, six screens ✅ / staff, five screens (operations control, MRO, crew, ground handling, network planning) ✅
- 🚆 Rail: passenger, six screens ✅ / staff, five screens (operations, crew, vehicles, station operations, timetable planning) ✅
- Both modes are now complete and symmetrical across the staff and passenger sides.
Next up: build log #136
- The new mode: bus. Staff-facing operations control, where a third
Stringlinecase and a build is the main hope (a stringline or Marey chart, with the intraday Gantt mode likely to land at the same time), or passenger-facing routes, arrivals, and fares. The question is how the rail and air foundation performs on a third mode.
The run
- gunjo.jp / Gantt / ScheduleGrid / DataTable / npm
@gunjo/ui/ GitHub / previous rounds #1 through #134 - GunjoUI by UIXHERO
Air network planning never reached for a stringline chart. Settling where a gap does not appear is what makes the rest of the map trustworthy, and the next stop is bus, where three gaps could move at once.
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.