Repository navigation
fix(advisories): a Maven-only project is not ready; the Brief names what it did not check (W5a) - #987
Merged
Merged
Conversation
… what it did not check (W5a, follow-ups to #974) - Readiness counts an ecosystem only when an auditable row carries an installed version. The manifest scanner registers pom.xml / build.gradle dependencies with no version, a versionless dependency is never matched (#974), and those rows made "Maven" a required ecosystem: its sync succeeded and readiness said Ready for a project nothing was checked in. Now a Maven-only project reads NoInventory with its pom.xml named, and an npm + Maven machine reads Ready for npm with the Maven files named. The scanner keeps those rows for ACE context; the sync is unchanged. (Live DB: every versioned row is lockfile-backed npm/Rust, so the operator's readiness does not change.) - BriefFacts carries #974's not-covered report. The deterministic brief's all-clear reads "Nothing new touches the code 4DA checked today." and a "Not checked: ..." line names the files 4DA does not read and the lockfiles it could not read (three named, then "and N more"). A narrated brief's all-clear is rewritten the same way (idempotent), and the prompt tells the model the facts are complete only for the files read. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015KSXWNneouUjTiVV3Rc3FH
…every branch; NoInventory says no installed versions were read; cold start is not "nothing to check" - B1: honest_without_lockfiles and the prompt's advisory-gap branch name the not-covered files too. A Maven-only project is NoInventory, so it took the gap branch and the narrated brief never named its pom.xml. - B2: NoInventory now says what it means: 4DA read no installed versions (a manifest without a lockfile, or a format it does not read such as Maven or Gradle). "No ecosystem it can check" was false: OSV covers Maven, and a package.json with no lockfile is npm. Rust and all 13 locales (preemption.advisories.uncovered.*, firstRun.advisory.uncovered). - S3: cold start. Before the first lockfile walk reports, every manifest row is versionless; readiness reads NotStarted / Syncing, not NoInventory (auditable_coverage tells "not read yet" from "nothing checkable"). - S4: the brief reuse fingerprint carries the not-covered and unreadable counts. - S5: scoping the all-clear replaces the phrase, so bullets and second sentences survive. - name_list helper for the two named lists. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015KSXWNneouUjTiVV3Rc3FH
runyourempire
force-pushed
the
fix/w5a-not-covered
branch
from
October 18, 2026 12:43
fc9ed94 to
30a2a4f
Compare
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
These are the two W5a follow-ups to #974 (E4, not-covered), as agreed with recovery-lead.
1. A Maven-only project is no longer "ready"
osv::sync::auditable_ecosystems, which only readiness calls, now counts an ecosystem only when at least one auditable row carries an installed version.pom.xmlandbuild.gradledependencies with no version, and fix(advisories): unversioned matches are never grounded; uncovered ecosystems say so (audit A2/E4) #974 never matches a versionless dependency. Those rows still made "Maven" a required ecosystem, its sync succeeded, and readiness said Ready for a project in which nothing was checked.NoInventory, and fix(advisories): unversioned matches are never grounded; uncovered ecosystems say so (audit A2/E4) #974'snot_coverednames itspom.xml.Readyfor npm, with the Maven files named, not counted as covered.detected_projectsand the context inventory.auditable_packages_by_ecosystem).project_dependenciesrows (manifest-sourced) have no version, and all 5,013 versioned rows are lockfile-backed npm/Rust inuser_dependencies. The operator's own readiness does not change.2. The Brief names what it did not check
BriefFactscarries #974's not-covered report, which is used three ways:honest_without_lockfilesrewrites the model's "Nothing new touches your code" the same way and appends the line. Running it twice changes nothing.Checks
cargo clippy --locked -- -D warnings: clean.osv::,brief,briefing,digest,morning_andevidence::: 789 passed.🤖 Generated with Claude Code
https://claude.ai/code/session_015KSXWNneouUjTiVV3Rc3FH