TypeSpec Assessment

5 TypeSpec changes for FileStorage

TypeSpec source diff: e75a07cd7ea1b2207190a362305db02b639715ec → 656ca8b0741973760f8a60ee0fd293ba9c31e708

Preview NoticeThe TypeSpec Assessment Assistant is in preview; official validation and review remain the source of truth.

The TypeSpec Assessment Assistant is currently in preview. Its goal is to help service developers build confidence earlier in the TypeSpec authoring workflow by providing contextual analysis, risk identification, and guidance on potential downstream impacts.

This report is intended as a review reference and learning aid only. It does not replace official ARM API, Azure API Stewardship, Azure Breaking Change reviews, and should not be treated as authoritative review feedback or approval for specification changes. Official validation tools, generated artifacts, and reviewer feedback remain the source of truth for merge and release decisions.

Azure Guidelines

Findings and affected intents at a glance; expand for expected guidance and actual changes.

5 of 5 semantic intents assessed · 4 documents selected

Versioned API surface removed without @removedThe fetched evolving-APIs guidance requires removals to be modeled with @removed; direct deletion changes an existing versioned API surface.
failed

Expected

Use @removed with the version where a model, property, or operation is removed so earlier API versions preserve their surface.

Evolving APIs — Removing models, properties, or operations
To remove models, properties, or operations starting from a specific version, use the @removed decorator. The version argument is the version where the element is removed. The element will not be present in that version or any later versions.
@removed(Versions.v2)

Actual

Remove NFS ownership metadata

The change deletes versioned FileProperty owner, group, and fileMode members directly from API version 2026-12-06.

specification/storage/data-plane/FileStorage/models.tsp:560-593, specification/storage/data-plane/FileStorage/models.tsp:661-664, specification/storage/data-plane/FileStorage/models.tsp:666-669, specification/storage/data-plane/FileStorage/models.tsp:671-674

specification/storage/data-plane/FileStorage/models.tsp:560-593
560-
561-  /** NFS only. The owner user identifier (UID) of the file. */
562-  @added(Versions.v2026_12_06)
563-  @Xml.name("Uid")
564-  owner?: string;
565-
566-  /** NFS only. The owner group identifier (GID) of the file. */
567-  @added(Versions.v2026_12_06)
568-  @Xml.name("Gid")
569-  group?: string;
570-
571-  /** NFS only. The file mode of the file. */

Reduce NFS directory-list result variants

The change directly deletes versioned list-result collections and ListFilesIncludeType members from API version 2026-12-06.

specification/storage/data-plane/FileStorage/models.tsp:378-392, specification/storage/data-plane/FileStorage/models.tsp:517-528, specification/storage/data-plane/FileStorage/models.tsp:561-565, specification/storage/data-plane/FileStorage/models.tsp:567-571, specification/storage/data-plane/FileStorage/models.tsp:573-577, specification/storage/data-plane/FileStorage/models.tsp:579-583, specification/storage/data-plane/FileStorage/models.tsp:585-589

specification/storage/data-plane/FileStorage/models.tsp:378-392
378-
379-  /** Permissions */
380-  @added(Versions.v2026_12_06)
381-  Permissions,
382-
383-  /** LinkCount */
384-  @added(Versions.v2026_12_06)
385-  LinkCount,
386-
387-  /** NfsAttributes */
388-  @added(Versions.v2026_12_06)
389-  NfsAttributes,
specification/storage/data-plane/FileStorage/models.tsp:378-392
378-
379-  /** The symbolic link items. */
380-  @added(Versions.v2026_12_06)
381-  @Xml.unwrapped
382-  @Xml.name("SymLink")
383-  symLinkItems?: SymLinkItem[];
384-
385-  /** The block device items. */
386-  @added(Versions.v2026_12_06)
387-  @Xml.unwrapped
388-  @Xml.name("BlockDevice")
389-  blockDeviceItems?: BlockDeviceItem[];

Remove specialized NFS file types

The change directly deletes four versioned NfsFileType variants from API version 2026-12-06.

specification/storage/data-plane/FileStorage/models.tsp:275-287, specification/storage/data-plane/FileStorage/models.tsp:288-290, specification/storage/data-plane/FileStorage/models.tsp:292-294, specification/storage/data-plane/FileStorage/models.tsp:296-298, specification/storage/data-plane/FileStorage/models.tsp:300-302

specification/storage/data-plane/FileStorage/models.tsp:275-287
275-
276-  /** BlockDevice */
277-  @added(Versions.v2026_12_06)
278-  BlockDevice: "BlockDevice",
279-
280-  /** CharacterDevice */
281-  @added(Versions.v2026_12_06)
282-  CharacterDevice: "CharacterDevice",
283-
284-  /** Socket */
285-  @added(Versions.v2026_12_06)
286-  Socket: "Socket",

Remove directory link count

The change directly deletes the versioned DirectoryItem.linkCount member from API version 2026-12-06.

specification/storage/data-plane/FileStorage/models.tsp:530-547, specification/storage/data-plane/FileStorage/models.tsp:610-613

specification/storage/data-plane/FileStorage/models.tsp:530-547
530-
531-  /** NFS only. The link count of the directory. */
532-  @added(Versions.v2026_12_06)
533-  @Xml.name("LinkCount")
534-  linkCount?: int64;

Remove specialized NFS item models

The change directly deletes versioned specialized NFS item models and FileItem NFS members from API version 2026-12-06.

specification/storage/data-plane/FileStorage/models.tsp:595-612, specification/storage/data-plane/FileStorage/models.tsp:695-698, specification/storage/data-plane/FileStorage/models.tsp:700-703, specification/storage/data-plane/FileStorage/models.tsp:706-724, specification/storage/data-plane/FileStorage/models.tsp:710-711, specification/storage/data-plane/FileStorage/models.tsp:713-714, specification/storage/data-plane/FileStorage/models.tsp:716-717, specification/storage/data-plane/FileStorage/models.tsp:719-720, specification/storage/data-plane/FileStorage/models.tsp:722-723, specification/storage/data-plane/FileStorage/models.tsp:726-747, specification/storage/data-plane/FileStorage/models.tsp:730-731, specification/storage/data-plane/FileStorage/models.tsp:733-734, specification/storage/data-plane/FileStorage/models.tsp:736-737, specification/storage/data-plane/FileStorage/models.tsp:739-740, specification/storage/data-plane/FileStorage/models.tsp:742-743, specification/storage/data-plane/FileStorage/models.tsp:745-746, specification/storage/data-plane/FileStorage/models.tsp:749-770, specification/storage/data-plane/FileStorage/models.tsp:753-754, specification/storage/data-plane/FileStorage/models.tsp:756-757, specification/storage/data-plane/FileStorage/models.tsp:759-760, specification/storage/data-plane/FileStorage/models.tsp:762-763, specification/storage/data-plane/FileStorage/models.tsp:765-766, specification/storage/data-plane/FileStorage/models.tsp:768-769, specification/storage/data-plane/FileStorage/models.tsp:772-787, specification/storage/data-plane/FileStorage/models.tsp:776-777, specification/storage/data-plane/FileStorage/models.tsp:779-780, specification/storage/data-plane/FileStorage/models.tsp:782-783, specification/storage/data-plane/FileStorage/models.tsp:785-786, specification/storage/data-plane/FileStorage/models.tsp:789-804, specification/storage/data-plane/FileStorage/models.tsp:793-794, specification/storage/data-plane/FileStorage/models.tsp:796-797, specification/storage/data-plane/FileStorage/models.tsp:799-800, specification/storage/data-plane/FileStorage/models.tsp:802-803

specification/storage/data-plane/FileStorage/models.tsp:595-612
595-
596-  /** NFS only. The link count of the file. */
597-  @added(Versions.v2026_12_06)
598-  @Xml.name("LinkCount")
599-  linkCount?: int64;
600-
601-  /** NFS only. The type of the file. */
602-  @added(Versions.v2026_12_06)
603-  @Xml.name("FileType")
604-  fileType?: NfsFileType;
605-}
606-

REST breaking changes

Operation impact and affected intents at a glance; expand for before/after evidence.

Directory_ListFilesAndDirectoriesSegmentGET ?restype=directory&comp=list · 2026-12-06
15 changes
Contract areaBeforeAfter
Response body property200 · segment.charDeviceItemsAffected model: FilesAndDirectoriesListSegment
CharDeviceItem[]
removed
Query parameterinclude
ListFilesIncludeType { All | Attributes | Etag | LinkCount | NfsAttributes | PermissionKey | Permissions | Timestamps }[]
ListFilesIncludeType { Attributes | Etag | PermissionKey | Timestamps }[]
Response body property200 · segment.fileItems[].properties.ownerAffected model: FileProperty
string
removed
Response body property200 · segment.socketItemsAffected model: FilesAndDirectoriesListSegment
SocketItem[]
removed
Response body property200 · segment.directoryItems[].properties.ownerAffected model: FileProperty
string
removed
Response body property200 · segment.fifoItemsAffected model: FilesAndDirectoriesListSegment
FifoItem[]
removed
Response body property200 · segment.fileItems[].fileTypeAffected model: NfsFileType
NfsFileType { BlockDevice | CharacterDevice | Directory | Fifo | Regular | Socket | SymLink }
removed
Response body property200 · segment.symLinkItemsAffected model: FilesAndDirectoriesListSegment
SymLinkItem[]
removed
Response body property200 · segment.directoryItems[].linkCountAffected model: DirectoryItem
integer int64
removed
Response body property200 · segment.directoryItems[].properties.groupAffected model: FileProperty
string
removed
Response body property200 · segment.fileItems[].linkCountAffected model: FileItem
integer int64
removed
Response body property200 · segment.directoryItems[].properties.fileModeAffected model: FileProperty
string
removed
Response body property200 · segment.fileItems[].properties.fileModeAffected model: FileProperty
string
removed
Response body property200 · segment.blockDeviceItemsAffected model: FilesAndDirectoriesListSegment
BlockDeviceItem[]
removed
Response body property200 · segment.fileItems[].properties.groupAffected model: FileProperty
string
removed
Why this is breaking:
  • The charDeviceItems response collection was present in the baseline and is absent in the target; existing response consumers lose this data.
  • The include query parameter removes the previously accepted All, LinkCount, NfsAttributes, and Permissions wire values. Existing requests using any removed value become invalid even though the parameter remains an optional CSV array of strings.
  • The file item properties.owner response member was present in the baseline and is absent in the target; existing response consumers lose owner data.
  • The socketItems response collection was present in the baseline and is absent in the target; existing response consumers lose this data.
  • The directory item properties.owner response member was present in the baseline and is absent in the target; existing response consumers lose owner data.
  • The fifoItems response collection was present in the baseline and is absent in the target; existing response consumers lose this data.
  • The fileItems.fileType response member was present in the baseline and is absent in the target; existing response consumers lose file-type data.
  • The symLinkItems response collection was present in the baseline and is absent in the target; existing response consumers lose this data.
  • The directoryItems.linkCount response member was present in the baseline and is absent in the target; existing response consumers lose link-count data.
  • The directory item properties.group response member was present in the baseline and is absent in the target; existing response consumers lose group data.
  • The fileItems.linkCount response member was present in the baseline and is absent in the target; existing response consumers lose link-count data.
  • The directory item properties.fileMode response member was present in the baseline and is absent in the target; existing response consumers lose mode data.
  • The file item properties.fileMode response member was present in the baseline and is absent in the target; existing response consumers lose mode data.
  • The blockDeviceItems response collection was present in the baseline and is absent in the target; existing response consumers lose this data.
  • The file item properties.group response member was present in the baseline and is absent in the target; existing response consumers lose group data.
Directory_CreatePUT ?restype=directory · 2026-12-06
1 changes
Contract areaBeforeAfter
Response header201 · x-ms-file-file-typeAffected model: NfsFileType
NfsFileType { BlockDevice | CharacterDevice | Directory | Fifo | Regular | Socket | SymLink }
NfsFileType { Directory | Regular | SymLink }
Why this is breaking: Directory_Create narrows the documented x-ms-file-file-type response header by removing BlockDevice, CharacterDevice, Fifo, and Socket, eliminating response values represented by the existing wire contract.
Directory_GetPropertiesGET ?restype=directory&_overload=getProperties · 2026-12-06
1 changes
Contract areaBeforeAfter
Response header200 · x-ms-file-file-typeAffected model: NfsFileType
NfsFileType { BlockDevice | CharacterDevice | Directory | Fifo | Regular | Socket | SymLink }
NfsFileType { Directory | Regular | SymLink }
Why this is breaking: Directory_GetProperties narrows the documented x-ms-file-file-type response header by removing BlockDevice, CharacterDevice, Fifo, and Socket, eliminating response values represented by the existing wire contract.
File_CreatePUT / · 2026-12-06
2 changes
Contract areaBeforeAfter
Request headerx-ms-file-file-typeAffected model: NfsFileType
NfsFileType { BlockDevice | CharacterDevice | Directory | Fifo | Regular | Socket | SymLink }
NfsFileType { Directory | Regular | SymLink }
Response header201 · x-ms-file-file-typeAffected model: NfsFileType
NfsFileType { BlockDevice | CharacterDevice | Directory | Fifo | Regular | Socket | SymLink }
NfsFileType { Directory | Regular | SymLink }
Why this is breaking:
  • The x-ms-file-file-type request header removes the previously accepted BlockDevice, CharacterDevice, Fifo, and Socket wire values. Existing requests using any removed value become invalid even though the header remains a string enum.
  • File_Create narrows the documented x-ms-file-file-type response header by removing BlockDevice, CharacterDevice, Fifo, and Socket, eliminating response values represented by the existing wire contract.
File_GetPropertiesHEAD / · 2026-12-06
1 changes
Contract areaBeforeAfter
Response header200 · x-ms-file-file-typeAffected model: NfsFileType
NfsFileType { BlockDevice | CharacterDevice | Directory | Fifo | Regular | Socket | SymLink }
NfsFileType { Directory | Regular | SymLink }
Why this is breaking: File_GetProperties narrows the documented x-ms-file-file-type response header by removing BlockDevice, CharacterDevice, Fifo, and Socket, eliminating response values represented by the existing wire contract.

Downstream breaking changes

Method impact and affected intents at a glance; expand for before/after evidence.

Directory.createThe method uses changed SDK types; its top-level signature need not change.
Indirect type change

Recorded normalized SDK method: Storage.File.Directory.create

NfsFileType

Storage.File.NfsFileType

Representative method paths from recorded graph edges:

Output / headerx-ms-file-file-typetarget evidence
Contract areaBeforeAfter
Enum memberNfsFileType.BlockDeviceWire value "BlockDevice" is no longer declared.
BlockDevice
removed
Enum memberNfsFileType.CharacterDeviceWire value "CharacterDevice" is no longer declared.
CharacterDevice
removed
Enum memberNfsFileType.FifoWire value "Fifo" is no longer declared.
Fifo
removed
Enum memberNfsFileType.SocketWire value "Socket" is no longer declared.
Socket
removed
SDK type contractNfsFileType
Storage.File.NfsFileType preserves its existing language-neutral generated SDK contract.
Storage.File.NfsFileType removed enum values: BlockDevice, CharacterDevice, Fifo, Socket.
Why this is breaking: NfsFileType removes BlockDevice, CharacterDevice, Fifo, and Socket; existing callers using those SDK enum members must migrate.

Language-neutral TCGC evidence is shown; generated language signatures are not fabricated.

Directory.getPropertiesThe method uses changed SDK types; its top-level signature need not change.
Indirect type change

Recorded normalized SDK method: Storage.File.Directory.getProperties

NfsFileType

Storage.File.NfsFileType

Representative method paths from recorded graph edges:

Output / headerx-ms-file-file-typetarget evidence
Contract areaBeforeAfter
Enum memberNfsFileType.BlockDeviceWire value "BlockDevice" is no longer declared.
BlockDevice
removed
Enum memberNfsFileType.CharacterDeviceWire value "CharacterDevice" is no longer declared.
CharacterDevice
removed
Enum memberNfsFileType.FifoWire value "Fifo" is no longer declared.
Fifo
removed
Enum memberNfsFileType.SocketWire value "Socket" is no longer declared.
Socket
removed
SDK type contractNfsFileType
Storage.File.NfsFileType preserves its existing language-neutral generated SDK contract.
Storage.File.NfsFileType removed enum values: BlockDevice, CharacterDevice, Fifo, Socket.
Why this is breaking: NfsFileType removes BlockDevice, CharacterDevice, Fifo, and Socket; existing callers using those SDK enum members must migrate.

Language-neutral TCGC evidence is shown; generated language signatures are not fabricated.

Directory.listFilesAndDirectoriesSegmentThe method uses changed SDK types; its top-level signature need not change.
Indirect type change

Recorded normalized SDK method: Storage.File.Directory.listFilesAndDirectoriesSegment

SymLinkItem

Storage.File.SymLinkItem

Representative method paths from recorded graph edges:

Output / bodysegment.symLinkItemsbaseline evidence
Contract areaBeforeAfter
SDK type availabilitySymLinkItem
access: public · reachable: true · usage: 516
Not recorded
SDK type contractSymLinkItem
Storage.File.SymLinkItem preserves its existing language-neutral generated SDK contract.
Storage.File.SymLinkItem changed public access, usage, or reachability.
Why this is breaking: SymLinkItem was public and reachable in the baseline but has no target counterpart after its source deletion; existing SDK type references disappear.

ListFilesIncludeType

Storage.File.ListFilesIncludeType

Representative method paths from recorded graph edges:

Input / queryincludetarget evidence
Contract areaBeforeAfter
Enum memberListFilesIncludeType.AllWire value "All" is no longer declared.
All
removed
Enum memberListFilesIncludeType.LinkCountWire value "LinkCount" is no longer declared.
LinkCount
removed
Enum memberListFilesIncludeType.NfsAttributesWire value "NfsAttributes" is no longer declared.
NfsAttributes
removed
Enum memberListFilesIncludeType.PermissionsWire value "Permissions" is no longer declared.
Permissions
removed
SDK type contractListFilesIncludeType
Storage.File.ListFilesIncludeType preserves its existing language-neutral generated SDK contract.
Storage.File.ListFilesIncludeType removed enum values: All, LinkCount, NfsAttributes, Permissions.
Why this is breaking: ListFilesIncludeType removes All, LinkCount, NfsAttributes, and Permissions; existing callers using those enum members can no longer compile or request those options.

FileProperty

Storage.File.FileProperty

Representative method paths from recorded graph edges:

Output / bodysegment.directoryItems.propertiestarget evidence
Contract areaBeforeAfter
SDK type membergroup
string?
removed
SDK type memberowner
string?
removed
SDK type memberfileMode
string?
removed
Why this is breaking:
  • FileProperty.group was a public optional member and is absent in the target; callers reading listing metadata must stop accessing it.
  • FileProperty.owner was a public optional member and is absent in the target; callers reading listing metadata must stop accessing it.
  • FileProperty.fileMode was a public optional member and is absent in the target; callers reading listing metadata must stop accessing it.

FifoItem

Storage.File.FifoItem

Representative method paths from recorded graph edges:

Output / bodysegment.fifoItemsbaseline evidence
Contract areaBeforeAfter
SDK type availabilityFifoItem
access: public · reachable: true · usage: 516
Not recorded
SDK type contractFifoItem
Storage.File.FifoItem preserves its existing language-neutral generated SDK contract.
Storage.File.FifoItem changed public access, usage, or reachability.
Why this is breaking: FifoItem was public and reachable in the baseline but has no target counterpart after its source deletion; existing SDK type references disappear.

BlockDeviceItem

Storage.File.BlockDeviceItem

Representative method paths from recorded graph edges:

Output / bodysegment.blockDeviceItemsbaseline evidence
Contract areaBeforeAfter
SDK type availabilityBlockDeviceItem
access: public · reachable: true · usage: 516
Not recorded
SDK type contractBlockDeviceItem
Storage.File.BlockDeviceItem preserves its existing language-neutral generated SDK contract.
Storage.File.BlockDeviceItem changed public access, usage, or reachability.
Why this is breaking: BlockDeviceItem was public and reachable in the baseline but has no target counterpart after its source deletion; existing SDK type references disappear.

NfsFileType

Storage.File.NfsFileType

Representative method paths from recorded graph edges:

Output / bodysegment.fileItems.fileTypebaseline evidence
Contract areaBeforeAfter
Enum memberNfsFileType.BlockDeviceWire value "BlockDevice" is no longer declared.
BlockDevice
removed
Enum memberNfsFileType.CharacterDeviceWire value "CharacterDevice" is no longer declared.
CharacterDevice
removed
Enum memberNfsFileType.FifoWire value "Fifo" is no longer declared.
Fifo
removed
Enum memberNfsFileType.SocketWire value "Socket" is no longer declared.
Socket
removed
SDK type contractNfsFileType
Storage.File.NfsFileType preserves its existing language-neutral generated SDK contract.
Storage.File.NfsFileType removed enum values: BlockDevice, CharacterDevice, Fifo, Socket.
Why this is breaking: NfsFileType removes BlockDevice, CharacterDevice, Fifo, and Socket; existing callers using those SDK enum members must migrate.

FileItem

Storage.File.FileItem

Representative method paths from recorded graph edges:

Output / bodysegment.fileItemstarget evidence
Contract areaBeforeAfter
SDK type memberlinkCount
int64?
removed
SDK type memberfileType
NfsFileType?
removed
Why this is breaking:
  • FileItem.linkCount was a public optional member and is absent in the target; callers reading listing results must stop accessing it.
  • FileItem.fileType was a public optional member and is absent in the target; callers reading listing results must stop accessing it.

FilesAndDirectoriesListSegment

Storage.File.FilesAndDirectoriesListSegment

Representative method paths from recorded graph edges:

Output / bodysegmenttarget evidence
Contract areaBeforeAfter
SDK type memberblockDeviceItems
BlockDeviceItem[]?
removed
SDK type membercharDeviceItems
CharDeviceItem[]?
removed
SDK type membersymLinkItems
SymLinkItem[]?
removed
SDK type memberfifoItems
FifoItem[]?
removed
SDK type membersocketItems
SocketItem[]?
removed
Why this is breaking:
  • FilesAndDirectoriesListSegment.blockDeviceItems was public and is absent in the target; callers consuming directory listings lose the collection.
  • FilesAndDirectoriesListSegment.charDeviceItems was public and is absent in the target; callers consuming directory listings lose the collection.
  • FilesAndDirectoriesListSegment.symLinkItems was public and is absent in the target; callers consuming directory listings lose the collection.
  • FilesAndDirectoriesListSegment.fifoItems was public and is absent in the target; callers consuming directory listings lose the collection.
  • FilesAndDirectoriesListSegment.socketItems was public and is absent in the target; callers consuming directory listings lose the collection.

DirectoryItem

Storage.File.DirectoryItem

Representative method paths from recorded graph edges:

Output / bodysegment.directoryItemstarget evidence
Contract areaBeforeAfter
SDK type memberlinkCount
int64?
removed
Why this is breaking: DirectoryItem.linkCount was a public optional member and is absent in the target; callers reading listing results must stop accessing it.

CharDeviceItem

Storage.File.CharDeviceItem

Representative method paths from recorded graph edges:

Output / bodysegment.charDeviceItemsbaseline evidence
Contract areaBeforeAfter
SDK type availabilityCharDeviceItem
access: public · reachable: true · usage: 516
Not recorded
SDK type contractCharDeviceItem
Storage.File.CharDeviceItem preserves its existing language-neutral generated SDK contract.
Storage.File.CharDeviceItem changed public access, usage, or reachability.
Why this is breaking: CharDeviceItem was public and reachable in the baseline but has no target counterpart after its source deletion; existing SDK type references disappear.

SocketItem

Storage.File.SocketItem

Representative method paths from recorded graph edges:

Output / bodysegment.socketItemsbaseline evidence
Contract areaBeforeAfter
SDK type availabilitySocketItem
access: public · reachable: true · usage: 516
Not recorded
SDK type contractSocketItem
Storage.File.SocketItem preserves its existing language-neutral generated SDK contract.
Storage.File.SocketItem changed public access, usage, or reachability.
Why this is breaking: SocketItem was public and reachable in the baseline but has no target counterpart after its source deletion; existing SDK type references disappear.

Language-neutral TCGC evidence is shown; generated language signatures are not fabricated.

File.createThe method uses changed SDK types; its top-level signature need not change.
Indirect type change

Recorded normalized SDK method: Storage.File.File.create

NfsFileType

Storage.File.NfsFileType

Representative method paths from recorded graph edges:

Input / headernfsFileTypetarget evidence
Output / headerx-ms-file-file-typetarget evidence
Contract areaBeforeAfter
Enum memberNfsFileType.BlockDeviceWire value "BlockDevice" is no longer declared.
BlockDevice
removed
Enum memberNfsFileType.CharacterDeviceWire value "CharacterDevice" is no longer declared.
CharacterDevice
removed
Enum memberNfsFileType.FifoWire value "Fifo" is no longer declared.
Fifo
removed
Enum memberNfsFileType.SocketWire value "Socket" is no longer declared.
Socket
removed
SDK type contractNfsFileType
Storage.File.NfsFileType preserves its existing language-neutral generated SDK contract.
Storage.File.NfsFileType removed enum values: BlockDevice, CharacterDevice, Fifo, Socket.
Why this is breaking: NfsFileType removes BlockDevice, CharacterDevice, Fifo, and Socket; existing callers using those SDK enum members must migrate.

Language-neutral TCGC evidence is shown; generated language signatures are not fabricated.

File.getPropertiesThe method uses changed SDK types; its top-level signature need not change.
Indirect type change

Recorded normalized SDK method: Storage.File.File.getProperties

NfsFileType

Storage.File.NfsFileType

Representative method paths from recorded graph edges:

Output / headerx-ms-file-file-typetarget evidence
Contract areaBeforeAfter
Enum memberNfsFileType.BlockDeviceWire value "BlockDevice" is no longer declared.
BlockDevice
removed
Enum memberNfsFileType.CharacterDeviceWire value "CharacterDevice" is no longer declared.
CharacterDevice
removed
Enum memberNfsFileType.FifoWire value "Fifo" is no longer declared.
Fifo
removed
Enum memberNfsFileType.SocketWire value "Socket" is no longer declared.
Socket
removed
SDK type contractNfsFileType
Storage.File.NfsFileType preserves its existing language-neutral generated SDK contract.
Storage.File.NfsFileType removed enum values: BlockDevice, CharacterDevice, Fifo, Socket.
Why this is breaking: NfsFileType removes BlockDevice, CharacterDevice, Fifo, and Socket; existing callers using those SDK enum members must migrate.

Language-neutral TCGC evidence is shown; generated language signatures are not fabricated.

Semantic intents

Impact links are visible at a glance; expand for changed TypeSpec source, followed by affected operations.

Remove NFS ownership metadataRemoves owner, group, and fileMode from FileProperty in API version 2026-12-06; deterministic operation mapping is unavailable, while SDK listing models remain affected.
modify
Changed TypeSpec source (1)
specification/storage/data-plane/FileStorage/models.tsp
 
   /** The ETag of the file. */
   @Xml.name("Etag") eTag?: Azure.Core.eTag;
-
-  /** NFS only. The owner user identifier (UID) of the file. */
-  @added(Versions.v2026_12_06)
-  @Xml.name("Uid")
-  owner?: string;
-
-  /** NFS only. The owner group identifier (GID) of the file. */
-  @added(Versions.v2026_12_06)
-  @Xml.name("Gid")
-  group?: string;
-
-  /** NFS only. The file mode of the file. */
-  @added(Versions.v2026_12_06)
-  @Xml.name("Mode")
-  fileMode?: string;
 }
 
 /** A listed file item. */

specification/storage/data-plane/FileStorage/models.tsp:560

Affected operations (0)

No directly affected REST operation.

Reduce NFS directory-list result variantsRemoves five specialized item collections and four ListFilesIncludeType choices from Directory_ListFilesAndDirectoriesSegment in API version 2026-12-06.
modify
Changed TypeSpec source (1)
specification/storage/data-plane/FileStorage/models.tsp
 
   /** PermissionKey */
   PermissionKey,
-
-  /** Permissions */
-  @added(Versions.v2026_12_06)
-  Permissions,
-
-  /** LinkCount */
-  @added(Versions.v2026_12_06)
-  LinkCount,
-
-  /** NfsAttributes */
-  @added(Versions.v2026_12_06)
-  NfsAttributes,
-
-  /** All */
-  @added(Versions.v2026_12_06)
-  All,
 }
 
 /** The type of share information to include in the listing. */
specification/storage/data-plane/FileStorage/models.tsp
   @Xml.unwrapped
   @Xml.name("File")
   fileItems: FileItem[];
-
-  /** The symbolic link items. */
-  @added(Versions.v2026_12_06)
-  @Xml.unwrapped
-  @Xml.name("SymLink")
-  symLinkItems?: SymLinkItem[];
-
-  /** The block device items. */
-  @added(Versions.v2026_12_06)
-  @Xml.unwrapped
-  @Xml.name("BlockDevice")
-  blockDeviceItems?: BlockDeviceItem[];
-
-  /** The character device items. */
-  @added(Versions.v2026_12_06)
-  @Xml.unwrapped
-  @Xml.name("CharDevice")
-  charDeviceItems?: CharDeviceItem[];
-
-  /** The FIFO items. */
-  @added(Versions.v2026_12_06)
-  @Xml.unwrapped
-  @Xml.name("Fifo")
-  fifoItems?: FifoItem[];
-
-  /** The socket items. */
-  @added(Versions.v2026_12_06)
-  @Xml.unwrapped
-  @Xml.name("Socket")
-  socketItems?: SocketItem[];
 }
 
 /** A listed directory item. */

specification/storage/data-plane/FileStorage/models.tsp:378

Affected operations (1)
Directory_ListFilesAndDirectoriesSegmentGET?restype=directory&comp=list2026-12-06
Contract areaBeforeAfter
Query parameterinclude
ListFilesIncludeType { All | Attributes | Etag | LinkCount | NfsAttributes | PermissionKey | Permissions | Timestamps }[]
ListFilesIncludeType { Attributes | Etag | PermissionKey | Timestamps }[]
Response body property200 · segment.blockDeviceItems
BlockDeviceItem[]
removed
Response body property200 · segment.charDeviceItems
CharDeviceItem[]
removed
Response body property200 · segment.directoryItems[].linkCount
integer int64
removed
Response body property200 · segment.directoryItems[].properties.fileMode
string
removed
Response body property200 · segment.directoryItems[].properties.group
string
removed
Response body property200 · segment.directoryItems[].properties.owner
string
removed
Response body property200 · segment.fifoItems
FifoItem[]
removed
Response body property200 · segment.fileItems[].fileType
NfsFileType { BlockDevice | CharacterDevice | Directory | Fifo | Regular | Socket | SymLink }
removed
Response body property200 · segment.fileItems[].linkCount
integer int64
removed
Response body property200 · segment.fileItems[].properties.fileMode
string
removed
Response body property200 · segment.fileItems[].properties.group
string
removed
Response body property200 · segment.fileItems[].properties.owner
string
removed
Response body property200 · segment.socketItems
SocketItem[]
removed
Response body property200 · segment.symLinkItems
SymLinkItem[]
removed

REST contract changed: responses.

modify
Changed TypeSpec source (1)
specification/storage/data-plane/FileStorage/models.tsp
 
   /** SymLink */
   SymLink: "SymLink",
-
-  /** BlockDevice */
-  @added(Versions.v2026_12_06)
-  BlockDevice: "BlockDevice",
-
-  /** CharacterDevice */
-  @added(Versions.v2026_12_06)
-  CharacterDevice: "CharacterDevice",
-
-  /** Socket */
-  @added(Versions.v2026_12_06)
-  Socket: "Socket",
-
-  /** Fifo */
-  @added(Versions.v2026_12_06)
-  Fifo: "Fifo",
 }
 
 /** The file property semantics. */

specification/storage/data-plane/FileStorage/models.tsp:275

Affected operations (6)
Directory_CreatePUT?restype=directory2026-12-06
Contract areaBeforeAfter
Response header201 · x-ms-file-file-type
NfsFileType { BlockDevice | CharacterDevice | Directory | Fifo | Regular | Socket | SymLink }
NfsFileType { Directory | Regular | SymLink }

REST contract changed: responses.

Directory_GetPropertiesGET?restype=directory&_overload=getProperties2026-12-06
Contract areaBeforeAfter
Response header200 · x-ms-file-file-type
NfsFileType { BlockDevice | CharacterDevice | Directory | Fifo | Regular | Socket | SymLink }
NfsFileType { Directory | Regular | SymLink }

REST contract changed: responses.

File_CreatePUT/2026-12-06
Contract areaBeforeAfter
Response header201 · x-ms-file-file-type
NfsFileType { BlockDevice | CharacterDevice | Directory | Fifo | Regular | Socket | SymLink }
NfsFileType { Directory | Regular | SymLink }

REST contract changed: responses.

File_CreateHardLinkPUT?restype=hardlink2026-12-06
Contract areaBeforeAfter
Response header201 · x-ms-file-file-type
NfsFileType { BlockDevice | CharacterDevice | Directory | Fifo | Regular | Socket | SymLink }
NfsFileType { Directory | Regular | SymLink }

REST contract changed: responses.

File_CreateSymbolicLinkPUT?restype=symboliclink2026-12-06
Contract areaBeforeAfter
Response header201 · x-ms-file-file-type
NfsFileType { BlockDevice | CharacterDevice | Directory | Fifo | Regular | Socket | SymLink }
NfsFileType { Directory | Regular | SymLink }

REST contract changed: responses.

File_GetPropertiesHEAD/2026-12-06
Contract areaBeforeAfter
Response header200 · x-ms-file-file-type
NfsFileType { BlockDevice | CharacterDevice | Directory | Fifo | Regular | Socket | SymLink }
NfsFileType { Directory | Regular | SymLink }

REST contract changed: responses.

Remove directory link countRemoves linkCount from DirectoryItem in API version 2026-12-06; deterministic operation mapping is unavailable, while the generated listing model remains affected.
modify
Changed TypeSpec source (1)
specification/storage/data-plane/FileStorage/models.tsp
 
   /** The permission key. */
   @Xml.name("PermissionKey") permissionKey?: string;
-
-  /** NFS only. The link count of the directory. */
-  @added(Versions.v2026_12_06)
-  @Xml.name("LinkCount")
-  linkCount?: int64;
 }
 
 /** An encoded string value. */

specification/storage/data-plane/FileStorage/models.tsp:530

Affected operations (0)

No directly affected REST operation.

Remove specialized NFS item modelsRemoves specialized block, character, FIFO, socket, and symbolic-link item models plus file item NFS fields in API version 2026-12-06; deterministic operation mapping is unavailable.
modify
Changed TypeSpec source (1)
specification/storage/data-plane/FileStorage/models.tsp
 
   /** The permission key. */
   @Xml.name("PermissionKey") permissionKey?: string;
-
-  /** NFS only. The link count of the file. */
-  @added(Versions.v2026_12_06)
-  @Xml.name("LinkCount")
-  linkCount?: int64;
-
-  /** NFS only. The type of the file. */
-  @added(Versions.v2026_12_06)
-  @Xml.name("FileType")
-  fileType?: NfsFileType;
-}
-
-/** A listed symbolic link item. */
-@added(Versions.v2026_12_06)
-@Xml.name("SymLink")
-model SymLinkItem {
-  /** The symbolic link name. */
-  @Xml.name("Name") name: StringEncoded;
-
-  /** The file ID. */
-  @Xml.name("FileId") fileId?: string;
-
-  /** File properties. */
-  @Xml.name("Properties") properties: FileProperty;
-
-  /** NFS only. The link count of the symbolic link. */
-  @Xml.name("LinkCount") linkCount?: int64;
-
-  /** NFS only. The path to the original file, the symbolic link is pointing to. */
-  @Xml.name("LinkText") linkText?: string;
-}
-
-/** A listed block device item. */
-@added(Versions.v2026_12_06)
-@Xml.name("BlockDevice")
-model BlockDeviceItem {
-  /** The block device name. */
-  @Xml.name("Name") name: StringEncoded;
-
-  /** The file ID. */
-  @Xml.name("FileId") fileId?: string;
-
-  /** File properties. */
-  @Xml.name("Properties") properties: FileProperty;
-
-  /** NFS only. The link count of the block device. */
-  @Xml.name("LinkCount") linkCount?: int64;
-
-  /** NFS only. The major device number of the block device. */
-  @Xml.name("DeviceMajor") deviceMajor?: int64;
-
-  /** NFS only. The minor device number of the block device. */
-  @Xml.name("DeviceMinor") deviceMinor?: int64;
-}
-
-/** A listed character device item. */
-@added(Versions.v2026_12_06)
-@Xml.name("CharDevice")
-model CharDeviceItem {
-  /** The character device name. */
-  @Xml.name("Name") name: StringEncoded;
-
-  /** The file ID. */
-  @Xml.name("FileId") fileId?: string;
-
-  /** File properties. */
-  @Xml.name("Properties") properties: FileProperty;
-
-  /** NFS only. The link count of the character device. */
-  @Xml.name("LinkCount") linkCount?: int64;
-
-  /** NFS only. The major device number of the character device. */
-  @Xml.name("DeviceMajor") deviceMajor?: int64;
-
-  /** NFS only. The minor device number of the character device. */
-  @Xml.name("DeviceMinor") deviceMinor?: int64;
-}
-
-/** A listed FIFO item. */
-@added(Versions.v2026_12_06)
-@Xml.name("Fifo")
-model FifoItem {
-  /** The FIFO name. */
-  @Xml.name("Name") name: StringEncoded;
-
-  /** The file ID. */
-  @Xml.name("FileId") fileId?: string;
-
-  /** File properties. */
-  @Xml.name("Properties") properties: FileProperty;
-
-  /** NFS only. The link count of the FIFO. */
-  @Xml.name("LinkCount") linkCount?: int64;
-}
-
-/** A listed socket item. */
-@added(Versions.v2026_12_06)
-@Xml.name("Socket")
-model SocketItem {
-  /** The socket name. */
-  @Xml.name("Name") name: StringEncoded;
-
-  /** The file ID. */
-  @Xml.name("FileId") fileId?: string;
-
-  /** File properties. */
-  @Xml.name("Properties") properties: FileProperty;
-
-  /** NFS only. The link count of the socket. */
-  @Xml.name("LinkCount") linkCount?: int64;
 }
 
 /** A listed Azure Storage handle item. */

specification/storage/data-plane/FileStorage/models.tsp:595

Affected operations (0)

No directly affected REST operation.

Documentation Completeness

Checks only whether newly added operation, model, enum, and interface declarations have a nonempty effective TypeSpec description.

0 findings · 0 declarations checked

Appendix

Potential limits

None

Projects and compiler status

ProjectModeBaseline commit@versionTarget commit@versionBaseline AutoRest / TCGCTarget AutoRest / TCGC
specification/storage/data-plane/FileStorageexisting-api-versione75a07cd7ea1b2207190a362305db02b639715ec@2026-12-06
base · affected-existing-version
656ca8b0741973760f8a60ee0fd293ba9c31e708@2026-12-06
current · affected-existing-version
succeeded / succeededsucceeded / succeeded

Pull request: Not available for this local pre-PR assessment.

Guidance fetched

Guidance coverage and retrieval evidence
{
  "status": "failed",
  "coverage": {
    "semanticIntentCount": 5,
    "assessedIntentCount": 5,
    "selectedDocumentCount": 4,
    "unassessedIntentIds": []
  },
  "sharedSearch": {
    "catalogRanking": [
      {
        "rank": 1,
        "catalogOrder": 21,
        "title": "Models",
        "canonicalUrl": "https://typespec.io/docs/language-basics/models/",
        "score": {
          "exactSymbol": 4,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 9
        },
        "selectionRationale": "Directly covers changed model or enum declarations and applies to data-plane TypeSpec."
      },
      {
        "rank": 2,
        "catalogOrder": 22,
        "title": "Enums",
        "canonicalUrl": "https://typespec.io/docs/language-basics/enums/",
        "score": {
          "exactSymbol": 4,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 9
        },
        "selectionRationale": "Directly covers changed model or enum declarations and applies to data-plane TypeSpec."
      },
      {
        "rank": 3,
        "catalogOrder": 1,
        "title": "Evolving APIs",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/06-evolving-apis/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 1,
          "total": 6
        },
        "selectionRationale": "Covers modifications to an existing versioned API and applies to data-plane TypeSpec."
      },
      {
        "rank": 4,
        "catalogOrder": 2,
        "title": "Versioning overview",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/01-about-versioning/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 5
        },
        "selectionRationale": "Matches a requested versioning, model, enum, scalar, or decorator category and applies to data-plane TypeSpec."
      },
      {
        "rank": 5,
        "catalogOrder": 3,
        "title": "Add preview after preview",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/02-preview-after-preview/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 5
        },
        "selectionRationale": "Matches a requested versioning, model, enum, scalar, or decorator category and applies to data-plane TypeSpec."
      },
      {
        "rank": 6,
        "catalogOrder": 4,
        "title": "Add stable after preview",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/03-stable-after-preview/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 5
        },
        "selectionRationale": "Matches a requested versioning, model, enum, scalar, or decorator category and applies to data-plane TypeSpec."
      },
      {
        "rank": 7,
        "catalogOrder": 5,
        "title": "Add preview after stable",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/04-preview-after-stable/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 5
        },
        "selectionRationale": "Matches a requested versioning, model, enum, scalar, or decorator category and applies to data-plane TypeSpec."
      },
      {
        "rank": 8,
        "catalogOrder": 6,
        "title": "Add stable after stable",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/05-stable-after-stable/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 5
        },
        "selectionRationale": "Matches a requested versioning, model, enum, scalar, or decorator category and applies to data-plane TypeSpec."
      },
      {
        "rank": 9,
        "catalogOrder": 23,
        "title": "Scalars",
        "canonicalUrl": "https://typespec.io/docs/language-basics/scalars/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 5
        },
        "selectionRationale": "Matches a requested versioning, model, enum, scalar, or decorator category and applies to data-plane TypeSpec."
      },
      {
        "rank": 10,
        "catalogOrder": 24,
        "title": "Decorators",
        "canonicalUrl": "https://typespec.io/docs/language-basics/decorators/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 5
        },
        "selectionRationale": "Matches a requested versioning, model, enum, scalar, or decorator category and applies to data-plane TypeSpec."
      },
      {
        "rank": 11,
        "catalogOrder": 25,
        "title": "Built-in decorators",
        "canonicalUrl": "https://typespec.io/docs/standard-library/built-in-decorators/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 5
        },
        "selectionRationale": "Matches a requested versioning, model, enum, scalar, or decorator category and applies to data-plane TypeSpec."
      },
      {
        "rank": 12,
        "catalogOrder": 26,
        "title": "OpenAPI decorators",
        "canonicalUrl": "https://typespec.io/docs/libraries/openapi/reference/decorators/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 5
        },
        "selectionRationale": "Matches a requested versioning, model, enum, scalar, or decorator category and applies to data-plane TypeSpec."
      },
      {
        "rank": 13,
        "catalogOrder": 29,
        "title": "Content negotiation",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/azure-core/content-negotiation/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 5
        },
        "selectionRationale": "Matches a requested versioning, model, enum, scalar, or decorator category and applies to data-plane TypeSpec."
      },
      {
        "rank": 14,
        "catalogOrder": 20,
        "title": "ARM common types",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/add-common-types/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 3
        },
        "selectionRationale": "Matches a requested category but is ARM-specific rather than data-plane guidance."
      },
      {
        "rank": 15,
        "catalogOrder": 27,
        "title": "Change provider namespace",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/change-provider-namespace/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 3
        },
        "selectionRationale": "Matches a requested category but is ARM-specific rather than data-plane guidance."
      },
      {
        "rank": 16,
        "catalogOrder": 28,
        "title": "Azure Portal default experiences",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/azure-portal/default-experiences/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 3
        },
        "selectionRationale": "Matches a requested category but is ARM-specific rather than data-plane guidance."
      },
      {
        "rank": 17,
        "catalogOrder": 14,
        "title": "TypeSpec.Rest decorators",
        "canonicalUrl": "https://typespec.io/docs/libraries/rest/reference/decorators/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 2
        },
        "selectionRationale": "Applies to data-plane TypeSpec but does not match the changed construct category."
      },
      {
        "rank": 18,
        "catalogOrder": 17,
        "title": "Azure.Core long-running operations",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/azure-core/long-running-operations/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 2
        },
        "selectionRationale": "Applies to data-plane TypeSpec but does not match the changed construct category."
      },
      {
        "rank": 19,
        "catalogOrder": 19,
        "title": "TypeSpec pagination",
        "canonicalUrl": "https://typespec.io/docs/standard-library/pagination/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 2
        },
        "selectionRationale": "Applies to data-plane TypeSpec but does not match the changed construct category."
      },
      {
        "rank": 20,
        "catalogOrder": 30,
        "title": "Directives",
        "canonicalUrl": "https://typespec.io/docs/language-basics/directives/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 2
        },
        "selectionRationale": "Applies to data-plane TypeSpec but does not match the changed construct category."
      },
      {
        "rank": 21,
        "catalogOrder": 31,
        "title": "Azure Core `no-openapi` rule",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/libraries/azure-core/rules/no-openapi/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 2
        },
        "selectionRationale": "Applies to data-plane TypeSpec but does not match the changed construct category."
      },
      {
        "rank": 22,
        "catalogOrder": 7,
        "title": "ARM resource types and modeling",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/resource-type/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "Does not match the changed construct category or data-plane service context."
      },
      {
        "rank": 23,
        "catalogOrder": 8,
        "title": "Specific extension resource sample",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/samples/resource-manager/resource-types/specific-extension/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "Does not match the changed construct category or data-plane service context."
      },
      {
        "rank": 24,
        "catalogOrder": 9,
        "title": "Private endpoints",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/private-endpoints/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "Does not match the changed construct category or data-plane service context."
      },
      {
        "rank": 25,
        "catalogOrder": 10,
        "title": "Private links",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/private-links/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "Does not match the changed construct category or data-plane service context."
      },
      {
        "rank": 26,
        "catalogOrder": 11,
        "title": "Network security perimeter",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/network-security-perimeter/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "Does not match the changed construct category or data-plane service context."
      },
      {
        "rank": 27,
        "catalogOrder": 12,
        "title": "ARM resource operations",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/resource-operations/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "Does not match the changed construct category or data-plane service context."
      },
      {
        "rank": 28,
        "catalogOrder": 13,
        "title": "Azure.ResourceManager interface reference",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/libraries/azure-resource-manager/reference/interfaces/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "Does not match the changed construct category or data-plane service context."
      },
      {
        "rank": 29,
        "catalogOrder": 15,
        "title": "Azure.ResourceManager decorators",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/libraries/azure-resource-manager/reference/decorators/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "Does not match the changed construct category or data-plane service context."
      },
      {
        "rank": 30,
        "catalogOrder": 16,
        "title": "ARM long-running operations",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/long-running-operations/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "Does not match the changed construct category or data-plane service context."
      },
      {
        "rank": 31,
        "catalogOrder": 18,
        "title": "Azure.ResourceManager data types",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/libraries/azure-resource-manager/reference/data-types/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "Does not match the changed construct category or data-plane service context."
      }
    ],
    "documents": [
      {
        "rank": 1,
        "catalogOrder": 21,
        "title": "Models",
        "canonicalUrl": "https://typespec.io/docs/language-basics/models/",
        "score": {
          "exactSymbol": 4,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 9
        },
        "selectionRationale": "Directly covers changed model or enum declarations and applies to data-plane TypeSpec.",
        "guidance": [],
        "noRelevantGuidance": true,
        "retrievedAt": "2026-09-17T11:43:50.583Z",
        "contentHash": "sha256:3b84e7dc79b330fafcfa2cb83a899f61be58e9e0e2754104daf3f3c2a0f1349b"
      },
      {
        "rank": 2,
        "catalogOrder": 22,
        "title": "Enums",
        "canonicalUrl": "https://typespec.io/docs/language-basics/enums/",
        "score": {
          "exactSymbol": 4,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 9
        },
        "selectionRationale": "Directly covers changed model or enum declarations and applies to data-plane TypeSpec.",
        "guidance": [],
        "noRelevantGuidance": true,
        "retrievedAt": "2026-09-17T11:43:50.583Z",
        "contentHash": "sha256:89f4759b17646f3e49c84aa06aa9cc4a381e79486fed3347704e92f943b840b4"
      },
      {
        "rank": 3,
        "catalogOrder": 1,
        "title": "Evolving APIs",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/06-evolving-apis/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 1,
          "total": 6
        },
        "selectionRationale": "Covers modifications to an existing versioned API and applies to data-plane TypeSpec.",
        "guidance": [
          {
            "section": "Removing models, properties, or operations",
            "excerpt": "To remove models, properties, or operations starting from a specific version, use the @removed decorator. The version argument is the version where the element is removed. The element will not be present in that version or any later versions.",
            "queryTerms": [
              "@removed",
              "properties",
              "existing versioned API"
            ],
            "examples": [
              "@removed(Versions.v2)"
            ],
            "applicableDeclarationIds": [
              "declaration-2d3a2b7aab17dfb3",
              "declaration-3243b40112836aaa",
              "declaration-f645a014c6b8c231",
              "declaration-f84d7b1313863775",
              "declaration-3ccbed40d5b5a580",
              "declaration-5444d21d5571ca6d",
              "declaration-548fd097e257bd20",
              "declaration-5e71c571d67a1a90",
              "declaration-85501d96c1415c4d",
              "declaration-95b0cdda43d146f0",
              "declaration-cb7ef84ffdccd6df",
              "declaration-2fc5ef444759f4a7",
              "declaration-4fb604ae8d7e498c",
              "declaration-51c6e236781c718e",
              "declaration-a44641dd872bd2fb",
              "declaration-dd60ed751f286d8b",
              "declaration-af95a6a0e5930f05",
              "declaration-eb0a1fe2bd4b57f5",
              "declaration-11d9bfb5a9417330",
              "declaration-1308395af552c920",
              "declaration-1d8f77f5a0706041",
              "declaration-28faabea28d25a09",
              "declaration-2d8838f499c8d2a7",
              "declaration-3468c062204a2ec9",
              "declaration-388d5fab74ac6367",
              "declaration-4d422ac6bbb746c1",
              "declaration-4ebf21e442725dae",
              "declaration-5ad589dd342edf51",
              "declaration-5d5c269c56d15244",
              "declaration-60ca7e1d8534d963",
              "declaration-66f903520fea680f",
              "declaration-7579ab049368eba2",
              "declaration-784023ca786802e3",
              "declaration-7e1538dc0206b9c0",
              "declaration-81ae245a471237ca",
              "declaration-8c10fa4d4b94e0e6",
              "declaration-8dbd598f86e39880",
              "declaration-913b93a15794ef2f",
              "declaration-a9ae57b209f780dc",
              "declaration-abd4fe560343919a",
              "declaration-be5a596dbd04dd32",
              "declaration-c00ed6ec653d2f38",
              "declaration-c15318f2c3c92a7f",
              "declaration-cca86a1e4127e661",
              "declaration-d73fb1ed7844d619",
              "declaration-dcc651a6c2451245",
              "declaration-e55304f8e1921660",
              "declaration-e69435f544489f6a",
              "declaration-f4e8baf2553ff927",
              "declaration-fa33e601ec2821cf",
              "declaration-fd7b6d11babaca4d"
            ]
          }
        ],
        "noRelevantGuidance": false,
        "retrievedAt": "2026-09-17T11:43:50.583Z",
        "contentHash": "sha256:89bd7c052102f80760ab3b618443be788998191dce28529fa7c0244de3a036c7"
      },
      {
        "rank": 4,
        "catalogOrder": 2,
        "title": "Versioning overview",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/versioning/01-about-versioning/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 5
        },
        "selectionRationale": "Matches a requested versioning, model, enum, scalar, or decorator category and applies to data-plane TypeSpec.",
        "guidance": [],
        "noRelevantGuidance": true,
        "retrievedAt": "2026-09-17T11:43:50.583Z",
        "contentHash": "sha256:7ff1da8dc75f1f78f907a4cbae591a0fa601cb1b67e2580f7d93ff89784e9818"
      }
    ]
  },
  "intentAssessments": [
    {
      "semanticIntentId": "semantic-592b5311731e1446",
      "decision": "applicable-fail",
      "blockers": []
    },
    {
      "semanticIntentId": "semantic-69d8c47200127e1e",
      "decision": "applicable-fail",
      "blockers": []
    },
    {
      "semanticIntentId": "semantic-9616a08203c508e2",
      "decision": "applicable-fail",
      "blockers": []
    },
    {
      "semanticIntentId": "semantic-a37463f13b1cdb22",
      "decision": "applicable-fail",
      "blockers": []
    },
    {
      "semanticIntentId": "semantic-fc36895d206fa6fd",
      "decision": "applicable-fail",
      "blockers": []
    }
  ],
  "retrievalFailures": [],
  "blockers": []
}

Changed files

  • specification/storage/data-plane/FileStorage/models.tsp (committed)

Timing and model input

{
  "timings": {
    "metadataMs": 1202,
    "fetchMs": 117,
    "scopeDiscoveryMs": 61,
    "setupExcludingFetchMs": 10899,
    "comparisonMs": 102,
    "changeDiscoveryMs": 61,
    "workspacePreparationMs": 9300,
    "projectDiscoveryMs": 8,
    "totalMs": 66909,
    "semanticAnalysisMs": 74,
    "restAnalysisMs": 40,
    "downstreamAnalysisMs": 1964,
    "documentQualityAnalysisMs": 1
  },
  "inputAccounting": {
    "budgetTier": "medium",
    "budgetBytes": 262144,
    "bytes": 163485,
    "estimatedTokens": 40872,
    "retained": {
      "evidenceSets": 28,
      "facts": 41,
      "semanticReviewUnits": 5,
      "restCandidates": 22,
      "downstreamCandidates": 19,
      "downstreamRootCauses": 11,
      "complianceSearchRequests": 5,
      "inferenceRequests": 0
    },
    "omittedRedundant": {
      "rawEmitterArtifacts": true,
      "compilerLogs": true,
      "unchangedInventories": true,
      "unreferencedFacts": true,
      "unreferencedDeterministicFacts": true,
      "sourceChanges": true,
      "repeatedDeclarationIds": true,
      "repeatedReviewUnitEvidence": true
    },
    "compliance": {
      "catalogEntriesScored": 31,
      "documentsFetched": 4,
      "documentBytesFetched": 907,
      "guidanceExcerptsRetained": 1,
      "guidanceExcerptBytesRetained": 242
    }
  }
}

Provenance: model-input.json, dimensions/document-quality-input.json, compliance-search-evidence.json, assessment-judgment.json, preparation-manifest.json