TypeSpec Assessment

3 TypeSpec changes for ConfidentialLedger

TypeSpec source diff: e7d422ec1d105f2871caca4940636098ef6ab580 → 50c5c2ebc78c8f876c637f01a90b8171ad7ec3de

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.

Semantic intents

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

Publish a new API versionCarries 33 existing operations into the new API version. This publication intent is reported deterministically and is not used for inference, guideline findings, or breaking-change relationships.
modify
Changed TypeSpec source (2)
specification/confidentialledger/data-plane/ConfidentialLedger/main.tsp
    * The 2026-02-23 API version.
    */
   v2026_02_23: "2026-02-23",
+
+  /**
+   * The 2026-07-31-preview API version.
+   */
+  @Azure.Core.previewVersion
+  v2026_07_31_preview: "2026-07-31-preview",
 }
specification/confidentialledger/data-plane/ConfidentialLedger/models.tsp
    * The collection identifier of the ledger entry.
    */
   collectionId: string;
+
+  /**
+   * The receipt certifying the committed transaction.
+   */
+  @added(Versions.v2026_07_31_preview)
+  receipt?: ReceiptContents;
+
+  /**
+   * State of the write transaction.
+   */
+  @added(Versions.v2026_07_31_preview)
+  state: TransactionState;
+
+  /**
+   * The list of application claims.
+   */
+  @added(Versions.v2026_07_31_preview)
+  applicationClaims?: ApplicationClaim[];
+}
+
+/**
+ * The transaction was rolled back before it could be committed.
+ */
+@added(Versions.v2026_07_31_preview)
+@error
+model TransactionRolledBackErrorResponse {
+  /**
+   * The HTTP status code.
+   */
+  @statusCode
+  statusCode: 503;
+
+  ...ConfidentialLedgerCommon.ConfidentialLedgerError;
 }
 
 /**

specification/confidentialledger/data-plane/ConfidentialLedger/main.tsp:34, specification/confidentialledger/data-plane/ConfidentialLedger/models.tsp:427

Affected operations (33)

Showing 10 operation cards; the remaining 23 are listed below.

CreateLedgerEntryPOST/app/transactions2026-07-31-preview
Contract areaBeforeAfter
Query parameterwaitForCommit
not present
boolean · optional
Response body property200 · applicationClaims
not present
ApplicationClaim[] (optional)
Response body property200 · receipt
not present
ReceiptContents (optional)
Response body property200 · state
not present
TransactionState (required)
Response status503
not present
ConfidentialLedgerCommon.ConfidentialLedgerError

REST contract changed: parameters, responses.

CreateOrUpdateLedgerUserPATCH/app/ledgerUsers/{userId}2026-07-31-preview

HTTP signature and represented payload contract unchanged.

CreateOrUpdateUserPATCH/app/users/{userId}2026-07-31-preview

HTTP signature and represented payload contract unchanged.

CreateUserDefinedEndpointPUT/app/userDefinedEndpoints2026-07-31-preview

HTTP signature and represented payload contract unchanged.

CreateUserDefinedFunctionPUT/app/userDefinedFunctions/{functionId}2026-07-31-preview

HTTP signature and represented payload contract unchanged.

CreateUserDefinedRolePUT/app/roles2026-07-31-preview

HTTP signature and represented payload contract unchanged.

DeleteLedgerUserDELETE/app/ledgerUsers/{userId}2026-07-31-preview

HTTP signature and represented payload contract unchanged.

DeleteUserDELETE/app/users/{userId}2026-07-31-preview

HTTP signature and represented payload contract unchanged.

DeleteUserDefinedFunctionDELETE/app/userDefinedFunctions/{functionId}2026-07-31-preview

HTTP signature and represented payload contract unchanged.

DeleteUserDefinedRoleDELETE/app/roles2026-07-31-preview

HTTP signature and represented payload contract unchanged.

Other affected operations (23)

ExecuteUserDefinedFunction (POST, 2026-07-31-preview); GetConstitution (GET, 2026-07-31-preview); GetCurrentLedgerEntry (GET, 2026-07-31-preview); GetEnclaveQuotes (GET, 2026-07-31-preview); GetLedgerEntry (GET, 2026-07-31-preview); GetLedgerUser (GET, 2026-07-31-preview); GetReceipt (GET, 2026-07-31-preview); GetRuntimeOptions (GET, 2026-07-31-preview); GetTransactionStatus (GET, 2026-07-31-preview); GetUser (GET, 2026-07-31-preview); GetUserDefinedEndpoint (GET, 2026-07-31-preview); GetUserDefinedEndpointsModule (GET, 2026-07-31-preview); GetUserDefinedFunction (GET, 2026-07-31-preview); GetUserDefinedRole (GET, 2026-07-31-preview); ListCollections (GET, 2026-07-31-preview); ListConsortiumMembers (GET, 2026-07-31-preview); ListLedgerEntries (GET, 2026-07-31-preview); ListLedgerUsers (GET, 2026-07-31-preview); ListTags (GET, 2026-07-31-preview); ListUserDefinedFunctions (GET, 2026-07-31-preview); ListUsers (GET, 2026-07-31-preview); UpdateRuntimeOptions (PATCH, 2026-07-31-preview); UpdateUserDefinedRole (PATCH, 2026-07-31-preview).

Evolve ledger entry creation for the new previewThe new preview versions the ledger-write operation on the existing POST /app/transactions route, adds optional commit-wait behavior and richer write results, and preserves earlier-version naming through versioning decorators.
modify
Changed TypeSpec source (1)
specification/confidentialledger/data-plane/ConfidentialLedger/routes.tsp
  * A collection id may optionally be specified.
  */
 #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Existing API"
+@removed(Versions.v2026_07_31_preview)
+@renamedFrom(Versions.v2026_07_31_preview, "createLedgerEntry")
 @summary("Writes a ledger entry.")
+@sharedRoute
 @route("/app/transactions")
 @post
-op createLedgerEntry is ConfidentialLedgerCommon.LedgerOperation<
+op createLedgerEntryAsync is ConfidentialLedgerCommon.LedgerOperation<
   {
     /**
      * The collection id.
specification/confidentialledger/data-plane/ConfidentialLedger/routes.tsp
   LedgerWriteResult
 >;
 
+/**
+ * A collection id may optionally be specified. By default, the operation
+ * returns after local commit with an `x-ms-ccf-transaction-id` that callers can
+ * use with the `/app/transactions/{transactionId}/status` and
+ * `/app/transactions/{transactionId}/receipt` endpoints, including after
+ * reconnecting.
+ *
+ * When `waitForCommit` is true, the response is held until the transaction is
+ * globally committed. If the connection is lost before the response is
+ * received, the caller might not receive the transaction ID and cannot
+ * uniquely recover the specific write. Clients that require unambiguous
+ * per-request recovery should use the default behavior and poll using the
+ * returned transaction ID.
+ *
+ * For more information, see [Azure Confidential Ledger write transaction
+ * receipts](https://learn.microsoft.com/azure/confidential-ledger/write-transaction-receipts).
+ */
+#suppress "@azure-tools/typespec-azure-core/use-standard-operations" "The versioned ledger write route requires both the service default error and a 503 TransactionRolledBack response."
+@added(Versions.v2026_07_31_preview)
+@summary("Writes a ledger entry.")
+@returnsDoc("Returned as a result of writing to the Confidential Ledger.")
+@sharedRoute
+@route("/app/transactions")
+@post
+op createLedgerEntry is ConfidentialLedgerCommon.LedgerOperation<
+  {
+    /**
+     * The collection id.
+     */
+    @query("collectionId")
+    collectionId?: string;
+
+    /**
+     * Comma separated tags.
+     */
+    @query("tags")
+    tags?: string;
+
+    /**
+     * Ledger entry.
+     */
+    @bodyRoot
+    entry: LedgerEntry;
+
+    /**
+     * Whether to wait for the transaction to be globally committed before
+     * returning. When true, the response includes the transaction receipt, but
+     * a disconnect before the response is received can prevent recovery of the
+     * specific write. Use the default behavior and poll the transaction status
+     * or receipt endpoints when unambiguous per-request recovery is required.
+     */
+    @query("waitForCommit")
+    waitForCommit?: boolean = false;
+  },
+  LedgerWriteResult,
+  | ConfidentialLedgerCommon.ConfidentialLedgerError
+  | TransactionRolledBackErrorResponse
+>;
+
 /**
  * To return older ledger entries, the relevant sections of the ledger must be
  * read from disk and validated. To prevent blocking within the enclave, the

specification/confidentialledger/data-plane/ConfidentialLedger/routes.tsp:76

Affected operations (1)
CreateLedgerEntryPOST/app/transactions2026-07-31-preview
Contract areaBeforeAfter
Query parameterwaitForCommit
not present
boolean · optional
Response body property200 · applicationClaims
not present
ApplicationClaim[] (optional)
Response body property200 · receipt
not present
ReceiptContents (optional)
Response body property200 · state
not present
TransactionState (required)
Response status503
not present
ConfidentialLedgerCommon.ConfidentialLedgerError

REST contract changed: parameters, responses.

Stop TypeScript REST client emissionThe TypeSpec configuration removes the @azure-tools/typespec-ts emitter and its package metadata; no REST operation is changed by this configuration-only edit.
modify
Changed TypeSpec source (1)
specification/confidentialledger/data-plane/ConfidentialLedger/tspconfig.yaml
     "emitter-output-dir": "{output-dir}/{service-dir}/azure-security-confidentialledger"
     "namespace": "com.azure.security.confidentialledger"
     "flavor": "azure"
-  "@azure-tools/typespec-ts":
-    "emitter-output-dir": "{output-dir}/{service-dir}/confidential-ledger-rest"
-    "package-details":
-      "name": "@azure-rest/confidential-ledger"
-      description: "An isomorphic rest level client library for the Azure Confidential Ledger service."
-    "flavor": "azure"
-    is-modular-library: false
-    generate-metadata: true
-    generate-sample-project: false
   "@azure-typespec/http-client-csharp":
     emitter-output-dir: "{output-dir}/{service-dir}/{namespace}"
     namespace: Azure.Security.ConfidentialLedger

specification/confidentialledger/data-plane/ConfidentialLedger/tspconfig.yaml

Affected operations (0)

No directly affected REST operation.

Azure Guidelines

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

2 of 2 semantic intents assessed · 4 documents selected

No Azure Guidelines findings.

No applicable guideline was found for: Stop TypeScript REST client emission.

REST breaking changes

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

No confirmed REST breaking changes.

Downstream breaking changes

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

No downstream breaking changes detected.

Documentation Completeness

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

0 findings · 1 declaration checked

Appendix

Potential limits

None

Projects and compiler status

ProjectModeBaseline commit@versionTarget commit@versionBaseline AutoRest / TCGCTarget AutoRest / TCGC
specification/confidentialledger/data-plane/ConfidentialLedgernew-api-version50c5c2ebc78c8f876c637f01a90b8171ad7ec3de@2026-02-23
current · previous-latest-stable
50c5c2ebc78c8f876c637f01a90b8171ad7ec3de@2026-07-31-preview
current · newest-added-version
succeeded / succeededsucceeded / succeeded

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

Guidance fetched

Guidance coverage and retrieval evidence
{
  "status": "passed",
  "coverage": {
    "semanticIntentCount": 2,
    "assessedIntentCount": 2,
    "selectedDocumentCount": 4,
    "unassessedIntentIds": []
  },
  "sharedSearch": {
    "catalogRanking": [
      {
        "rank": 1,
        "catalogOrder": 29,
        "title": "Content negotiation",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/azure-core/content-negotiation/",
        "score": {
          "exactSymbol": 4,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 9
        },
        "selectionRationale": "exact @sharedRoute/shared-route match; matching versioning, model/enum, or decorator category; applicable to data-plane TypeSpec"
      },
      {
        "rank": 2,
        "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": "matching versioning, model/enum, or decorator category; applicable to data-plane TypeSpec; matching existing-version or stable-to-preview change"
      },
      {
        "rank": 3,
        "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": 1,
          "total": 6
        },
        "selectionRationale": "matching versioning, model/enum, or decorator category; applicable to data-plane TypeSpec; matching existing-version or stable-to-preview change"
      },
      {
        "rank": 4,
        "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": 1,
          "total": 6
        },
        "selectionRationale": "matching versioning, model/enum, or decorator category; applicable to data-plane TypeSpec; matching existing-version or stable-to-preview change"
      },
      {
        "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": "matching versioning, model/enum, or decorator category; applicable 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": "matching versioning, model/enum, or decorator category; applicable to data-plane TypeSpec"
      },
      {
        "rank": 7,
        "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": "matching versioning, model/enum, or decorator category; applicable to data-plane TypeSpec"
      },
      {
        "rank": 8,
        "catalogOrder": 21,
        "title": "Models",
        "canonicalUrl": "https://typespec.io/docs/language-basics/models/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 5
        },
        "selectionRationale": "matching versioning, model/enum, or decorator category; applicable to data-plane TypeSpec"
      },
      {
        "rank": 9,
        "catalogOrder": 22,
        "title": "Enums",
        "canonicalUrl": "https://typespec.io/docs/language-basics/enums/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 5
        },
        "selectionRationale": "matching versioning, model/enum, or decorator category; applicable 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": "matching versioning, model/enum, or decorator category; applicable 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": "matching versioning, model/enum, or decorator category; applicable 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": "matching versioning, model/enum, or decorator category; applicable to data-plane TypeSpec"
      },
      {
        "rank": 13,
        "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": "applicable to data-plane TypeSpec"
      },
      {
        "rank": 14,
        "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": "applicable to data-plane TypeSpec"
      },
      {
        "rank": 15,
        "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": "applicable to data-plane TypeSpec"
      },
      {
        "rank": 16,
        "catalogOrder": 23,
        "title": "Scalars",
        "canonicalUrl": "https://typespec.io/docs/language-basics/scalars/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 2
        },
        "selectionRationale": "applicable to data-plane TypeSpec"
      },
      {
        "rank": 17,
        "catalogOrder": 30,
        "title": "Directives",
        "canonicalUrl": "https://typespec.io/docs/language-basics/directives/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 2
        },
        "selectionRationale": "applicable to data-plane TypeSpec"
      },
      {
        "rank": 18,
        "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": "applicable to data-plane TypeSpec"
      },
      {
        "rank": 19,
        "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": "No catalog signal matched the bounded query profiles."
      },
      {
        "rank": 20,
        "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": "No catalog signal matched the bounded query profiles."
      },
      {
        "rank": 21,
        "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": "No catalog signal matched the bounded query profiles."
      },
      {
        "rank": 22,
        "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": "No catalog signal matched the bounded query profiles."
      },
      {
        "rank": 23,
        "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": "No catalog signal matched the bounded query profiles."
      },
      {
        "rank": 24,
        "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": "No catalog signal matched the bounded query profiles."
      },
      {
        "rank": 25,
        "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": "No catalog signal matched the bounded query profiles."
      },
      {
        "rank": 26,
        "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": "No catalog signal matched the bounded query profiles."
      },
      {
        "rank": 27,
        "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": "No catalog signal matched the bounded query profiles."
      },
      {
        "rank": 28,
        "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": "No catalog signal matched the bounded query profiles."
      },
      {
        "rank": 29,
        "catalogOrder": 20,
        "title": "ARM common types",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/add-common-types/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "No catalog signal matched the bounded query profiles."
      },
      {
        "rank": 30,
        "catalogOrder": 27,
        "title": "Change provider namespace",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/arm/change-provider-namespace/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "No catalog signal matched the bounded query profiles."
      },
      {
        "rank": 31,
        "catalogOrder": 28,
        "title": "Azure Portal default experiences",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/azure-portal/default-experiences/",
        "score": {
          "exactSymbol": 0,
          "patternCategory": 0,
          "servicePlane": 0,
          "changeContext": 0,
          "total": 0
        },
        "selectionRationale": "No catalog signal matched the bounded query profiles."
      }
    ],
    "documents": [
      {
        "rank": 1,
        "catalogOrder": 29,
        "title": "Content negotiation",
        "canonicalUrl": "https://azure.github.io/typespec-azure/docs/howtos/azure-core/content-negotiation/",
        "score": {
          "exactSymbol": 4,
          "patternCategory": 3,
          "servicePlane": 2,
          "changeContext": 0,
          "total": 9
        },
        "selectionRationale": "exact @sharedRoute/shared-route match; matching versioning, model/enum, or decorator category; applicable to data-plane TypeSpec",
        "guidance": [],
        "noRelevantGuidance": true,
        "retrievedAt": "2026-09-17T20:02:42.230+08:00",
        "contentHash": "sha256:011f67b99c996d02646401b25c50fbbb3bfa3eed70112822d491f7a415834b07"
      },
      {
        "rank": 2,
        "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": "matching versioning, model/enum, or decorator category; applicable to data-plane TypeSpec; matching existing-version or stable-to-preview change",
        "guidance": [
          {
            "section": "Converting an operation from synchronous to asynchronous",
            "excerpt": "Use @removed for the original operation, @renamedFrom to preserve its earlier name, and @sharedRoute so the versioned operations can use the same route.",
            "queryTerms": [
              "@removed",
              "@renamedFrom",
              "@sharedRoute",
              "operation"
            ],
            "examples": [
              "@removed(Versions.v2)",
              "@renamedFrom(Versions.v2, \"createOrUpdate\")"
            ],
            "applicableDeclarationIds": [
              "declaration-7e72c20a3e4f864f",
              "declaration-7feb90faf7759dae",
              "declaration-9a746bfc883ad999",
              "declaration-ad1f79cc7b8f22d3",
              "declaration-de3da0261ed48ed9",
              "declaration-e8a7420c11bdbc9e"
            ]
          },
          {
            "section": "Adding an optional operation parameter",
            "excerpt": "Use @added with the introducing version for a new optional parameter; use @madeOptional only when an existing parameter becomes optional.",
            "queryTerms": [
              "@added",
              "@madeOptional",
              "waitForCommit"
            ],
            "examples": [
              "@added(Versions.v2) orderBy?: string"
            ],
            "applicableDeclarationIds": [
              "declaration-7e72c20a3e4f864f",
              "declaration-7feb90faf7759dae",
              "declaration-9a746bfc883ad999",
              "declaration-ad1f79cc7b8f22d3",
              "declaration-de3da0261ed48ed9",
              "declaration-e8a7420c11bdbc9e"
            ]
          }
        ],
        "noRelevantGuidance": false,
        "retrievedAt": "2026-09-17T20:02:42.230+08:00",
        "contentHash": "sha256:36e3148c1c20d730cb4ce73a6c2ec256568426ae6dfe5128ed82c669888444b7"
      },
      {
        "rank": 3,
        "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": 1,
          "total": 6
        },
        "selectionRationale": "matching versioning, model/enum, or decorator category; applicable to data-plane TypeSpec; matching existing-version or stable-to-preview change",
        "guidance": [
          {
            "section": "Preview version guidance",
            "excerpt": "Always make the last enum value the preview, apply @previewVersion to it, and mark all changes from the latest stable with versioning decorators that reference that preview version.",
            "queryTerms": [
              "@previewVersion",
              "latest stable",
              "versioning decorators"
            ],
            "examples": [
              "Versions.<PreviewVersion>"
            ],
            "applicableDeclarationIds": [
              "declaration-7e72c20a3e4f864f",
              "declaration-7feb90faf7759dae",
              "declaration-9a746bfc883ad999",
              "declaration-ad1f79cc7b8f22d3",
              "declaration-de3da0261ed48ed9",
              "declaration-e8a7420c11bdbc9e"
            ]
          }
        ],
        "noRelevantGuidance": false,
        "retrievedAt": "2026-09-17T20:02:42.230+08:00",
        "contentHash": "sha256:0875599746a9be30c2e273ccf2b117c02b31a9802d69bf11cd6728d1a5c74c42"
      },
      {
        "rank": 4,
        "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": 1,
          "total": 6
        },
        "selectionRationale": "matching versioning, model/enum, or decorator category; applicable to data-plane TypeSpec; matching existing-version or stable-to-preview change",
        "guidance": [
          {
            "section": "Add preview after stable",
            "excerpt": "For a new preview after a stable version, add the preview version and mark removed, added, renamed, or otherwise modified types and operations with the appropriate versioning decorator.",
            "queryTerms": [
              "preview after stable",
              "@removed",
              "@added",
              "@renamedFrom"
            ],
            "examples": [
              "@removed(Versions.`2026-01-01-preview`)",
              "@renamedFrom(Versions.`2026-01-01-preview`, \"Bar\")"
            ],
            "applicableDeclarationIds": [
              "declaration-7e72c20a3e4f864f",
              "declaration-7feb90faf7759dae",
              "declaration-9a746bfc883ad999",
              "declaration-ad1f79cc7b8f22d3",
              "declaration-de3da0261ed48ed9",
              "declaration-e8a7420c11bdbc9e"
            ]
          }
        ],
        "noRelevantGuidance": false,
        "retrievedAt": "2026-09-17T20:02:42.230+08:00",
        "contentHash": "sha256:7497137dcdf0d7d446393b1e0487a2292e2f15e7432934d2f1928c5d5b0a3c3d"
      }
    ]
  },
  "intentAssessments": [
    {
      "semanticIntentId": "semantic-87bb545cf3d5041e",
      "decision": "applicable-pass",
      "blockers": []
    },
    {
      "semanticIntentId": "semantic-ec7af1999e66c93e",
      "decision": "no-applicable-guidance",
      "blockers": []
    }
  ],
  "retrievalFailures": [],
  "blockers": []
}

Changed files

  • specification/confidentialledger/data-plane/ConfidentialLedger/main.tsp (committed)
  • specification/confidentialledger/data-plane/ConfidentialLedger/models.tsp (committed)
  • specification/confidentialledger/data-plane/ConfidentialLedger/routes.tsp (committed)
  • specification/confidentialledger/data-plane/ConfidentialLedger/tspconfig.yaml (committed)

Timing and model input

{
  "timings": {
    "metadataMs": 1112,
    "fetchMs": 153,
    "scopeDiscoveryMs": 72,
    "setupExcludingFetchMs": 5483,
    "comparisonMs": 117,
    "changeDiscoveryMs": 85,
    "workspacePreparationMs": 3830,
    "projectDiscoveryMs": 12,
    "totalMs": 64785,
    "semanticAnalysisMs": 550,
    "restAnalysisMs": 19,
    "downstreamAnalysisMs": 11,
    "documentQualityAnalysisMs": 1
  },
  "inputAccounting": {
    "budgetTier": "small",
    "budgetBytes": 131072,
    "bytes": 23543,
    "estimatedTokens": 5886,
    "retained": {
      "evidenceSets": 4,
      "facts": 6,
      "semanticReviewUnits": 2,
      "restCandidates": 0,
      "downstreamCandidates": 1,
      "downstreamRootCauses": 1,
      "complianceSearchRequests": 2,
      "inferenceRequests": 2
    },
    "omittedRedundant": {
      "rawEmitterArtifacts": true,
      "compilerLogs": true,
      "unchangedInventories": true,
      "unreferencedFacts": true,
      "unreferencedDeterministicFacts": true,
      "sourceChanges": true,
      "repeatedDeclarationIds": true,
      "repeatedReviewUnitEvidence": true
    },
    "inference": {
      "requestCount": 2,
      "inferredCandidateCount": 0,
      "noImpactCount": 2,
      "blockedCount": 0
    },
    "compliance": {
      "catalogEntriesScored": 31,
      "documentsFetched": 4,
      "documentBytesFetched": 14903,
      "guidanceExcerptsRetained": 4,
      "guidanceExcerptBytesRetained": 655
    }
  }
}

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