REQ-O-020: --no-update-check Flag
Tier: Opt-In | Priority: P1
Source: §32 Self-Update & Auto-Upgrade Behavior
Addresses: Severity: High / Token Spend: Medium / Time: High / Context: Low
Description
The framework MUST provide --no-update-check as a standard flag on every command. When passed (or when TOOL_NO_UPDATE is set), the framework MUST skip any update availability check for that invocation. This flag MUST be respected even in interactive TTY contexts where update checks are otherwise enabled. The flag MUST be visible in --help output.
Acceptance Criteria
--no-update-checkprevents any network call for update checking--no-update-checkandTOOL_NO_UPDATE=1are equivalent in effectmeta.update_availableis absent when--no-update-checkis passed- The flag is present in every command's
--helpoutput
Schema
No dedicated schema type — --no-update-check suppresses meta.update_available from appearing; no new fields are added.
Wire Format
Without --no-update-check (when update is available):
{ "meta": { "update_available": "2.2.0", "tool_version": "2.1.0" } }
With --no-update-check:
{ "meta": { "tool_version": "2.1.0" } }
Example
Opt-in at the framework level; automatically available on every command.
app = Framework("tool")
app.enable_no_update_check() # registers --no-update-check globally
# In CI — skip network call for update check:
$ tool deploy --no-update-check
# equivalent to setting TOOL_NO_UPDATE=1
Related
| Requirement | Tier | Relationship |
|---|---|---|
| REQ-F-029 | F | Provides: automatic suppression in non-TTY; this flag adds explicit control |
| REQ-F-050 | F | Composes: notifier side-channel is also suppressed when this flag is set |
| REQ-F-023 | F | Composes: meta.tool_version is always present; update_available is conditional |