Skip to content

docs(governance): adopt metadatastician-governance project binding - #33

Merged
hyperpolymath merged 6 commits into
mainfrom
worktree-idaptik-governance-alignment
Jul 21, 2026
Merged

hyperpolymath merged 6 commits into
mainfrom
worktree-idaptik-governance-alignment

Conversation

@hyperpolymath

@hyperpolymath hyperpolymath commented Jul 21, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • IDApTIK is a member repo of The Metadatastician estate (metadatastician-governance), which expects each member repo to carry baseline community-health files plus a completed local project binding. IDApTIK had neither.
  • Confirmed the estate-triage report's two IDApTIK entries (github:metadatastician/IDApTIK and local:meta-repos/IDApTIK) are the same repository seen by two scanners — no divergence to reconcile.
  • Confirmed metadatastician-governance/ADOPTION-AND-DEVIATIONS.adoc is estate-wide/abstract with no per-repo table — adoption is recorded locally in the member repo instead, which is what this PR does.

Changes

  • Adds AGENTS.md, CONTRIBUTING.adoc (DCO route), SECURITY.md (disclosure route).
  • Adds the local project-binding suite from metadatastician-governance/templates/*, filled in for IDApTIK: PROJECT-GOVERNANCE-BINDING.adoc, PROJECT-ASSURANCE-PROFILE.adoc, PROJECT-CONTRIBUTION-PROFILE.adoc, .machine_readable/PROJECT-BINDING.a2ml.
  • Updates 0-AI-MANIFEST.a2ml read-first list to include the new docs.

Assurance status is set to draft and 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 new sonar-project.properties.

governance-upstream-hash ambiguity resolved by maintainer (see PR comments): metadatastician-governance is the estate's governance layer, hyperpolymath/standards covers 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 confirmation

sonar-project.properties initially said sonar.organization=hyperpolymath / sonar.projectKey=hyperpolymath_IDApTIK, extrapolated from sibling estate repos. ed476a3 changes it to metadatastician / 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:

  • Two distinct SonarCloud organisations exist: metadatastician ("The Metadatastician") and hyperpolymath ("Jonathan D.A. Jewell", personal).
  • hyperpolymath has 618 public projects and is the org used by every sonar-project.properties in the estate. metadatastician has 0 public projects.
  • Neither hyperpolymath_IDApTIK nor metadatastician_IDApTIK exists. No scan works today either way, so this change breaks nothing — but it also isn't confirmed to be right.

The reasoning for metadatastician is that IDApTIK is a metadatastician-org GitHub repo, and cadastra (also metadatastician-org) carries a metadatastician_cadastra README 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:

  • A — GitHub org determines SonarCloud org; the metadatastician org is intended and simply not provisioned yet. (What this PR assumes.)
  • B — everything consolidates under the hyperpolymath SonarCloud 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 ed476a3 and use hyperpolymath_IDApTIK.

(All API queries were unauthenticated, so private SonarCloud projects would not be visible.)

Test plan

  • git status shows only the intended new/changed files
  • .machine_readable/PROJECT-BINDING.a2ml parses as valid TOML
  • New .adoc files structurally match the metadatastician-governance templates
  • .github/workflows/codeql.yml parses as valid YAML after the SonarCloud fix
  • governance-upstream-hash intent confirmed by maintainer — metadatastician-governance's commit, not hyperpolymath/standards'
  • governance-upstream-hash 6d87eef… verified to be a real commit in metadatastician-governance, and is currently its HEAD ("sweep4: add C-A-G-M files")
  • Existence of both SonarCloud orgs checked against the public API
  • Maintainer to confirm the intended SonarCloud org (metadatastician vs hyperpolymath) — see above; currently an unverified inference
  • Maintainer review of remaining governance-binding field values (decision authority, sensitive areas, review date)
  • Maintainer to add the SONAR_TOKEN repository secret and create the project once the org is settled — no metadatastician_* project exists today, so the new job will fail until then

Note: 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

hyperpolymath and others added 2 commits July 21, 2026 04:55
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>
@hyperpolymath

Copy link
Copy Markdown
Contributor Author

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):

  • Rebuilt SonarCloud as its own single-instance job (checkout with `fetch-depth: 0`, pinned to `SonarSource/sonarqube-scan-action@22918119...` / v8.2.1, `SONAR_TOKEN`/`GITHUB_TOKEN` wired via `env`) instead of a broken, unauthenticated step inside the per-language CodeQL matrix.
  • Still needed before this job will succeed: a `SONAR_TOKEN` repo secret and a `sonar-project.properties` (or equivalent `with:` inputs) — neither exists yet. Maintainer to add.

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.

@hyperpolymath

Copy link
Copy Markdown
Contributor Author

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.

hyperpolymath and others added 3 commits July 21, 2026 05:14
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>
@hyperpolymath

hyperpolymath commented Jul 21, 2026 •

Copy link
Copy Markdown
Contributor Author

Estate-wide SonarCloud config sweep (context for the ed476a3 org fix)

While correcting IDApTIK's sonar-project.properties I swept every sonar-project.properties under ~/developer and checked each declared key against the public SonarCloud API. This is informational — nothing outside IDApTIK is changed by this PR. Each fix below needs its own PR in its own repo.

Verified org facts

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 own hyperpolymath_systemet project exists; findings are landing in the wrong project
  • hyperpolymath/rsr-julia-library-template-repo — its own project exists; same problem
  • hyperpolymath/vocarium — no dedicated project yet
  • hyperpolymath/anytype — no dedicated project yet
  • hyperpolymath/chronicles-of-slavia — no dedicated project yet
  • hyperpolymath/rsr-template-how-to — no dedicated project yet
  • hyperpolymath/-REPO- and hyperpolymath/rsr-template-repo both 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-templater declares sonar.projectKey=v3-templater (no org prefix). That key does not exist; hyperpolymath_v3-templater does. 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".

@hyperpolymath
hyperpolymath marked this pull request as ready for review July 21, 2026 12:07
@hyperpolymath
hyperpolymath merged commit 42acac4 into main Jul 21, 2026
5 of 7 checks passed
@hyperpolymath
hyperpolymath deleted the worktree-idaptik-governance-alignment branch July 21, 2026 12:07
hyperpolymath added a commit that referenced this pull request Jul 21, 2026
## 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>
@hyperpolymath

Copy link
Copy Markdown
Contributor Author

Correction to the sweep above — and the actual root cause

Two 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:

SONAR_TOKEN:
##[warning]Running this GitHub Action without SONAR_TOKEN is not recommended
ERROR Not authorized or project not found. Please check the 'SONAR_TOKEN' environment
      variable, the 'sonar.projectKey' and 'sonar.organization' properties, ...

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 SONAR_TOKEN secret, which the key drift was masking.

Repo SONAR_TOKEN set? Key correct?
hyperpolymath/boj-server yes yes
hyperpolymath/cicd-squabbler yes yes
hyperpolymath/systemet no no
hyperpolymath/rsr-julia-library-template-repo no no
hyperpolymath/rsr-template-repo no n/a
metadatastician/cadastra no no

Only the two repos with working keys have tokens. Every other SonarQube workflow in the estate has been failing on every run. (hyperpolymath is a personal GitHub account, not an org, so there is no org-level secret to inherit — each repo needs its own.)

This makes the ordering matter. Adding SONAR_TOKEN to a repo that still carries the copied key would take it from "failing loudly" to "silently reporting into hyperpolymath_rsr-template-repo" — worse. Fix keys first, then add tokens.

Follow-up PRs opened for the two unambiguous cases:

Removed from the list: hyperpolymath/v3-templater is archived — workflows are disabled, so its malformed key is moot.

Still needing a decision from you, not a patch: cadastra (blocked on the org question above), and the repos with no SonarCloud project provisioned at all (vocarium, anytype, chronicles-of-slavia, rsr-template-how-to).

hyperpolymath added a commit that referenced this pull request Jul 27, 2026
)

## 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)
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