lockdown

package
v0.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 5, 2026 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Overview

Package lockdown provides fail-closed service lockdown stronger than maintenance. Unlock requires separate stronger auth + expected ID + confirm. Evidence is never deleted.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrActive     = errors.New("lockdown: already active")
	ErrInactive   = errors.New("lockdown: not active")
	ErrDenied     = errors.New("lockdown: denied")
	ErrConfirm    = errors.New("lockdown: confirm required")
	ErrExpectedID = errors.New("lockdown: expected id mismatch")
	ErrWeakAuth   = errors.New("lockdown: unlock requires stronger auth")
)

Functions

This section is empty.

Types

type Config

type Config struct {
	DurablePath   string
	EvidencePath  string
	Clock         func() time.Time
	AutoRateLimit time.Duration // min interval between auto triggers
}

Config configures Manager.

type EnterRequest

type EnterRequest struct {
	ID      string
	Mode    Mode
	Reason  string
	ActorID string
	Trigger string
}

EnterRequest configures Enter.

type Evidence

type Evidence struct {
	Time    time.Time         `json:"time"`
	Event   string            `json:"event"`
	ActorID string            `json:"actor_id,omitempty"`
	Attrs   map[string]string `json:"attrs,omitempty"`
}

Evidence is never deleted by unlock.

type Manager

type Manager struct {
	// contains filtered or unexported fields
}

Manager tracks lockdown.

func New

func New(cfg Config) (*Manager, error)

New creates a Manager.

func (*Manager) Active

func (m *Manager) Active() bool

Active reports lockdown.

func (*Manager) Enter

func (m *Manager) Enter(req EnterRequest) (State, error)

Enter activates lockdown.

func (*Manager) Evidence

func (m *Manager) Evidence() []Evidence

Evidence returns a copy (never cleared by unlock).

func (*Manager) State

func (m *Manager) State() State

State returns snapshot.

func (*Manager) TryAutoEnter

func (m *Manager) TryAutoEnter(trigger, reason string) (State, bool, error)

TryAutoEnter rate-limits automatic lockdown triggers.

func (*Manager) Unlock

func (m *Manager) Unlock(req UnlockRequest) (State, error)

Unlock deactivates lockdown without deleting evidence.

type Mode

type Mode string

Mode selects lockdown severity.

const (
	ModeObserveOnly   Mode = "observe-only"
	ModeRestricted    Mode = "restricted"
	ModeFailClosed    Mode = "fail-closed"
	ModeIsolateClaims Mode = "isolate-claims"
	ModeIsolateTasks  Mode = "isolate-tasks"
	ModeFullService   Mode = "full-service"
)

type State

type State struct {
	ID        string    `json:"id"`
	Mode      Mode      `json:"mode"`
	Reason    string    `json:"reason"`
	EnteredAt time.Time `json:"entered_at"`
	ActorID   string    `json:"actor_id"`
	Active    bool      `json:"active"`
	Trigger   string    `json:"trigger,omitempty"`
}

State is durable lockdown state. Historical evidence fields are append-only via Evidence.

type UnlockRequest

type UnlockRequest struct {
	ExpectedID   string
	Confirm      bool
	ActorID      string
	StrongAuthID string // separate stronger capability/auth id (required)
}

UnlockRequest requires expected ID + confirm + strong auth token id.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL