Repository navigation
Capstone AI checker and track certificates for the Dev Weekends levels - #189
Merged
Merged
Conversation
…urse certificate settings
… certificate claim
…refilled confirm or override
…e verify page to the share image
…a per-check stop rule
…the tokenless API limit
…he LinkedIn issuer
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.
What this adds
The capstone AI checker and completion certificates for the Dev Weekends guided-lab tracks (Level 1, 2 and 3). Design:
docs/16-capstone-checker-and-certificates.mdx, approved before the build.Capstone checker
CAPSTONE_CHECKblock, authored as a```capstonefence that names a rubric pack (capstone/<name>.yaml) in the course package. The importer validates the pack and stores it in the block's server-only config. Calibration files never ship to learners.files_match: course-owned files (workflow, supplied tests) must be byte-identical to the template at a tag, so edited tests cannot fake a green build.file_contains: for example a pinned reusable workflow.check_run: one named CI check's result.claude-sonnet-5-5grades the repo snapshot against the rubric. The server recomputes the percent, the pass rules and the automated gates, so text in a repo cannot raise its own grade.Certificates
certificateblock incourse.yaml(title, code, skills). The course's trainer signs it: the instructor name the catalog shows, overridable per course.DW-L2-7K3F9QXM./verify/<id>: valid or withdrawn status, the certificate, skills and capstone links. It also has Add to LinkedIn (add-to-profile URL with the certification fields; LinkedIn lists Edorax as the issuer), Share a post, and Download image. The share image is a 1200 x 627opengraph-image. Mentors and admins can revoke a certificate, giving a reason.Rubric packs and calibration
pnpm --dir server capstone:calibrate --pack <rubric.yaml>replays recorded grader outputs for free. With--live --recordit runs the real model, prints the cost and saves the outputs. It fails when an example lands outside its tolerance.calibration/<pack name>/.Level 3 oral exam
oralExam.enabledexists in the pack schema and is refused until the stage is built; the next phase builds it on the existing AI interview block.Tests
dev-logintests need a seeded DB, as on main.sync-shared --checkis clean.Needs keys or approval before it is live
ANTHROPIC_API_KEYalready set for chapter Q&A and is on whenever it is set (CAPSTONE_CHECK_ENABLED=falseturns it off)GITHUB_TOKENis optional: files are read from GitHub's raw host, so a check uses about five API calls and 60 an hour without a token covers about 12 checksCERTIFICATE_LINKEDIN_ORG_ID: Edorax's own LinkedIn page id, once it exists (until then LinkedIn gets "Edorax" as text)certificate.issuer.titlein course.yaml)The migration adds a block type, two tables and one nullable column. Nothing changes for existing courses until a course uses the fence.
Known limits