aslice Orchard Policy — The Maintainer Rulebook

State, identity, privilege, and recovery contracts: STATE-AND-RECOVERY. Protected-volume patching: SYSTEM-VOLUMES. These specifications do not establish completed implementation or platform validation.


Contents - [1. Purpose and precedence](#purpose-and-precedence) - [2. Orchard tiers and the acceptance bar](#orchard-tiers-and-the-acceptance-bar) - [3. Naming, versioning, and revisions](#naming-versioning-and-revisions) - [4. OS and flavor declarations: the honesty rule](#os-and-flavor-declarations-the-honesty-rule) - [5. Variant discipline](#variant-discipline) - [6. Dependencies and system software](#dependencies-and-system-software) - [7. Patches](#patches) - [8. Deprecation and removal lifecycle](#deprecation-and-removal-lifecycle) - [9. Freshness: livecheck and autobump](#freshness-livecheck-and-autobump) - [10. Merge gates: what CI must prove](#merge-gates-what-ci-must-prove) - [11. Prebuild policy: what gets slices](#prebuild-policy-what-gets-slices) - [12. Vendor binary packages (pkg/dmg)](#vendor-binary-packages-pkgdmg) - [13. System software packages (kexts, SIP-disabled tools, and system patches)](#system-software-packages-kexts-sip-disabled-tools-and-system-patches) - [14. Package documentation standards](#package-documentation-standards) - [15. Reproducibility and the build environment](#reproducibility-and-the-build-environment) - [16. Security response](#security-response) - [17. Governance and review process](#governance-and-review-process) - [18. Release cadence](#release-cadence) - [19. Amending this policy](#amending-this-policy)

1. Purpose and precedence

This file is the single rulebook: what may live in aslice's orchards, how packages are born, maintained, deprecated, and buried, and what bars a pull request must clear to merge.

Precedence. The specifications define mechanism: what fields exist, what the solver does, what CI can check. This file defines policy: what maintainers accept, require, and refuse. If the two appear to conflict, the conflict is a bug — file an issue against whichever document is wrong. Every schema field referenced here is landed: [deprecation] PACKAGE-FORMAT §3.14, [livecheck] PACKAGE-FORMAT §3.15, link/link_reason and notes PACKAGE-FORMAT §3.8, ctx.replace PACKAGE-FORMAT §6.3, [system-patch] PACKAGE-FORMAT §3.16 — all in PACKAGE-FORMAT v0.6, alongside [system] (v0.4 PACKAGE-FORMAT §3.12, with the [service] table of PACKAGE-FORMAT §3.8) and [runtime]/[extension]/[ride] (v0.5 PACKAGE-FORMAT §3.13).

Charter — not amendable by this document. Three founding decisions outrank any policy edit (DESIGN §2.2 N7, DESIGN §9.4, §1):

  1. aslice collects no telemetry or analytics of any kind, ever — the project is infrastructure, not a product.
  2. Download statistics are rejected as a value signal: obscure libraries downloaded once a month may have immense value because we supply deprecated operating systems.
  3. Scope is macOS 10.11–12 on Intel. No Apple Silicon, no newer macOS, no Linux — no matter how convenient a given PR would find it.

The one-sentence test for every rule below: does this make aslice more worthy of the trust of people running machines nobody else serves? When a rule stops answering yes, amend it (§19); do not quietly ignore it.


2. Orchard tiers and the acceptance bar

Two project orchards, two acceptance bars. Third-party orchards set their own package acceptance policy under their own trust level (REPOSITORIES §3). The environment, branching, and release-version contract in §18.1–§18.2 applies to aslice itself and all orchards, including third-party orchards; the remaining maintainer rules bind the project's orchards only.

core (~300 packages) extended (~2,000 packages)
Purpose The platform stratum: shells, toolchains, VCS, TLS, runtimes, editors, the libraries everything links against Everything else worth having: applications, niche libraries, legacy tools
Upstream status Actively maintained, or maintained-by-aslice with a named maintainer who owns it May be upstream-EOL — must carry [deprecation] reason = "upstream-eol" (§8)
Tests Working tests.star smoke test, passing in CI on at least one OS × flavor — no test, no merge Strongly encouraged; required for libraries with dependents in core
[livecheck] Required (§9) Encouraged
Reproducibility Working toward reproducible: true (§15); nondeterminism is a tracked defect Best-effort
Vendor binaries Only if redistribute = true and payload-only by construction — or graft-bearing with a farm-rehearsed, signed behavior manifest (§12) Allowed with verifiable signature and honest OS/arch tags
System software ([system]) Only when the platform genuinely requires it — none at launch (§13) Allowed with a [system] declaration, named maintainer, signed kexts where offered, trust-gated serving (§13)
System patches ([system-patch]) Only when the platform genuinely requires it — the frozen-TLS-CLI patch family is the founding case (§13) Allowed with a [system-patch] declaration, named maintainer, per-target justification, demonstrated byte-exact restore, official/local serving, or verified serving under an explicit per-repo grant (§13)
Security posture CVE flags are blocking work items for the named maintainer (§16) CVE flags surface in audit; fixed best-effort

FFmpeg belongs to the extended orchard and is requested as extended:ffmpeg.

Hard rejections — both tiers, no exceptions, no override flags:

The acceptance review for a new core package is answered in the PR body: who maintains it (a name, not "the community"), what its [livecheck] strategy is, why it belongs in core rather than extended, and what its test proves.

Infrastructure packages. Tooling the farm itself depends on is core by definition: the farm dogfoods the orchard, so everything in the quarantine and signing pipeline is a package we ship, never a private dependency. The founding case is clamav (BUILD-INFRA §7.5), the signature scanner every staged slice passes before signing. It declares min_os = "10.12" — its real floor — and opts out of the v1 flavor with the reason named: its Rust toolchain, ≥1.74, cannot target 10.11. That is the honesty rule applied to ourselves. Users who want on-demand scanning install the very package the farm runs. Nothing about it is mandatory on a user's machine, and no client-side scan-on-install machinery exists to make it so.


3. Naming, versioning, and revisions


4. OS and flavor declarations: the honesty rule

The entire platform story rests on tags users can trust. Hence the rules:


5. Variant discipline

Variants declare supported build choices and their ABI effects (DESIGN §13.2):


6. Dependencies and system software


7. Patches

Patches are how a legacy platform stays alive, and also how orchards rot. The rules:


8. Deprecation and removal lifecycle

Packages have a life cycle, and the orchard states where each one is in it (ORCHARD-POLICY §8):

[deprecation]
date         = "2027-03-01"    # when deprecation starts
reason       = "upstream-eol"  # upstream-eol | security | renamed | unmaintainable | takedown | other
replacement  = "extended:ffmpeg7"       # optional pointer
disable_date = "2027-09-01"    # optional: new installs refuse after this

Security findings use DESIGN's advisory and remediation contract. Recipe, source, toolchain, configuration, and selected dependency changes rebuild affected transitive consumers, including static and bundled inputs, under BUILD-INFRA. ABI compatibility does not waive this policy; complete authorized provider/consumer sets publish together and cross-orchard gaps stay visible.

9. Freshness: livecheck and autobump

The platform is frozen; upstreams are not. Freshness automation is the ongoing workload, and policy treats it as such (ORCHARD-POLICY §9):


10. Merge gates: what CI must prove

Every orchard change PR clears the same six gates (ORCHARD-POLICY §10). Promotion PRs reuse the candidate's authenticated build evidence and verify unchanged content under §18.1–§18.2; they do not rebuild served artifacts. There is no maintainer override; the gates are what make review a question of policy rather than compilation:

  1. Lint — schema, this policy (link_reason, patch headers, license, description rules), plus the --new-package ruleset for additions.
  2. Matrix build — sandboxed build on every declared flavor at the formula's min_os, then smoke-run on each OS release in [min_os, 12] on the farm VMs. Tests may be flagged flavor/OS-irrelevant (pure data packages), with the flag visible in the PR.
  3. Smoke test — tests.star passes on at least one OS × flavor for core; the test must exercise the installed artifact, not just --version where more is possible.
  4. ABI gate — for any PR changing a library's version or revision, CI diffs the ABI scan between the old and the new slice. Independently, every changed input invalidates affected transitive consumers under BUILD-INFRA, including ABI-compatible security fixes. A compatibility_version or symbol-fingerprint regression must be resolved one of two ways: an explicit version/soname bump, or marking and scheduling dependent rebuilds — which the farm executes on merge and publishes in the same index snapshot, so clients never see the "everything's broken until rebuilds land" window.
  5. Graft rehearsal — for a type = "binary" package declaring grafts (PACKAGE-FORMAT §3.11), the farm rehearses each graft in a per-OS VM on every OS the artifact targets, diffs the observed writes, kext loads, daemon installs, and network access against the declared behavior manifest, and fails the PR on any deviation or under-declaration. Only a rehearsed, verified manifest is signed into the index (DESIGN §12.15). A package without grafts skips this gate entirely.
  6. Post-merge signing — slice and metadata signing happen automatically only after owner-approved merge and all required gates, on the dedicated networked release Pi; the publisher verifies the returned candidate before atomic publication (KEY-RUNBOOK §2.1). No PR, however trusted, touches keys.

The gates run locally as aslice orchard ci [pkg…] (DESIGN §12.14) — the same harness the farm runs, with the cross-OS smoke tier and graft rehearsal honestly marked deferred — so a PR can arrive with the machines already convinced. Passing locally merges nothing; the farm re-runs all six.

Review humans decide: policy fit, variant justification, patch quality, tier placement. Review machines decide: builds, tests, ABI. Neither does the other's job.


11. Prebuild policy: what gets slices


12. Vendor binary packages (pkg/dmg)

Some software exists only as an installer. The policy for it (DESIGN §12.4 and DESIGN §13.1):


13. System software packages (kexts, SIP-disabled tools, and system patches)

DESIGN §12.7 is the mechanism; this section is what maintainers may accept.

System patches ([system-patch]) — the stricter sibling (DESIGN v1.7 DESIGN §12.11). A [system-patch] package replaces an Apple-provided file — the frozen 0.9.8-era /usr/bin/openssl is the founding case — through backup, profile symlink, and byte-exact restore. Nothing else in this file steps further outside the sandbox story, and the acceptance bar says so:


14. Package documentation standards


15. Reproducibility and the build environment


16. Security response


17. Governance and review process


18. Release cadence

18.1. Environments, branching, and promoted builds

This contract applies to aslice development, the core and extended orchards, and every third-party orchard. Third-party maintainers use their own release authorities and infrastructure under their existing repository trust level; following this workflow grants no additional trust or capabilities.

Environment Required branch Purpose
dev develop Integrate changes and build release candidates.
staging beta Validate the exact candidate intended for production.
prod master Serve the candidate that passed staging.

One repository identity per project or orchard. All three branches live in the same Git repository and its mirrors. Environment selection may change the branch pointer only; it must not select a separate repository, fork, or environment-specific mirror URL. Different orchards naturally have different repository identities. Mirrors replicate the same repository, branch names, pinned commits, and immutable objects; selecting a transport mirror does not change the environment. Feature and review branches may exist. Normal releases use these names; isolated security maintenance uses the explicit mapping below.

Build once, promote twice. Changes enter develop. Freeze a candidate at an exact commit, resolve all inputs to immutable identities, and build the complete artifact set there. Record its source tree, recipes, patches, dependency locks, toolchain and build configuration, artifact inventory (paths, lengths, and SHA-256 digests), and authenticated gate receipts. Include required provider/dependent builds in that set. Finalize any byte-changing signing or packaging before freezing the inventory. Keep the candidate and evidence available by immutable identity even after develop advances.

Promote that specific candidate from develop to beta, then from beta to master. Promotion moves branch/release pointers and publishes the existing immutable objects; it never compiles, repacks, substitutes dependency builds, or edits embedded versions. A merge commit may differ, but its release content must match the frozen source tree exactly; resolving a merge conflict by changing content creates a new candidate under §18.2. Do not promote a moving branch tip or skip staging. Validation may rerun tests, scans, or required independent reproducibility checks against the same inventory; evidence rebuilds never replace the served artifacts.

No environment-specific hardcoded values. Source, recipes, build flags, embedded configuration, and artifacts must not contain separate dev/staging/prod endpoints, credentials, repository identities, paths, or behavior switches. Supply operational configuration and secrets externally at deployment or runtime without rewriting the artifacts. Repository references retain one identity and vary only the environment branch. Resolve branch references to commits when freezing a candidate: a moving dependency branch cannot silently change the candidate's content during promotion. Test externally supplied configuration in the destination environment and retain the result with the promotion record.

Promotion is a checked release operation. Before activation, verify the repository identity, required source/destination branches, authorized promotion commit, base version, source/input identity, complete artifact inventory, and required gate receipts. Staging validates the selected dev candidate; prod requires the successful staging record for that same candidate. Missing objects or evidence, changed content, an incorrect branch, or a different repository blocks promotion and leaves the destination's previous release active. Retrying an unchanged candidate after a transient outage is allowed; bypassing a failed gate is not.

Keep publication state, caches, locks, metadata version counters, and signing authorization scoped to the repository and environment. Renewing dev metadata cannot publish into prod, and selecting dev cannot overwrite prod's rollback-protection state. Publish each environment atomically through the existing signing flow. TUF metadata and detached promotion attestations may receive new signatures, versions, and expiries; they must reference the same frozen artifact bytes and content digests. This metadata activity is not an artifact rebuild.

18.1.1 Security maintenance releases

Security incidents may use maintenance/<incident-id>/develop, maintenance/<incident-id>/beta, and maintenance/<incident-id>/master, mapped explicitly to dev, staging, and prod in the same repository identity. Incident IDs use lowercase letters, digits, and hyphens. This is an isolated candidate chain with the same environments, owner authorization, signing authorities, immutable artifacts, version rules, and mandatory gates as normal promotion. It creates no emergency bypass. OBS maintenance incidents provide an upstream precedent for isolating a fix from unrelated development.

Base the candidate on an exact production release plus the fix and required dependency changes. Record the incident, repository identity, baseline release digest, input and artifact inventory digests, source/destination branches and environments, owner authorization, all required gate receipts, and staging evidence in the maintenance-promotion contract. Promotion preserves identical source/destination artifact inventories. The destination branch must match the incident and environment exactly, and prod requires staging for that candidate.

Bind authorization and activation to the expected production baseline. Under the publication fence, compare it to current production immediately before activation. A concurrent production change blocks the old candidate: reconcile the fix with the new production content, allocate a new base version, and build and validate a new candidate through dev and staging. Maintenance cannot overwrite unrelated newer production changes. Track forward integration into ordinary develop as pending or integrated with an exact commit; publication need not wait for forward integration, but the incident remains open until it is recorded.

18.2. Release versioning and unchanged-content enforcement

The aslice release and each orchard release have a base version x.y.z and exactly these environment labels:

Environment Release version Example
dev x.y.z-develop 1.0.0-develop
staging x.y.z-beta 1.0.0-beta
prod x.y.z 1.0.0

1.0.0-develop → 1.0.0-beta → 1.0.0 contains no release-content changes. The suffix is a release label in external publication metadata, not a value patched into a binary, archive, formula, or embedded manifest. Embedded version information uses the unchanged base version and immutable build identity. Only the environment label, branch/promotion pointers, and publication bookkeeping described in §18.1 may change. This release numbering is separate from upstream package version/revision (§3) and TUF's monotonic metadata counters; promoting an orchard does not rewrite its packages' upstream versions.

Once a base version has a frozen candidate, it identifies exactly one source/input set and artifact inventory. Any change to source, recipes, patches, dependencies, toolchain, build configuration, or artifact bytes requires a new base version, even if the fix is made during staging or produces apparently equivalent behavior. Increment patch for a compatible fix, minor for compatible added functionality, or major for an incompatible change. A package revision bump alone does not permit reuse of the orchard release version. Do not overwrite a published label, add an ad hoc suffix, or use build metadata to conceal changed content under the same base version.

For example, if testing 1.0.0-beta reveals a defect, record the failed candidate, make the correction on develop, and build 1.0.1-develop (or an appropriate larger bump). It must pass through 1.0.1-beta before 1.0.1. Neither the correction nor a production hotfix may be inserted into the old promotion chain. A test infrastructure outage or missing receipt requires a documented retry of the same content, not a version bump; any content change made to resolve a failure does require the bump.

Every refusal explains why. Retain a failure record with the candidate/base version, repository and source/destination branches, expected and observed commit/tree/input identities and artifact digests where relevant, the failed check and evidence, and the required remedy. Publish the reason in the release/CI report, redacting secrets. For a changed candidate, name the changed files or inputs and the replacement version; link the replacement's release notes to the failure. For example: “Promotion of 1.0.0-beta to 1.0.0 refused: dependency lock changed after candidate freeze; build and validate 1.0.1-develop.” A bare “promotion failed” is insufficient.

Implementation acceptance: the shared workflow must demonstrate an unchanged dev → staging → prod promotion with identical artifact hashes and no promotion build jobs; rejection of altered inputs or bytes under the same base version; rejection of wrong branches, cross-repository pointers, missing evidence, and prod promotion without staging; and successful retry after a transient failure without mutating the candidate. Run these checks for aslice and a third-party orchard as well as the official orchards. This repository is currently a design specification; executable promotion automation and its metadata representation remain implementation work.


19. Amending this policy


History

Historical labels and ordering below are preserved as recorded, including repeated version labels. They do not override the current specification.

Document revision history | Version | Date | Changes | |---|---|---| | v1.20 | September 2026 | Classify FFmpeg as extended and align affected package references and examples. | | v1.19 | September 2026 | Replace inline navigation with a collapsible Contents list; preserve section labels, links, and order. | | v1.18 | September 2026 | Specify dependency-driven security remediation, explicit update and origin decisions, and the applicable farm, maintenance, and evidence contracts. Supersedes ABI-only rebuild and cost-first selection policies where previously stated; runtime and measured acceptance remain pending. | | v1.17 | September 2026 | Remove retired comparison references and competitive framing; retain aslice requirements and link their owning specifications. Align affected contract summaries where applicable. | | v1.16 | September 2026 | Documentation audit repairs: contract summaries aligned; owner-approved namespace, rollback, GC, naming, prefix, and graft decisions applied where relevant; semantic anchors and explicit citations added. Runtime implementation and platform acceptance remain pending. | | v1.15 | September 2026 | Consolidate revision notes into a collapsible history table; no specification changes. | | v1.13 | September 2026 | one dev/staging/prod workflow for aslice and all orchards, including third-party: `develop`/`beta`/`master` in the same repository, immutable promoted builds, external environment configuration, and `x.y.z-develop` → `x.y.z-beta` → `x.y.z` release labels. Content changes require a base-version bump and a recorded failure reason. Supersedes the proposed edge/stable split; automation remains implementation work. | | v1.12 | September 2026 | owner merge becomes the final human release approval, with automatic signing on a dedicated networked Pi and serialized atomic publication. Automatic targets/snapshot renewal replaces manual renewal; the root remains offline. The manual-release design above is superseded. Services and acceptance drills remain implementation work (KEY-RUNBOOK §2.1, §7); schemas and client signature formats are unchanged. | | v1.11 | September 2026 | **Superseded design record:** initial signing uses a single owner, separate offline root and release Pis, encrypted backups, and manual release batches. The Mac Pro VM prepares and publishes; multi-party custody and hardware tokens are deferred. KEY-RUNBOOK defines renewal, rotation, recovery, and pre-launch drills; prior custody requirements are superseded. | | v1.10 | Not recorded | TOOLCHAIN.md v0.1 joins the companions; companion versions refreshed — DESIGN v1.21, PACKAGE-FORMAT v0.16, BUILD-INFRA v0.15; no policy changes | | v1.10 | September 2026 | TOOLCHAIN.md v0.1 joins the companions; companion versions refreshed — DESIGN v1.21, PACKAGE-FORMAT v0.16, BUILD-INFRA v0.15; no policy changes. | | v1.9 | Not recorded | prose-fix pass — the register was already clean, no prose changes; companion versions refreshed — DESIGN v1.20, BUILD-INFRA v0.14, REPOSITORIES v1.7; no policy changes. | | v1.9 | September 2026 | prose-fix pass: the register survived unchanged (gems kept deliberately: 'hosting the honorable dead is part of the mission', 'User safety outranks process', 'an unmaintained system patch is a liability with a symlink', 'written words are decorative here'); companion versions refreshed — DESIGN v1.20, BUILD-INFRA v0.14, REPOSITORIES v1.7; no policy changes. | | v1.8 | Not recorded | review correction — the §14 `notes` example's `aslice services start` becomes `aslice service start` (the command is singular, DESIGN §12.1); companion versions refreshed — BUILD-INFRA v0.13, REPOSITORIES v1.6 | | v1.8 | September 2026 | the §14 `notes` example's command typo corrected (`aslice service`, singular); companions refreshed to BUILD-INFRA v0.13, REPOSITORIES v1.6 | | v1.7 | Not recorded | grafts land (mechanism DESIGN v1.19 §12.15; schema PACKAGE-FORMAT v0.15 §3.11) — §12's payload-only rule becomes the default with the declared-graft exception and the rehearsal bar, §10's merge gates become six (farm graft rehearsal), §13's vendor-kext bullet crosses over, and §2's core-acceptance row follows; owner decision, September 2026. | | v1.7 | September 2026 | grafts, by owner decision: vendor installer scripts become a declared, rehearsed, signed, user-approved exception to the payload-only default. §2's hard rejection now targets *undeclared* scripts; §12 gains the graft exception and the rehearsal bar (manifests authored from evidence, farm-rehearsed per OS, signed into the index — core and extended ship no unsigned manifest); §10's merge gates become six, gate 5 rehearsing grafts in per-OS VMs; §13's vendor-kext bullet crosses over; third-party orchards carry grafts only unsigned, under the client's loud warning (mechanism DESIGN v1.19 §12.15; schema PACKAGE-FORMAT v0.15 §3.11). | | v1.6 | Not recorded | §9 names the farm dashboard's public home — aslice.sh/dashboard; the project domain carries the human pages as paths on the apex and the machine endpoints as subdomains, per the owner's layout decision (September 2026); no policy changes. | | v1.1–v1.6 | September 2026 | prose rewrite in the project's voice; NOMENCLATURE vocabulary header; the maintainer's `aslice orchard` CLI for lifecycle edits, freshness, and local gate runs (§8, §9, §10); the variant-cap retirement, license-gate removal, and the abandonware stance with the `takedown` reason (§5, §8); the farm dashboard's public home at aslice.sh/dashboard (§9). The status header carries the full per-version record. | | v1.5 | Not recorded | the `abi = true` variant cap is retired — variants are governed by need and honest ABI tags, not quota, and compile-only licenses are served as non-default local builds (§5); the license-policing gates drop out of §2 and §12, leaving documentation duties; §8 states the abandonware stance — hosted indefinitely, removable only by a verified complaint from the real copyright owner, with `takedown` as a new lifecycle reason; companion versions refreshed (DESIGN v1.17, PACKAGE-FORMAT v0.13, BUILD-INFRA v0.12, REPOSITORIES v1.5). | | v1.4 | Not recorded | the maintainer's CLI lands (DESIGN v1.16 §12.14) — §8's lifecycle gains the `aslice orchard` deprecate/disable/undeprecate/tombstone/rename verbs, §9's public freshness metric gains its local computation (`aslice orchard freshness`), and §10's five gates gain their local run (`aslice orchard ci`); companion versions refreshed (DESIGN v1.16, PACKAGE-FORMAT v0.12, BUILD-INFRA v0.11, REPOSITORIES v1.4); no policy changes. | | v1.3 | Not recorded | NOMENCLATURE.md vocabulary reference added to the header; companion versions refreshed (DESIGN v1.15, PACKAGE-FORMAT v0.12, BUILD-INFRA v0.10, REPOSITORIES v1.3); no policy changes. | | v1.2 | Not recorded | review pass — §13's warning-rule references name DESIGN §12.7/§12.11 explicitly; companion versions refreshed; no policy changes. | | v1.1 | Not recorded | prose rewrite throughout — chapters reworded in the project's technical-writing voice; no policy changes. | | v1.0 | Not recorded | editorial pass — prose revised for directness; no policy changes. | | v1.0 | September 2026 | editorial pass: prose revised for directness throughout; no policy changes. | | v0.9 | Not recorded | owner decision — unsigned vendor artifacts may ship in the **extended orchard only**, `signer` omitted, announced loudly at every install; §12 now matches PACKAGE-FORMAT §3.11, core stays signed-only (DESIGN v1.10 §12.4). | | v0.8 | Not recorded | dead-upstream policy — every fetched source is vendored in the repository's `blobs/sha256/` (DESIGN v1.9 §9.6), so a vanished upstream breaks nothing already built; §9 gains the dead-URL bookkeeping rule; companions refreshed. | | v0.8 | September 2026 | dead-upstream policy: the repository vendors every fetched source artifact (DESIGN v1.9 §9.6, BUILD-INFRA v0.6), mirrors replicate the whole tree sources-included (REPOSITORIES v0.8), and §9 gains the rule for noting dead canonical URLs in formulas — the archive carries the past, policy tracks the future. | | v0.7 | Not recorded | the farm's malware-signature gate lands (BUILD-INFRA v0.4 §7.5) — `clamav` joins core as an infrastructure package with an honest 10.12 floor and a v1 flavor opt-out (§2), and every vendor payload is signature-scanned at repack (§12); client-side scanning stays the user's decision. | | v0.7 | September 2026 | the malware-signature gate, following BUILD-INFRA v0.4 §7.5: the farm scans every staged slice against current definitions before signing-host promotion; the scanner ships as the `clamav` core package under the new infrastructure-package rule (§2) — farm tooling is core by definition, with an honest 10.12 floor and v1 opt-out; §12 requires a scan of every vendor payload at repack, with detections rejecting the package or producing a documented exclusion, never silent cleaning. Client-side scanning remains a user decision: install the package or don't. | | v0.6 | Not recorded | DESIGN open question #10 resolved (DESIGN v1.8) — a verified repository may serve `[system-patch]` under an explicit per-repo `allow-system-patch` grant; §13's trust-gating paragraph updated; third-party still never. | | v0.6 | September 2026 | DESIGN open question #10 resolved (DESIGN v1.8): a verified repository may serve `[system-patch]` packages under an explicit per-repo `allow-system-patch` grant (refused by default, recorded, revocable); §13's trust-gating paragraph updated; third-party repositories remain never. | | v0.5 | Not recorded | the pending schema references of §1 land in PACKAGE-FORMAT v0.6 (`[deprecation]`, `[livecheck]`, `link`/`link_reason`, `notes`, `ctx.replace`, `[system-patch]`) and the `system-patch` capability lands in REPOSITORIES v0.6 §3 — no policy change, bookkeeping that the specifications caught up. | | v0.5 | September 2026 | bookkeeping: §1's pending schema references land in PACKAGE-FORMAT v0.6 and the `system-patch` capability lands in REPOSITORIES v0.6 §3; no policy content changed. | | v0.4 | Not recorded | the system-file hard rejection becomes the declared `[system-patch]` category — §2, §13; mechanism in DESIGN v1.7 §12.11 — and the trust-store slices (`ca-certificates`, `apple-roots`) are recorded as ordinary pinned data-only core packages — §9; mechanism in DESIGN v1.7 §12.10. | | v0.4 | September 2026 | the system-file hard rejection becomes the declared `[system-patch]` category, following DESIGN v1.7 §12.11 and the project owner's charter amendment: original backed up, profile-symlink replacement, byte-exact restore demonstrated in review, official/local-only serving, refused paths by construction; v0.2's "rejected forever" line is amended to the honest form — never *behind your back*. Also records DESIGN v1.7 §12.10's trust-store extensions: `ca-certificates` and `apple-roots` are ordinary pinned data-only core slices under §9's freshness rules and §10's gates. | | v0.3 | Not recorded | service-package acceptance — root-domain daemons meet §13's bar, user agents meet the normal tier bar — §13; mechanism in DESIGN v1.3 §12.8. | | v0.3 | September 2026 | service-package acceptance, following DESIGN v1.3 §12.8: root-domain daemons (`domain = "system"`) meet §13's bar; user agents meet the normal tier bar and are preferred. | | v0.2 | Not recorded | kernel extensions and SIP-disabled development software move from hard rejection to the restricted, warned, trust-gated system-software category — §2, new §13; mechanism in DESIGN v1.2 §12.7. | | v0.2 | September 2026 | the SIP/kext hard rejection becomes the restricted system-software category (§2, new §13), following DESIGN v1.2: declared requirements, per-operation elevation, mandatory warnings, trust-gated serving, demonstrated rollback; patching system files stays rejected forever. | | v0.1 | September 2026 | initial rulebook, consolidates the acceptance bar (DESIGN §13.1), variant discipline (§13.2), the deprecation lifecycle, patch documentation, merge gates, and release cadence in one maintainer-facing document. | | Not recorded | September 2026 | corpus review corrections: artifact identity, protected execution, durable recovery, trust persistence, replay, platform limits, and examples aligned with STATE-AND-RECOVERY and SYSTEM-VOLUMES. These are specification changes; runtime acceptance remains pending. |

Source document