Repository navigation
feat: provisioning canon — self-provisioning template (standards#1096) - #213
Merged
Merged
Conversation
Adopts the standards provisioning set (3-practice/provisioning, standards#1096):
- launcher.sh with --setup/--doctor/--heal/--ai-setup; library archetype, so
the runtime modes are declared N/A rather than faked.
- build/just/provision*.{just,sh} wired via `mod provision`; setup, doctor,
heal, dev-shell, toolchain-refresh, ai-setup, ai-warmup, eval, config-show
and opsm recipes in the root Justfile (contractiles copy kept identical).
- build, test, bench, fmt, lint and run delegate to the per-language engine
instead of stubs that printed "complete" over nothing.
- mise.toml trimmed to the tools this repo uses, locked in mise.lock;
.tool-versions removed. Guix: real build/guix.scm (builds), manifest.scm,
pinned channels.scm; .envrc uses the manifest.
- src/interface/ffi: the template's Zig never compiled (opaque type with
fields, callconv(.C), no libc). Fixed, and build.zig gains a real `test`
step: 4/4 pass after repo-init; a broken assertion turns it red.
- docs/SETUP.adoc (manual route), repo-specific llm-warmup-{user,dev,
maintainer}.adoc, README [[ai-install]] "Just say it" section;
validate-ai-install checks the whole set.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UkSmyapDUmuGyyZSJmvbKy
build-release, test-smoke and readiness printed "complete"/"passed" over nothing; they now exit 1 naming the recipe to wire. e2e and aspect run their real scripts; test-verbose and run-verbose delegate to the provisioning verbs. deps-audit no longer swallows a missing trivy or its findings (|| true); trivy is pinned in mise.toml/mise.lock so setup provides it. tests/aspect_tests.sh scans tracked sources only (build caches are not source) and matches proof escape hatches in Coq/Lean/Haskell/OCaml code with comments stripped, so prose no longer trips it. A planted `Admitted.` still fails the suite. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UkSmyapDUmuGyyZSJmvbKy
Syncs the engine from hyperpolymath/standards 3-practice/provisioning. A token-filled copy passes `just fmt-check`; a mis-spaced build.zig fails it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UkSmyapDUmuGyyZSJmvbKy
Hook isolation (PV-E51), launcher dispatch exit status, quoted ai-warmup argument, recipe-tool pinning. Engine files byte-equal to the standards canon. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UkSmyapDUmuGyyZSJmvbKy
Contributor
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 59 minutes. View limit detailsLimit details: You’ve used the included review currently available. Review configuration: ⚙️ Run configurationConfiguration used: Repository: hyperpolymath/rsr-template-repo/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (26)
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. Comment |
Brings the shared doctor/check predicates (mise-banned, mise-lock-gaps, positive guix-stub) and the fact verbs from hyperpolymath/standards#1096. provision-check.sh on this tree: 0 FAIL, 0 WARN. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UkSmyapDUmuGyyZSJmvbKy
provision-lib.sh gains the crates-scm verb (toolchain-refresh regenerates build/guix/crates.scm from Cargo.lock; PV-E41 when the importer falls short). This repo has no Cargo.lock, so the verb is a no-op here. provision-modes.sh and launcher.sh now claim launcher standard 0.6.0; main's 0.5.0 is the (js-runtime) clause (D224). SETUP.adoc gains the PV-E41 troubleshooting row. just doctor 18/0/0, launcher --doctor rc 0, provision-check 0 FAIL / 0 WARN, launcher currency gate clean at v0.6.0, shellcheck clean. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UkSmyapDUmuGyyZSJmvbKy
estate-rules failed: REPOSITORY-MAP.adoc was stale after this PR added launcher.sh and mise.lock at the root and retired .tool-versions. The root-allow description of launcher.sh now cites launcher-standard 0.6.0, the version that carries the provisioning modes (0.5.0 is the js-runtime clause, D224). Ratchet-exception: .machine_readable/root-allow.txt grows 47 -> 48 by design: PROVISIONING-STANDARD §1 places launcher.sh and mise.lock at the root (the tools that read them look there) and retires .tool-versions in favour of mise.toml + mise.lock. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UkSmyapDUmuGyyZSJmvbKy
mise_lock_gaps now requires a sha256 in every [tools.X."platforms.P"] table instead of one checksum anywhere in mise.lock (standards#1096, CodeRabbit). This repo's lock: 28 platform tables, all checksummed. provision-lib mise-lock-gaps rc 0, provision-check 0 FAIL / 0 WARN, just doctor 18/0/0, launcher --doctor rc 0, shellcheck clean. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UkSmyapDUmuGyyZSJmvbKy
estate-rules failed in check-adoc-renders: asciidoctor processes `[[ai-install]]` as an anchor even inside backticks, so the second mention assigned the id twice. `\[[ai-install]]` renders the same literal code text and defines nothing. check-adoc-renders: 160/160. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UkSmyapDUmuGyyZSJmvbKy
Contributor
|
Autopilot could not be updated. Open Coding to check access and billing. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR makes rsr-template-repo the first consumer of the estate provisioning canon (hyperpolymath/standards#1096,
3-practice/provisioning). Every repository minted from this template now arrives self-provisioning. It has:launcher.shwith--setup,--doctor,--healand--ai-setupIt also fixes template recipes that printed success over nothing.
Merge order: after standards#1096. The engine files under
build/just/are byte-identical to that PR's head, b234caf5. Auto-merge is deliberately off: this is the canon that the fan-out copies, so it needs owner review.Changes
build/just/provision{.just,-lib.sh,-modes.sh,-check.sh}are wired viamod provision.build,test,bench,fmt,fmt-check,lint,run,setup,doctor,heal,dev-shell,toolchain-refresh,ai-setup,ai-warmup,eval,config-showandopsm..machine_readable/contractiles/Justfilecopy is kept identical.launcher.sh: library archetype, so the runtime modes print N/A and exit 0 rather than faking a result.build-release,test-smokeandreadinessexit 1 with "not wired yet — edit the recipe".deps-auditruns trivy for real and fails if trivy is missing.mise.tomlis trimmed to the tools the repo uses. It had pinned banned python, deno, node, go, java, npm, yarn and make; those are removed. It is locked inmise.lock, and.tool-versionsis removed. trivy is pinned becausedeps-auditcalls it.build/guix.scmis a real package (it had been a stub).build/manifest.scmis the dev shell.build/channels.scmis pinned..envrcuses the manifest.callconv(.C), and no libc. It is fixed, andbuild.ziggains a realteststep.docs/SETUP.adocgives the manual route, with a troubleshooting table keyed to the doctor's PV codes.llm-warmup-{user,dev,maintainer}.adocfiles are repo-specific.[[ai-install]]"Just say it" section.validate-ai-installchecks the whole set.provisioning_praxis.deed: the per-repo descriptor that the generator reads.Testing
Measured on this branch (head 477e266):
Engine and docs
just doctor: 18 PASS, 0 WARN, 0 FAIL../launcher.sh --doctor: rc 0. With an injected failingdoctor-local.shit gives rc 1.doctor-hook isolation:
exit 3set -e; falsejust validatepasses.provision-check.sh --devgives 0 FAIL, 0 WARN.shellcheckis clean onbuild/just/*.shandlauncher.sh.The aspect tests give PASS=3.
build-release,test-smokeandreadinesseach exit 1 once, with no recursion.Toolchain and Guix
deps-audit: trivy 0.74.0 is installed frommise.lock. The audit is clean, rc 0.podmanwithmetacall/guixat ae77aeb:guix build -f build/guix.scmgives rc 0.guix shell -m build/manifest.scm --dry-rungives rc 0, with 512 MB to download.channels.scmevaluates to channelguixat the image's ownguix describecommit.fmt-checkon a token-filled copy: clean code gives rc 0; a mis-formatted mutant gives rc 1.zig build testpasses 4/4 afterrepo-init. A broken assertion turns it red.Red by design on the uninstantiated template
just test,just lint,just fmtandjust fmt-checkall exit 1 on this template repository itself. The cause is the template token atsrc/interface/ffi/src/main.zig:55(export fn {{project}}_init()), which is not valid Zig untiljust repo-initfills it. They are green on an instantiated copy. The alternative was to skip or fake these recipes on the template, and that would reintroduce the silent-green this PR removes.Update: review round (head c251cfb)
estate-rulesand the exemption ratchet.REPOSITORY-MAP.adocis regenerated (just repo-map;just validate-repo-map: up to date).launcher.shnow cites launcher-standard 0.6.0..machine_readable/root-allow.txtgrows 47 → 48, declared in that commit:launcher.shandmise.lockbelong at the root because the tools that read them look there, and.tool-versionsis retired. The ratchet run locally againstorigin/maingivesOK (declared), rc 0.mise_lock_gapsnow needs a sha256 in every[tools.X."platforms.P"]table, so one checksummed tool can no longer vouch for another. On this tree:mise-lock-gapsrc 0,provision-check0 FAIL / 0 WARN,just doctor18/0/0,./launcher.sh --doctorrc 0, shellcheck clean.Deferred red checks, by context (none is a required check; main's effective rules carry no
required_status_checks):Canon lockstep→ Canon lockstep red on every PR: [canon] pin predates canon 2.1.2 (standards#1088) #215. Canon 2.1.2 (standards#1088) changedcanon.lockon 2026-09-30, andrsr-profile.a2ml [canon]still pins 2.1.1. The check is red on every PR since then, including feat(repo-init): {{AUTHOR_ORCID}} replaces the all-zeros ORCID placeholder #214, which does not touch this area. This PR does not change[canon].actions.lock is in sync with the workflow YAMLandgovernance / Actions lockfile verify→ actions.lock out of sync on main since dependabot #210 (codeql-action, haskell-actions/setup) #217. They are red onmain8256a6e too, because dependabot chore(deps): bump the actions group with 3 updates #210 desynced the lock.Hypatiaandscan / Hypatia Neurosymbolic Analysis(eval_in_shellatprovision-check.sh:23andprovision-lib.sh:17,744,745,754,816) → eval_in_shell matches the word "eval" anywhere, not the builtin in command position hypatia#892. Each finding is the wordeval(the verb,.eval/, a comment, or acaselabel). No builtin call exists. All six threads are answered and resolved.Elegance arm
provision-set --checkin the generator (next) proves it is equal to canon. This works offline and Guix-hermetic, and there is one gate.RSR Quality Checklist
🤖 Generated with Claude Code
https://claude.ai/code/session_01UkSmyapDUmuGyyZSJmvbKy