Found while implementing #11042 (the four executable plural call strings in areas/attachments-storage.json). Filed rather than fixed: #11042's scope is fenced to that one file by its triage ruling, and this site is in a different file.
The site
docs/qa/platform-checklist/areas/records-forms.json:35
"call": "PUT /api/v1/meta/objects/qa_nofeeds?package=com.objectstack.qa.feeds"
Same defect class as #11042's four, exactly: an executable step that instructs a QA operator to send a plural item write on the metadata write door. It answers 200 only because the boundary fold tolerates the spelling; the /meta type segment is always singular.
⭐ Why this is worth a card of its own — the population GREW after it was measured
#11042 measured at merged main2866d5f97e and reported the checklist bucket as four sites, all in attachments-storage.json. That measurement was correct when it was taken:
$ git show 2866d5f97e:docs/qa/platform-checklist/areas/records-forms.json | grep -c 'meta/objects'
0
The plural call arrived afterwards, in 5737222b89 (2026-08-26, "docs(qa): drive the FEEDS_DISABLED case records-forms only named", #12382) — four days after #11042 was filed on 2026-08-22.
So this is not a site the sweep missed. It is a site that did not exist yet. The defect class is still being newly introduced, which makes the interesting question not "are there more" but "what stops the next one".
What stops the next one: nothing
pnpm check:platform-checklist is the declared validator for these files (named in every area file's own $comment). It validates structure, coverage kinds, traps and provisioning resolution — measured on this tree: OK — 15 areas, 221 items (221 active); coverage: 31 kinds mapped .... It does not inspect the URL spelling inside call strings. Grepping its source for call returns only prose matches, no spelling predicate.
Nor is the spelling pinned anywhere else: none of qa_vault / qa_shared / qa_nofiles / qa_media / qa_nofeeds appears in a test that asserts the call URL.
Meanwhile the repo already owns the vocabulary a guard would need — META_URL_TO_SINGULAR in packages/spec/src/meta-spelling/meta-url-data.generated.ts, kept honest on every CI lap by check:meta-url-spelling, which is green on this tree (34 spellings, 27 registry-declared types; manifest/derived agreement holds).
Suggested shape
A predicate in scripts/check-platform-checklist.mjs over every call string: extract a /meta/SEGMENT or /metadata/SEGMENT path segment and refuse it when the segment is a key of META_URL_TO_SINGULAR (i.e. a plural spelling that folds). That is a closed set, already derived and already gate-held, so the guard cannot drift from the contract it enforces.
⚠️ Two boundaries worth stating so the guard is not written too wide:
Scope note
#11042 remains open and is not addressed here; this is a separate file and a separate guard. Repository state at time of filing: feab4bff9d.
Found while implementing #11042 (the four executable plural
callstrings inareas/attachments-storage.json). Filed rather than fixed: #11042's scope is fenced to that one file by its triage ruling, and this site is in a different file.The site
docs/qa/platform-checklist/areas/records-forms.json:35Same defect class as #11042's four, exactly: an executable step that instructs a QA operator to send a plural item write on the metadata write door. It answers 200 only because the boundary fold tolerates the spelling; the
/metatype segment is always singular.⭐ Why this is worth a card of its own — the population GREW after it was measured
#11042 measured at merged
main2866d5f97eand reported the checklist bucket as four sites, all inattachments-storage.json. That measurement was correct when it was taken:The plural call arrived afterwards, in
5737222b89(2026-08-26, "docs(qa): drive the FEEDS_DISABLED case records-forms only named", #12382) — four days after #11042 was filed on 2026-08-22.So this is not a site the sweep missed. It is a site that did not exist yet. The defect class is still being newly introduced, which makes the interesting question not "are there more" but "what stops the next one".
What stops the next one: nothing
pnpm check:platform-checklistis the declared validator for these files (named in every area file's own$comment). It validates structure, coverage kinds, traps and provisioning resolution — measured on this tree:OK — 15 areas, 221 items (221 active); coverage: 31 kinds mapped .... It does not inspect the URL spelling insidecallstrings. Grepping its source forcallreturns only prose matches, no spelling predicate.Nor is the spelling pinned anywhere else: none of
qa_vault/qa_shared/qa_nofiles/qa_media/qa_nofeedsappears in a test that asserts the call URL.Meanwhile the repo already owns the vocabulary a guard would need —
META_URL_TO_SINGULARinpackages/spec/src/meta-spelling/meta-url-data.generated.ts, kept honest on every CI lap bycheck:meta-url-spelling, which is green on this tree (34 spellings, 27 registry-declared types; manifest/derived agreement holds).Suggested shape
A predicate in
scripts/check-platform-checklist.mjsover everycallstring: extract a/meta/SEGMENTor/metadata/SEGMENTpath segment and refuse it when the segment is a key ofMETA_URL_TO_SINGULAR(i.e. a plural spelling that folds). That is a closed set, already derived and already gate-held, so the guard cannot drift from the contract it enforces.callstrings only. Thewhy/expect/sourcefields legitimately quote plural spellings when narrating the fold or the defect, andattachments-storage.json's ownrequiresprose correctly names the parameterizedPUT /api/v1/meta/:type/:name— a segment-shaped literal, not a plural.PUT /api/v1/meta/objects/:name, plus a triage-sized literal residue #11042 and this fifth one answer identically today; the point is that the repo should not instruct the non-canonical spelling, not that the spelling should stop working.Scope note
#11042remains open and is not addressed here; this is a separate file and a separate guard. Repository state at time of filing:feab4bff9d.