jonnifyagile agents
jonnify / Agile Agent Workflow / A3 · The roadmap layer / A3.8 / A3.8.3 · The program view

A3.8 · Workshop: roadmapping Portal · dive 3

The program view

A chapter roadmap plans one surface. A program roadmap plans a whole system — several surfaces over one core, each on its own cadence.

Apply the program roadmap (A3.6): the web (F6) and the bot (F10) are parallel surfaces over the one Portal facade, each a roadmap of its own, shipping on independent cadences. The master invariant is the seam that decouples them. This is the delivery plan Part VII executes. Pick a node on the right to read its roadmap.

The program view · pick the core or a surface

one domain core, one facade, several surfaces web · F6 phoenix.roadmap.md bot · F10 f10.roadmap.md Portal the facade each surface calls only the facade · ships on its own cadence · F7–F9 reserved
Core — the Portal facade: one domain core, one facade. Surfaces over it: web (phoenix.roadmap.md, F6) and bot (f10.roadmap.md, F10), each a roadmap of its own, shipping on independent cadences.

One core, many surfaces

The chapter roadmap so far plans one surface: the web. The program roadmap plans the whole system. On the Portal that system is one domain core behind one facade, surfaced through several adapters. Two are roadmapped today: the web — chapter F6, planned in phoenix.roadmap.md — and the bot — chapter F10, planned in f10.roadmap.md.

They are parallel surfaces over the same facade. Neither depends on the other for its core loop, so they are sequenced by product priority, not a hard dependency, and each is a roadmap of its own. Reserved chapters F7–F9 (multi-runtime) are named, not designed. Adding a surface adds a roadmap; it does not change the core.

A chapter roadmap orders rungs within one surface; a program roadmap orders whole chapters across surfaces. The unit one level up is the surface, and its roadmap is the chapter roadmap this whole module produces.

The seam that decouples cadence

What lets two surfaces ship on independent cadences is the master invariant: every surface calls only the Portal facade and renders only the closed error set. Because no surface reaches below the facade, a change to one cannot ripple into another, and the core never changes underneath either. The figure below holds the invariant as a switch: when both surfaces call only the facade, their cadences are decoupled; if one is imagined to reach below it, the cadences couple. The two figures teach different moves — the hero reads each surface's roadmap, this one shows the invariant as the seam.

The shared-facade seam · the invariant decouples cadence

web · F6 calls only the facade bot · F10 calls only the facade the Portal facade · one core under it cadences decoupled web (F6) and bot (F10) ship independently
Both surfaces call only the facade — cadences decoupled: web (F6) and bot (F10) ship independently; adding a surface adds a roadmap and never changes the core.

The master invariant is the seam: because every surface calls only the facade, each surface's roadmap runs on its own cadence.

The program roadmap, on the Portal

On the Portal — the learning platform this course builds — the program roadmap names one core, one facade, and several surfaces. The web (phoenix.roadmap.md, F6) and the bot (f10.roadmap.md, F10) are parallel surfaces over the one Portal facade, each a roadmap of its own, shipping on independent cadences; F7–F9 are reserved. The chapter roadmap this module produced is the web surface's plan, set in its place in the program.

The fragment below names the program in the roadmap's own terms — markdown, not Elixir source. This is the delivery plan Part VII executes: the same chapter roadmap, run rung by rung on the Portal end to end.

# portal.roadmap.md — the program view (markdown; the surfaces over one facade).
core      = Portal            # one domain core behind one facade
surfaces  =
  - web (F6)  -> phoenix.roadmap.md   # this module's chapter roadmap
  - bot (F10) -> f10.roadmap.md       # a parallel surface, its own roadmap
cadence   = independent       # sequenced by product priority, not dependency

# The master invariant is the seam: each surface calls only the Portal facade,
# so adding a surface adds a roadmap and never changes the core. F7–F9 reserved.
the principle

“Call only the facade” is the rule that keeps each surface's roadmap independent of the others — the master invariant as the decoupling seam between cadences.

on the Portal

On the Portal the web (F6) and bot (F10) are parallel surfaces over the one facade; because each calls only the facade and renders only the closed error set, they ship on independent cadences and the core never changes.

One core, many surfaces — the facade rule lets each surface's roadmap run on its own cadence.

Recap — the layer applied, end to end

The workshop ran the whole roadmap layer on the Portal: A2's value ladder became a chapter roadmap of nine rungs in three milestones with a per-iteration table, a tracer was chosen and breadth deferred, and the chapter was set in a program view of web and bot over one facade. The output reproduces the real phoenix.roadmap.md; re-ordering rungs edits the roadmap, never a spec. That delivery plan is what Part VII executes, rung by rung, on the Portal — and what the next chapter, the spec layer, turns into proven behaviour.

This closes A3.8 and the roadmap layer. The spec layer (A4) takes each rung and defines and proves it; return to the A3 chapter navigation to review the modules this capstone applies.

References

The sources behind sequencing many surfaces over one core, and where it connects in the course.

Sources

Related in this course