Source lifecycle UI
This page is for teams building source lifecycle screens on top of AetherFS.
Sources are the durable baseline side of the product.
What a source UI usually needs
A good source lifecycle UI usually answers these questions:
- What reusable sources exist?
- What kind of source is each one?
- Is the source ready, failed, or still changing?
- What is the latest revision?
- Is an import or refresh in progress?
- Can a successful session be promoted into this source?
Core route families
Use:
POST /v1/sourcesGET /v1/sourcesGET /v1/sources/{sourceId}POST /v1/sources/{sourceId}/startImportGET /v1/sources/{sourceId}/jobs/{jobId}POST /v1/sources/{sourceId}/refreshPOST /v1/sources/{sourceId}/promoteSession
Recommended screen model
1. Source list page
Show:
- display name
- source kind
- source status
- latest revision ID
- updated time
- useful labels
This page is usually driven by:
GET /v1/sources
2. Source detail page
Show:
- source metadata
- latest revision
- creation and update timestamps
- current readiness
- recent import or refresh activity
- actions such as refresh or promote session
This page is usually driven by:
GET /v1/sources/{sourceId}
3. Job progress panel
Import, refresh, and promotion are asynchronous.
That means a good UI should treat job progress as a first-class concept rather than pretending these actions complete immediately.
Use:
GET /v1/sources/{sourceId}/jobs/{jobId}
Show:
- queued / running / succeeded / failed
- bytes processed
- files processed
- revision ID on success
- error code and message on failure
Source creation guidance
At creation time, your UI should make clear:
- what kind of source is being created
- what durable baseline it represents
- which labels or ownership metadata matter
A strong source creation form should separate:
- display information
- origin information
- labels or classification
Refresh guidance
Refresh should be treated as:
- a request to update a durable baseline
- an asynchronous job
- a visible operation with progress and an eventual result
Do not model refresh as a simple “save” action.
Promotion guidance
Promoting a session into a source is a high-leverage action.
It changes what future sessions may start from.
A good UI should show:
- which session is being promoted
- which source is being updated
- the proposed revision label
- whether approval or review has already happened
Status guidance
Source status and source job status are different.
Keep them separate in the UI:
- source status answers “is this source generally usable?”
- job state answers “what is this current operation doing?”
Revision guidance
Revision IDs are not just implementation detail. They are the user-facing anchor for repeatability.
Good UI patterns:
- show latest revision clearly
- show the resulting revision when a job succeeds
- make it obvious when a new session will use that revision
Safe product defaults
Use these defaults unless you have a strong reason not to:
- list sources separately from sessions
- show latest revision on the detail page
- show in-progress jobs as explicit async state
- require deliberate user confirmation before promotion
Source lifecycle anti-patterns
Avoid:
- hiding the async job model
- hiding revision IDs entirely
- treating source promotion as a casual session action
- mixing session status and source status together as if they mean the same thing
See also: