Skip to content

The shell-analysis run prints that no language is chosen and no code is in this tree, and #405 repaired that sentence in the three places that are not the run #436

Description

@iderex

Split: none
Scope: .github/shell-analysis/shell-analysis.sh

The shell-analysis leg prints, at the foot of every run, that the core's own
language is not read here because none is chosen and no code is in this tree, and
that #11 is where that is decided. A language is chosen, the tree holds the code
written in it, #11 closed on 2026-08-25, and a leg that does read that code has run
on every pull request since 2026-08-26.

#405 repaired that same sentence in three places and this is the fourth. The three
are the two workflow files and the parity row that DESCRIBE this leg; the one left
is the leg itself, which is the only one of the four a reader meets by running it.

Everything below is read at origin/main
f38bf7b101550664e06b9b8ee72c4dff5ad8e186.

What is wrong

git grep -n 'NOT READ HERE: the core' origin/main -- .github/shell-analysis/shell-analysis.sh
origin/main:.github/shell-analysis/shell-analysis.sh:452:  echo "NOT READ HERE: the core's own language. None is chosen, no code is in this tree, and #11 is where that is decided. This leg covers the shell the gate runs and nothing else."

Four claims, and none of them holds.

A language is chosen, and the record is in the tree:

git grep -n '^Status:' origin/main -- docs/decisions/0011-the-language-the-toolchain-and-the-binding-layer.md
origin/main:docs/decisions/0011-the-language-the-toolchain-and-the-binding-layer.md:5:Status: accepted. Supersedes nothing. Superseded by nothing.

Code written in it is in this tree:

git ls-tree -r --name-only origin/main src/ | grep -c '\.rs$'
46

#11 is closed:

gh issue view 11 --repo Flowfin/core --json number,state,stateReason,closedAt --jq '"#\(.number) \(.state) \(.stateReason) \(.closedAt)"'
#11 CLOSED COMPLETED 2026-08-25T03:52:59Z

And an analysis over that code runs here:

git grep -n 'name: Analyze (rust)\|languages: rust' origin/main -- .github/workflows/codeql.yml
origin/main:.github/workflows/codeql.yml:61:    name: Analyze (rust)
origin/main:.github/workflows/codeql.yml:92:          languages: rust

It was true on the day it was written, and nothing opened it since

git log origin/main --format='%h %ad %s' --date=short -S'NOT READ HERE: the core' -- .github/shell-analysis/shell-analysis.sh
6587b1e 2026-08-22 Analyse the shell this gate is written in

2026-08-22 is three days before #11 closed and four before the analysis over src/
landed. No change that made one of the four claims false had a reason to open this
line, which is the shape the three repaired sites already record of themselves.

#405 named three sites and this is the fourth

git log origin/main --format='%h %ad %s' --date=short --grep='#404' -1
a194071 2026-09-17 Point the three sites naming #81's code-scanning half at the leg that is it (#405)
git show --stat a194071 | tail -4
 .github/workflows/shell-analysis.yml | 15 ++++++++++++---
 .github/workflows/zizmor.yml         | 11 +++++++++--
 docs/gate-parity.md                  |  2 +-
 3 files changed, 22 insertions(+), 6 deletions(-)

The three it repaired are comments and a table cell. What is left is the line the
run prints:

git grep -c 'no code is in this tree' origin/main -- .github/
origin/main:.github/shell-analysis/shell-analysis.sh:1

The sweep that found the three read the two workflow files and the parity row.
Neither doc-paths nor any other check on this board reads a string inside a shell
script, so the site that survived is the one nothing was ever going to report.

Why it costs something

The line is in the run's -- what this run did not read section, which is the
place a reader goes to size what a green tick covers. Read as written, a green
shell-analysis sits beside a sentence saying the core has no language and no code
and that the question is still open on #11. What it should say is the opposite: the
code exists, and a different leg reads it, so this leg's silence about it is a
division of subjects rather than a gap. The three sites #405 repaired all say that
now; the one printed on every run says the old thing.

It is the same defect class those three were, one file over, and it is the copy
with the widest readership: a comment is read by somebody opening the file, and
this is read by everybody who reads a verdict.

Done when

  • The line no longer claims that no language is chosen, that no code is in this
    tree, or that Record the language and toolchain, with the costs the choice carries #11 decides it.
  • It names the leg that does read the core's own language, so the absence it
    declares reads as a division of subjects rather than as a gap.
  • The negative disclosure stays negative: this leg still says it does not read the
    core's own language, and nothing here softens that into a claim that it does.
  • The correction records what the line said and when it stopped being true, where a
    reader of the file meets it, rather than in an index.
  • bash .github/shell-analysis/shell-analysis.sh selftest still holds every
    fixture, and cargo build --locked --all-targets and cargo test --locked are
    green at the commit pushed.

What this does not cover

  • No rule, no severity, no fixture and no excluded rule. The subject the leg
    analyses and the verdict it gives are untouched; the change is to what the run
    says it did not read.
  • The three sites Point the three sites naming #81's code-scanning half at the leg that is it #405 repaired. They read correctly at this commit and nothing
    here reopens them.
  • A check that would refuse the next one. Nothing in this tree reads a claim
    written into a shell string, and this adds no rule. doc-paths reads
    git ls-files '*.md'; widening it is not asked for here.
  • Whether shell-analysis should read the core's language. It should not, and
    that is the whole point of the line. Nothing here argues for widening the leg.
  • The other NOT READ HERE and NOT UPLOADED FROM HERE lines in the same
    section.
    The one about the workflow YAML names .github/workflows/zizmor.yml,
    which runs here, and the upload lines describe this run's own behaviour.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

cidocumentationImprovements or additions to documentation

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions