# RAO Container Format

## Purpose

`*.rao` is the AlphaComm public repository transport format for AO-owned
distribution. A RAO file is a transportable symbolic container: the container
does not only carry bytes, it also carries symbolic install intent, release
classification, provenance, and activation metadata.

## Container model

Each RAO container is an archive that contains these top-level paths:

```text
manifest/
  rao-manifest.json
payload/
checksums/
  sha256.txt
provenance/
policy/
sbom/
licenses/
```

`sbom/` and `licenses/` may be omitted when the published container does not
yet ship separate SBOM or license bundle files.

## Required manifest fields

`manifest/rao-manifest.json` must include:

- `container_id`
- `display_name`
- `version`
- `channel`
- `container_format`
- `symbolic_model`
- `classification`
- `activation_class`
- `publication_scope`
- `install_roots`
- `payloads`

## Payload fields

Each payload entry declares:

- `role`
- `logical_name`
- `file_name`
- `size_bytes`
- `sha256`

## Public repository rules

- Public RAO containers must not disclose AlphaComm internal hostnames, private
  architecture records, private source authorities, or credentials.
- Private AO internals stay outside the public repository.
- RAO publication is allowlisted. A source drop appears only after review for
  customer-safe scope.

## Current public convention

The current public repository uses `.rao` for:

- AO-Unix bootstrap images
- AO-Unix compiled artifact bundles
- AO-owned repository tooling source bundles

The public file extension is always `.rao` even when the transport envelope is
handled by an archive-capable installer.
