Repository navigation
Commit 86f4246
fix(lint): flag an approval slate that is entirely manager rungs (#17034)
* fix(lint): flag an approval slate that is entirely manager rungs
`approval-approvers-may-resolve-empty` reasoned only about group-routed
rungs (position/team/department) and was silent on `{ type: 'manager' }`,
which has the same empty-slate failure shape and a worse cause: an
unstaffed position is an operator's to fix in-product, an unset
`sys_user.manager_id` is not — the managed-update whitelist is
{name, image, locale}, the auth admin endpoints refuse the column and the
Console renders no field for it.
Adds a second arm under the same rule id and the same `info` tier. It is
scoped to slates that are ENTIRELY manager rungs, which keeps it disjoint
from the existing arm by construction and leaves every `position` verdict
— mixed slates included — byte-identical. The message says plainly that
the check is static and does not assert the slate is empty; the hint
prescribes SCIM / import / directory sync rather than a Console edit that
is not possible. A stack whose own seeds wire `sys_user.manager_id`
silences it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012GKcPZbMoGq7WPzKLfRBTU
* fix(lint): keep tracker ids out of the manager rung's runtime prose
`check:doc-authoring` Rule 3: a runtime string reaches authors, operators
and generated surfaces, none of whom can resolve a bare id. The anchors
move to the adjacent comments, where the reader who can resolve them is
already reading the source. Also adds the changeset — the new advisory
prose reaches four published bundles (dist/index.{js,cjs},
dist/runtime.{js,cjs}), all inside the package's `files`.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012GKcPZbMoGq7WPzKLfRBTU
* fix(lint): grade the approvers widening at minor, not patch
A rule that begins covering a case it was silent on is a purely additive
widening of a published package's public surface, and the standing
maintainer ruling puts a floor of `minor` on that act regardless of the
commit type. The clause-② declaration this PR carries is correct and
stays; it was the level under it that was wrong.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012GKcPZbMoGq7WPzKLfRBTU
* fix(lint): grade the manager-rung remedy routes, and say where the seed suppressor applies
The hint listed SCIM, bulk import and directory sync as equally available
routes for populating `sys_user.manager_id`. Measured against this tree,
two of the three have no writer here: `admin-import-users.ts` matches
`manager_id` 0 times against a control of `phone_number` 8 and its update
set is {name, image, locale} + phone_number + role, and the SCIM
Enterprise `manager` attribute is declared without any non-test file
projecting it onto the column. A seed — or any other system-context write
— does work, because both write guards gate on `isUserContextWrite`
(`userId && !isSystem`).
An exact diagnosis whose prescription cannot be carried out is worse than
no prescription, so the routes are now graded rather than listed. SCIM and
directory sync stay named: a deployment running a real one may populate
the column through it, and the defect was presenting them as something
this platform provides.
Also records the surface asymmetry of the seed suppressor. The runtime
publish gate's context carries objects, permissions, books, datasets and
pages, and no `data`, so the suppression is CLI-side only and a Studio
publish draws the advisory however the tenant's users are wired. Prose
only — the arm, the tier and the position arm are untouched.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012GKcPZbMoGq7WPzKLfRBTU
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 2cd4c54 commit 86f4246
3 files changed
Lines changed: 372 additions & 0 deletions
File tree
- .changeset
- packages/lint/src
Lines changed: 18 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
220 | 220 | | |
221 | 221 | | |
222 | 222 | | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
223 | 404 | | |
224 | 405 | | |
225 | 406 | | |
| |||
0 commit comments