feat: clarify baseline timing, spec checks, and repository setup - #38
Merged
Conversation
… tree comes with Two rules Indy set on Sep 08, 2026, both about what CHORE(open) is for. The Test Baseline stops being measured at the open. The declared suites cost minutes, and an open that spends them buys a number the boundary has to read again anyway. CHORE(open) now DECLARES the header; the counts land before the Pull Request, which is the gate that grades them — `spec.baseline` fails a header still carrying no number, so the measurement can be late but not forgotten. Measuring later exposed something the old rule hid: a baseline read off the same tree as the final count makes VERIFY's Test Delta compare a number against itself. So the rule names whose count it is — the BRANCH POINT's, read from the default branch's last green run of the declared lanes, or measured in the base checkout, which is already sitting there. A branch that adds no code records `n/a` and the Delta says it had nothing to measure. The second rule: a worktree cut from a dirty base strands that work on the default branch, where it is neither committed, nor reviewed, nor in the tree the stream is about to gate. CHORE(open) now moves it across — `git stash` is per-repository, so the entry the base pushes is the entry the worktree pops. Move, never copy; name what came over; a conflicting pop stops the open. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018ZTshuX7LqgMRvdRxMFNmU
The pre-Pull-Request baseline and the base-tree carry-over reach every consuming repository on its next `orly update`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018ZTshuX7LqgMRvdRxMFNmU
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
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.
Baseline measurement happens before the Pull Request (PR), against the recorded comparison revision. Section checks run during implementation; the final gate runs every declared verification command itself and requires committed spec evidence.
Specs now validate required sections, existing references, Dimension-to-test mappings, and exact configured commands using Bun's parsed Markdown tree. Initialization reports incomplete command configuration, documentation repositories can declare
verify.docs, and generated hooks print installation guidance safely.Session notes 1
The rule and its checker moved together:
spec.baselinewas presence-only, whichwould have let a header reading
pendingship. It now requires a count or anexplicit
n/a, tested both ways. The questionnaire is the invariance spec forthe ruleset, so 6.9/6.10 were rewritten and 6.9a, 6.9b and 18.4 added — leaving
them describing the old rule would have read as a regression at the next
invariance run rather than as the change it is.
No visual surface changed; this is rule prose, one criterion and its tests.
Review
Self-review of the diff, adversarial pass — the one finding worth recording:
specBaselineused.some()over every line of the spec, so a tightenedregex would have matched
unit=prose anywhere in the body. Rewrote to.find()the header line and test only that line. Verified atsrc/criteria_spec.ts:129—specLinesreturns the whole file, so thenarrowing is load-bearing, not cosmetic.
gstack
/reviewnot run as a separate route: the session's working directory isthe consuming repository, not this one, and the diff is 4 prose files plus one
criterion with tests. Rerun before merge if you want the second pass.
Make
Two new tests, both in
src/gates_spec.test.ts:a Test Baseline still reading \pending` is red at the Pull Request gateanda branch carrying no code records n/a and spec.baseline is green`.🤖 Generated with Claude Code
https://claude.ai/code/session_018ZTshuX7LqgMRvdRxMFNmU
Session notes 2
The baseline now names an immutable ancestor revision and an evidence report; a pending count cannot pass the final boundary. Spec parsing uses the runtime's Markdown tree, so quoted headings and fenced examples cannot supply required sections.
Repository setup requires
conformand a namedverify.*command, with Markdown and Markdown JSX (MDX) repositories covered by real hook and command tests. These notes supersede the earlier baseline recipe: use matching evidence or an isolated checkout of the recorded revision, not whichever revision the base checkout currently contains.Review
src/install.ts: shell backticks in a hook error message executed an installation command. The message is now literal and tested with an installer sentinel.audits/spec-template.ts: custom fence scanning accepted a required heading inside a code block. Sections, lists, and tables now come from Bun's parsed Markdown tree.src/criteria.ts: the final gate excluded spec edits from its cleanliness check. Both staged and unstaged spec changes now require a commit.src/validation.ts: shared setup validation rejects missing command roles while accepting documentation verification without application test suites.audits/spec-template.ts: the pre-push naming audit found repeated values after the new file became tracked. Shared constants and a type predicate satisfy the audit and preserve TypeScript narrowing.Broader tool review findings remain open; no deferral is recorded:
src/criteria.ts:60: installed audit scripts are not connected automatically to the work gate. Invoke applicable audits through one consistent path.src/surfaces.ts:58: an unknown Git comparison base becomes an empty change set. Report an unavailable comparison instead of treating it as no changes.core/operating-model.md:261andsrc/criteria_spec.ts:31: shared behavior still assumes a personal docs checkout and an Indy acknowledgement. Move personal/product requirements into optional packs.src/config.ts:323: detected package scripts always use Bun. Respect the repository's declared package manager.audits/ufs.sh: local file discovery missed the new untracked spec checker. Include unignored new source files in local verification.Make
Local verification:
The first push was blocked by the naming audit; the follow-up commit fixes its three findings. The successful retry passed the complete audit through the unchanged pre-push hook and advanced the remote branch to
b8dc3a9. The secret scan covered 605 commits and found no leaks.Live comprehension remains unverified: the earlier smoke run could not authenticate Claude because its session expired. No live-comprehension pass is claimed.
The regenerated M192 draft passes the spec checker locally; it has not been written to the separate product repository.
Remote Continuous Integration (CI) results at
b8dc3a9: audit, secret scan, coverage job, and Snyk checks succeeded. The Codecov report still flags 14 uncovered changed lines (93.33333% patch coverage); passing tests do not imply full coverage. Greptile has posted no review or inline comments at this poll.