A manifest is not always at the repository root - #6
Merged
Merged
Conversation
First run of devia init on a real project rather than a scratch fixture: a Next.js app whose manifest lives in apps/web/. Five gates reported "SKIP no package.json" to a repository that has one, with a lockfile, a lint script and thirteen dependencies. The letter of AGT-006 was kept -- nothing was rounded up to PASS -- but the reason printed was false, which is worse than silence: the reader believes the tool looked. "I did not look there" was rendered as "you have none". check - Reads every package.json in the repository, nearest the root first, and takes the union of their dependencies. "Does this project use X" is not a question about one directory - Looks for a lockfile next to each manifest, not only at the root - Finds a migrations directory at any depth - SKIP now reads "no package.json anywhere in the repository", and findings name the file they came from: "no npm test script in apps/web/package.json" init - Detects the profile from the nearest manifest instead of falling back to the default. The answer was right by accident before; it is now right by evidence - Records the directories holding manifests in code.paths, which is the tree doctor watches for staleness. It saw src and missed apps Measured on that project: six SKIPs became two, four gates turned into real findings, and the lockfile went from invisible to PASS apps/web/package-lock.json. Also fixed: the separator class in the scan filter matched only "/", so with git unavailable on Windows a nested apps/web/node_modules was walked instead of skipped. Both separators now. Registries - G1 closed and reframed: the blind spot was never the ecosystem, it was the root assumption. Ecosystem-specific gates stay out of scope - D9 opened: pyproject.toml, go.mod and Cargo.toml are still read at the root only, so a Python or Go package one directory down is still invisible - G7 opened: what devia should do when a repository already carries an ad-hoc memory of its own Version: package 0.4.0, standard unchanged at 0.1.0. Verified: 34 tests with and without FORCE_COLOR, including one that builds a repository whose only manifest is in apps/web and asserts the lockfile is found, the finding names its file, and the profile follows the evidence.
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.
First run of devia init on a real project rather than a scratch fixture: a Next.js app whose manifest lives in apps/web/. Five gates reported "SKIP no package.json" to a repository that has one, with a lockfile, a lint script and thirteen dependencies.
The letter of AGT-006 was kept -- nothing was rounded up to PASS -- but the reason printed was false, which is worse than silence: the reader believes the tool looked. "I did not look there" was rendered as "you have none".
check
init
Measured on that project: six SKIPs became two, four gates turned into real findings, and the lockfile went from invisible to PASS apps/web/package-lock.json.
Also fixed: the separator class in the scan filter matched only "/", so with git unavailable on Windows a nested apps/web/node_modules was walked instead of skipped. Both separators now.
Registries
Version: package 0.4.0, standard unchanged at 0.1.0.
Verified: 34 tests with and without FORCE_COLOR, including one that builds a repository whose only manifest is in apps/web and asserts the lockfile is found, the finding names its file, and the profile follows the evidence.
Summary
Type
Devia compliance
.devia/layout, CLI contract):CHANGELOG.mdupdated:npm run build:index):Checks
npm run validatepassesnpm testpassesnode bin/devia.mjs check --root .passesdevia initstill produces a valid project (devia validateclean in a scratch repo)Not verified