Skip to content

feat: add minimal runtime service registry seam#135

Merged
skylarbpayne merged 11 commits into
mainfrom
remediation/fnd-rt
Jul 11, 2026
Merged

feat: add minimal runtime service registry seam#135
skylarbpayne merged 11 commits into
mainfrom
remediation/fnd-rt

Conversation

@skylarbpayne

@skylarbpayne skylarbpayne commented Jul 10, 2026

Copy link
Copy Markdown
Owner

Scope

  • add the version-1 process-local runtime service registry contract
  • require integration-owned registries to opt into the nominal RuntimeOnlyServiceRegistry marker while still implementing RuntimeServiceRegistry
  • preserve marked caller registries by identity without mutation or wrapping; reject unmarked structural registries at engine construction
  • reject marked registries at the shared framework JSON boundary so nested artifact, status, and SQLite/event persistence paths fail closed
  • retain built-in JSON/pickle TypeError behavior without claiming blanket pickle refusal for arbitrary unmarked third-party objects

Verification

  • expected red: ImportError: cannot import name 'RuntimeOnlyServiceRegistry' (1 error, exit 2)
  • focused: uv run pytest -q tests/test_runtime_services_contract.py tests/test_engine.py tests/test_runner_v2_recovery.py tests/test_types.py (39 passed)
  • full: uv run pytest -q (462 passed, 2 skipped)
  • git diff --check: clean
  • exact allowlist: src/hermes_workflows/runtime_services.py, src/hermes_workflows/engine.py, src/hermes_workflows/types.py, tests/test_runtime_services_contract.py

Base and amendment receipt

  • previous reviewed head: 0e86026e2688466056d3fdcc7d3249ed9f685b75
  • incorporated current origin/main at 2727a46b1a799a4a2125d3b85e292db514f1fb98 without consuming stale PR feat: support custom select values in review queue #131
  • amended head: adbf605c201edd3839864357b7c51ddfd17aac48
  • implements Skylar-approved FND-RT amendment A from canonical plan SHA-256 3d65b30324b52dfd4b7de3044bddf9e7e63339c439bf53b27f603466ec6cf72b

@skylarbpayne

Copy link
Copy Markdown
Owner Author

SR9 overlap repair pushed at 4cc4549fce268d109b1fe2d0698a9438e7930d34.

  • Traverses every applicable dataclass/Mapping/Sequence/Set shape under one active-ID cycle guard.
  • Uses indexed Sequence traversal so Mapping+Sequence hybrids cannot hide runtime registries behind Mapping iteration.
  • Added direct serializer + real SQLite/event persistence regressions, including cycle and secret non-leak checks.
  • Focused: 53 passed.
  • Full Python 3.11: 477 passed, 1 skipped.
  • Full Python 3.9 isolated: 477 passed, 1 skipped.
  • git diff --check clean; exact four-path allowlist preserved.

@skylarbpayne
skylarbpayne merged commit 583459d into main Jul 11, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant