Skip to content

refactor(root): move root artefacts to their canonical locations - #327

Merged
hyperpolymath merged 1 commit into
mainfrom
refactor/root-shape-rollout
Sep 19, 2026
Merged

hyperpolymath merged 1 commit into
mainfrom
refactor/root-shape-rollout

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

refactor(root): move root artefacts to their canonical locations

Applies the estate root-shape rollout: files that are not root-level by
necessity move to where their tooling and the estate canon expect them, and
every reference to them is updated in the same change.

  • .envrc
  • .github/hooks/validate-a2ml.sh
    (from .githooks/validate-a2ml.sh)
    -> .github/hooks/validate-a2ml.sh
  • .github/hooks/validate-k9.sh
    (from .githooks/validate-k9.sh)
    -> .github/hooks/validate-k9.sh
  • .github/workflows/dogfood-gate.yml
  • CONTRIBUTING.adoc
    (deleted)
  • Justfile
  • build/guix.scm
    (from guix.scm)
    -> build/guix.scm
  • docs/RSR_OUTLINE.adoc
  • docs/quickstarts/DEV.adoc
  • docs/wikis/Developer-Guide.adoc

Verified with git apply --check against current main before committing; no
behaviour change intended, the Justfile entry points keep working.

Applies the estate root-shape rollout: files that are not root-level by
necessity move to where their tooling and the estate canon expect them, and
every reference to them is updated in the same change.

  * .envrc
  * .github/hooks/validate-a2ml.sh
      (from .githooks/validate-a2ml.sh)
      ->   .github/hooks/validate-a2ml.sh
  * .github/hooks/validate-k9.sh
      (from .githooks/validate-k9.sh)
      ->   .github/hooks/validate-k9.sh
  * .github/workflows/dogfood-gate.yml
  * CONTRIBUTING.adoc
      (deleted)
  * Justfile
  * build/guix.scm
      (from guix.scm)
      ->   build/guix.scm
  * docs/RSR_OUTLINE.adoc
  * docs/quickstarts/DEV.adoc
  * docs/wikis/Developer-Guide.adoc

Verified with `git apply --check` against current main before committing; no
behaviour change intended, the Justfile entry points keep working.
@hyperpolymath
hyperpolymath merged commit 97665d0 into main Sep 19, 2026
@hyperpolymath
hyperpolymath deleted the refactor/root-shape-rollout branch September 19, 2026 09:07
@coderabbitai

coderabbitai Bot commented Sep 19, 2026

Copy link
Copy Markdown
Contributor

Review Change StackReview 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: b7d5f312-81c7-462b-b8ea-37f06bb6c85a

📥 Commits

Reviewing files that changed from the base of the PR and between dd3ec56 and e6a3ecf.

📒 Files selected for processing (10)
  • .envrc
  • .github/hooks/validate-a2ml.sh
  • .github/hooks/validate-k9.sh
  • .github/workflows/dogfood-gate.yml
  • CONTRIBUTING.adoc
  • Justfile
  • docs/RSR_OUTLINE.adoc
  • docs/quickstarts/DEV.adoc
  • docs/wikis/Developer-Guide.adoc
  • guix.scm
 ___________________________________________________________________________________________________
< Test your software, or your users will. Test ruthlessly. Don't make your users find bugs for you. >
 ---------------------------------------------------------------------------------------------------
  \
   \   (\__/)
       (•ㅅ•)
       /   づ

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.

@github-actions

Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 107 issues detected

Severity Count
🔴 Critical 11
🟠 High 15
🟡 Medium 81

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Job `sonarqube` in build.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
    "type": "missing_timeout_minutes",
    "file": "build.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium",
    "recipe_id": "recipe-add-workflow-timeout-minutes",
    "job": "sonarqube"
  },
  {
    "reason": "Job `triage` in label-triage.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
    "type": "missing_timeout_minutes",
    "file": "label-triage.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium",
    "recipe_id": "recipe-add-workflow-timeout-minutes",
    "job": "triage"
  },
  {
    "reason": "Job `sync` in labels.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
    "type": "missing_timeout_minutes",
    "file": "labels.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium",
    "recipe_id": "recipe-add-workflow-timeout-minutes",
    "job": "sync"
  },
  {
    "reason": "Job `deploy` in pages-deploy.yml has no `timeout-minutes:` declaration. Default is 6 hours — a stuck codeload fetch or runner hang can burn budget. Add `timeout-minutes: 10` (or proportional).",
    "type": "missing_timeout_minutes",
    "file": "pages-deploy.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium",
    "recipe_id": "recipe-add-workflow-timeout-minutes",
    "job": "deploy"
  },
  {
    "reason": "Step uses `peter-evans/repository-dispatch` with `token: ${{ secrets.FARM_DISPATCH_TOKEN }}` but has no `if: secrets.FARM_DISPATCH_TOKEN != ''` gate. On repos where the secret hasn't been propagated the action fails on every push, red-maining the repo. Add the step-level gate (or env+if pattern) so the missing-secret path is a clean skip instead of a red.",
    "type": "secret_action_without_presence_gate",
    "file": "instant-sync.yml",
    "action": "peter-evans/repository-dispatch",
    "rule_module": "workflow_audit",
    "severity": "high",
    "fix_recipe": "add_secret_presence_gate"
  },
  {
    "reason": "codeql.yml does not list `language: actions` in its matrix, but the repo has workflow files. CodeQL's `actions` language scans workflow YAML for injection and other CI/CD-specific weaknesses — every repo with workflows benefits. Add an entry to `matrix.include` with `language: actions` + `build-mode: none`.",
    "type": "codeql_missing_actions_language",
    "file": "codeql.yml",
    "action": "flag",
    "rule_module": "workflow_audit",
    "severity": "medium",
    "fix_recipe": "add_codeql_actions_language"
  },
  {
    "line": 31,
    "reason": "job in .github/workflows/build.yml references `secrets.*` but does not install `step-security/harden-runner` — review outbound-egress monitoring",
    "type": "RE001",
    "file": ".github/workflows/build.yml",
    "action": "report",
    "rule_module": "research_extensions",
    "severity": "warn"
  },
  {
    "line": 45,
    "reason": "job in .github/workflows/push-email-notify.yml references `secrets.*` but does not install `step-security/harden-runner` — review outbound-egress monitoring",
    "type": "RE001",
    "file": ".github/workflows/push-email-notify.yml",
    "action": "report",
    "rule_module": "research_extensions",
    "severity": "warn"
  },
  {
    "line": 157,
    "reason": "job in .github/workflows/release.yml references `secrets.*` but does not install `step-security/harden-runner` — review outbound-egress monitoring",
    "type": "RE001",
    "file": ".github/workflows/release.yml",
    "action": "report",
    "rule_module": "research_extensions",
    "severity": "warn"
  },
  {
    "line": 48,
    "reason": "job in .github/workflows/publish.yml references `secrets.*` but does not install `step-security/harden-runner` — review outbound-egress monitoring",
    "type": "RE001",
    "file": ".github/workflows/publish.yml",
    "action": "report",
    "rule_module": "research_extensions",
    "severity": "warn"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

hyperpolymath added a commit that referenced this pull request Oct 7, 2026
## Summary

Adds `docs/AFFIRMATION.adoc` (the rsr-template profile A "evidential"
affirmation), anchored to main at
**`14386f3e61cdfd324853cca3a36f5c37192d59d7`** and verified
2026-10-07T10:20:02Z–10:22:34Z. boj-server didn't have one before.

What the file records:
- **Verified by running it at the anchor:**
- 68 unit tests pass: 31 under node and bun, plus 11 and 26 more under
bun.
  - The node and bun boot smokes pass.
- A clean stdio handshake exposes **68 tools (45 `boj_*` + 23
`coord_*`), 6 prompts and 7 resources**, with serverInfo `0.4.7`. That
matches the README exactly.
- **CI evidence for the anchor SHA** (read, not re-run): Idris2
type-check, trusted-base audit, readme-derive and gitleaks are all
green.
- **Problems the file states openly:**
- The `Justfile` doesn't parse (`guix-shell` redefined, from #327), so
no `just` recipe runs.
- `ffi/zig/src/bench.zig:27` uses `Io.Clock.monotonic`, which Zig 0.16
removed. That breaks both E2E jobs and the Bench job.
- Seven CI checks are red but not required, and all seven were already
red on the parent.
- npm `latest` 0.4.7 is behind main: it serves 65/6/6 and reports
serverInfo 0.4.0.
  - The version strings disagree: Justfile 0.4.6, package.json 0.5.0.
  - The `start` script uses deno.
  - A2ML files are still present, and there's no `_chora.deed`.
- Three Dependabot alerts are open in the Rust `tray`/`coord-tui`
lockfiles.

**Merge timing:** the template treats the affirmation as valid only if
its anchor is the parent of the commit that lands it. Please
squash-merge this **before main moves past `14386f3e`**. If main moves
first, the file reads as a draft and I'll re-anchor it.

## Type of change

Documentation only (a new doc file).

## 📌 New pins

Head SHA: **`5c0eb80cc26b7d10b456155d54db17fc686cc189`**. This PR adds
or changes no pins: no action `uses:`, `actions.lock`, lockfile or
container digest changes.

## Changes

- New: `docs/AFFIRMATION.adoc`.

## RSR Quality Checklist

### Required

- [x] Tests pass. The bridge suites were run at the anchor, with results
in the file. This PR changes no code.
- [x] Code is formatted. N/A: no code changed.
- [x] Linter is clean. N/A: no code changed. Note that `just lint` can't
run at all on main (the Justfile parse error), as the file records.
- [x] No banned language patterns. A single AsciiDoc file.
- [x] No `unsafe` blocks without `// SAFETY:` comments. N/A: no code
changed.
- [x] No banned functions. N/A: no code changed.
- [x] SPDX license headers present. The new file has `CC-BY-SA-4.0` and
SPDX-FileCopyrightText.
- [x] No secrets, credentials, or `.env` files included.

### As Applicable

- [ ] `.machine_readable/*` updated. N/A: A2ML is retired (D308), and
the file records the leftover A2ML instead of editing it (D313).
- [x] Documentation updated: this is a new doc.
- [ ] `TOPOLOGY.md` updated. N/A: architecture didn't change.
- [ ] `CHANGELOG` updated. N/A: no release.
- [ ] New dependencies reviewed. N/A: no dependencies added.
- [ ] ABI/FFI changes validated. N/A: ABI and FFI untouched. The file
only reports the existing Zig bench compile failure.

## Testing

- `asciidoctor --failure-level=WARN docs/AFFIRMATION.adoc` returned rc
0, and the `boj_*`, `coord_*` and `{error, hint}` passthroughs render
correctly.
- Every "affirmed" row lists the exact command and its output. The
**Reproduce it yourself** section in the file repeats them in order.
- CI rows come from `gh api …/commits/14386f3e…/check-runs --paginate`
(47 success, 10 skipped, 7 failure). The failures were confirmed
identical on the parent `0e700c9d`.

Deferred non-required reds (pre-existing on main, not caused by this
PR): `governance / UUID v7 conformance` and `SonarQube` → #338. The Zig
0.16 `Io.Clock.monotonic` break (both E2E jobs and Bench), `deploy`, and
`Dependabot` → #338. I'm adding those to #338 in a comment with this PR.

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

https://claude.ai/code/session_01P56iYjCwHmbRyfFrpyJzTC

---------

Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
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