Skip to content

readTreeOids mocks returned [] instead of {} (type contract violation) #277

@flyingrobots

Description

@flyingrobots

Migrated from Method backlog

GitHub Issues are now the live work tracker. Repository docs remain Method evidence.

Field Value
Source backlog docs/method/backlog/bad-code/SPEC_readtreeoids-mock-returns-array.md
Archived source docs/archive/backlog/github-issue-migration-2026-06-01/docs/method/backlog/bad-code/SPEC_readtreeoids-mock-returns-array.md
Original lane bad-code
Original id SPEC_readtreeoids-mock-returns-array
Original legend SPEC
Original feature docs-dx
Original release home v17.0.0

Original backlog card

readTreeOids mocks returned [] instead of {} (type contract violation)

Effort: XS

What's Wrong

Three test files had readTreeOids mocks returning [] (empty array)
instead of {} (empty object). TreePort.readTreeOids() contract is
Record<string, string>. This violated the type contract silently
because Object.entries([]) is []. Found by CodeRabbit review.

The instances are already fixed, but the underlying weakness remains:
nothing prevents future mocks from returning the wrong shape.

Suggested Fix

Add a JSDoc/tsc assertion to createMockPersistence() ensuring
readTreeOids returns Record<string, string>, not any[]. Consider
a runtime shape check in debug builds or test helpers.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions