-`(*Err).WithPlatformCode(code string) *Err` — chainable builder method to attach a platform-level error code; returns the receiver for chaining
-`(*Err).PlatformCode() string` — getter that returns the platform code, or an empty string if none was set
-`platformCode` field in `MarshalJSON` output — serialised as `"platformCode"` and omitted when empty (`omitempty`)
### Design Notes
- Platform codes operate at the domain/system layer and are intentionally decoupled from the transport-level `Code`. `Code` drives HTTP status mapping and gRPC status codes; `PlatformCode` is a stable semantic identifier for the consuming application (e.g. a frontend performing i18n).
- Platform codes are **optional**. Errors that do not have a user-actionable meaning (500 internal errors, infrastructure failures, authentication rejections) should not carry one.
- No existing behaviour changed — `Code`, `Error`, `Unwrap`, `WithContext`, `MarshalJSON` (for errors without a platform code) are all backwards-compatible.
-`Code.Description() string` — human-readable description for each code; unknown codes return their raw string value
-`Err` struct — structured error type carrying a `Code`, human-readable message, optional cause, and optional key-value context fields
-`New(code Code, message string) *Err` — primary factory constructor; no cause set
-`Wrap(code Code, message string, err error) *Err` — factory constructor that wraps an existing error as the cause
-`InvalidInput(msg string, args ...any) *Err` — convenience constructor for `ErrInvalidInput`; message formatted with `fmt.Sprintf`
-`NotFound(msg string, args ...any) *Err` — convenience constructor for `ErrNotFound`
-`Internal(msg string, args ...any) *Err` — convenience constructor for `ErrInternal`
-`(*Err).WithContext(key string, value any) *Err` — chainable builder method to attach a key-value context field; overwrites existing value for the same key
-`(*Err).WithError(err error) *Err` — chainable builder method to set or replace the cause
- Error codes are string type aliases with stable wire values — safe to serialize, persist, and compare across service versions; HTTP status mapping is deliberately excluded and belongs in the transport layer.
-`*Err` satisfies `errors.Unwrap`, `json.Marshaler`, and two private duck-type interfaces (`ErrorCode`, `ErrorContext`) that logz inspects via `errors.As`, decoupling the two packages without any import between them.
- Zero external dependencies — stdlib only (`encoding/json`, `fmt`); Tier 0 of the micro-lib stack.