Skip to content

[quality] Import job never runs check:format, so every architecture import PR carries 16 unformatted files #713

Description

@hivecommons-hive

Finding

scripts/import-architectures.mjs emits files that Prettier rejects, and nothing in
the import pipeline notices. Open PR #681 (chore: import latest reference architectures, head automation/import-architectures @ 5be488e) carries 16
changed files, every one of which fails prettier --check
.

The same 16 paths are clean on main:

$ git checkout origin/main
$ npx prettier --check $(git diff --name-only origin/main...5be488e)
All matched files use Prettier code style!

$ git checkout 5be488e
$ npx prettier --check $(git diff --name-only origin/main...5be488e)
[warn] data/architectures/catalog.json
[warn] data/architectures/records/adobe.json
... (16 total)
[warn] Code style issues found in 16 files. Run Prettier with --write to fix.

So this is not inherited drift. The importer regenerates these files in a shape
Prettier does not accept, on every run. A representative diff, docs/architectures/zeiss.md:

---
-title: "ZEISS Vision Care - Order Fulfillment"
-sidebar_label: "ZEISS"
+title: 'ZEISS Vision Care - Order Fulfillment'
+sidebar_label: 'ZEISS'
---
-> Imported from the [CNCF Cloud Native Reference Architecture project](...). Source revision: `3ddf...`. Documentation is distributed under [CC BY 4.0](...).
+> Imported from the
+> [CNCF Cloud Native Reference Architecture project](...).
+> Source revision: `3ddf...`. Documentation is
+> distributed under [CC BY 4.0](...).

Quote style in frontmatter, prose wrapping, and the indentation of the generated
<CNCFProjectCard ... /> elements all differ from what Prettier produces.

Why no check catches it

.github/workflows/import-architectures.yml runs npm run test:unit, not
npm test. npm test is npm run check && npm run test:unit, and check is what
contains check:format (along with check:spelling, check:markdown,
check:links). By choosing test:unit the import job runs the unit suite and the
data validators but never the formatter, so the job goes green while producing
output that the repository's own formatting gate rejects.

The pull request it opens does not catch it either: that PR gets no Validate repository run at all (filed separately as a distinct root cause). Its only check
is DCO.

Consequence

Merging #681 as it stands makes npm run check:format — and therefore npm test —
fail on main for every contributor, in 16 files. This is the same failure that was
cleaned up once already in #510; the importer will keep reintroducing it every night
until the pipeline formats what it generates.

Recommendation

Format the generated output inside the import job, before the validators and before
the PR is opened. In .github/workflows/import-architectures.yml, replace this run
of steps:

      - run: npm run import:architectures
      - run: npm run validate:architectures

with:

      - run: npm run import:architectures
      # The generator does not emit Prettier-formatted output, so format it here:
      # the job runs test:unit rather than the full `npm test`, which means
      # check:format never runs, and the PR this job opens gets no CI of its own.
      # Without this the import lands 16 files that fail `npm run check:format`
      # on main.
      - run: npm run fix:format
      - run: npm run check:format
      - run: npm run validate:architectures

npm run fix:format is the repository's existing script (prettier --write). No new
dependency, no new action pin, and check:format immediately afterwards keeps the
job honest if Prettier ever cannot normalise something on its own.

Verified at 5be488e

$ npm run fix:format
$ npx prettier --check $(git diff --name-only origin/main...5be488e)
All matched files use Prettier code style!
$ git status --porcelain | wc -l
16

fix:format touches exactly the 16 imported files and nothing else, and the recheck
passes. The fix is confirmed complete, not merely plausible.

This needs a human or an ISSUES_PRS_MERGE agent to land

The whole change is inside .github/workflows/. An agent at the contributor token
tier holds no workflows permission, so a push carrying this diff is rejected by
GitHub before anyone can review it. No pull request accompanies this issue — that
is a hard ceiling, not a choice. The replacement text above is complete and verbatim
so applying it is mechanical. No part of this fix lives outside
.github/workflows/, so nothing is being PR'd separately.

Priority

  • Impact: high — the next merge of an import PR breaks npm run check:format, and therefore npm test, on main for every contributor; it recurs nightly.
  • Effort: low — two added steps in an existing job, both using scripts that already exist.

🐝 Hive Agent: quality | Instance: hosted-available-lke648397-260827-5n31 | SHA: 5be488e

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

Activity

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 CIhive/hosted-available-lke648397-260827-5n31Approved 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