Skip to content
Cockpit0.29.0
A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live

I2464

A path that holds a space is one path to the scope doctrine

Where it stands

devtask.issue
Readiness
complete completion is recorded and every required evidence token is present
Status
DONE
Can start
not now
Milestone
Milestone status
ACTIVE
Wave
0
Waiting on
none
Holds back
none
Behind it in all
0
Evidence
1 of 1
A move writes the repository: it stamps one field of this issue's record and appends one event to the ledger, and a commit will carry both.
The same moves from a terminal

majordomus plan start I2464

majordomus plan verify I2464

majordomus plan done I2464

What it is

Objective
Read the files a task touched as one path per line, with git's -z output, everywhere the shell layer lists them, so that a file name holding a space is judged as the one path it is.
Why
On 2026-10-11 session 25's pre-push refused #931 for four concept images inside its scope, each named like \"Futuristic PR Drain Developer Dashboard.png\": lib/check.sh iterated `for f in $(mj_git_touched ...)`, which splits on whitespace, and mj_git_touched read `git status --porcelain` without -z, which wraps such a path in quotes. One image became five out-of-scope \"paths\" (\"assets/concept/Futuristic, PR, Drain, Developer, Dashboard.png\"). The session renamed the files to get past its own gate. lib/context.sh, lib/changed.sh, lib/evidence.sh and lib/derive.sh read the same quoted output.
Now
mj_git_touched and four other readers take `git status --porcelain` without -z, and two callers split its output into words; a path with a space is refused as several paths outside the scope.
Wanted
mj_git_touched reads status and log with -z through one helper, mj_git_dirty_paths, and every caller reads lines; case 1073 holds a committed, a staged, a modified, an untracked and a renamed path with spaces inside the scope, and an out-of-scope one reported whole.
Done when
unknown: the record declares no `completion`
Risk
unknown: the record declares no `risk`

Acceptance

  • majordomus check passes a task whose in-scope files hold spaces, committed, staged, modified, untracked and renamed
  • an out-of-scope path with a space is reported once, whole, never in pieces or in quotes
  • case 1073 fails against master without the change
Validation
bash test/run.sh 1073_a_path_with_a_space_is_one_path 04_start_check 108_scope_after_trunk_merge 108b_scope_after_trunk_fast_forwardbin/majordomus plan validate
Evidence required
path_with_space_case
Evidence present
path_with_space_case

Scope

Touches
lib/common.shlib/check.shlib/context.shlib/changed.shlib/evidence.shlib/derive.shtest/cases/1073_a_path_with_a_space_is_one_path.sh.ai/repo/project/issues/I2464.yaml
Not
unknown: the record declares no `non_scope`
Depends on
none
Priority
p1
Profile
implementation
Parallel safe
true
Owner
unknown: the record declares no `owner`

The work so far

Branches
none
Merged
none
Commits
0
Trunk
master
Sessions
none
Created
2026-10-11
Updated
2026-10-14T07:39:18Z
Started
2026-10-14T07:39:09Z
Verified
unknown: the record declares no `verified_at`
Completed
2026-10-14T07:39:18Z

Synchronisation

Adapter
scripts/github-sync
Repository
unknown: the derived plan's header carries no repository
External issue
unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
State there
unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it

Findings

Nothing is wrong with these records.