Skip to content

repo-config/README.md names configure.sh without its hub path, contradicting Hub-Hosted Tooling #747

Description

@ptr727

Found while resyncing a downstream repo against hub 79f4f17, and re-verified against 20616e0.

The defect

GOVERNANCE.md "Hub-Hosted Tooling" states the rule:

Name the tool by its path in that checkout and name the target explicitly, since a tool that defaults to the current directory or the current repository resolves somewhere either way, and a result computed against the wrong repository is well-formed.

The carried repo-config/README.md does neither, in the same carried instruction set. Every invocation in it names the script bare:

 7: `configure.sh apply owner/repo release|operational`
 7: `configure.sh check owner/repo release|operational`
 7: `configure.sh check operational`
26: `configure.sh apply`     (x2)
26: `configure.sh check`

Line 7's three name a target, line 26's do not. The two bare mentions at lines 5 and 7 that name the file rather than invoke it are fine as they are.

Why it matters more than style

The file it sits in is the one telling the reader the script is not carried here and must be run from a hub checkout. That is exactly the moment the reader has two candidate meanings for configure.sh, a path in the hub checkout and a path in the repo they are standing in, and the sentence resolves neither.

Line 26 is the sharper case, because it also omits the target. The same file's own bullet warns that the command "defaults to whichever repository the shell is sitting in", so a reader following line 26 literally applies fleet settings and rulesets to whatever repo their shell happens to be in. That is a write, and per the rule above the wrong-repository result is well-formed rather than an error.

The retirement of the carried copies makes this more reachable, not less: before, a bare configure.sh at least resolved to something in the repo the reader was standing in. Now it resolves to nothing there, so the only correct reading is the hub path the text does not give.

Suggested fix

Give every invocation the path, and give line 26's the target too:

  • repo-config/configure.sh apply owner/repo release|operational
  • repo-config/configure.sh check owner/repo release|operational

Leave the bare mentions that name the file rather than invoke it, and leave the deliberate hazard example at line 7 (configure.sh check operational) reading as a hazard, though it takes the path like the rest.

Downstream state

The repo this was found in carries a local correction, because repo-config/README.md is intent fidelity and so is judged by meaning rather than byte-matched. That divergence is deliberate and has to be maintained by hand until this is fixed here, at which point the local correction is dropped and the file re-vendors clean.

Reported by an agent during a downstream resync. Hub read at 20616e0.

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