fix(engagement): the trigger manifest was stale, and its check was crying wolf #191
Reference in New Issue
Block a user
No description provided.
Delete Branch "fix/engagement-manifest-crlf"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Two defects, and the second is why the first survived a whole phase.
The manifest is stale
engagement-triggers.jsonembedsmoduleApiVersiondeliberately — "a stale manifest needs to know which API's rules produced it" — and Phase 7 (#189) bumpedMODULE_API_VERSIONto 1.10.0 without regenerating it. The committed file has said1.9.0ever since:That is the entire content diff. Regenerating is the whole fix.
The check could not be believed
Both the test and the
--checkCI gate compared bytes. This repo is developed on Windows undercore.autocrlf=true, so git checks the committed LF blob out as CRLF, and a byte comparison then calls an unchanged manifest stale. That failure fires on every Windows checkout, says "a trigger declaration changed", and is "fixed" by regenerating a file whose content was already correct.So the one check that exists to be believed had been failing for a reason everyone had learned to write off as environmental — including me, twice. #189's PR body recorded it as a pre-existing CRLF failure; #190's repeated the claim. It was neither pre-existing nor CRLF. A check that cries wolf is a check nobody reads, and the genuine staleness underneath it went unnoticed for exactly that reason. I only found it because you asked me to actually fix the thing I had twice waved past.
Line endings are now normalised on both sides — which is the convention
routeManifest.jsandrouteManifest.test.jsalready use one file along. That pair had clearly hit this and been fixed; the engagement pair never was. What is being asserted is that the committed manifest describes the same declarations, and a line ending is not a declaration. Policing the encoding is.gitattributes' job, not this check's.Verify
1.10.0→1.9.0): gate exits 1 ✔npm testunder the TAP reporter: 1950 tests, 1877 pass, 0 fail — pristineedge's 1950/1876 plus the one test this repairs.A harness note, disclosed rather than buried
The default (spec) reporter intermittently reports a file-level failure with all of that file's subtests passing, no assertion, and no diagnostic beyond
'test failed'. It named a different unrelated file on each of four runs —requireInternalKey,routeManifest,eventAuthorize,totp— and the TAP reporter shows zero failures over the same suite.It looks like a reporter artifact under concurrency rather than a failing test, but it correlates with this branch (4/4) against pristine
edge(0/2) on the same machine state, and I could not explain that. I am not claiming it is unrelated. It does not indicate a product defect, no assertion fails, and it is worth its own look — flagging it because a number that moves is exactly the kind of thing that trains people to ignore a suite, which is the mistake this PR is about.Ordering
Independent of #190 (Phase 8) — different files, no conflict, either order merges. #190's body still repeats the wrong "pre-existing CRLF" diagnosis; I will correct it once this lands.