Skip to content

Keep the audited public API closed under its own signatures #84

Closed

Description

@siddhss5

Outcome

Make the audited top-level API closed under its own supported signatures and result objects before M1 closes.

Context

PR #83 removes AssetStore, PackageManifest, and SourceItem from ssrobot.__all__ and describes their modules as implementation details. They nevertheless remain part of supported top-level interfaces:

  • dumps() and loads() accept AssetStore, which is required to encode or decode public records containing ArrayValue, including image observations.
  • RobotPackage.manifest is a PackageManifest.
  • RobotPackage.items and PackageReport.items contain SourceItem values.

Consequently a user cannot fully type or use the documented public API without importing from modules that the contract says are unsupported. Whether a returned value is usually read rather than constructed does not remove its type from the public contract.

Scope

  • Restore these names at the top level, which is the smallest compatible resolution, or redesign the public interfaces so they no longer expose them.
  • Update the audit decision, public-name count, and public-surface table to match the chosen boundary.
  • Keep the checked-in wire schemas unchanged unless the redesign deliberately changes a wire form.

Acceptance criteria

  • Every type explicitly accepted, returned, or exposed as a field by the supported top-level API is itself supported at the top level or through a documented stable public module.
  • An Observation containing an ArrayValue can be round-tripped through the supported dumps() and loads() API without importing an implementation module.
  • The supported way to inspect RobotPackage.manifest, RobotPackage.items, and PackageReport.items does not require an implementation-module import.
  • The audit record and generated import report agree on the resulting public names and count.

Found while reviewing PR #83.

Activity

  1. added a commit that references this issue on Oct 5, 2026
    0d09224
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions