PULITE Enter Pulite

The Pull Papers

Technical
Appendix

Architecture of a Site-as-World

A public account of the engineering decisions that let Pulite treat routes, interfaces, local state, and return visits as one browser-native system.

Public architecture / 2026

01Site shellentry · routes · lifecycle
02Experiencedocuments · sections · media
03PuliteOSapps · windows · files
04Client statecontinuity · migrations

One browser surface.
Explicit boundaries.

Edition
2026.07
Platform
Open web
Scope
Public architecture
00

Purpose and scope

Abstract

Pulite is a web-native narrative system in which the public site is the primary runtime, not a wrapper around a separate executable. Routes, document surfaces, interactive sections, media, and PuliteOS are composed as one browser-delivered experience.

This appendix describes the engineering decisions that support that model. It is intentionally concerned with public architecture: platform choices, module boundaries, state ownership, delivery, performance, privacy, and constraints. Authored content and experience-specific behavior remain outside its scope.

01

Conditions before implementation

Design Requirements

01.1

Immediate access

The main experience opens from a URL. It does not require an installer, launcher, or mandatory account before first contact.

01.2

Site-as-world

The document, route, interface, and transition system belong to the experience itself. The website does not merely frame another product.

01.3

Local continuity

User-owned state can persist across visits and evolve through declared data migrations rather than undocumented startup rewrites.

01.4

Composable identity

Shared runtime services are separated from authored surfaces so the machinery can support new applications and presentations.

01.5

Controlled weight

Continuity remains inexpensive while inactive. Rich media and application code incur their meaningful cost when used.

02

Cooperating browser layers

System Topology

Pulite is organized as cooperating browser layers rather than a single monolithic scene. Each layer owns a stable responsibility and exposes deliberate entry points to the next.

01Site shell

Entry, routing, navigation, shared lifecycle, and public document surfaces.

02Experience modules

Route-specific sections, overlays, media, procedural scenes, and authored interactions.

03PuliteOS

A persistent environment for windows, applications, files, messaging, and device-level continuity.

04Client state

Domain-versioned metadata and user content stored through browser persistence APIs.

05Delivery

A production build and static asset pipeline designed for ordinary web hosting.

A route can initialize its own surface without owning the global shell. An application can request shared behavior without reconstructing the surrounding environment. Storage domains can evolve without turning every boot into an undocumented cleanup pass.

03

The browser document as application surface

The Site as Runtime

Navigation is coordinated with browser history, and route-level modules initialize the sections they own. This preserves normal URL behavior while allowing transitions and return state to participate in the experience.

The DOM is used directly where timing, composition, accessibility, and fine-grained visual control matter. Vanilla JavaScript and CSS keep that relationship explicit. External tooling supports the build, testing, and selected visual capabilities; it does not replace the browser as the primary execution model.

04

The device layer within Pulite

PuliteOS

PuliteOS is implemented with standard browser capabilities including the DOM, storage APIs, media elements, history, and pointer and keyboard events. It brings a window and desktop shell, applications, files, messaging, preferences, and recoverable workspace state under one interface.

Applications receive a bounded service interface instead of importing every system manager independently. This reduces coupling and gives cross-application behavior a stable place to evolve. Compatibility helpers remain where older modules still need them, while new work can target the shared boundary.

ApplicationShared servicesBrowser surface

The result is a coherent device surface whose parts can be entered independently while remaining part of the same session.

05

Shared authority for the runtime

Kernel and Service Authority

The PuliteOS kernel is the runtime authority for boot policy, system processes, resource ownership, mounted VFS roots, and status reporting. It does not render the shell or implement every subsystem itself. It establishes the lifecycle and shared contracts through which those subsystems cooperate.

Mounted namespaceVFS roots Runtime identityProcess registry CoordinationResource ownership
Kernel authority Boot · lifecycle · policy · status
Runtime service boundary
Terminal Task Manager Shell and applications

The kernel owns the process and resource registries and receives the virtual file system as a mounted subsystem. During initialization, the host constructs the runtime service boundary; kernel boot then hydrates system records, establishes coordination policy, activates kernel-owned services, and publishes an observable status snapshot. Shutdown reverses that lifecycle by tearing down event bridges, releasing owned resources, and clearing runtime records when requested.

Applications receive bounded capabilities for windows, files, direct manipulation, keyboard input, shell behavior, messaging, processes, resources, and filesystem access. Terminal reads kernel status, uptime, mounted paths, the boot sequence, and the published service manifest. Task Manager reads the same registries and requests restoration or termination through that shared boundary.

06

Direct manipulation as shared infrastructure

Interaction Architecture

A pointer gesture may begin on the desktop, cross a window, pass over a sidebar, and end inside an application. PuliteOS gives that journey one coherent account of what will happen.

  1. Session
  2. Detection
  3. Policy
  4. Validation
  5. Feedback
  6. Execution
  7. Persistence
  8. Refresh

The session normalizes the object or group being manipulated. Detection follows visible stacking order while reading current geometry. Policy translates the destination into an action. Validation checks the complete operation before mutation. Feedback communicates the same decision execution will use. Persistence records the result, and affected surfaces refresh once after the operation.

Workspace geometry

Windows retain context

Size, anchors, offsets, chrome, resize policy, and initial state are resolved centrally. Remembered geometry is checked against the current workspace before reuse.

Responsive manipulation

Live where it matters

Stable session data is cached; geometry that can change through movement or scrolling stays current. Repeated pointer work is scheduled with the display frame.

Object lifecycle

One gesture, complete semantics

Identity, tree position, content, association, validation, and persistence remain coordinated from the first indication through the committed result.

Window semantics

Visual change preserves state

Window behavior is modeled as reversible state rather than as unrelated CSS effects. Geometry is retained across maximize and restore. Minimization remembers the state it left and resolves a dock destination when one exists. Closing offers the application an interception point before release.

NormalMaximized
Visible stateMinimizingMinimized
MinimizedRestorePrevious state
Open stateClosingReleased

Pointer movement begins only after a deliberate threshold and is scheduled with the display frame. Dragging a maximized window restores it beneath the pointer, while workspace bounds keep enough of every movable window reachable.

Applications can opt into the same drop protocol by describing whether they accept an object and then handling the committed operation. Files can cross application boundaries without moving app-specific logic into the desktop.

File and application resolution

Capability is resolved at the moment of use

A visible file entry does not hardwire an application call. Current identity and metadata determine an association; application readiness and payload compatibility are checked before a handler receives the resolved context and opens a configured window.

  1. File identity
  2. Metadata
  3. Association
  4. App readiness
  5. Compatibility
  6. Handler
  7. Window config
  8. Application surface

Registration, loading, and installation are separate application states. Registration makes an application's identity and loader known to the runtime. Loading resolves and validates its code while sharing any request already in flight. For install-gated applications, readiness is granted only when the corresponding VFS installation marker is present.

File associations consult that readiness at the moment of use. Failed resolution returns a structured reason instead of asking the interface to guess which capability was unavailable.

07

Continuity without a mandatory account

State and Ownership

Pulite follows a local-first persistence model for its core continuity. Small flags, preferences, layout metadata, and file-tree state use local storage. Larger or structured user content uses IndexedDB-backed stores where appropriate.

The site shell and PuliteOS are delivered from the same origin, and their persisted state is declared in one domain registry.

Site surfaces + PuliteOSVersioned domainslocalStorage + IndexedDB

The migration entry point runs before normal experience initialization, so tracked keys and declared domain versions are reconciled before either surface relies on them.

Small stateLocal storage

Preferences, progress, layout, and compact metadata.

Structured contentIndexedDB

User content and domains that need asynchronous storage.

Release continuityMigrations

Explicit, idempotent, and tested, with bounded backups before tracked local-storage writes.

This is an engineering consequence of presenting the environment as personal. If a user can name, write, arrange, or leave something behind, routine updates should not silently discard it.

Local continuity remains tied to the browser profile and device where it was created. Clearing site data, using a separate profile, or moving to another device does not automatically transfer that state.

08

Cost follows visible activity

Rendering and Delivery

Pulite combines ordinary document rendering with media and procedural surfaces. Its performance model is based on activation rather than permanent simulation.

  • Route and application code can be loaded when its surface is needed.
  • Inactive application state does not require continuous background execution.
  • Large editable content stays outside small synchronous storage paths.
  • Diagnostic collections remain bounded.
  • Media and expensive visual work follow visible or explicit activity.
  • Reduced-motion preferences remain part of public document behavior.

Production uses a minified Vite build and a controlled static-asset copy step. Source maps are not emitted. The result remains a conventional web bundle that can be served by standard static infrastructure.

Reference build

Work and motion

Pulite separates runtime work from presentation time. In this edition's reference build, the initial document, code, and styles total 293 KiB gzip-equivalent. With PuliteOS already idle-preloaded, the kernel became ready in a median 36 ms; across the measured applications, median warm launch times ranged from 1.7 to 15.5 ms. A display refreshing at 60 Hz allows 16.7 ms per frame, so an application window is composed within the frame that requested it.

Minimize and restore transitions deliberately last 180–250 ms, while the work behind them finishes in one to two milliseconds. The system completes early, then lets visible motion take the time a person needs to understand what changed.

These are observed reference-build results, not a promise of identical performance across devices. Full conditions, method, raw runs, artifact manifest, and hash procedure are available in the measurement record.

09

Public code, local continuity

Security and Privacy

Pulite treats code and assets delivered to the browser as publicly inspectable. Client bundles are not used to hold credentials, private keys, hidden administrative controls, or sensitive configuration.

Core continuity is stored locally, reducing the need for an account merely to remember a visit. Local storage is persistence, not a secure vault: data in a user's browser can be viewed, exported, changed, or cleared by that user.

User-supplied labels and text that enter HTML templates pass through shared escaping boundaries. Networked features are expected to send only the data required for their stated operation and to handle unavailable connections without damaging local state.

10

Known boundaries of the medium

Compatibility and Constraints

Pulite targets modern browsers. Media support, storage quota, graphics performance, font rendering, and autoplay behavior can vary by browser, device, and user setting.

Continuity is local

Browser storage does not provide automatic cross-device synchronization.

Storage is conditional

Private modes and managed environments can reduce availability or quota.

Rendering is variable

Rich visual scenes scale with hardware and must remain separate from essential document access.

Runtime reuse is authored work

Reusable services do not remove the need for design, accessibility, and audience-specific verification.

These constraints are part of the architecture, not exceptions to it.

11

What future work must preserve

Public Engineering Commitments

  1. 01Keep the site itself addressable and enterable.
  2. 02Preserve user-owned state through explicit migrations.
  3. 03Keep authored surfaces separate from shared runtime responsibilities.
  4. 04Load expensive behavior in proportion to visible use.
  5. 05Treat public client code as public material.
  6. 06Keep network exchange narrow and recoverable.
  7. 07Test production behavior at the same URLs people will visit.
  8. 08Describe capabilities precisely without turning authored discovery into documentation.
12

What the architecture is for

Conclusion

Pulite is built as a continuous web work. Documents, authored scenes, applications, and personal state share one addressable system without being flattened into a single rendering model. The public site remains legible as a site; PuliteOS provides a coherent workspace; local persistence lets the environment remember what a visitor changes.

That coherence comes from shared rules: windows resolve against the current workspace; gestures are validated before mutation; applications enter through registries and bounded services; file identity survives movement; expensive work follows visible activity; and user-owned state has an explicit lifecycle. Each surface may have a different voice while remaining part of the same architecture.

Pulite treats the browser as the medium and accepts the responsibilities that follow. Its technical standard is the quality of each supported action: immediate, intelligible, recoverable, and continuous with the whole. Desktop conventions are adopted where they strengthen those qualities.

The architecture exists to protect that continuity. It gives authored work room to remain strange, documents room to remain readable, applications room to become capable, and the visitor's actions enough permanence to matter. Implementations can change; these properties should not.