Skip to content

feat(registry): register the nine Marid Tier-1 packages at v0.1.0 (D321/D322) - #109

Merged
hyperpolymath merged 1 commit into
mainfrom
feat/marid-tier1
Oct 9, 2026
Merged

hyperpolymath merged 1 commit into
mainfrom
feat/marid-tier1

Conversation

@hyperpolymath

@hyperpolymath hyperpolymath commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

Summary

This PR registers the nine Marid Tier-1 packages at v0.1.0 (owner rulings D321/D322). Their source is the metadatastician/marid monorepo, and each is registered by subdir = "packages/<Pkg>" at commit fd139f763a306a7e2eca60d96ea1a1a9f77c1e71. That commit is the UUIDv8 profile-T re-mint, merged as metadatastician/marid#78.

Packages: MaridArango, MaridCodec, MaridControl, MaridCRDT, MaridIR, MaridLive, MaridRaft, MaridStorage, MaridTransport.

The PR also widens ci/validate.jl Layer 2b. Marid lives under the metadatastician organisation, and the unpatched validator rejects all nine packages with an owner mismatch.

This registry is the only target. Nothing here is aimed at JuliaRegistries/General.

Post-merge note (2026-10-09)

This PR was marked ready and squash-merged as 7c528945 at 2026-10-09T00:17:42Z, before both conditions below held. What follows from that:

Merge order as planned (superseded by the merge above)

  1. The nine <Pkg>-v0.1.0 tags exist at fd139f7. They are owner-signed. The MaridIR-v0.1.0 canary goes first, because release.yml has never run before.
  2. feat(registry)!: re-mint ten placeholder UUIDs as UUIDv8 and re-register (ADR 0002) #107 (UUIDv8 re-mint of ten placeholder UUIDs) has merged. Both PRs edit Registry.toml and CHANGELOG.adoc. A trial merge (git merge-tree of feat(registry)!: re-mint ten placeholder UUIDs as UUIDv8 and re-register (ADR 0002) #107's head cf67a95e with this branch) conflicts in both files. Once feat(registry)!: re-mint ten placeholder UUIDs as UUIDv8 and re-register (ADR 0002) #107 lands, I will:
    • merge main into this branch (no rebase, so the signed commit survives);
    • resolve the two files;
    • re-run the validator;
    • update the head SHA below.

Type of change

  • Registry change (new packages)
  • CI change (validator owner allow-list)
  • Docs (README package table, CHANGELOG, REGISTRY-POLICY)

📌 New pins

Package UUID (v8) git-tree-sha1
MaridArango 01a115ae-6523-8273-8497-753822252d6a 5c71ca32eb207776d2dda2969570e8c640bfae14
MaridCodec 01a115b0-6977-8194-b1bb-ba277a2ddf75 122522a80a17e8165d3e0230bcb3196b4b32c7e9
MaridControl 01a115b1-6b89-8bc1-b693-306d1d0301d5 0ef98fceb85a30faa4e7e64a88c23094dfa68948
MaridCRDT 01a115af-6777-83e7-bbf4-4312fe84fb45 432bf84d4b482e84b5a9f0afa6e271e522bdd252
MaridIR 01a115b4-723a-8911-b469-7c18b764c41a 4c76daa8e4ac08d02db18688557e2341b867e1e4
MaridLive 01a115b5-7479-8d82-a0d2-d2a681675e27 367e0e315aa1ab0b767fae6dadbecbd25a21e6a9
MaridRaft 01a115b8-7a8a-8f24-baaa-cf06974b0145 e1e8405aeb1cb5742ee346dbc74c56c7e936baef
MaridStorage 01a115b9-7cf4-8463-9dfb-224e0c6ab613 1177666f911e55c25bfdf3058ea5a49144f8c5d3
MaridTransport 01a115ba-7f33-8545-9989-732142b76ec2 e7ba55688bd13c422628f70f2ba921a4e769d21b

The PR adds or changes no action uses: lines and no actions.lock entries, lockfiles or container digests.

Changes

  • M/<Pkg>/{Package,Versions,Compat,Deps}.toml for the nine packages. These are LocalRegistry 0.5.7 output, unchanged. It was run in a throwaway clone because LocalRegistry refuses a worktree.
  • Registry.toml: +9 lines only, inserted by hand between LowLevel and PRComms.
    • Disclosure: LocalRegistry rewrites the whole [packages] table sorted by UUID. I discarded that rewrite so the diff shows only the nine new entries.
    • The next LocalRegistry run on main will therefore produce the re-sort as unrelated churn. That churn is expected and is not a defect.
  • ci/validate.jl Layer 2b:
    • Adds ALLOWED_PACKAGE_OWNERS = ("hyperpolymath", "metadatastician") and a documented allowed_package_owner(slug). A package's Package.toml repo may now be owned by either.
    • The registry's own repo must still be hyperpolymath/….
    • Also fixes a misplaced docstring: the check_repo_slug! docstring sat on extract_github_slug. Each function now has its own, confirmed with Docs.doc.
  • docs/REGISTRY-POLICY.adoc:
    • The Layer 2b paragraph now names both owners.
    • The stale "across all 37 packages currently registered" now reads "every package registered in Registry.toml". The base had 32 packages, and this PR makes 41.
  • README.adoc package table and CHANGELOG.adoc [Unreleased] updated.

RSR Quality Checklist

Required

  • No banned language patterns. The PR adds only TOML, Julia and AsciiDoc; no JS, TS, Python or Go.
  • SPDX headers on new or modified source files.
    • The modified files (ci/validate.jl, both .adoc files) keep their headers.
    • The new M/Marid*/*.toml files carry none, which matches 29 of the 32 existing package dirs. Registry TOML is generated data, so I did not add headers by hand.
  • No secrets, credentials or .env files.
  • CI is green. Not yet run: CI starts when this PR opens. I will update this box from the real rollup.

As Applicable — Registry Changes

  • Registry.toml index updated (+9).
  • Per-package TOMLs are consistent. Layer 2a found 0 name↔UUID errors, and every tree hash matches upstream (see above).
  • Upstream meets the GOVERNANCE quality bar.
    • Each packages/<Pkg> has its own LICENSE, which marid's release.yml checks per subdir.
    • [compat] is upper-bounded for every dep and weakdep (marid#22/D68 gate).
    • The UUIDs are the v8 profile-T re-mint.
  • Upstream tag exists and matches. Ticked 2026-10-09T14:05Z, after the merge. All nine <Pkg>-v0.1.0 tags are on origin and peel to fd139f7 (git ls-remote --tags, 9/9). They were pushed at about 10:55Z on 2026-10-09, after this PR merged at 00:17:42Z, not before it, as the original text below had planned. The registry pins tree hashes, so resolution never depended on them.
    Original text: Upstream tag exists and matches. Not yet. The tags <Pkg>-v0.1.0 at fd139f7 are owner-signed (EstateTagging creation rule; GITHUB_TOKEN cannot create tags). They are to be pushed before this PR merges, and I will tick this box once git ls-remote --tags shows all nine.

As Applicable — Documentation / Infra Changes

  • .machine_readable/6a2/*.a2ml: n/a. A2ML is retired estate-wide (D308), so these boxes are not applicable and no .a2ml was created.
  • TOPOLOGY.md: n/a, the architecture is unchanged.
  • CHANGELOG updated. This repo's changelog is CHANGELOG.adoc; the template's .md name is stale.
  • Wiki: not updated in this PR. The Packages wiki page needs the nine rows added; that is an owner wiki edit.

Testing

1. Validator, Julia 1.10.10 (the CI version), this branch:

julia --project=<env: LocalRegistry 0.5.7, RegistryCI 11.0.0> ci/validate.jl <worktree>
rc=0
Layer 1 (RegistryCI, informational): 670 passed, 22 failed
Layer 2b: Checked repo field on 41 package Package.toml files (0 owner mismatches)
Custom-check errors: 0 — VALIDATION PASSED (custom checks)

2. Same validator, base 9e4dc83: rc=0, Layer 1 530 passed / 20 failed, 32 packages, 0 mismatches.

  • Every Layer 1 failure on both sides is depuuids ⊆ alluuids. That is the known gap for packages that depend on General.
  • This PR adds exactly 2 of them: MaridCodec depends on JSON3, and MaridTransport depends on HTTP. Layer 1 does not gate the exit code.

3. Controls proving Layer 2b is live (not vacuous):

  • Mutant: MaridIR repo set to evilcorp/marid gives rc=1 with MaridIR: Package.toml repo resolves to slug "evilcorp/marid", expected an owner in ("hyperpolymath", "metadatastician").
  • Unpatched validator (base ci/validate.jl) on this tree gives rc=1 with 9 owner mismatches. So the validator change is necessary, not cosmetic.

4. End-to-end install (fresh depot, Julia 1.10.10, clone of this branch at c7f9f64):

using Pkg
Pkg.Registry.add("General")
Pkg.Registry.add(Pkg.RegistrySpec(url = "<clone of feat/marid-tier1>"))
P = ["MaridIR", "MaridCodec", "MaridControl", "MaridCRDT", "MaridLive",
     "MaridRaft", "MaridStorage", "MaridTransport", "MaridArango"]
Pkg.add(P)
for p in P; @eval using $(Symbol(p)); println("LOADED ", p); end

Result: rc=0. All nine resolve at v0.1.0 ([01a115ae] … [01a115ba]), precompile, and load (9 × LOADED). The General deps come from General: JSON3 for MaridCodec, and HTTP v1.11.0 for MaridTransport.


🤖 Generated with Claude Code

https://claude.ai/code/session_01WPSJ7fBhVAMcpSffCBWUDo
https://claude.ai/code/session_013omQK26s4uDjJMkdqNEvEG

…21/D322)

Register MaridArango, MaridCodec, MaridControl, MaridCRDT, MaridIR,
MaridLive, MaridRaft, MaridStorage and MaridTransport at 0.1.0 from the
metadatastician/marid monorepo (subdir = "packages/<Pkg>", commit
fd139f763a306a7e2eca60d96ea1a1a9f77c1e71, the UUIDv8 profile-T re-mint
merged as marid#78).

M/<Pkg>/{Package,Versions,Compat,Deps}.toml are LocalRegistry 0.5.7
output, unchanged. Every git-tree-sha1 equals
`git rev-parse fd139f7:packages/<Pkg>`. Registry.toml gains only the nine
package lines; LocalRegistry's whole-file re-sort by UUID was not taken,
so the diff stays at +9 there.

ci/validate.jl Layer 2b: a package's Package.toml repo may now be owned
by hyperpolymath or metadatastician (ALLOWED_PACKAGE_OWNERS). The
registry's own repo must still be hyperpolymath. Also move the
check_repo_slug! docstring onto its function (it sat on
extract_github_slug) and give extract_github_slug its own.

README package table, CHANGELOG and REGISTRY-POLICY updated to match.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WPSJ7fBhVAMcpSffCBWUDo
Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
@coderabbitai

coderabbitai Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: f296b7e7-5bc3-4d63-baa2-151ed00ff359
📥 Commits

Reviewing files that changed from the base of the PR and between 9e4dc83 and c7f9f64.

📒 Files selected for processing (41)
  • CHANGELOG.adoc
  • M/MaridArango/Compat.toml
  • M/MaridArango/Deps.toml
  • M/MaridArango/Package.toml
  • M/MaridArango/Versions.toml
  • M/MaridCRDT/Compat.toml
  • M/MaridCRDT/Deps.toml
  • M/MaridCRDT/Package.toml
  • M/MaridCRDT/Versions.toml
  • M/MaridCodec/Compat.toml
  • M/MaridCodec/Deps.toml
  • M/MaridCodec/Package.toml
  • M/MaridCodec/Versions.toml
  • M/MaridControl/Compat.toml
  • M/MaridControl/Deps.toml
  • M/MaridControl/Package.toml
  • M/MaridControl/Versions.toml
  • M/MaridIR/Compat.toml
  • M/MaridIR/Deps.toml
  • M/MaridIR/Package.toml
  • M/MaridIR/Versions.toml
  • M/MaridLive/Compat.toml
  • M/MaridLive/Deps.toml
  • M/MaridLive/Package.toml
  • M/MaridLive/Versions.toml
  • M/MaridRaft/Compat.toml
  • M/MaridRaft/Deps.toml
  • M/MaridRaft/Package.toml
  • M/MaridRaft/Versions.toml
  • M/MaridStorage/Compat.toml
  • M/MaridStorage/Deps.toml
  • M/MaridStorage/Package.toml
  • M/MaridStorage/Versions.toml
  • M/MaridTransport/Compat.toml
  • M/MaridTransport/Deps.toml
  • M/MaridTransport/Package.toml
  • M/MaridTransport/Versions.toml
  • README.adoc
  • Registry.toml
  • ci/validate.jl
  • docs/REGISTRY-POLICY.adoc
 ___________________________________________________
< What happens in code review stays in code review. >
 ---------------------------------------------------
  \
   \   (\__/)
       (•ㅅ•)
       /   づ
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sonarqubecloud

sonarqubecloud Bot commented Oct 9, 2026

Copy link
Copy Markdown

@hyperpolymath
hyperpolymath marked this pull request as ready for review October 9, 2026 00:17
@hyperpolymath
hyperpolymath merged commit 7c52894 into main Oct 9, 2026
23 of 28 checks passed
@hyperpolymath
hyperpolymath deleted the feat/marid-tier1 branch October 9, 2026 00:17
hyperpolymath added a commit that referenced this pull request Oct 9, 2026
Registry.toml: keep this branch's re-minted LowLevel binding
(01a11d29-d884-…) and main's nine Marid entries.
CHANGELOG.adoc [Unreleased] Added: keep both sides' entries.

Validated on the merged tree: ci/validate.jl rc=0, 41 packages, custom
checks 0 errors / 0 warnings; Layer 1's failure set equals main
7c52894's apart from InvestigativeJournalist -> InvestigativeJournalism.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016XJoh8YA2sCWQmq93CF8RX
hyperpolymath added a commit that referenced this pull request Oct 9, 2026
#109 shipped the Layer 2b widening (EXPECTED_SLUG_OWNER for the
registry's own repo, ALLOWED_PACKAGE_OWNERS for packages), so this
branch drops its parallel constants and takes main's ci/validate.jl,
docs/REGISTRY-POLICY.adoc and CHANGELOG.adoc. What remains:

- docs/decisions/0003-package-repos-in-metadatastician.adoc, rewritten to
  record the decision #109 implemented, under main's names;
- the set of allowed package owners is closed: adding an organisation
  takes an ADR (REGISTRY-POLICY, and the comment on
  ALLOWED_PACKAGE_OWNERS);
- one CHANGELOG [Unreleased] Added entry for the ADR.

No code change: validate.jl differs from main only in that comment.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016XJoh8YA2sCWQmq93CF8RX
hyperpolymath added a commit that referenced this pull request Oct 9, 2026
…003 (#110)

<!-- SPDX-License-Identifier: CC-BY-SA-4.0 -->
## Summary

#109 registered the nine Marid Tier-1 packages and, in the same change,
widened `ci/validate.jl` Layer 2b so a package `repo` may be owned by
`hyperpolymath` **or** `metadatastician`. It carried no ADR. This PR
adds that ADR. It records the decision #109 implemented and makes one
rule explicit: the set of allowed owners is **closed**, so adding an
organisation takes another ADR.

It contains **no code change**. `ci/validate.jl` differs from `main`
only in the comment on `ALLOWED_PACKAGE_OWNERS`.

On 2026-10-09 the owner ruled that the metadatastician widening be
recorded in its own PR with ADR 0003. This PR was opened before #109
merged, with its own implementation. When #109 landed first, I merged
`main` in, kept main's code (`EXPECTED_SLUG_OWNER`,
`ALLOWED_PACKAGE_OWNERS`, `allowed_package_owner`) and dropped my
parallel constants. What remains is the record.

It changes registry policy text, so it needs BDFL review. **Automerge is
not armed.**

> [!NOTE]
> **Merge order:** none. `git merge-tree` of this head against #107's
head `b1563013` is clean (rc=0), so the two land in either order. ADR
numbers do not collide: #107 carries ADR 0002 and this PR carries 0003.

## Changes

- **`docs/decisions/0003-package-repos-in-metadatastician.adoc`** (new):
  - context: D54-A, plus D321 (stage 1 of D67-A on marid#21) and D322;
  - three decisions:
    1. packages may be owned by either organisation;
    2. the set is closed;
    3. Registry.toml's own `repo` stays `hyperpolymath`;
  - three alternatives rejected;
- the consequences. The ADR names #109 / `7c52894` as the
implementation.
- **`docs/REGISTRY-POLICY.adoc`**: one sentence after the Layer 2b
paragraph says the set is closed and links ADR 0003.
- **`ci/validate.jl`**: the comment on `ALLOWED_PACKAGE_OWNERS` gains
the same sentence. No executable line changes.
- **`CHANGELOG.adoc`** [Unreleased] → Added: one entry for the ADR,
directly below #109's Marid entry.

## 📌 New pins

- **Head SHA:** **`8d7eeb362b4b676b27eae1abfffea401af97bf2d`** (a signed
merge of `main` `7c52894`; this branch's other commit, `a4a4bef`, is
signed too).
- **Action pins:** none. No workflow, `actions.lock`, lockfile or
container digest changes.

## RSR Quality Checklist

### Required

- [x] No banned language patterns: AsciiDoc, plus one comment in an
existing Julia file.
- [x] SPDX license headers on new files: the ADR has `CC-BY-SA-4.0`,
matching ADR 0001.
- [x] No secrets, credentials or `.env` files.
- [ ] CI is green: **not entirely**. Three non-required checks are red
on `main` at `7c52894` too (and at `9e4dc83` before it), so this PR does
not cause them. They are deferred below.

### Deferred checks (§5c)

- `actions.lock is in sync with the workflow YAML`: deferred to #108.
Dependabot #106 bumped `smtp-notify-action` to v0.5.0 without refreshing
`.github/workflows/actions.lock`.
- `governance / Allowlist Preflight`: deferred to #105. `GH_TOKEN` is
empty in the step, so it reports `could not read live Actions
permissions`.
- `governance / Workflow security linter`: deferred to #105.
`scripts/update-actions-lock.sh: No such file or directory`, exit 127.

### As Applicable — Registry Changes

- [ ] `Registry.toml` index updated: N/A. No package is added, removed
or rebound.
- [x] Per-package TOMLs consistent: the validator reports 0 custom
errors on this branch (Testing below).
- [ ] Upstream package meets the quality bar: N/A. No package is
registered here.
- [ ] Upstream tag exists and matches: N/A. No version is registered
here.

### As Applicable — Documentation / Infra Changes

- [ ] `.machine_readable/6a2/*.a2ml`: N/A. A2ML is retired estate-wide
(D99/D269c), so no `.a2ml` file is created or edited.
- [ ] `TOPOLOGY.md`: N/A. No architectural change.
- [x] Changelog updated. This repo's file is `CHANGELOG.adoc`.
- [ ] Wiki updated: N/A. The wiki does not describe Layer 2b.

## Testing

Every run is `ci/validate.jl <tree>` on Julia 1.10.10 with RegistryCI
v11.0.0, against a `git ls-files` copy of this head. Each copy is run
with `GIT_CEILING_DIRECTORIES` set, so no enclosing repository's
`origin` leaks into the slug comparison.

| Tree | Result |
|---|---|
| This head (41 packages, nine `metadatastician/marid`) | **rc=0**.
Custom checks 0 errors / 0 warnings |
| Same, MaridIR `repo` → `evilcorp/marid` (planted negative) | **rc=1**:
`MaridIR: Package.toml repo resolves to slug "evilcorp/marid", expected
an owner in ("hyperpolymath", "metadatastician")` |
| ADR claim "every package registered before #109 is
`hyperpolymath`-owned" | `repo` owners of the 32 non-Marid
`Package.toml` files on `main`: **32 × `hyperpolymath`** |
| ADR claim "the old check reported one mismatch per Marid package" |
#109's tree with `main`'s pre-#109 validator (`9e4dc83`): **rc=1, 9
owner mismatches** |

The only executable file touched is `ci/validate.jl`, and only in a
comment. `standards/.githooks/docstring-scan.sh` skips Julia files, so
it gives no verdict here, and no function is added or changed.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_016XJoh8YA2sCWQmq93CF8RX

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant