fix(organization,cli): refusals name files by label, never by host path (#1873) #1926

Merged
jason.woltje merged 3 commits from org-redact5 into refactor 2026-11-11 07:14:17 +00:00
Owner

Refusals name the file or field by label, never by host path (#1873).

  • organization and cli refusals now say business file acme.json, role file chief.json, the system config MOSAIC_CONFIG names and similar, where they used to quote absolute paths.
  • Raw filesystem and git errors in org-service, org document reads, --vars and console stop are rewritten to cannot <syscall> <label> (<CODE>). The code, syscall and delete-receipt fields stay on the error.
  • hosts.mjs names the refused command's basename. Console stop from another checkout says so without quoting that checkout's entry path.
  • The T1-owned files (role.mjs, organization-config.mjs) change only the readJsonFile label arguments.
  • New path-redaction sentinel tests in cli and organization fail on BASE. The json-redaction pins follow the new texts.

Deferred, because those lines belong to other lanes' files: organization-config checkStat and the other ${file} sites, role.mjs:156-160 and :197, resolve.mjs:47, credentials.mjs, org-registry.mjs, cli/config.mjs, cli.mjs:520, launcher.mjs, and discord's own refusals. The list is in the lane report.

Lane: Opus. Review: Sol, changes 6 (3 P2, 3 P3), all fixed in one round at the sites it named. Lane gate on the final tree at e588fb32c: 3660/0. Case 1 gave 57/0 on both BASE and HEAD.

Refusals name the file or field by label, never by host path (#1873). - organization and cli refusals now say `business file acme.json`, `role file chief.json`, `the system config MOSAIC_CONFIG names` and similar, where they used to quote absolute paths. - Raw filesystem and git errors in org-service, org document reads, `--vars` and console stop are rewritten to `cannot <syscall> <label> (<CODE>)`. The code, syscall and delete-receipt fields stay on the error. - hosts.mjs names the refused command's basename. Console stop from another checkout says so without quoting that checkout's entry path. - The T1-owned files (role.mjs, organization-config.mjs) change only the `readJsonFile` label arguments. - New path-redaction sentinel tests in cli and organization fail on BASE. The json-redaction pins follow the new texts. Deferred, because those lines belong to other lanes' files: organization-config `checkStat` and the other `${file}` sites, role.mjs:156-160 and :197, resolve.mjs:47, credentials.mjs, org-registry.mjs, cli/config.mjs, cli.mjs:520, launcher.mjs, and discord's own refusals. The list is in the lane report. Lane: Opus. Review: Sol, changes 6 (3 P2, 3 P3), all fixed in one round at the sites it named. Lane gate on the final tree at e588fb32c: 3660/0. Case 1 gave 57/0 on both BASE and HEAD.
jason.woltje added 3 commits 2026-11-11 07:14:11 +00:00
PR #1916 rule: a refusal names the field or file, never a config value
or a host path. readJsonFile's three refusals and parseJsonFileText now
name the file by its `what` label only. Callers whose label alone is
ambiguous add a name that already passed a strict pattern (business id,
role name, org id, turn id, project key) or a fixed path under the data
root. Exit codes, refusal codes and check order are unchanged.

organization: util, access, project, config-command, library-seats,
org-service deleteOrg receipt, agent-levels regex; T1 files role.mjs and
organization-config.mjs change only the readJsonFile label.
cli: access lock, accounts owner, host state/lock, notifier journal,
notify-config, run-evidence, dev-fixture, git-socket, org-bus, org-console.
discord: turn record label names the turn id.

Sentinel tests (sk-test-NOT-A-SECRET-1234 as a path component) cover each
changed refusal and fail on BASE; old path pins updated.
Sol review (org-redact5, changes 6):
- org-service: Node filesystem errors become "cannot <syscall> <label> (<CODE>)";
  code, syscall, deleteStep and deleteReceipt stay. git failures name the verb
  and exit code, never git's stderr.
- org-console: consoleStop names "another checkout", not the entry path. Exit 3.
- config-command: the system config is named by where it came from. Exit 3.
- cli org: documents and raw fs errors are named by kind and code. Exit 2.
- instances: --vars file named by flag and kind. Exit 4.
- hosts: a refused command is named by the basename refusedCommand matched.
- role.mjs (T1): the change is back to the readJsonFile label only.
Sentinel tests for each; pins in last-values, rename-b-commands, org-recovery.
The review round changed the config-command relay and the org document
refusal to name the file by label. cli/tests/json-redaction.test.mjs still
required the host path in those two CLI refusals. They now require the
label and the path's absence. The direct scripts/mosaic-config.mjs checks
and the loadSystem check (PL1, deferred) still require the path.
jason.woltje merged commit be698e602b into refactor 2026-11-11 07:14:17 +00:00
Sign in to join this conversation.