Skip to content

A placement record written by the action hook has no project or type, and arrange refuses it #1137

Description

@fujibee

agmsg_self_name_on_action <team> <agent> [<project>] [<type>] takes project and
type as optional, and all three action callers omit them:

scripts/send.sh:32     agmsg_self_name_on_action "$TEAM" "$FROM"
scripts/inbox.sh:23    agmsg_self_name_on_action "$TEAM" "$AGENT"
scripts/history.sh:26  agmsg_self_name_on_action "$TEAM" "$AGENT"

The hook passes them straight through to the primitive, which writes the
placement record as <ref>\t<project>\t<type>. So a record written by the
action hook — the #1109 path, the one that exists for hand-started seats — has
two empty fields.

arrange.sh reads those fields and refuses:

IFS=$'\t' read -r ref project type < "$rec" || true
...
[ -n "$SOURCE_PROJECT" ] && [ -n "$SOURCE_TYPE" ] \
  || die "placement record for '$TEAM/$SOURCE' is missing project or type"

Reproduced end to end in an isolated skill dir, with the differential control:

source = a record with empty project/type
  -> arrange: placement record for 'T/a' is missing project or type

source = a record that has them
  -> gets past that line and fails later for an unrelated reason
     (the fixture has no roster entry)

Measured on one machine's live store: 12 of 36 placement records have an
empty project or type, including seats that are in daily use. Those seats cannot
be used as the source of an arrange.

The two ways out look different in what they claim:

  • the callers pass the project and type they already have (send.sh and inbox.sh
    both know $PROJECT/$TYPE), so a record written on action carries the same
    fields a record written at spawn or SessionStart does; or
  • arrange stops requiring fields that a legitimate writer does not supply,
    which means deciding what it actually needs them for.

The first is smaller and keeps one shape for the record. Filing rather than
fixing because it is not in the path of the release-gate work in flight, and
because the second option is a question about arrange, not about the hook.

Found while checking that the #1130 fix had reached this machine's seats.

Activity

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions