Repository navigation
Add: specs for the two test targets, taking src/ to 100% spec coverage - #22
Merged
Merged
Conversation
`specsync coverage` reported one uncovered file, `src/promise.rs` at 386 LOC, which is exactly the 8696 - 8310 the LOC number was short. `fledge atlas` reported `tests/cli.rs` and `tests/promise.rs` alongside it. All three make claims nothing else in the repository makes, so all three get a spec rather than an exclusion. specs/promise/ covers src/promise.rs and tests/promise.rs: the property tests of the one promise (hi: ID-5, ID-5.a, FILE-22.c). It records why the postcondition compares (id, section, text, note) and not ids, which is DECISIONS.md section 35 and cost a release; why the two halves are two, since the serial half can ask Workspace::load about a section and cannot fork while the concurrent half can fork and can only see bytes; and why none of the six generated_body fixtures is a file hi would have written, which is section 26. specs/cli/ covers tests/cli.rs, at 1,819 lines the largest file here and the only place argv routing, exit codes and the stdout/stderr split are tested at all. It records the three Repo constructors and why the choice between them is load-bearing, the register of five reproduced id defects in an_id_is_never_handed_out_twice, and the strength ladder for "a refusal writes nothing": file snapshot, then absence of INTENT.md / AGENTS.md / .hi.lock, then a byte-level listing of the whole tree. Both carry the four companions and cite the hi criteria they serve. Their tasks.md and testing.md name what is genuinely not covered rather than claiming it is: no shrinking on a property failure, no coverage of `hi issue --create`, no single-process bootstrap capture, and the fixture rule that nothing automated enforces. CLAUDE.md's architecture table was missing src/lock.rs and src/promise.rs; both added, with a note on the two test specs. No source change. `fledge lanes run verify` passes all 8 steps, `specsync check` reports 10 specs, 15/15 files and 8696/8696 lines. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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
fledge atlasreported 64% and four orphans. Two of those were a bug in atlas, not a gap here — CorvidLabs/fledge-plugin-atlas#19 fixes them. This PR closes the one real gap and the scope difference.src/promise.rs, 386 LOC — exactly the8696 - 8310specsync coveragewas short.specs/promise/covers it andtests/promise.rstogether, since they are two halves of one property: the serial half can askWorkspace::loadwhich section a criterion came back in and cannot fork; the concurrent half can fork and can only see bytes. The spec records why the postcondition compares(id, section, text, note)rather than ids — DECISIONS.md §35, where every id was still readable and a retired criterion had come back to life carrying somebody else's reason — and why none of the sixgenerated_bodyfixtures is a file hi would have written (§26).tests/cli.rs, 1,819 lines, the largest file in the repository and the only place argv routing, exit codes and the stdout/stderr split are tested at all.specs/cli/records the threeRepoconstructors and why the choice between them is load-bearing (Repo::newpre-createshi/, so it cannot reach the bootstrap lock path at all), the register of five reproduced id defects inan_id_is_never_handed_out_twice, and the strength ladder for "a refusal writes nothing" — file snapshot, then absence ofINTENT.md/AGENTS.md/.hi.lock, then a byte-levellistingof the whole tree.Both carry the four companions and cite the hi criteria they serve.
tasks.mdandtesting.mdname what is genuinely not covered rather than claiming it is: no shrinking on a property failure, no coverage ofhi issue --create, no single-process bootstrap capture, no CRLF capture through the binary, and the fixture rule that nothing automated enforces.CLAUDE.md's architecture table was missingsrc/lock.rsandsrc/promise.rs— both added, with a note on the two test specs.I did not add
teststosource_dirs. I tried it: spec-sync ignores test paths for coverage regardless, so the line would have been a misleading no-op.No source change. Nothing in
src/ortests/is touched.Test Plan
fledge lanes run verify— all 8 steps (fmt, lint, test, view-behaves, intent, index, spec, nudge-behaves, plugin-validate)specsync check --force— 10 specs checked, 10 passed, 0 warnings, 0 failedcargo test— 67 tests intests/cli.rs, 5 in the promise targets, all green100% of hi's code is covered by a spec. Every source file is under a spec.— 0 orphans, 0 phantoms, empty action plan, and the phantomworkspace"spec-sync reports drift" review flag gone🤖 Generated with Claude Code