Skip to content

Cornerstone 1.0.0

Choose a tag to compare

@brawblan brawblan released this 21 Oct 20:10
· 395 commits to main since this release
433c81a

Cornerstone 1.0.0

Cornerstone is a tool-neutral framework for agent-assisted delivery, with the stone CLI. Version 1.0.0 supports all 10 profiles. stone render writes every component that a profile lists, and each profile has a golden-file test.

What blocks in version 1

Check What it tests
K6 An implementer commit must not change a protected path.
K7 A PR must stay under the size limit, or carry a Waiver (P10) heading with text (D46).
K14 A PR body needs Evidence, Decision log, Review findings, and Confidence (D47, D49).
K15 The instruction file must stay under the line limit (D52).
K16 A spike/ branch must not merge into the main or integration branch (D30, D33).
K17 Changed text must follow the writing standard (D45).
K18, K19 Personas, job stories, and specs must be valid (D53).
By-profile steps A failing repo command fails the job (D52).

Each component in the manifest has an eval plan, a review date, an owner, and the models of its results (D43, D50). stone check tests this. Install with the tag: framework_version: 1.0.0.

Known limits

This release is honest about what is not proven. Each limit has an issue.

Limit Issue
Eval coverage is low: 3 of 22 components have an eval folder. The roles for the shaper, implementer, reviewer, and investigator have no eval. #110
K18 and K19 became errors on thin evidence (fixtures and unit tests; no personas file in this repo). #111
K7, K14, K15, K17, and the repo-command steps blocked early, under the replay rule of D45. #112
The protected-path hook does not see a shell write. K6 in CI is the control. #113
K6 trusts the Role: trailer that the committer writes. #81
This repo's own G3 still installs stone from the tag v0.5.0. #114
No deterministic Definition of Ready check (P3). #115
Stated rules that could be checks have none (P6). #116
The core names tools in two places (P12). #117
Decision logs live in PR bodies only (P8). #118
Profile overrides and waivers are not built. #78
Bug-triage does not apply labels, and its outputs and purpose line still promise it. #79
The first blind A/B rating of the writing standard is not done. #67
The hook.protect-paths eval measures the hook and K6 with a task text that lifts the role rule (D48). It does not measure how often a model writes to a protected path on its own. #113

The full audit is in docs/reports/v1-principles-audit.md. Evals and results are on the Evals page of the docs site.


What's Changed

  • docs(readme): link the docs site by @brawblan in #20
  • feat(stone): add specs and stone spec apply by @brawblan in #21
  • feat(stone): add check K19, stone spec sync, and the specs in the roles by @brawblan in #22
  • feat(stone): run K14 in the G3 workflow that render writes by @brawblan in #23
  • feat(stone): render the roles of all 10 profiles, with the investigator by @brawblan in #24
  • feat(stone): add stone eval, the component eval runner by @brawblan in #25
  • feat(stone): render K7 (change size) into the G3 workflow by @brawblan in #26
  • feat(workflow): write a Profile line in skill-made PR bodies by @brawblan in #28
  • feat(stone): render K15 (instruction size) for full-project, with a golden test by @brawblan in #27
  • test(stone): golden-file tests for debugging, dependency-upgrade, adapter-refresh (6f) by @brawblan in #31
  • feat(stone): render label and schedule trigger workflows (6g part 1, D31) by @brawblan in #29
  • feat(stone): render the ci: trigger workflows (6g part 2, D31) by @brawblan in #34
  • feat(stone): render the G3 steps for K10, K12, and the other by-profile checks (6d, D29) by @brawblan in #30
  • fix(framework): debugging investigator writes the findings report by @brawblan in #32
  • feat(stone): render K16 for spike, and golden tests for the report profiles (6e, D30) by @brawblan in #33
  • fix(framework): limit the trigger role reads to the checkout and the event folder (D32) by @brawblan in #36
  • feat(evals): add the role.tester eval and its first result by @brawblan in #35
  • docs(guides): move the working parts to Today for v1 (6h) by @brawblan in #37
  • fix(framework): make K16 block a spike PR into the integration branch by @brawblan in #52
  • test(stone): add golden-file tests for single-ticket and app-slice by @brawblan in #51
  • fix(stone): fail render and check on a branches.* value that is not a string by @brawblan in #56
  • feat(evals): add the role.planner eval and its first result by @brawblan in #57
  • feat(website): add an Evals page that shows the eval results by @brawblan in #58
  • fix(adapters): planner template fixes from the role.planner eval by @brawblan in #59
  • feat(evals): grade the open question form of planner step 7 in P3 by @brawblan in #60
  • chore(adapters): set the first model profile to active by @brawblan in #61
  • fix(adapters): limit the cost of a trigger run and frame the posted report by @brawblan in #71
  • fix(framework): record the shell-write gap of the protected-path hook (D39) by @brawblan in #74
  • docs(guides): add the investigator to run-the-roles by @brawblan in #68
  • docs(guides): add the bug-triage guide by @brawblan in #69
  • docs(guides): add the code-audit guide by @brawblan in #70
  • docs(guides): add the spike guide by @brawblan in #72
  • docs(guides): add the dependency-upgrade guide by @brawblan in #73
  • docs(guides): add the adapter-refresh guide by @brawblan in #75
  • docs(guides): add the refactor-migration guide by @brawblan in #76
  • test(evals): add the grader tests of the hook.protect-paths eval by @brawblan in #82
  • fix(adapter): say the hook guards the file tools only (D39) by @brawblan in #83
  • docs(framework): describe Cornerstone and its prior art by @brawblan in #84
  • fix(stone): make the label prompt report and drop relative links (D41) by @brawblan in #86
  • fix(framework): tester commits the failing test on a ticket/code disagreement (D42) by @brawblan in #87
  • chore(framework): check that each component has an eval plan and a review date (D43) by @brawblan in #88
  • test(stone): pin the D43 component rule and the shared label render by @brawblan in #89
  • fix(evals): remove the hook settings entry in the without variant by @brawblan in #91
  • docs(reports): audit the repo against principles P1 to P12 before v1 by @brawblan in #90
  • fix(stone): make K7 accept a waiver in any heading with "waiver (P10)" by @brawblan in #99
  • feat(framework): block K17 and K7 after a replay shows no false positive by @brawblan in #92
  • docs(framework): align the PR body sections with check K14 by @brawblan in #100
  • fix(evals): lift the role rule in the task text of the hook eval (D48) by @brawblan in #101
  • feat(framework): block K14 in the G3 template (D49) by @brawblan in #102
  • docs(framework): make the docs match the code for K6, K8 rules, overrides, and labels by @brawblan in #103
  • feat(stone): add owner and tested models to the manifest check (P5) by @brawblan in #104
  • feat(stone): change K18 and K19 from a warning to an error by @brawblan in #105
  • feat(framework): block K15 and remove continue-on-error from the step templates (D52) by @brawblan in #106
  • docs(guides): remove the K18 and K19 warning text by @brawblan in #107
  • docs(guides): say that K7, K14, K15, and the by-profile steps block by @brawblan in #108
  • chore(release): prepare version 1.0.0 by @brawblan in #109

Full Changelog: v0.5.0...v1.0.0