Skip to content

get returns a partial record with no truncation indicator and no --fields option #16

Description

@twelch-sstack

Summary

get returns only a default subset of a record's fields, gives no indication that the view is partial, and offers no flag to request more fields. list supports --fields, but get does not. Observed on the two models tested (sales_channel: 6 of 104 fields; product_variant: 31 of 179 fields); other models were not tested.

Environment

  • fulfil-cli 0.3.0 (PyPI), Python 3.11, Linux

Steps to reproduce

  1. fulfil sales_channel describe reports 104 fields for the model.
  2. fulfil sales_channel get <id> --format json returns 6 keys: id, rec_name, created_at, updated_at, source, locations.
  3. fulfil sales_channel get -h shows only --format. There is no --fields or --all option.
  4. The missing fields are readable through the list workaround: fulfil sales_channel list --where '{"id": <id>}' --fields settings_json,configuration returned the requested fields, both of which are absent from get's default view.
  5. Same shape on a second model: fulfil product_variant get <id> --format json returns 31 keys while fulfil product_variant describe reports 179 fields.

Why this matters

The package summary on PyPI describes the CLI as the "primary interface for humans and AI agents". During an investigation, an AI agent read a channel record with get, saw no settings-related fields in the output, and concluded the setting it was looking for was not exposed through the API. The record actually carried the answer in settings_json, reachable only through the list --fields workaround. A silently partial default view is hazardous for agents, which may treat the returned record as the complete record.

Suggested fixes

  1. Support --fields on get, matching list, and print a notice on every partial get, for example: showing 6 of 104 fields; use --fields to select more.
  2. Alternatively, return the full record when --format json is in effect, since piped JSON output is typically consumed by machines rather than read in a terminal.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions