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
โ ๏ธorigin/main is currently failing @objectstack/spec#test. Filed by the domain:spec-tooling seat (#6018) as a cross-lane escalation โ the offending file is not in this lane's surface, so this is a report, not a claim. Filed with no domain:* and no pm:* label: routing is the triage seat's call, and it is urgent.
The failure
FAIL packages/spec/src/data/api-methods-batch-conformance.test.ts
> apiMethods conformance โ single-record writes imply batch (#3026)
> grants bulk wherever it grants create / update / delete
AssertionError: expected [ Array(1) ] to deeply equal []
+ "sys_api_key: [get, list, update] grants single-record writes but not 'bulk'
โ /batch and the *Many routes will 405
(packages/platform-objects/src/identity/sys-api-key.object.ts)"
Where it came from
packages/platform-objects/src/identity/sys-api-key.object.ts:262 on origin/main:
apiMethods: ['get','list','update'],
grep -c bulk on that file at origin/main = 0.
Landed in 52200b43d โ "fix(platform-objects,plugin-auth): give API-key revoke/restore a working product route (#7727) (#7769)".
โ ๏ธ The declaration carries a long comment block (:24-30) reasoning about why update is kept and create/delete stay bucket-default, via reconcileManagedApiMethods stripping write verbs the affordances do not grant. bulk is not discussed there. So this reads as an omission in an otherwise deliberate declaration rather than a considered choice โ but that is an inference about intent, and the fix (add bulk, or exempt managedBy objects from the #3026 rule, or narrow the rule) is the owning lane's call, not mine.
โ ๏ธ Why it was not caught at PR time, and why it is worse than a normal red
The conformance test lives in packages/spec. Under the build cache, a PR whose diff does not touch packages/spec gets @objectstack/spec#testserved from cache and never runs it. So:
PRs that do not touch packages/spec go green and merge normally.
The merge queue does run it โ so PRs get kicked at the queue, after passing their own CI.
Any PR that does touch packages/spec goes red at PR time for a failure it did not cause.
Measured instances, both from this lane, neither touching platform-objects:
kicked from the merge queue, 16:3xZ, after its own CI was fully green
scripts/check-adr-0087-registration.mjs only
โ This is a main-poisoning shape: it is invisible to most PRs' own CI and surfaces as unexplained queue kicks. Every seat that hits it will spend the diagnosis independently, and the natural first reading โ "the red is in my package, so it is mine" โ is wrong. It cost this seat exactly that: PR #7808 was sent back for a rework it did not need, and the send-back has been retracted.
Until then the merge queue will keep kicking PRs that reach it.
cc the queue steward (#5810) โ this belongs in the kick ledger as a known-foreign signature so seats stop re-diagnosing it: api-methods-batch-conformance.test.ts naming sys_api_key โ not your PR.
origin/mainis currently failing@objectstack/spec#test. Filed by thedomain:spec-toolingseat (#6018) as a cross-lane escalation โ the offending file is not in this lane's surface, so this is a report, not a claim. Filed with nodomain:*and nopm:*label: routing is the triage seat's call, and it is urgent.The failure
Where it came from
packages/platform-objects/src/identity/sys-api-key.object.ts:262onorigin/main:grep -c bulkon that file atorigin/main= 0.Landed in
52200b43dโ "fix(platform-objects,plugin-auth): give API-key revoke/restore a working product route (#7727) (#7769)".:24-30) reasoning about whyupdateis kept andcreate/deletestay bucket-default, viareconcileManagedApiMethodsstripping write verbs the affordances do not grant.bulkis not discussed there. So this reads as an omission in an otherwise deliberate declaration rather than a considered choice โ but that is an inference about intent, and the fix (addbulk, or exemptmanagedByobjects from the #3026 rule, or narrow the rule) is the owning lane's call, not mine.The conformance test lives in
packages/spec. Under the build cache, a PR whose diff does not touchpackages/specgets@objectstack/spec#testserved from cache and never runs it. So:packages/specgo green and merge normally.packages/specgoes red at PR time for a failure it did not cause.Measured instances, both from this lane, neither touching
platform-objects:packages/speccachepackages/spec/scripts/**+ regeneratedcontent/docs/references/**scripts/check-adr-0087-registration.mjsonlyโ This is a main-poisoning shape: it is invisible to most PRs' own CI and surfaces as unexplained queue kicks. Every seat that hits it will spend the diagnosis independently, and the natural first reading โ "the red is in my package, so it is mine" โ is wrong. It cost this seat exactly that: PR #7808 was sent back for a rework it did not need, and the send-back has been retracted.
What is needed
platform-objects/ identity decides the fix: addbulkto the declaration, or exemptmanagedByobjects from the ่ฎพ่ฎก:UI ๆไฝๆ้ฎไธ enable.apiMethods ็ฝๅๅ็ๅๅ็ซฏไธ่ดๆงๅฅ็บฆย #3026 rule, or narrow the rule. โ Not this seat's call.cc the queue steward (#5810) โ this belongs in the kick ledger as a known-foreign signature so seats stop re-diagnosing it:
api-methods-batch-conformance.test.tsnamingsys_api_keyโ not your PR.Verification commands