Repository navigation
docs(governance): adopt metadatastician-governance project binding - #33
Conversation
IDApTIK is a member repo of The Metadatastician estate but lacked AGENTS.md, CONTRIBUTING.adoc, SECURITY.md, and the local project-binding suite that metadatastician-governance's templates prescribe for member repos. Adds those, filled in with IDApTIK-specific detail (DCO route, FFI/network sensitive areas, draft assurance status), and points 0-AI-MANIFEST.a2ml at them. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- .github/workflows/codeql.yml had an uncommitted local change (never landed on main) adding a SonarCloud step with broken YAML indentation, no auth, an unpinned @master ref, and placement inside the per-language CodeQL matrix (causing duplicate runs). Rebuilds it as its own single-instance job: checkout with fetch-depth 0, pinned action SHA, SONAR_TOKEN/GITHUB_TOKEN wired via env. - PROJECT-GOVERNANCE-BINDING.adoc/.a2ml pinned the wrong upstream: the hyperpolymath/standards hash that metadatastician-governance itself pins, rather than metadatastician-governance's own commit, which is the immediate authority layer this binding adopts per AUTHORITY-MAP.adoc. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Pushed a follow-up commit addressing the ultrareview findings on the pre-existing uncommitted `codeql.yml` change (broken YAML indent, unauthenticated/unpinned/duplicated SonarCloud step):
Also corrected `governance-upstream-hash` in the project binding: it was pinned to `hyperpolymath/standards`' hash (metadatastician-governance's own upstream) instead of metadatastician-governance's own commit, which is the immediate authority layer a member-repo binding adopts per `AUTHORITY-MAP.adoc`. Note: the original broken SonarCloud addition only existed as an uncommitted local diff on `main` (never committed) — it's superseded by this branch; safe to discard with `git checkout -- .github/workflows/codeql.yml` on main once this merges. |
|
Correction to my last comment: the `governance-upstream-hash` change should not be read as a settled fix — I want to flag the ambiguity rather than claim it's resolved. `AUTHORITY-MAP.adoc` labels the row `Upstream` as `hyperpolymath/standards` (not metadatastician-governance), and both `ADOPTION-AND-DEVIATIONS.adoc` and metadatastician-governance's own `AGENTS.md` use "upstream" the same way — pointing at `2ccc38e...`, the original value. My case for switching to metadatastician-governance's own commit (`6d87eef...`) was an interpretation of the authority-layering (binding adopts the immediate parent layer), not something the repo states outright. IDApTIK is the first member repo to fill in this template (no existing binding elsewhere in the estate to match conventions against), so whichever value is correct here effectively sets the convention — that should be a maintainer call, not an agent guess baked in silently. `PROJECT-GOVERNANCE-BINDING.adoc`'s prose now documents both hashes and the relationship between them either way, so nothing is lost regardless of which the maintainer prefers. But please treat `governance-upstream-hash` in `.machine_readable/PROJECT-BINDING.a2ml` (currently `6d87eef...`) as unconfirmed — confirm intent (metadatastician-governance's commit vs. hyperpolymath/standards' commit) before treating this binding as final. |
Maintainer clarified: metadatastician-governance is the estate's governance layer (decision-making, authority, contribution process); hyperpolymath/standards covers estate content standards, a separate concern. governance-upstream-hash correctly points at metadatastician-governance's commit. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Fills the gap flagged in the codeql.yml fix: the new sonarcloud job needs this to run. Follows the estate's established pattern (see cadastra/sonar-project.properties, boj-server/sonar-project.properties) -- sonar.organization=hyperpolymath is the umbrella SonarCloud org used across the estate regardless of GitHub org, with projectKey following the hyperpolymath_<repo-name> convention actually customized per repo (not the stale hyperpolymath_rsr-template-repo copy-paste seen in some template-derived repos). Excludes languages without a SonarCloud analyser (Elixir, Nickel) and build/vendor artefacts. Still needs a SONAR_TOKEN repository secret and a SonarCloud-side project registration before the job will actually pass. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ymath Verified against the SonarCloud API: both orgs exist and are distinct -- "metadatastician" (The Metadatastician) and "hyperpolymath" (Jonathan D.A. Jewell, personal). IDApTIK is a metadatastician-org repo, so its project key is metadatastician_IDApTIK. The previous hyperpolymath_* value was extrapolated from other sonar-project.properties in the estate, several of which carry a stale hyperpolymath_rsr-template-repo key from template copy-paste. Notably cadastra's README badge already points at metadatastician_cadastra while its own properties file still says hyperpolymath_rsr-template-repo -- i.e. the properties files are the drifted copy, not the badges. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Estate-wide SonarCloud config sweep (context for the
|
| Org | Status |
|---|---|
hyperpolymath |
618 public projects — real and in active use |
metadatastician |
exists, 0 public projects — nothing provisioned yet |
Note the asymmetry: hyperpolymath is where all 618 real projects live and what every properties file in the estate declares. metadatastician is empty. So "metadatastician-org GitHub repo ⇒ metadatastician SonarCloud org" is a hypothesis, resting on a single README badge in cadastra that points at a project which does not exist. I cannot confirm it without a token (private projects are invisible to me) or your intent. Treat the row below as "needs a decision", not "needs a fix".
Possible wrong organisation — confirm intended org first
| Repo | Declared | If the metadatastician org is intended |
|---|---|---|
metadatastician/cadastra |
hyperpolymath / hyperpolymath_rsr-template-repo |
metadatastician / metadatastician_cadastra |
cadastra's README.adoc badge points at metadatastician_cadastra while its sonar-project.properties carries the template key. One of the two is wrong; which one depends on the org decision above. (Either way the template key is wrong for cadastra.) The badge target does not exist, so the badge currently renders as unknown.
Stale template key hyperpolymath_rsr-template-repo copy-pasted into unrelated repos
All of these scan into one shared project (SonarCloud display name: -REPO-), so their results are commingled:
hyperpolymath/systemet— its ownhyperpolymath_systemetproject exists; findings are landing in the wrong projecthyperpolymath/rsr-julia-library-template-repo— its own project exists; same problemhyperpolymath/vocarium— no dedicated project yethyperpolymath/anytype— no dedicated project yethyperpolymath/chronicles-of-slavia— no dedicated project yethyperpolymath/rsr-template-how-to— no dedicated project yethyperpolymath/-REPO-andhyperpolymath/rsr-template-repoboth declare this key; the project's display name is-REPO-, so which of the two legitimately owns it is a maintainer call
Malformed key
hyperpolymath/v3-templaterdeclaressonar.projectKey=v3-templater(no org prefix). That key does not exist;hyperpolymath_v3-templaterdoes. One-line fix.
Correct already (key exists and matches the repo): boj-server, boj-server-cartridges, cicd-squabbler, supernorma, hermeneia, resource-record-fluctuator, academic-workflow-suite.
Caveat: all API queries were unauthenticated, so private SonarCloud projects would not be visible. "Does not exist" here means "not publicly visible".
## Summary #33 merged with `sonar-project.properties` asserting the `metadatastician` SonarCloud org as settled fact. It isn't — it's an inference, and the evidence actually leans the other way. This comment-only change records it honestly. **No config values change.** ## Why Verified against the public SonarCloud API: | Org | Public projects | |---|---| | `hyperpolymath` | 618 — and the org declared by *every* `sonar-project.properties` in the estate | | `metadatastician` | 0 | Neither `metadatastician_IDApTIK` nor `hyperpolymath_IDApTIK` exists, so nothing is broken either way today. But the whole case for the `metadatastician` direction is a single README badge in `cadastra` pointing at a project that does not exist. Two readings I can't distinguish without a token or your intent: - **A** — GitHub org determines SonarCloud org; `metadatastician` is intended, just unprovisioned. (What the merged file assumes.) - **B** — the estate consolidates under the `hyperpolymath` SonarCloud org, and cadastra's badge is the aspirational mistake rather than its properties file. #33 adopted the estate's **evidence-status honesty** profile, which says assumed ≠ verified. The merged comment didn't honour it. This does. If the answer is **B**, the fix is `sonar.organization=hyperpolymath` / `sonar.projectKey=hyperpolymath_IDApTIK`. ## Test plan - [x] Comment-only — `sonar.organization` and `sonar.projectKey` values are unchanged - [ ] Maintainer to confirm the intended SonarCloud org, then provision the project + `SONAR_TOKEN` 🤖 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Correction to the sweep above — and the actual root causeTwo things in my sweep comment need fixing, both found by checking the CI logs rather than reasoning from the config files. 1. I said misdirected scans are "commingling" results. They are not. I inferred that from the config without checking whether the scans run. They don't: The scanner aborts at authentication, before submitting anything. So the wrong keys are a latent problem, not an active one. Nothing is being corrupted today. 2. The real root cause is the missing
Only the two repos with working keys have tokens. Every other SonarQube workflow in the estate has been failing on every run. ( This makes the ordering matter. Adding Follow-up PRs opened for the two unambiguous cases:
Removed from the list: Still needing a decision from you, not a patch: |
) ## Summary `sonar-project.properties` contradicted itself. Comment-only fix — **`sonar.organization` and `sonar.projectKey` are unchanged**. PR #35 added a comment block recording the SonarCloud organisation as an unverified assumption, with `metadatastician` as the guess. PR #42 then decided the organisation as `hyperpolymath` and changed the values — but not the comment. The two have disagreed on `main` since 2026-07-23. Two concrete defects: 1. **Line 3** pointed at `id=metadatastician_IDApTIK` while line 16 declares `sonar.projectKey=hyperpolymath_IDApTIK`. The header URL led to the wrong project. 2. **Lines 6–14** still said `ORG IS ASSUMED, NOT VERIFIED -- maintainer to confirm before provisioning`, and argued that *"if the estate in fact consolidates under the hyperpolymath SonarCloud org, this should read hyperpolymath / hyperpolymath_IDApTIK instead"* — describing as a hypothetical the exact two values printed immediately below it. Anyone reading the file was told the question was open when it had been settled four days earlier. Both were mine, from #33/#35. Sorry for the noise. ## What the comment says now - The organisation is `hyperpolymath`, decided in #42, closing #38 — stated as fact, with the reasoning that the GitHub-org boundary deliberately does not mirror the SonarCloud one (the thing I originally got wrong). - The two durable estate warnings are kept: the stale `hyperpolymath_rsr-template-repo` key in template-derived repos, and the ordering rule — **fix a wrong `projectKey` before adding `SONAR_TOKEN`**, because without the token a scan fails at authentication and submits nothing, whereas with the token and a wrong key it silently reports into another project. ## A deliberate choice about wording The original comment rotted because it recorded **transient status** ("assumed, not verified", "confirm before provisioning") in a committed file, where it then outlived the decision. So this version deliberately records only durable facts. Notably, it does **not** say the project is unprovisioned or the token unset — both true right now (verified: `hyperpolymath_IDApTIK` returns not-found, no `SONAR_TOKEN` on this repo), and both things that stop being true the moment you set them up. Those belong in #38 and the dev-note, not here. The file states the *requirement* instead, which stays accurate either way. ## Test plan - [x] `git diff` confirms no `sonar.*` value line changed — comments only - [x] Header project URL now matches the declared `sonar.projectKey` - [x] No remaining claim that the organisation is undecided - [x] Branch is based on current `main` (`9e86676`) Unrelated and still outstanding: `metadatastician/cadastra` declares `hyperpolymath_rsr-template-repo` while its README badge says `metadatastician_cadastra`. Now that the org is settled, its config org is right, its key is wrong, and the badge should become `hyperpolymath_cadastra`. Happy to do that separately. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Summary
metadatastician-governance), which expects each member repo to carry baseline community-health files plus a completed local project binding. IDApTIK had neither.github:metadatastician/IDApTIKandlocal:meta-repos/IDApTIK) are the same repository seen by two scanners — no divergence to reconcile.metadatastician-governance/ADOPTION-AND-DEVIATIONS.adocis estate-wide/abstract with no per-repo table — adoption is recorded locally in the member repo instead, which is what this PR does.Changes
AGENTS.md,CONTRIBUTING.adoc(DCO route),SECURITY.md(disclosure route).metadatastician-governance/templates/*, filled in for IDApTIK:PROJECT-GOVERNANCE-BINDING.adoc,PROJECT-ASSURANCE-PROFILE.adoc,PROJECT-CONTRIBUTION-PROFILE.adoc,.machine_readable/PROJECT-BINDING.a2ml.0-AI-MANIFEST.a2mlread-first list to include the new docs.Assurance status is set to
draftand review dates are flagged as placeholders (2027-01-20) since no formal review has happened yet — the maintainer should revisit these.Also fixed, in follow-up commits: a pre-existing uncommitted local change to
.github/workflows/codeql.yml(broken YAML indentation that would have failed every CodeQL run, plus an unauthenticated/unpinned/duplicated SonarCloud step) — rebuilt as its own single-instance job, plus a newsonar-project.properties.governance-upstream-hashambiguity resolved by maintainer (see PR comments): metadatastician-governance is the estate's governance layer,hyperpolymath/standardscovers estate content standards — a separate concern. The field correctly points at metadatastician-governance's own commit (6d87eef...).SonarCloud org: set to
metadatastician— inference, needs maintainer confirmationsonar-project.propertiesinitially saidsonar.organization=hyperpolymath/sonar.projectKey=hyperpolymath_IDApTIK, extrapolated from sibling estate repos.ed476a3changes it tometadatastician/metadatastician_IDApTIK. This is a best inference, not a verified fact — please confirm the intended org before provisioning.What is actually verified, against the public SonarCloud API:
metadatastician("The Metadatastician") andhyperpolymath("Jonathan D.A. Jewell", personal).hyperpolymathhas 618 public projects and is the org used by everysonar-project.propertiesin the estate.metadatasticianhas 0 public projects.hyperpolymath_IDApTIKnormetadatastician_IDApTIKexists. No scan works today either way, so this change breaks nothing — but it also isn't confirmed to be right.The reasoning for
metadatasticianis that IDApTIK is a metadatastician-org GitHub repo, andcadastra(also metadatastician-org) carries ametadatastician_cadastraREADME badge. That badge is the only evidence for this direction, and it points at a project that doesn't exist.Two readings I cannot distinguish from here:
metadatasticianorg is intended and simply not provisioned yet. (What this PR assumes.)hyperpolymathSonarCloud org, and cadastra's badge is the aspirational mistake rather than its properties file.Discriminating between them needs a SonarCloud token (to see private projects) or your intent. I have neither, so per this repo's own newly-adopted evidence-status honesty principle this is recorded as assumed, not verified. If the answer is B, revert
ed476a3and usehyperpolymath_IDApTIK.(All API queries were unauthenticated, so private SonarCloud projects would not be visible.)
Test plan
git statusshows only the intended new/changed files.machine_readable/PROJECT-BINDING.a2mlparses as valid TOML.adocfiles structurally match the metadatastician-governance templates.github/workflows/codeql.ymlparses as valid YAML after the SonarCloud fixgovernance-upstream-hashintent confirmed by maintainer — metadatastician-governance's commit, not hyperpolymath/standards'governance-upstream-hash6d87eef…verified to be a real commit inmetadatastician-governance, and is currently itsHEAD("sweep4: add C-A-G-M files")metadatasticianvshyperpolymath) — see above; currently an unverified inferenceSONAR_TOKENrepository secret and create the project once the org is settled — nometadatastician_*project exists today, so the new job will fail until thenNote: workflow file placement
The SonarCloud scan is added as a job inside
.github/workflows/codeql.yml, because that is where the broken pre-existing step lived. The estate convention elsewhere (cadastra,systemet,hermeneia) is a standalone.github/workflows/sonarqube.yml. Since alignment is the point of this PR, you may want it split out — flagging rather than reworking, as it changes nothing functionally.🤖 Generated with Claude Code