org.projectfile.image
The image a project publishes, declared as PARTS and TEMPLATES: the repository path, the tags each kind of build publishes (heads), and how a build variant enters a tag (variant). The document declares every naming rule; the extension fixes only the mechanism that expands them (conformance/image/README.md) and the collisions a publisher refuses. Has a dedicated standalone schema (schema/org.projectfile.image.v1.json).
- Namespace:
org.projectfile.image - Owner: projectfile.org (community-maintained)
- Status: draft
- Schema: /schema/org.projectfile.image.v1.json
Illustrative fragment — not a complete projectfile document. Consumers MUST round-trip unknown namespaces even when no shape is published.
---# SPDX-FileCopyrightText: 2026 Damián Búho <damian.buho@proton.me>## SPDX-License-Identifier: CC-BY-4.0# SPDX-License-Identifier: MIT
# Shape: org.projectfile.image — illustrative fragment, every value a sample; see conformance/image/README.md
org: projectfile: image: org: b19 # a part name: ${identity.name} # a part series: "{B19_PHP_SERIES}" # a part over a matrix axis sapi: "{B19_PHP_SAPI}" # a part over a matrix axis path: ${org}/${name} # nested repository path template flatpath: ${org}-${name} # one-segment repository path template tag: latest # load tag of a local build heads: release: ["${version}", "${major}.${minor}", "${major}", latest] prerelease: ["${version}"] trunk: [edge] branch: ["latest-${branch}"] variant: parts: [series, sapi] # ordered parts forming the variant join: "-" # separator between part values aliases: defaults # also publish tags with default-valued parts dropped tag: ${head}-${variant} # tag template over a head and a variant bare: [latest] # heads whose tag is the variant alone[org.projectfile.image]org = "b19"name = "${identity.name}"series = "{B19_PHP_SERIES}"sapi = "{B19_PHP_SAPI}"path = "${org}/${name}"flatpath = "${org}-${name}"tag = "latest"
[org.projectfile.image.heads]release = [ "${version}", "${major}.${minor}", "${major}", "latest" ]prerelease = [ "${version}" ]trunk = [ "edge" ]branch = [ "latest-${branch}" ]
[org.projectfile.image.variant]parts = [ "series", "sapi" ]join = "-"aliases = "defaults"tag = "${head}-${variant}"bare = [ "latest" ]{ "org": { "projectfile": { "image": { "org": "b19", "name": "${identity.name}", "series": "{B19_PHP_SERIES}", "sapi": "{B19_PHP_SAPI}", "path": "${org}/${name}", "flatpath": "${org}-${name}", "tag": "latest", "heads": { "release": [ "${version}", "${major}.${minor}", "${major}", "latest" ], "prerelease": [ "${version}" ], "trunk": [ "edge" ], "branch": [ "latest-${branch}" ] }, "variant": { "parts": [ "series", "sapi" ], "join": "-", "aliases": "defaults", "tag": "${head}-${variant}", "bare": [ "latest" ] } } } }}