ores.compute.app_version_platform

Table of Contents

Associates app versions with the platforms they support, and carries the URI of the per-platform packaged bundle (a .tar.gz containing the wrapper+engine binaries built for that target triplet). Each (app_version, platform) row owns its own package_uri, so the orchestrator can dispatch per-triplet assignments without the wrapper needing to negotiate package selection.

The junction uses the full generated stack: NATS protocol, handler and registrar. The generated list_by_app_version op returns the platform rows enriched with the platform code. Both it and the write and remove ops are consumed by the ores.shell compute commands and by the repository tests.

1. Flags

It states neither :history: nor :events:. Its component serves no generic history and composes no change events yet, so a generated provider or registrar would be dead code.

2. Left

FK reference to ores_compute_app_versions_tbl.

References ores_compute_app_versions_tbl.id (soft FK).

ctx.generate_uuid()

3. Right

FK reference to ores_compute_platforms_tbl.

References ores_compute_platforms_tbl.id (soft FK).

ctx.generate_uuid()

4. Columns

4.1. package_uri

URI of the per-platform packaged bundle in object storage.

One .tar.gz per (app_version, platform). Wrappers download the URI matching their own ORES_PLATFORM_TRIPLET at dispatch time.

std::string(faker::internet::url())

4.2. sha256

SHA256 checksum of the per-platform packaged bundle, computed server-side by the storage API when the bundle was uploaded.

Verified by ores.compute.wrapper against the downloaded archive before extraction, to detect a truncated download, a corrupted upload, or a tampered package.

std::string(faker::crypto::sha256())

5. SQL

5.1. Flags

6. Repository

The junction carries the per-platform package of an app version, and the app version is a global registry: the platform publishes the canonical rows under the system tenant and every tenant dispatches against them. The flag makes the repository read own-tenant OR system-tenant rows on every read path, matching the app_version repository and the row-level policy in compute_rls_policies_create.sql, so a dispatch in a tenant finds the package the platform published. Mutations stay own-tenant scoped.

7. C++

7.1. Flags

7.2. Domain includes

#include <string>
#include <boost/uuid/uuid.hpp>

7.3. Domain custom members

Non-persisted members on the junction domain class: present in the C++ struct and in json_io output (the codec covers all members), but with no corresponding column in the junction table.

/**
 * @brief Code of the joined platform row.
 *
 * Populated by the generated list_by_app_version op via the
 * enrichment query. Never written to the junction table -- the
 * table has no code column.
 */
std::string platform_code;

7.4. Entity includes

#include <string>

7.5. Conventions

7.6. Table display

column header
app_version_id App Version
platform_id Platform
package_uri Package URI
sha256 SHA256
modified_by Modified By
version Version

8. See also

Emacs 29.3 (Org mode 9.6.15)