You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Astryx surface inventory check is one-directional and not wired into CI #3064
While addressing review feedback on #3033, two independent drifts surfaced in docs/astryx-surface-file-inventory.{md,paths}, both from the same gap.
What is wrong
scripts/check-astryx-surface-inventory.mjs asserts that every product surface file on disk appears in the inventory. It never asserts the reverse. A row for a file that has been deleted survives the check indefinitely.
It is also not referenced from package.json or .github/workflows/ci.yml, so it does not run on its own. Nothing enforces the inventory at all today.
docs/astryx-surface-file-inventory.md carried rows for apps/desktop/src/renderer/external-session-import-dialog.tsx and apps/desktop/src/renderer/styles/external-session-import.css after both were deleted. The .paths half had been updated by hand; the Markdown half had not, so the two halves disagreed.
Three files that arrived on main were never listed in either half: apps/desktop/src/renderer/settings/runtime-host-profiles-section.tsx, apps/desktop/src/renderer/settings/runtime-host-ssh-terminal-dialog.tsx, and apps/desktop/src/renderer/styles/settings/runtime-host.css. This is the direction the check does cover — it simply was not running.
Both are corrected in #3033 (322a9ce) by running scripts/generate-astryx-surface-inventory.mjs rather than editing either half by hand. That fixes the current state, not the gap.
Proposed change
Make check-astryx-surface-inventory.mjs fail on inventory rows with no file on disk, in both .paths and the Markdown table, so the check is symmetric.
Prefer asserting that the generator output matches the committed files byte-for-byte over re-implementing the comparison. These are generated artifacts; "regenerate and diff" is a stronger and simpler invariant than a list of hand-written rules, and it also catches column drift the current check ignores.
Add an npm script and wire it into the changes-gated CI path so it runs when surface files move.
The hand-editing is the root cause: a generated file maintained in halves drifts in whichever half the author forgets. A check that only runs one direction and only when someone remembers to run it cannot catch that.
The inventory check only asserts disk → inventory and is not on the CI path, so deleted rows and hand-edited halves can drift. I will make the check regenerate-and-diff both artifacts, add an npm script, and wire it into the changes-gated CI lane.
Activity
1625567290 commentedon Aug 15, 2026
Taking this.
The inventory check only asserts disk → inventory and is not on the CI path, so deleted rows and hand-edited halves can drift. I will make the check regenerate-and-diff both artifacts, add an npm script, and wire it into the changes-gated CI lane.
Generated-by: Grok
ci: make the Astryx surface inventory a regenerate-and-diff gate (apa…