From d12d7d117506a3f2505671ef4e66e5fe8684f0a4 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 10 Nov 2026 11:25:00 +0000 Subject: [PATCH 1/6] Regenerate CLAUDE.md from source: fix corrupted language-policy line MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The generated arrival-pack region in CLAUDE.md had drifted from its source (`.machine_readable/arrival-pack/arrival-pack.ncl`), on two counts: 1. A stray Nix→Guix replacement had corrupted the estate-common language policy line to the self-contradictory "Deny: **Guix** … (Guix, not Guix.)" — which also inverted the policy (it denied the estate's own build tool). The source `.ncl` was never corrupted; only the generated CLAUDE.md was. 2. The repo-specific block was stale (phase design / 10%) versus the current descriptiles (STATE: phase implementation / 40%). Regenerated the marked region deterministically from the current descriptiles via the repo's own `extract.sh` projection + the unchanged `arrival-pack.ncl` template (nickel/just unavailable here), so the output matches what `just claude-md` would emit — estate-common restored to "Deny: **Nix** … (Guix, not Nix.)", repo-specific block and provenance hashes refreshed. The hand-authored preamble outside the markers is untouched; diff is the generated region only. Drift-safe: a later `just claude-md` reproduces it. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01J1XmMC49T8sZ3uUuvrgB7y --- CLAUDE.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 25df501..2b54204 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,7 +6,7 @@ SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell - + # You are in the hyperpolymath estate — orient before acting @@ -50,7 +50,7 @@ The descriptive family (working name *descriptiles*) describes what-is; the **co - **Before you invent, rename, or consolidate anything: STOP and check the map + IS-NOT.** ## Estate language policy (overridable per-repo via AGENTIC) -Deny: **Guix, Node/npm, TypeScript, Python, Go, AGPL**. (Guix, not Guix.) +Deny: **Nix, Node/npm, TypeScript, Python, Go, AGPL**. (Guix, not Nix.) --- @@ -62,6 +62,6 @@ Deny: **Guix, Node/npm, TypeScript, Python, Go, AGPL**. (Guix, not Guix.) - **Where it sits** — pipeline position **kernel**; chain `systemet (theory) → anytype (kernel) → AffineScript (profile)`; coordination = `standards`. - **Constraints here** (AGENTIC) — fail-closed; evidence-per-step; no-silent-skip; rerun-after-fix; release-claim-requires-hard-pass. Never: banned langs (above), secrets, state files in repo root, AGPL. Details: `.machine_readable/bot_directives/{methodology,coverage,debt}.a2ml`. - **Golden path** (ANCHOR) — `just test && just quality` → Core tests pass; Quality gates pass; No unresolved critical security findings. -- **State** — phase design; maturity experimental; 10% complete; status active. +- **State** — phase implementation; maturity experimental; 40% complete; status active. - + From 8fc6d410a8fe51bc07cd365d6f84745771559a39 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 10 Nov 2026 12:33:48 +0000 Subject: [PATCH 2/6] Fill the conduct-report email in CODE_OF_CONDUCT.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Set the remaining contact placeholder {{CONDUCT_EMAIL}} to the owner-confirmed conduct@metadatastician.art, matching the estate's dedicated-address convention (security@metadatastician.art). The only residual {{CONDUCT_EMAIL}} is in .machine_readable/ai/PLACEHOLDERS.adoc — the token reference — which correctly keeps it. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01J1XmMC49T8sZ3uUuvrgB7y --- .github/CODE_OF_CONDUCT.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md index 9120adf..fb46e40 100644 --- a/.github/CODE_OF_CONDUCT.md +++ b/.github/CODE_OF_CONDUCT.md @@ -12,7 +12,7 @@ Replace all {{PLACEHOLDER}} values: anytype - Your project name hyperpolymath - GitHub/GitLab username or org anytype - Repository name - {{CONDUCT_EMAIL}} - Email for conduct reports + conduct@metadatastician.art - Email for conduct reports {{CONDUCT_TEAM}} - Name of conduct team/committee {{RESPONSE_TIME}} - Initial response SLA (e.g., 48 hours) 2026 - Current year @@ -140,7 +140,7 @@ If you experience or witness unacceptable behaviour, or have any other concerns, | Method | Details | Best For | |--------|---------|----------| -| **Email** | {{CONDUCT_EMAIL}} | Detailed reports, sensitive matters | +| **Email** | conduct@metadatastician.art | Detailed reports, sensitive matters | | **Private Message** | Contact any maintainer directly | Quick questions, minor issues | | **Anonymous Form** | [Link to form if available] | When you need anonymity | @@ -235,7 +235,7 @@ For contributors with elevated access (Perimeter 2 or 1): If you believe an enforcement decision was made in error: 1. **Wait 7 days** after the decision (cooling-off period) -2. **Email** {{CONDUCT_EMAIL}} with subject line "Appeal: [Original Report ID]" +2. **Email** conduct@metadatastician.art with subject line "Appeal: [Original Report ID]" 3. **Explain** why you believe the decision should be reconsidered 4. **Provide** any new information not previously available @@ -315,7 +315,7 @@ We thank these communities for their leadership in creating welcoming spaces. If you have questions about this Code of Conduct: - Open a [Discussion](https://github.com/hyperpolymath/anytype/discussions) (for general questions) -- Email {{CONDUCT_EMAIL}} (for private questions) +- Email conduct@metadatastician.art (for private questions) - Contact any maintainer directly --- From 35db720b41c6cd7f5b47da86d147459da33df820 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 10 Nov 2026 14:52:03 +0000 Subject: [PATCH 3/6] docs(claude-md): clarify JS runtime policy in estate language line MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The estate-common language line denied "Node/npm", which reads as npm being banned. Per 3-practice/LANGUAGE-POLICY.adoc §1.3 (owner ruling 2026-10-14) npm is not banned — it is the last resort in the order Bun > Deno > pnpm > npm, reached only when Bun AND Deno AND pnpm are all impossible. Node.js as a standalone runtime is simply superseded by Bun, which the ordering already captures, so "Node/npm" is dropped from the deny list and the preference order is stated explicitly. Edited the arrival-pack source (arrival-pack.ncl) and the generated ARRIVAL-PACK region (CLAUDE.md) together; the line is literal estate-common text, so no descriptile hashes change and the output matches `just claude-md`. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01J1XmMC49T8sZ3uUuvrgB7y --- .machine_readable/arrival-pack/arrival-pack.ncl | 2 +- CLAUDE.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.machine_readable/arrival-pack/arrival-pack.ncl b/.machine_readable/arrival-pack/arrival-pack.ncl index 252d2a3..4a85a8e 100644 --- a/.machine_readable/arrival-pack/arrival-pack.ncl +++ b/.machine_readable/arrival-pack/arrival-pack.ncl @@ -70,7 +70,7 @@ The descriptive family (working name *descriptiles*) describes what-is; the **co - **Before you invent, rename, or consolidate anything: STOP and check the map + IS-NOT.** ## Estate language policy (overridable per-repo via AGENTIC) -Deny: **Nix, Node/npm, TypeScript, Python, Go, AGPL**. (Guix, not Nix.) +Deny: **Nix, TypeScript, Python, Go, AGPL**. JS runtimes in preference order **Bun > Deno > pnpm > npm** — npm is last-resort, *not* banned (only when Bun *and* Deno *and* pnpm are all impossible). Packaging: **Guix**, not Nix. --- diff --git a/CLAUDE.md b/CLAUDE.md index 2b54204..e7fdd1f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -50,7 +50,7 @@ The descriptive family (working name *descriptiles*) describes what-is; the **co - **Before you invent, rename, or consolidate anything: STOP and check the map + IS-NOT.** ## Estate language policy (overridable per-repo via AGENTIC) -Deny: **Nix, Node/npm, TypeScript, Python, Go, AGPL**. (Guix, not Nix.) +Deny: **Nix, TypeScript, Python, Go, AGPL**. JS runtimes in preference order **Bun > Deno > pnpm > npm** — npm is last-resort, *not* banned (only when Bun *and* Deno *and* pnpm are all impossible). Packaging: **Guix**, not Nix. --- From 8c128ef899407caaa4da0421bb53b36e613d67ac Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 10 Nov 2026 15:03:56 +0000 Subject: [PATCH 4/6] chore(deed): add DRAFT anytype_chora.deed (Slice-2 prep) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stages the deed-era migration for owner review without wiring anything: the .machine_readable/6a2/ a2ml files stay live and authoritative. Translated field-for-field under the RULED mapping specs in standards 1-formats/deed/mappings/: - CLADE.a2ml -> (identity)(clade)(forges)(lineage)(status) [clade-to-repo-deed, RULED] - AGENTIC/NEUROSYM/PLAYBOOK.a2ml -> (agentic)(neurosym)(playbook) [family 4, RULED] Left untranslated, with in-file pointers to their specs: - META + ECOSYSTEM (family 2, PROPOSAL — not yet owner-ruled) - STATE (family 3 — state-v1-decision.adoc, A/B/C open) - 0-AI-MANIFEST (family 7 — ai-manifest-decision.adoc, option A unconfirmed) Two things the owner/registry must resolve, flagged in-file: - clade / are provisional, NOT in the estate 12-code taxonomy — gv-clade-index must assign/confirm before CLADE-003/P-5 can pass; - CLADE.a2ml has no [status]; :phase is backfilled from the declared lifecycle and marked as such, not a revalidated claim. Lint-clean against standards 1-formats/deed/tools/deed_lint.js (deed.abnf). Allowlisted in root-allow.txt so scripts/check-root-shape.sh stays green. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01J1XmMC49T8sZ3uUuvrgB7y --- .machine_readable/root-allow.txt | 1 + anytype_chora.deed | 90 ++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 anytype_chora.deed diff --git a/.machine_readable/root-allow.txt b/.machine_readable/root-allow.txt index f3b57b8..01201a9 100644 --- a/.machine_readable/root-allow.txt +++ b/.machine_readable/root-allow.txt @@ -17,6 +17,7 @@ AUDIT.adoc EXPLAINME.adoc AFFIRMATION.adoc # dated/signed honesty snapshot (README/EXPLAINME/AFFIRMATION trio) 0-AI-MANIFEST.a2ml # thin pointer to .machine_readable/0.1-AI-MANIFEST.a2ml +anytype_chora.deed # DRAFT (Slice-2 prep): the canonical _chora.deed root home per the estate deed model. Carries the RULED-family translation (CLADE, AGENTIC/NEUROSYM/PLAYBOOK) of the 6a2 descriptiles; lint-clean against standards deed.abnf. Inert — the 6a2 a2ml stays authoritative until the migration wave + kyX land. GOVERNANCE.adoc # governance model (validator accepts root or docs/governance/) MAINTAINERS.adoc # maintainer roster CONTRIBUTING.md # REQUIRED AT ROOT by scorecard-enforcer/openssf-compliance/quality CI (test -f, no .github fallback). The fuller copy in .github/ is GitHub's auto-discovery convention; dedupe is an owner decision (would need those CI checks updated to accept .github/). diff --git a/anytype_chora.deed b/anytype_chora.deed new file mode 100644 index 0000000..b1ab6a3 --- /dev/null +++ b/anytype_chora.deed @@ -0,0 +1,90 @@ +;; SPDX-License-Identifier: MPL-2.0 +;; SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell (hyperpolymath) +;; +;; DRAFT (Slice-2 prep) — not yet wired; the .machine_readable/6a2/ a2ml files +;; stay live and authoritative until the estate wave + kyX (D313) land. Clauses +;; are translated field-for-field from those descriptiles under the RULED mapping +;; specs in standards 1-formats/deed/mappings/ (the only authority a family +;; translation may cite): +;; CLADE.a2ml -> (identity)(clade)(forges)(lineage)(status) +;; per clade-to-repo-deed.adoc [RULED 2026-10-27] +;; AGENTIC/NEUROSYM/PLAYBOOK.a2ml -> (agentic)(neurosym)(playbook) +;; per agentic-neurosym-playbook-to-repo-deed.adoc [RULED 2026-10-27] +;; NOT translated here, pending their specs/rulings (kept live in 6a2/): +;; META.a2ml + ECOSYSTEM.a2ml — family 2, meta-ecosystem-to-repo-deed.adoc +;; (PROPOSAL, not yet owner-ruled) +;; STATE.a2ml — family 3, state-v1-decision.adoc (A/B/C open) +;; 0-AI-MANIFEST.a2ml — family 7, ai-manifest-decision.adoc (option A +;; unconfirmed) +(repo-deed + :schema-version "1.0.0" + :canonical-name "anytype" + :repo-uuid #u8"gv-clade-index:github.com/hyperpolymath/anytype" + :beholding-chora #u5"estate/chora" + + (identity :primary-forge github + :owner "hyperpolymath" + :prefixed-name "at-anytype") + + ; PROVISIONAL clade: `at`/`et` are this repo's self-assigned codes, NOT in the + ; estate's 12-code closed taxonomy (fv nl rm gv db ap ix dx pt ax gm sc). + ; Carried verbatim per the mapping; gv-clade-index must assign/confirm the real + ; clade before the CLADE-003/P-5 registry gate can pass (owner + registry act). + (clade :primary at + :secondary (et) + :assigned "2026-06-28" + :rationale "at = the anytype kernel (reference implementation); secondary et = it implements systemet (Equality Theory). PROVISIONAL pending gv-clade-index registration.") + + (forges :github "hyperpolymath/anytype" + :gitlab "hyperpolymath/anytype" + :bitbucket "hyperpolymath/anytype") + + (lineage :type standalone + :parent "Split out of the combined 'EveryType' draft (2026-06-28): anytype is the kernel half; the theory half is the systemet repo." + :born "2026-06-28") + + ; CLADE.a2ml carries no [status] section and STATE (family 3) is not yet ruled, + ; so :phase is BACKFILLED from the repo's declared lifecycle (active) — a + ; provisional registry surface, not a revalidated readiness claim. Confirm + ; against the CLADE-003/P-5 gate when state-v1-decision.adoc is ruled. + (status :phase active + :since "2026-06-28" + :present #t + :aliases () + :merged-into "" + :superseded-by "" + :successors () + :ended "" + (history + (entry :phase active + :since "2026-06-28" + :note "backfilled from STATE pending state-v1-decision.adoc; not a CLADE registry claim"))) + + (agentic + :version "0.1.0" :last-updated "2026-04-11" + (permissions :source #t + :tests #t + :docs #t + :config #t + :create-files #t) + (integrity :fail-closed #t + :require-evidence-per-step #t + :allow-silent-skip #f + :require-rerun-after-fix #t + :release-claim-requires-hard-pass #t) + (methodology :instructions-dir ".machine_readable/bot_directives/" :default-mode hybrid)) + + (neurosym + :version "0.1.0" :last-updated "2026-04-11" + (hypatia :scan-enabled #t + :scan-depth standard + :report-format "logtalk")) + + (playbook + :version "0.1.0" :last-updated "2026-04-11" + (skeleton :version "1.0" + :last-updated "2026-04-30" + :authority-allowlist ".machine_readable/root-allow.txt" + :enforcement-workflow ".github/workflows/estate-rules.yml") + (deployment) (incident-response) (release-process) (docs-format) (maintenance-operations)) +) From 5b3120565dad1f1dad95e3a10d55a948c433dac4 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 10 Nov 2026 15:15:00 +0000 Subject: [PATCH 5/6] ci(runtime-policy): require runtime-policy.yml, not retired npm-bun-blocker.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The repo validators listed npm-bun-blocker.yml as a REQUIRED workflow. That is the retired inverted-policy gate (it failed any build carrying bun.lockb with 'Use Deno instead') — superseded estate-wide by the Bun > Deno > pnpm > npm ordering and replaced by runtime-policy.yml, which both repos already ship. Requiring the absent, inverted gate was stale; require its live replacement instead. ts-blocker.yml left as-is (separate TypeScript-ban concern). Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01J1XmMC49T8sZ3uUuvrgB7y --- scripts/validate-template.sh | 2 +- tests/workflows/validate_workflows_test.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/validate-template.sh b/scripts/validate-template.sh index 76cc89c..a9df19a 100755 --- a/scripts/validate-template.sh +++ b/scripts/validate-template.sh @@ -164,7 +164,7 @@ REQUIRED_WORKFLOWS=( "security-policy.yml" "wellknown-enforcement.yml" "workflow-linter.yml" - "npm-bun-blocker.yml" + "runtime-policy.yml" "ts-blocker.yml" "secret-scanner.yml" ) diff --git a/tests/workflows/validate_workflows_test.sh b/tests/workflows/validate_workflows_test.sh index 7f0ec74..f3f22c0 100755 --- a/tests/workflows/validate_workflows_test.sh +++ b/tests/workflows/validate_workflows_test.sh @@ -99,7 +99,7 @@ REQUIRED_WORKFLOWS=( "security-policy.yml" "wellknown-enforcement.yml" "workflow-linter.yml" - "npm-bun-blocker.yml" + "runtime-policy.yml" "ts-blocker.yml" "secret-scanner.yml" ) From 674f15a20bb62d6dd7451c2effde26adc89d0fd6 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 10 Nov 2026 15:19:41 +0000 Subject: [PATCH 6/6] docs(conventions): drop stale bun-ban / Deno-mandate in AI-CONVENTIONS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Banned Languages table read 'Node.js / npm / bun -> Deno' — the retired pre-2026-07-29 inverted policy that banned Bun and mandated Deno. It contradicts both the estate order (Bun > Deno > pnpm > npm; Bun is tier-1, not banned) and this repo's own ANCHOR authority, whose forbidden list does not include bun. Corrected to 'Node.js / npm -> Bun (order: Bun > Deno > pnpm > npm)'. Surfaced by CodeRabbit on PR #74 (flagged as a policy contradiction in the generated CLAUDE.md). Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01J1XmMC49T8sZ3uUuvrgB7y --- docs/practice/AI-CONVENTIONS.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/practice/AI-CONVENTIONS.adoc b/docs/practice/AI-CONVENTIONS.adoc index 2753cfb..438f572 100644 --- a/docs/practice/AI-CONVENTIONS.adoc +++ b/docs/practice/AI-CONVENTIONS.adoc @@ -56,7 +56,7 @@ MAINTENANCE-CHECKLIST.a2ml, or SOFTWARE-DEVELOPMENT-APPROACH.a2ml in the reposit | Banned | Use Instead | |---------------------|--------------------| | TypeScript | AffineScript | -| Node.js / npm / bun | Deno | +| Node.js / npm | Bun (order: Bun > Deno > pnpm > npm) | | Go | Rust | | Python | Julia / Rust |