Refuse an argument this copy does not know, rather than ignoring it #25

Merged
branderson merged 1 commits from reject-unknown-args into main 2026-09-03 12:01:42 -07:00
Collaborator

Summary generated by LLM agent

Reported from a live host: dejima-guard report and dejima-guard report --finding giving identical output, which reads as the new flag doing nothing.

It was not doing nothing. It did not exist there. The container had the previous image, whose dispatch is

report)     cmd_report ;;

with no "$@", so every argument was dropped before the function saw one. --finding was silently discarded and the last report printed either way.

A container makes that easy to be in and hard to notice: git pull changes the checkout, not the image. Silently ignoring the flag is what turned "you are running an older copy" into "this feature is broken", and that is the third time this session an operator has met a stale binary rather than the change they had just merged.

An unknown argument is now an error, and the message says which copy is answering and how to replace it:

dejima-guard: unknown argument for report: --findings

This copy knows --finding and nothing else. If you expected a flag that is not
listed, the program answering you is older than the one you read about:

  docker compose up --build -d     # a container
  sudo ./install.sh                # a host install

The value is that the failure diagnoses itself rather than looking like a defect in the thing being asked for.

Tested: 122 passing, up from 119.

**Summary generated by LLM agent** Reported from a live host: `dejima-guard report` and `dejima-guard report --finding` giving identical output, which reads as the new flag doing nothing. It was not doing nothing. It did not exist there. The container had the previous image, whose dispatch is ```sh report) cmd_report ;; ``` with no `"$@"`, so every argument was dropped before the function saw one. `--finding` was silently discarded and the last report printed either way. A container makes that easy to be in and hard to notice: `git pull` changes the checkout, not the image. Silently ignoring the flag is what turned "you are running an older copy" into "this feature is broken", and that is the third time this session an operator has met a stale binary rather than the change they had just merged. An unknown argument is now an error, and the message says which copy is answering and how to replace it: ``` dejima-guard: unknown argument for report: --findings This copy knows --finding and nothing else. If you expected a flag that is not listed, the program answering you is older than the one you read about: docker compose up --build -d # a container sudo ./install.sh # a host install ``` The value is that the failure diagnoses itself rather than looking like a defect in the thing being asked for. Tested: 122 passing, up from 119.
dejima-agent added 1 commit 2026-09-03 12:00:37 -07:00
`dejima-guard report` and `dejima-guard report --finding` gave identical output
on a live host, which read as the new flag doing nothing. What it did was not
exist there: the container had the previous image, whose dispatch was
`report) cmd_report ;;` and dropped every argument before the function saw one.

A container makes that state easy to be in and hard to notice, because `git
pull` changes the checkout and not the image. Silently ignoring the flag is what
turned "you are running an older copy" into "this feature is broken".

An unknown argument is an error now, and the message says which copy is
answering and how to replace it. That is the whole value: the failure diagnoses
itself instead of looking like a defect in the thing being asked for.
branderson approved these changes 2026-09-03 12:01:38 -07:00
branderson merged commit aa4d7c9207 into main 2026-09-03 12:01:42 -07:00
Sign in to join this conversation.