Skip to content
Ocean-Atlasv0.1.0Canonical Knowledge

Ocean Bundle

A Bundle is the complete, identifiable Ocean DSL project: the full set of DSL definitions — datatypes, APIs, databases, brokers, behavior, services, configuration, and deployment — along with non-DSL files, that together describe one system.

“Bundle” and “Ocean DSL project” refer to the same thing. Bundle is Ocean’s canonical term for a complete DSL project and the unit that carries its project-level identity.

A Bundle is identified by its @info section, defined by dsl.info.


Every Ocean system is organized as one Bundle.

Bundle
├── @info (project identity)
├── @datatype definitions
├── @api / @broker / @database definitions
├── @expression / @fsm / @component definitions
├── @service definitions
├── @config / @vault definitions
├── @dashboard / @ui definitions
└── @deploy definitions

A Bundle does not need to use every DSL construct. The DSL areas a Bundle may contain, and how they combine into a system, are defined by concept.system-design-model.


A Bundle’s identity comes from its @info section: name, version, and an optional description.

Bundle
└── @info
├── name
├── version
└── description

A complete Bundle should contain one effective @info section and therefore one project-level identity. Incomplete or fragmentary DSL input may temporarily omit @info, as defined by dsl.info. The complete field syntax, cardinality, and validation rules for @info are defined by dsl.info and are not repeated here.

The Bundle’s @info version identifies the Bundle’s own definition. It is distinct from the version of any individual reusable item the Bundle publishes or consumes — see Section 5.


A Bundle contains the local DSL definitions that make up its system: datatypes, APIs, databases, brokers, expressions, FSMs, components, services, configuration, vaults, dashboards, UI, and deployment definitions, as applicable.

A Bundle may also reuse definitions it does not own, through:

@import — bring in a selected reusable definition from the Ocean Repository or local Pre-baked Registry
@include — statically compose a compatible same-section definition into the current file

These reuse mechanisms, and the O./P. reference formats they resolve, are defined by concept.ocean-repository.

Bundle
├── local definitions
└── reused definitions
├── O.<namespace>.<name>@<version> (Ocean Repository)
└── P.<namespace>.<name>@<version> (local Pre-baked Registry)

A Bundle is a project. The definitions inside it are not automatically reusable outside it.

A definition authored inside a Bundle — a datatype, an expression, a service, and so on — may independently be published to the Ocean Repository as its own reusable item, with its own namespace, name, and version. That published identity is distinct from the Bundle’s own @info identity:

Bundle Published item
@info: "Billing" @ 2.1.0 O.billing.InvoiceLogic@2.0.0

Changing the Bundle’s version does not change the version of an item it publishes, and vice versa, unless the project’s own release policy links them.


A Bundle may contain multiple services. @info identifies the Bundle as a whole; it does not identify, rename, or version any one service inside it.

Bundle: "Order Platform" @ 1.0.0
├── OrderService
├── PaymentService
└── NotificationService

Service-specific contracts, configuration, and deployment behavior belong to dsl.service and related references.


A minimal Bundle for an inventory system, identified by its @info section:

@info
name: "Inventory Management"
version: 1.0.0
description: "Manages inventory and stock movements."

The same Bundle typically contains further DSL definitions alongside @info:

Bundle: "Inventory Management" @ 1.0.0
├── @info
├── @datatype Product, StockMovement
├── @database InventoryDb
├── @api InventoryApi
├── @service InventoryService
└── @deploy InventoryDeploy

The Ocean Bundle concept is related to:

  • dsl.info — defines the @info section that identifies a Bundle.
  • concept.system-design-model — defines how the DSL constructs a Bundle contains model a system.
  • concept.ocean-repository — defines how individual definitions within a Bundle may be published and reused independently of the Bundle’s own identity.
  • dsl.import — imports a selected reusable definition into a Bundle.
  • dsl.include — statically composes a compatible same-section definition into a Bundle’s current file.
  • dsl.service — defines the deployable service boundaries a Bundle may contain.

These semantic relationships are declared in the document metadata.