Repository navigation
Not-critical API changes wishlist #1378
Copy link
Copy link
Open
Labels
area/apiUser-facing API changesUser-facing API changeskind/cleanupSmall fixes that are not bugs, for example a typo in a code commentSmall fixes that are not bugs, for example a typo in a code comment
Milestone
Description
Let's make a list of API changes we would like to make that are non-critical RIGHT NOW but should be evaluated before we call it 1.0
Of the 19 items in #1378, 10 are done on upstream/main (checked at 0f457249):
- Rename
SnapshotsConfig→SnapshotConfigandsnapshots_config→snapshot_config(Rename SnapshotsConfig to SnapshotConfig everywhere in the codebase #1791) - Don't allow
UNSPECIFIEDfor enums. All 11 enum fields now have+k8s:minimum=1. The comment onLocalSnapshot.content_scopestill says UNSPECIFIED "is tolerated for compatibility", which no longer matches. - Store default values instead of leaving fields unset. "Add support for field defaults" (2b25500) fills them in on Create and Update.
- Remove all
reserveduse in proto files. Remove reserved fields from protos #1793 removed them, but ateom/actor ID split: Clean up purpose from MintActorCertificate #1810 addedreserved 4; reserved "purpose";back toMintActorCertificateRequest. - Bundle
page_sizeandpage_tokenintoListOptions. They're still separate fields, anddocs/api-style-guide.mdshows them that way. - Decide between quantity strings and fixed units (
cpu_millicores, etc.). In practice the code uses quantity strings parsed asresource.Quantity(forLimits.quantityand volumecapacity), but no decision is written down. - Settle capitalization of API nouns in comments.
ateapi.protois mixed: "the Actor" appears 54 times and "the actor" 37. - Settle "microVM" vs "micro-vm" and "gVisor" vs "gvisor". Docs are mixed:
microvm90,microVM14,gvisor64,gVisor60. - Do error translation in one place instead of per method in atepg and the impl.
codes.*mapping is still spread acrosscontrolapi/*.go, and atepg has no shared helper. - Decide whether to use godoc-style comments. Proto comments still mix
path must be…withName of the volume…. - Rename
LocalSnapshotInfo→LocalSnapshot(Rename LocalSnapshotInfo to LocalSnapshot #1856) - Delete unused
ActorAssignment.actor_template_ref. - Rename
ExternalVolume.volume_name→name. The sibling fieldvolume_typewould need the same treatment to match the comment'stype. - Rename
ActorStatus.actor_volumes→external_volumes - Default
HTTPGetAction.pathto/and have examples set/readyzexplicitly (RenameActorTemplate.containers.readyztowakeupProbe. #1794). The proto comment says it defaults to/, but the field is still tagged+k8s:required. - Rename
readyz→wakeupProbe. This covers both thereadinessProbecomment and the follow-up thread choosingwakeupProbe(RenameActorTemplate.containers.readyztowakeupProbe. #1794). - All Delete methods enforce
DeleteOptionsand preconditions (AddDeletePreconditionsto allDelete<Resource>methods #1807, plusDeleteActorEgressPolicyadded later). All six Delete RPCs pass the options throughtoDeletePreconditions, but Add DeleteOptions and honor version/uid preconditions on all Delete RPCs #866 is still open and could be closed.
Julian Gutierrez Oschmann (@juli4n) Eitan Yarmush (@EItanya)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area/apiUser-facing API changesUser-facing API changeskind/cleanupSmall fixes that are not bugs, for example a typo in a code commentSmall fixes that are not bugs, for example a typo in a code comment
Type
Projects
- StatusShow more project fieldsIn Progress
Activity
thockin commentedon Sep 1, 2026
"SnapshotsConfig" -> "SnapshotConfig" and "snapshots_config" -> "snapshot_config"
thockin commentedon Sep 1, 2026
Don't allow UNSPECIFIED for enums (we don't have a back-compat requirement yet)
thockin commentedon Sep 2, 2026
Should we reify default values of leave them as unspecified fields?
thockin commentedon Sep 3, 2026
Remove all "reserved" use in proto files
thockin commentedon Sep 3, 2026
Bundle page_size and page_token into ListOptions
thockin commentedon Sep 3, 2026
Should we use quantity-strings ("1Gi", "0.001m", etc) or require quantized units ("cpu_millcores", "memory_megabytes"). Quantities are hard because a) floating point can be very imprecise (exactly what is "1.6Gi"); b) it can represent numbers that we don't want to quantize (e.g. "0.001m"); and c) can easily overflow standard ints. Handling them as native types is tricky. Also it's weird to encode "3 cores" as a string "3".
https://github.com/agent-substrate/substrate/pull/1283/changes#r3918227639
And if we DO use the string format, do we process those values as
math/big.Floator something?thockin commentedon Sep 4, 2026
Decide and be consistent about capitalization of API nouns in comments ("this Actor will..." vs "this actor will...")
BenTheElder commentedon Sep 4, 2026
Also "microVM" vs "micro-vm" and "gVisor" vs "gvisor".
thockin commentedon Sep 4, 2026
All the methods in atepg and impl do different error transformations -- we should have one place where than is done the same for everyone?
16 remaining items
Remove reserved fields from protos (agent-substrate#1793)
Rename SnapshotsConfig to SnapshotConfig everywhere in the codebase (a…
Rename LocalSnapshotInfo to LocalSnapshot (agent-substrate#1856)
Remove reserved fields from proto and update back-compat instruction …
zoez7 commentedon Oct 6, 2026
Should we rename
resumedtoalready_running?substrate/pkg/proto/ateapipb/ateapi.proto
Lines 1603 to 1608 in 1808e43
if I call
can be interpreted as it failed to resume?
thockin commentedon Oct 8, 2026
Open question - should proto enums become string enums?
Delete unused `actor_template_ref` from `ActorAssigment` sub-resource (…
Merge upstream main through 25a0b88 (#67)
Rename some `ExternalVolume` fields (agent-substrate#2404)
Sync upstream sandbox, snapshot, and HTTPS egress updates (#69)
Wrap page size and next page token in a `ListOptions` message.
Wrap page size and next page token in a `ListOptions` message. (agent…