doctor: report project readiness (is this project ready to certify and ship?) - #391
Merged
Merged
Conversation
…nd ship? `ashlar doctor` answered "is my machine set up"; it now also answers "is my project set up", when run inside an ashlar project (--path, default cwd). A separate verdict block, never folded into the environment exit code, that aggregates the signals the product loop already exposes and names the single next action: NOT READY → verify is failing; run `ashlar verify` NOT CERTIFIED → verified but no key; run `ashlar keys init` READY TO CERTIFY → keyed but no ledger; run `ashlar verify` CERTIFIED → verified, keyed, ledger intact — ready BLOCKED → a corrupt key or a corrupt (altered) ledger Reuses the verbs' own kernel logic (ProjectVerifier, OperatorKey, InstanceLedger); not an ashlar project => the block is omitted entirely, so `doctor` outside a project is unchanged. Additive only: the environment checks, their exit code, and the existing doctor tests are untouched (a new optional --path/param defaults to cwd, which is not a project during those tests). 5 unit tests pin the readiness ladder (not-a-project, not-certified, ready-to-certify, certified, corrupt-ledger block); smoke-verified end to end through the real binary (NOT CERTIFIED before keys, CERTIFIED after keys init + verify). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Uh oh!
There was an error while loading. Please reload this page.
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 freeto 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.
ashlar doctoranswered "is my machine set up"; it now also answers "is my project set up" — when run inside an ashlar project — as a separate verdict block that names the single next action to advance readiness.The readiness ladder
ashlar verifyashlar keys initashlar verifyReuses the verbs' own kernel logic (
ProjectVerifier,OperatorKey,InstanceLedger). It ties the whole signing arc (#386–#390) into one "am I ready to ship?" view.Additive & safe
--path(default cwd); not an ashlar project ⇒ the block is omitted, sodoctoroutside a project is unchanged.projectReadinessfield is added to--json.Verification
5 unit tests pin the ladder (not-a-project, not-certified, ready-to-certify, certified, corrupt-ledger BLOCK). Smoke-verified end to end through the real binary: NOT CERTIFIED before keys → CERTIFIED · ledger intact (1 signed) after
keys init+verify.[coordinated-integration]
Application-only (the CLI host), no
src/changes; reuses kernel types already on master. The verbs it aggregates already live on master, andcert-gate(the sole required check) gates the merge.