fix(tailscale): close out the initial-release review follow-ups (swamp-club #2936) #430

Merged
stack72 merged 1 commit from 2936 into main 2026-10-02 01:42:47 +00:00
Owner

Closes the non-blocking follow-ups from the @swamp/tailscale initial-release verification review (swamp-club #2936).

Changes (codegen/tailscale)

  • Collection delete of an untracked ID now records it under item-<id>, the instance get and list write that resource to. Before, it wrote to the bare <id>, so after list then delete the item-<id> instance still looked live. Affects the 8 collection models.
  • Numeric enum literals are emitted with JSON.stringify so a mixed numeric/string enum compiles (output-neutral today).
  • instanceName maps a bare . to _.
  • Keyed delete/sync records quote the key with propKey (output-neutral today).
  • fetchTailscaleSchema has a 60s timeout.
  • Keyed create read-then-PUT race is documented as accepted (design doc + generated comment); the API PUT is an unconditional upsert with no guard.

Design doc updated for the delete naming and the race. Live-tailnet coverage of OAuth client auth, device facets, services, log streams, posture integrations, OAuth apps and invites remains a manual follow-up, as already noted in the design doc.

Regeneration

model/tailscale regenerated (manifest 2026.10.02.2): 8 collection models, service and log_stream, and _lib/tailscale.ts. A second generation run is a no-op.

Testing

  • New failing-first integration steps: tailnet_key list-then-delete marks item-k1 deleted with no bare k1 instance; untracked webhook delete writes item-other; instanceName dot cases.
  • zodFull unit test for numeric enums; snapshots updated.
  • verify-build and verify-reviews passed on 5d9840d (gate allPassed); attestation posted.

🤖 Generated with Claude Code

Closes the non-blocking follow-ups from the @swamp/tailscale initial-release verification review (swamp-club #2936). ## Changes (codegen/tailscale) - **Collection delete of an untracked ID** now records it under `item-<id>`, the instance `get` and `list` write that resource to. Before, it wrote to the bare `<id>`, so after `list` then `delete` the `item-<id>` instance still looked live. Affects the 8 collection models. - **Numeric enum literals** are emitted with `JSON.stringify` so a mixed numeric/string enum compiles (output-neutral today). - **`instanceName`** maps a bare `.` to `_`. - **Keyed delete/sync records** quote the key with `propKey` (output-neutral today). - **`fetchTailscaleSchema`** has a 60s timeout. - **Keyed create read-then-PUT race** is documented as accepted (design doc + generated comment); the API PUT is an unconditional upsert with no guard. Design doc updated for the delete naming and the race. Live-tailnet coverage of OAuth client auth, device facets, services, log streams, posture integrations, OAuth apps and invites remains a manual follow-up, as already noted in the design doc. ## Regeneration `model/tailscale` regenerated (manifest `2026.10.02.2`): 8 collection models, `service` and `log_stream`, and `_lib/tailscale.ts`. A second generation run is a no-op. ## Testing - New failing-first integration steps: tailnet_key list-then-delete marks `item-k1` deleted with no bare `k1` instance; untracked webhook delete writes `item-other`; `instanceName` dot cases. - `zodFull` unit test for numeric enums; snapshots updated. - verify-build and verify-reviews passed on 5d9840d (gate allPassed); attestation posted. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(tailscale): close out the initial-release review follow-ups (swamp-club #2936)
All checks were successful
CI / Validate Attestation (pull_request) Successful in 1m6s
CI / Review Integrity (pull_request) Successful in 1m12s
5d9840d1be
- Collection delete of an untracked ID records it under item-<id>, the
  instance get and list write, so a listed item no longer stays live
  after delete.
- Numeric enum literals are emitted with JSON.stringify.
- instanceName maps a bare "." to "_".
- Keyed delete and sync records quote the key with propKey.
- The Tailscale spec fetch has a 60s timeout.
- The keyed create read-then-PUT race is documented as accepted.

Regenerated model/tailscale (2026.10.02.2); a second run is a no-op.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
stack72 deleted branch 2936 2026-10-02 01:42:47 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
swamp-club/swamp-extensions!430
No description provided.