<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "Tor",
  "identifier" : "/documentation/Tor/BootstrapStatus",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "Tor"
    ],
    "preciseIdentifier" : "s:3Tor15BootstrapStatusV"
  },
  "title" : "BootstrapStatus"
}
-->

# BootstrapStatus

Parsed `BOOTSTRAP` status line per control-spec.txt §4.1.11.

```
struct BootstrapStatus
```

## Overview

Tor emits bootstrap progress both as responses to
`GETINFO status/bootstrap-phase` and as async `STATUS_CLIENT` events
carrying a `BOOTSTRAP` payload. Both shapes share the same attribute
vocabulary: `PROGRESS`, `TAG`, `SUMMARY`, and optional `WARNING` /
`REASON` fields for degraded progress. `BootstrapStatus` is the
typed projection callers actually consume — see
[`waitUntilBootstrapped(timeout:)`](/documentation/Tor/TorClient/waitUntilBootstrapped(timeout:)) and
[`TorEvent.bootstrap(progress:tag:summary:)`](/documentation/Tor/TorEvent/bootstrap(progress:tag:summary:)).

> Note: Conformance is `Sendable` + `Equatable`.

> Important: `progress` is monotonic within a single session — Tor
> never retreats to a lower percentage. Subscribers may safely
> replace prior UI without reordering.

## Topics

### Progress

[`progress`](/documentation/Tor/BootstrapStatus/progress)

Bootstrap percentage, `0–100` inclusive.

[`isComplete`](/documentation/Tor/BootstrapStatus/isComplete)

`true` if [`progress`](/documentation/Tor/BootstrapStatus/progress) has reached 100%.

### Classification

[`tag`](/documentation/Tor/BootstrapStatus/tag)

Machine-readable phase tag per control-spec.txt §4.1.11.

[`summary`](/documentation/Tor/BootstrapStatus/summary)

Human-readable, Tor-localised phase summary.

### Degraded progress

[`warning`](/documentation/Tor/BootstrapStatus/warning)

Optional warning keyword for a stalled bootstrap.

[`reason`](/documentation/Tor/BootstrapStatus/reason)

Optional free-form explanation accompanying [`warning`](/documentation/Tor/BootstrapStatus/warning).

### Creating

[`init(progress:tag:summary:warning:reason:)`](/documentation/Tor/BootstrapStatus/init(progress:tag:summary:warning:reason:))

Memberwise initialiser — typically invoked by
[`parseBootstrapStatus(_:)`](/documentation/Tor/ControlProtocolParser/parseBootstrapStatus(_:)).

