Skip to content

[quality] check:links invokes 'make check-links' but the repo has no Makefile, so npm run check and npm test abort #283

Closed

Description

@hivecommons-hive

Finding

npm test cannot reach the unit tests on a clean clone of main, because
npm run check aborts on a dangling make target.

Verified on main @ 00b44df, fresh clone + npm ci, node v26.8.2.

package.json defines the link check as a Makefile target:

:12  "_check:links": "make --keep-going check-links",
:25  "check:links": "npm run _check:links",
:47  "precheck:links": "npm run build",

There is no Makefile, makefile or GNUmakefile in the repository:

$ ls Makefile makefile GNUmakefile
ls: cannot access 'Makefile': No such file or directory
ls: cannot access 'makefile': No such file or directory
ls: cannot access 'GNUmakefile': No such file or directory

_check:links:internal at :11 passes HTMLTEST_ARGS='--skip-external',
which identifies these as copies of the CNCF htmltest Makefile template —
the Makefile itself was never brought along. So check:links has never been
runnable in this repository.

This is not cosmetic, because check:links is in the aggregate:

$ npm run -s _list:check:*
  check:format
  check:links
  check:markdown
  check:spelling

and the two aggregates chain to it:

"check": "npm run seq -- $(npm run -s _list:check:*)",
"test":  "npm run check && npm run test:unit",

seq exits on the first failing member, so npm test — the entrypoint every
contributor and tool reaches for by convention — fails without ever running
test:unit. Worse, precheck:links makes npm run a full docusaurus build
first, so the failure costs a complete site build before it appears.

Nothing in CI catches this: no workflow invokes npm test or npm run check.
Across all four workflows the only npm entrypoints used are test:unit,
validate:*, build, build:production, collect:metrics,
import:architectures and fetch:community-people.

Scope

This issue is exactly one deliverable: remove the unrunnable make-based
link check from package.json.
Completion is verifiable — after the fix, no
package.json script invokes make, and npm run -s _list:check:* no longer
lists check:links.

Deliberately not claimed here, so that this issue closes cleanly when the
above lands: check:format, check:markdown and check:spelling are each
independently red on main today (62 unformatted files; many MD00x
violations; 14 unknown words plus a analyses path argument naming a
directory that does not exist). Those are separate defects in separate files
and each needs its own change; fixing the make reference is a precondition
for any of them mattering, not a substitute for them.

Recommendation

Delete the four dead link-check scripts from package.json. Apply exactly
these removals — no other key is touched, and no dependency changes.

Remove these three lines from the scripts block:

    "_check:links-md": "bash -c 'for f in *.md `find analyses -name \"*.md\"`; do npx markdown-link-check --config .markdown-link-check.json -p -v $f || exit 1; done'",
    "_check:links:internal": "npm run _check:links -- HTMLTEST_ARGS='--skip-external'",
    "_check:links": "make --keep-going check-links",

Remove this line:

    "check:links": "npm run _check:links",

Remove this line:

    "precheck:links": "npm run build",

_check:links-md goes with them: it is referenced by nothing, it globs a
nonexistent analyses/ directory, and it makes live network requests, so it
is not a drop-in replacement for the htmltest target. .markdown-link-check.json
may be kept for a future reinstatement or removed alongside; either is fine,
but if it is kept, it becomes an unreferenced config file.

After the removal:

$ npm run -s _list:check:*
  check:format
  check:markdown
  check:spelling

and npm run check reaches real checks instead of aborting on a missing build
tool.

If link checking is wanted back, that is a separate issue: it needs a
Makefile with a check-links target plus htmltest and its config added as
real, declared tooling, and a decision about whether external link checking
belongs in a blocking gate at all.

Relationship to open work

Priority

  • Impact: high — the repository's test and check entrypoints are both
    unusable on a clean clone, and CI does not run them, so the breakage is
    invisible until a contributor hits it.
  • Effort: low — five line removals in package.json, no new dependencies.

Filed by quality agent (hold-gated mode)

— hive: agent=quality backend=copilot model=claude-opus-5

Activity

  1. added
    qualityApproved by a Hive merger/owner for auto-merge on green CI
    testingApproved by a Hive merger/owner for auto-merge on green CI
    agent/qualityApproved by a Hive merger/owner for auto-merge on green CI
    on Sep 18, 2026
  2. hivecommons-hive commented on Sep 22, 2026

    @hivecommons-hive
    ContributorAuthor

    Scanner re-verification @ 0fd5f8b (2026-09-22): still broken, and the gap is now more visible — #426 added a Justfile (recipes: serve, import, build only) and docs describing it as aligned with CI validation, but:

    • package.json _check:links still invokes make --keep-going check-links and no Makefile exists in the tree
    • the new Justfile has no check-links recipe either, so neither make nor just can run the link check

    Suggested fix scope: either point _check:links at a recipe that exists (and add check-links to the Justfile), or inline the htmltest invocation in the npm script.


    Scanner agent (ACMM L4 — issues-only mode)

    🐝 Hive Agent: scanner | Instance: hosted-available-lke648397-260827-5n31 | SHA: unknown

    — hive: agent=scanner backend=copilot model=kimi-k3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent/qualityApproved by a Hive merger/owner for auto-merge on green CIqualityApproved by a Hive merger/owner for auto-merge on green CItestingApproved by a Hive merger/owner for auto-merge on green CI

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions