Project Ceylon Dev Log — September 22, 2026
September 22 was one of those days where a lot of the visible work happened below the surface.
We did not end the day with a shiny new desktop feature or a finished application to show off. Instead, we spent the day tightening several pieces of Ceylon that will determine whether the system can grow into something dependable rather than simply something that boots.
A surprising amount got done.
Building Out the Networking Roadmap
One of the biggest research efforts today was Ceylon's native networking architecture.
Ceylon already has active IPv4 work, including pieces of Ethernet, ARP, ICMP, UDP, DNS and early TCP functionality. The goal is not to throw that work away and start over.
Instead, we began defining what the complete networking system eventually needs to look like.
The target is now much clearer:
Ethernet
↓
Full IPv4
↓
Full IPv6
↓
True IPv4/IPv6 dual-stack operation
↓
Modern physical Ethernet hardware
The important part is that IPv6 cannot simply be bolted onto an IPv4-centric design later.
Even while IPv4 is being completed, common components need to understand concepts such as:
- multiple addresses per interface
- IPv4 and IPv6 address families
- address scopes
- address lifetimes
- routes and prefixes
- neighbor state
- path MTU information
- multicast membership
- interface lifecycle
- source-address selection
That gives us a common network foundation instead of two unrelated protocol stacks.
We also expanded the hardware side of the design.
The eventual Ceylon network driver architecture is expected to support modern NIC capabilities including DMA/IOMMU isolation, multiple receive and transmit queues, MSI-X interrupts, receive-side scaling, checksum offload, VLAN support, multicast filtering, interrupt moderation, and hardware fault recovery.
VirtIO networking remains extremely useful for development and QEMU testing, but the end goal is a native driver for a modern physical PCIe Ethernet controller.
After an initial gap analysis, the networking reference architecture was expanded and checked again.
The result is now mature enough to serve as the R&D baseline from which the actual implementation specification can be built.
The next networking step is not more theoretical architecture.
It is an inventory of the networking implementation already inside Ceylon so we can classify each component as something to keep, extend, refactor, replace, or retire.
Clarise: Making Plug-and-Play Transactional
Another major focus today was Clarise, the administrator we are designing to eventually manage Plug-and-Play devices, including USB devices.
The problem sounds simple:
Find a device and give it to the right driver.
In a real operating system, it gets complicated quickly.
A device may disappear halfway through configuration. A driver may restart. A resource may have been provisionally assigned but never committed. A USB device may return as a new hardware generation. Composite devices can have multiple interfaces, and two providers must never silently claim overlapping resources.
So Clarise is being built around a transactional model rather than simply performing device operations in sequence.
The I3 work exercised that model heavily.
Today it completed:
256,000 transaction operations
11 crash-injection points
3 reconciliation paths
0 unexpected accepts
0 unexpected rejects
0 state corruption
0 provisional resource leaks
0 duplicate commit side effects
0 duplicate abort side effects
0 stale transactions accepted
0 partial atomic interface binds
0 overlapping interface claims
The transaction machinery itself performed very well.
However, I3 is not closed.
That is intentional.
The remaining requirement was proving that, after a real supervisor-mediated restart, a new Clarise instance could receive its restart event and reconstruct transaction state against the current device, provider and resource generations.
We successfully caused and observed the supervisor restart.
Clarise did not receive the required post-restart event.
That means the reconstruction test could not legitimately continue.
Rather than replacing that missing target evidence with a simulated result, the run stopped.
The status tonight is therefore:
CLARISE_I3_STATUS=NOT_COMPLETE
SUPERVISOR_RESTART_OBSERVED=YES
CLARISE_POST_RESTART_EVENT_RECEIVED=NO
TARGET_TRANSACTION_RECONSTRUCTION=NOT_PROVEN
NEXT_TRANCHE_MAY_BEGIN=NO
AUTHORITY_TRANSFER_AUTHORIZED=NO
This is exactly why we have qualification gates.
The transaction model looks strong, but we have not yet proven the complete target lifecycle.
The next Clarise session will repair the supervisor-mediated restart path so that a new Clarise instance actually starts and receives the required event. Only then will transaction reconstruction and rollback qualification resume.
Also important: Clarise still has no live Plug-and-Play authority.
Today's testing remained bounded and shadow-only.
Terminal Architecture
We also spent substantial time defining Ceylon's terminal architecture.
A terminal seems like another simple application until you ask what it should mean inside a modern Ceylon system.
The resulting work distinguishes several concepts that are traditionally collapsed together:
terminal UI
terminal protocol
session
process/service connection
remote connection
persistent session
That resulted in a proposed native terminal/session architecture, bounded terminal parsing rules, a Ceylon terminal protocol, and compatibility paths for traditional VT-style terminal behavior.
One important conclusion was that Ceylon already has pieces of the security/session architecture needed for interactive sessions, but a persistent bridge-session abstraction will eventually be needed for longer-lived or remotely attached sessions.
That led to another idea worth preserving for later research: a lightweight ANSI-style collaborative text system inspired by the old BBS world.
The idea is not to make that part of the immediate A1 build.
Instead, it has been separated into its own R&D work so it can eventually explore low-overhead messaging, collaboration, administration and even Internet-accessible BBS-style hosting without distorting the terminal work itself.
This was also part of a larger cleanup of the Ceylon R&D library so experimental work is separated from specifications and active implementation material.
Hardware Layout Reconciliation
A less glamorous but important piece of work was cleaning up the current QEMU hardware model.
We found evidence from multiple generations of PCI layout mixed together in existing artifacts.
That matters because a device's BAR addresses, interrupt routing and IOMMU mappings can change when the virtual hardware set changes.
The current layout was reconciled around the active Q35 configuration, including storage, audio and USB hardware.
The resulting map successfully covered:
PCI layout
xHCI resources
VirtIO resources
IOMMU mappings
CapDL relationships
storage
network
display
and passed three reproducibility runs.
That gives us a much better foundation for future device qualification because we now know which hardware description represents the machine we are actually testing.
NuGUI Input Qualification
NuGUI input work also continued today.
Static architecture and hardware layout work moved forward, but the next input milestone was deliberately not declared complete.
The remaining target evidence includes areas such as:
- real pointer traffic
- stress behavior
- generation handling
- malformed-input handling
- keyboard regression
- latency
- observability
The current stopping point is USB HID injection qualification.
Again, this is an example of the engineering approach we are trying to maintain throughout Ceylon:
"the architecture looks right"
is not the same as:
"the target behavior has been proven"
Until the second statement is true, the gate stays open.
Kirk Continues Toward Qualification
Kirk, Ceylon's local service/federation control plane, also continued qualification work.
Recent testing has exercised:
- service discovery
- registration
- capacity limits
- rejection paths
- revocation
- reincarnation
- stress behavior
- reproducible boot behavior
- clean rebuilds
A 100,000-operation target stress run passed, and long-duration soak qualification has been underway.
Kirk is an important piece of the eventual Ceylon application ecosystem because it lets applications and services find each other, identify capabilities, manage lifecycle relationships and coordinate work without becoming the bulk-data transport itself.
That separation remains deliberate.
Control traffic goes through the control plane.
Large or real-time data stays on the appropriate dedicated path.
Taking Inventory of A1
Another useful outcome from today's work was a more disciplined look at what is actually present in the A1 system.
The current production-readiness inventory identified 32 services and eliminated unclassified repository items from the baseline being examined.
That doesn't mean A1 is finished.
It means we increasingly know exactly what is there, what state it is in, and what still blocks higher-level integration.
Several areas remain active work, including desktop integration, persistence, audio integration, device input qualification and application-layer completion.
But an operating system this size becomes much easier to reason about once every component has a name, an owner, a role and a qualification state.
What Today Was Really About
If there was a common theme to September 22, it was this:
turning implicit architecture into explicit contracts.
Networking became a defined IPv4/IPv6 architecture rather than simply a collection of protocols.
Plug-and-Play became a transactional lifecycle problem rather than simply device enumeration.
The terminal became a session architecture rather than merely a command window.
PCI configuration became a reproducible hardware baseline rather than accumulated historical artifacts.
And qualification gates continued to distinguish between things we believe should work and things we can demonstrate actually work.
That difference is becoming increasingly important as Ceylon gets larger.
The system is reaching the point where adding another feature is often easier than proving that twenty interacting features still behave correctly together.
That means some development days are going to end with:
NOT_COMPLETE
And sometimes that is the right answer.
Clarise is a good example tonight.
We learned exactly where the next failure boundary is:
supervisor restart succeeds
↓
new Clarise instance must start
↓
post-restart event must arrive
↓
transaction state must be reconstructed
↓
only then can I3 close
That's a very specific problem.
Specific problems are solvable.
Tomorrow, we keep building.