@@ -486,19 +486,19 @@ const SITES = [
486486 waivers : [
487487 {
488488 direction : 'missing' ,
489- keys : [ 'views' , 'objectExtensions' , 'data' , 'translations' ] ,
489+ keys : [ 'views' , 'objectExtensions' , 'picklistExtensions' , ' data', 'translations' ] ,
490490 reason :
491- 'the four SHAPE exclusions the declaration already documents , pinned here so the prose is checked: '
492- + 'ViewSchema has no `name` (its identity is the target object), ObjectExtensionSchema keys by '
491+ 'the five SHAPE exclusions, pinned here so the prose is checked: ViewSchema has no `name` (its '
492+ + 'identity is the target object), ObjectExtensionSchema and PicklistExtensionSchema key by '
493493 + '`extend`, SeedSchema keys by `object`, and TranslationBundleSchema is itself a record.' ,
494494 } ,
495495 {
496496 direction : 'missing' ,
497- keys : [ 'datasourceMapping' , 'capabilities' , 'docs' , 'books' , 'tools' , 'skills' ] ,
497+ keys : [ 'datasourceMapping' , 'capabilities' , 'docs' , 'books' , 'tools' , 'skills' , 'picklists' ] ,
498498 reason :
499499 'no map form has ever been offered for these. `datasourceMapping` is a rule LIST whose precedence is '
500- + 'positional, so a map would lose the ordering that decides which rule wins; the other five are '
501- + 'array-only authoring surfaces. Offering a map form for any of them WIDENS what parses — an '
500+ + 'positional, so a map would lose the ordering that decides which rule wins; the other six are '
501+ + 'array-only authoring surfaces (`picklists` since it was declared) . Offering a map form for any of them WIDENS what parses — an '
502502 + 'acceptance change, which belongs to its own reviewed diff rather than to this gate.' ,
503503 } ,
504504 ] ,
@@ -525,13 +525,13 @@ const SITES = [
525525 } ,
526526 {
527527 direction : 'missing' ,
528- keys : [ 'datasourceMapping' , 'translations' , 'objectExtensions' , 'data' ] ,
528+ keys : [ 'datasourceMapping' , 'translations' , 'objectExtensions' , 'picklistExtensions' , ' data'] ,
529529 reason :
530- 'there is no singular metadata-type name to map to. `objectExtensions` merges into its target '
531- + 'object rather than registering as a type, `datasourceMapping` is stack-level routing '
532- + 'configuration, `translations` is a bundle record consumed by the i18n resolvers, and `data` '
533- + 'seeds are applied by SeedLoaderService. `pluralToSingular` returns its input unchanged for all '
534- + 'four , which is the correct answer rather than a gap.' ,
530+ 'there is no singular metadata-type name to map to. `objectExtensions` and `picklistExtensions` '
531+ + 'merge into their target rather than registering as a type, `datasourceMapping` is stack-level '
532+ + 'routing configuration, `translations` is a bundle record consumed by the i18n resolvers, and '
533+ + '`data` seeds are applied by SeedLoaderService. `pluralToSingular` returns its input unchanged '
534+ + 'for all five , which is the correct answer rather than a gap.' ,
535535 } ,
536536 ] ,
537537 } ,
@@ -559,13 +559,13 @@ const SITES = [
559559 keys : [
560560 'datasources' , 'datasourceMapping' , 'objectExtensions' , 'apps' , 'jobs' , 'emailTemplates' ,
561561 'docs' , 'books' , 'positions' , 'capabilities' , 'sharingRules' , 'webhooks' , 'tools' , 'skills' ,
562- 'hooks' , 'mappings' , 'analyticsCubes' , 'connectors' , 'data' ,
562+ 'hooks' , 'mappings' , 'analyticsCubes' , 'connectors' , 'data' , 'picklists' , 'picklistExtensions' ,
563563 ] ,
564564 reason :
565565 'DRIFT in the opposite direction, under the same acceptance constraint: ADDING a member widens '
566566 + 'what an artifact may declare and presumes a packaging layout (one subdirectory per category) '
567567 + 'that does not exist for these. The omissions are inert today because this enum is not the '
568- + 'artifact ingest path — `ARTIFACT_FIELD_TO_TYPE` below is — but 19 of 32 collections absent is '
568+ + 'artifact ingest path — `ARTIFACT_FIELD_TO_TYPE` below is — but 21 of 33 collections absent is '
569569 + 'the measurement that says so out loud (#6242 row 5).' ,
570570 } ,
571571 ] ,
@@ -619,6 +619,15 @@ const SITES = [
619619 'ADR-0090 D3 positions reach the registry through the security bootstrap, which reads them off the '
620620 + 'stack directly; the loop\'s sibling `permissions` entry is what makes the absence look like a gap.' ,
621621 } ,
622+ {
623+ direction : 'missing' ,
624+ keys : [ 'picklists' , 'picklistExtensions' ] ,
625+ reason :
626+ 'PENDING the picklist runtime layer (#19519): the spec declares `picklists` and '
627+ + '`picklistExtensions` ahead of their reader, by ruling (the spec layer lands first). Registering '
628+ + 'them — and merging the extensions into their target list — is that layer\'s work, so this row '
629+ + 'goes STALE, and fails, the day it lands. The liveness ledger grades the same keys `planned`.' ,
630+ } ,
622631 ] ,
623632 } ,
624633 {
@@ -676,6 +685,15 @@ const SITES = [
676685 keys : [ 'datasourceMapping' ] ,
677686 reason : 'stack-level routing configuration, never a registry item.' ,
678687 } ,
688+ {
689+ direction : 'missing' ,
690+ keys : [ 'picklists' , 'picklistExtensions' ] ,
691+ reason :
692+ 'PENDING the picklist runtime layer (#19519): the spec declares `picklists` and '
693+ + '`picklistExtensions` ahead of their reader, by ruling (the spec layer lands first). Registering '
694+ + 'them — and merging the extensions into their target list — is that layer\'s work, so this row '
695+ + 'goes STALE, and fails, the day it lands. The liveness ledger grades the same keys `planned`.' ,
696+ } ,
679697 ] ,
680698 } ,
681699 {
@@ -700,6 +718,7 @@ const SITES = [
700718 keys : [
701719 'objectExtensions' , 'datasourceMapping' , 'datasources' , 'jobs' , 'apis' , 'webhooks' ,
702720 'hooks' , 'mappings' , 'analyticsCubes' , 'connectors' , 'capabilities' , 'datasets' ,
721+ 'picklists' , 'picklistExtensions' ,
703722 ] ,
704723 reason :
705724 'DELIBERATE, and load-bearing. This is a HEURISTIC, not a registration list: it answers "did the '
@@ -737,7 +756,7 @@ const SITES = [
737756 'datasources' , 'datasourceMapping' , 'translations' , 'objects' , 'objectExtensions' , 'apps' ,
738757 'views' , 'pages' , 'dashboards' , 'reports' , 'datasets' , 'actions' , 'flows' , 'jobs' ,
739758 'emailTemplates' , 'docs' , 'books' , 'apis' , 'webhooks' , 'agents' , 'tools' , 'skills' ,
740- 'hooks' , 'mappings' , 'analyticsCubes' , 'connectors' , 'data' ,
759+ 'hooks' , 'mappings' , 'analyticsCubes' , 'connectors' , 'data' , 'picklists' , 'picklistExtensions' ,
741760 ] ,
742761 reason :
743762 'DELIBERATE — a four-collection SUBSET, not an enumeration of the collection set. This block '
0 commit comments