S59 · FRIDAY / Artaxias - protocol authorization

Declared state: built 2026-10-17 - every protocol resolves by index, codename or name; a spoken number is understood; failures back off and survive a restart but a correct password always works, so the owner cannot be locked out of his own machine; a one-time code is spent once. Second factor is optional and unset, so today the gate is password-only exactly as it was.

This is the repository plan and evidence, not a live health reading. A task marked done may still depend on credentials, devices, deployment or a newer acceptance test.

Dependencies

S58, S14, D-95

Tasks and gates

59.F1 · Numbered protocol registry: index and codename per protocol (01 SYSTEM_REBOOT, 02 VRAM_PURGE, 99 CLEAN_SLATE), resolvable by number or by name.

Tier F · done · Verification: hermetic-test

Gate: - `test_friday_protocols.py` - the existing 8 protocols resolve under both their name and their new index.

  • hermetic-green · 2026-10-17 · bench/test_friday_protocols.py

59.F2 · Voice digit normalizer ('seven four two zero' -> 7420) shared by the passcode path and the protocol index.

Tier F · done · Verification: hermetic-test

Gate: - `test_friday_protocols.py` - spoken digits resolve the same as typed digits.

  • hermetic-green · 2026-10-17 · bench/test_friday_protocols.py

59.F3 · TOTP (RFC 6238) as an OPTIONAL second factor, secret resolved per D-95 - never a literal, never in git.

Tier F · done · Verification: hermetic-test

Gate: - `test_friday_protocols.py` - the seed is read from secret resolution; the module contains no seed (D-102).

  • hermetic-green · 2026-10-17 · bench/test_friday_protocols.py

59.F4 · Sentry: persisted failed-attempt counter, lockout after N tries, cooldown. Survives a restart, which an in-memory counter does not.

Tier F · done · Verification: hermetic-test

Gate: - `test_friday_protocols.py` - the count survives process restart, so lockout cannot be cleared by bouncing the process.

  • hermetic-green · 2026-10-17 · bench/test_friday_protocols.py

59.F5 · Anti-replay for one-time codes that survives restart and has no bounded forgetting window.

Tier F · done · Verification: hermetic-test

Gate: - `test_friday_protocols.py` - the brief's used-set `.clear()` at 50 is the defect being closed (D-104.6); a code is spent once.

  • hermetic-green · 2026-10-17 · bench/test_friday_protocols.py

59.R1 · The 8 shipped protocols resolve and run unchanged after an index is added to a working registry.

Tier R · done · Verification: hermetic-test

Gate: - `test_friday_protocols.py` plus the existing protocol gate - adding a numbering to a live password path is exactly how it silently stops matching.

  • hermetic-green · 2026-10-17 · bench/test_friday_protocols.py

59.R2 · No protocol executes without a successful challenge, asserted at the launcher rather than at each call site.

Tier R · done · Verification: hermetic-test

Gate: - `test_friday_protocols.py` - asserted once, at the seam every protocol passes through, so a new protocol cannot skip it.

  • hermetic-green · 2026-10-17 · bench/test_friday_protocols.py

HUD screen contracts

All subsystems · Source: docs/systems-plan.json.