Task · TSO-0042

Adjudicate the 14 unhandled API response fields in the contract ledger

Description

internal/tsapi/contract/field_dispositions.json carries 14 decoded-but-dropped fields with disposition unhandled and no note: listUsers.DisplayName/ProfilePicURL/TailnetID, listTailnetKeys.Updated, listWebhooks.LastModified, listOAuthApps.Updated/Description, listConfigurationAuditLogs.Version, listUserInvites.ID/InviterID/TailnetID, listTailnetDevices.TailnetLockKey, listServices.Tags[], listServiceHosts.NodeID (the last two are covered by the Services task TSO-0037). For each remaining field: either emit it (mostly freshness timestamps suited to staleness panels) or formally park it with a note explaining why. Zero rows left noteless.

Acceptance Criteria

Definition of Done

Implementation Plan

C2: adjudicate every remaining noteless unhandled response field after the Services lane; prefer explicit parking notes unless an emitted signal is justified and panel ownership is available; leave zero noteless rows; return focused-check evidence without tracker writes or commits.

Implementation Notes

Latitude deviation: the run contract called for one commit per feature, but root retained the already-integrated shared-tree feature commit fa6a465 plus review-fix commit a18a5dd rather than performing prohibited destructive history surgery after integration and push. All task evidence is tied to the verified implementation head a18a5dd06f9ac9c8b84fda73bba653ded2398d5a.

Final Summary

Adjudicated the response-field contract ledger with concrete types, dispositions, and explanatory notes; zero noteless rows remain. Verified by the negative-tested contract guard, final just check, and exact-head CI run 33322449434 at a18a5dd06f9ac9c8b84fda73bba653ded2398d5a (success).

View the source file on GitHub