Skip to content

tri topic: has someone already done this, or are they doing it now? - #3066

Merged
gHashTag merged 8 commits into
masterfrom
w56-tri-topic
Sep 3, 2026
Merged

tri topic: has someone already done this, or are they doing it now?#3066
gHashTag merged 8 commits into
masterfrom
w56-tri-topic

Conversation

@gHashTag

@gHashTag gHashTag commented Sep 3, 2026

Copy link
Copy Markdown
Owner

Closes #3065

The cost, measured

Twice in one session I started work another session had shipped or had open:

mine theirs when it was visible
a 29-agent fan-out over workflows, hooks, python gates and Rust --gate commands #3049tri gates quiet and tri gates empty cover two of my four lenses an open PR the whole time I was scanning
a paragraph about a dangling §N cross-reference #3056tri skill refs, every cross-reference and whether it resolves merged while my branch was open on the subject

Roughly half a fan-out duplicated ground that was already shipped. Both were free to find beforehand; what was missing was one command instead of four.

Verified retroactively on both collisions

$ tri topic gate absent quiet
  rows searched   694   (open PRs, open issues, last 40 commits, every SKILL.md section)
  rows matching   468
  by keyword count  4 with 2, 464 with 1

    2  recent commit  4e27cccac feat(tri): gates quiet -- the steps whose pass survives … (#3049)
    2  skill section  ci-gates §472. "Cannot check" is not "absent"

$ tri topic cross-reference renumber
  rows matching   2
    1  recent commit  4ee5b5f54 feat(tri): skill refs -- every cross-reference … (#3056)
    1  recent commit  519d1891a tri skill renumber: move appended sections … (#3052)

Each comes out at the top of its own query. Ranking is by distinct keywords, not occurrences — a title repeating one word five times is not a better match than one carrying two different words.

The distribution is printed; no threshold is applied

468 of 694 on a three-word query is not a result. A cutoff would need a number nobody has measured — and that is exactly the mistake that produced a three-state column with no correct members earlier today (#3057). One line showing the shape beats a heuristic hiding it.

It refuses when it cannot ask

"Nobody else is working on this" and "I could not ask" are the same empty list. When gh is absent or errors, this exits with the repository's own words — the defect #3025, #3045, #3059, #3061 and #3063 have all been about.

Evidence

mutant result
count occurrences instead of distinct keywords 5 passed / 1 failed
drop the empty-keyword filter (contains("") is true of everything) 5 passed / 1 failed
keep zero-hit rows 5 passed / 1 failed
a failed gh returns an empty string 5 passed / 1 failed
restored 6 passed / 0 failed

cargo test -p tri --bins581 passed, 0 failed, 0 filtered.

Every mutant row asserts passed + failed == 6, because cargo test topic also matches issues::tests::the_matcher_reads_the_claim_and_not_the_topic — a filter that catches somebody else's test is how a mutant reads as surviving.

Stated in the module, not left to be found

It reads titles and headlines, not bodies or diffs: a pull request whose title does not name its subject is invisible here, and the ordering is a word count, not an understanding. A two-second check against a class of waste measured at two occurrences in one session — not a search engine.

Its first real use was on itself (tri topic topic duplicate overlap → three unrelated rows), which is the procedure it exists to make cheap.

Closes #3065

Twice in one session I started work another session had shipped or had open.
#3049 shipped `tri gates quiet` and `tri gates empty`, which cover two of the
four lenses a 29-agent fan-out of mine was scanning at the same moment. #3056
shipped `tri skill refs` -- every cross-reference and whether it resolves --
which is the tool for a dangling pointer I had just written a paragraph about.

The first was an OPEN PULL REQUEST the whole time I was scanning. The second
was a merged commit. Neither was hard to find afterwards; both were free to
find before, and the reason I did not is that it takes four commands and none
of them is habit.

So: one command over open PRs, open issues, the last N commits on the base
branch, and every SKILL.md section title. A row matches on any keyword and rows
are ordered by how many DISTINCT keywords they carry -- ranking by occurrences
would put a title repeating one word above one carrying two.

Verified retroactively on both collisions: each comes out at the top of its own
query.

It prints the DISTRIBUTION rather than applying a threshold. 468 of 694 on a
three-word query is not a result, and a cutoff would need a number nobody has
measured -- which is the mistake that produced a three-state column with no
correct members earlier the same day.

It refuses when `gh` cannot answer, and says so in the words this repository
uses. "Nobody else is working on this" and "I could not ask" are the same empty
list, which is the defect the last five issues here have all been about.

Four mutants, four kills, each by exactly one test, with passed+failed asserted
against the expected six every time -- because `cargo test topic` also matches
`issues::tests::the_matcher_reads_the_claim_and_not_the_topic`, and a filter
that catches somebody else's test is how a mutant reads as surviving.

Stated in the module rather than left to be found: it reads titles, not bodies
or diffs, so a pull request whose title does not name its subject is invisible
here, and the ordering is a word count, not an understanding.
Refs #3065

The section this session earned twice over. My own check printed OK=False --
442 sections where 440 were expected -- and I pushed. The file had three of
master's sections duplicated. The tool was handed the wrong input, which is
ordinary; the lesson is that the guard which caught it reached nobody because
its answer was a line of text rather than an exit code the push was downstream
of.

Two smaller versions the same hour, both caught because the guard sat in the
right place: a stale binary answered with its usage text (the merge was
resolved but never concluded, so the binary predated the code), and a completed
merge still did not have origin/master as an ancestor because master moved
underneath it.

The section is placed by the command it sits next to, so its number came from
tri skill renumber rather than by hand -- and this commit's own check gates the
push on exit code, which is the thing it is about.
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-03 22:10:45 UTC

Summary

Status Count
Total Open PRs 13
PRs with Failing Checks 10
PRs with All Checks Green 3
READY 0
FAILING 10
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9b8875f1c9d4 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

1 similar comment
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-03 22:12:51 UTC

Summary

Status Count
Total Open PRs 12
PRs with Failing Checks 10
PRs with All Checks Green 2
READY 0
FAILING 10
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9b8875f1c9d4 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-03 22:17:56 UTC

Summary

Status Count
Total Open PRs 13
PRs with Failing Checks 10
PRs with All Checks Green 3
READY 0
FAILING 10
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9b8875f1c9d4 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

Refs #3065

Found on this command's SECOND use, by me. `for q in "a b c"; do tri topic $q; done`
in zsh does not word-split, so the whole phrase arrived as one keyword, matched
nothing, and the command answered `rows matching 0` -- which reads as "nobody
else is working on this". That is the exact sentence this command exists to keep
from being said wrongly, produced by its own input handling, four queries in a
row, and I believed all four until I re-ran one I knew had matched.

Refused rather than answered, with the split spelled out. A single word padded
with spaces is not a quoting mistake and is not flagged -- mutating the guard to
`k.contains` instead of `k.trim().contains` kills that assertion.

Prior art, checked rather than assumed: pytest reserves exit code 5 for "No
tests were collected" as a public-API outcome distinct from 1 (tests failed),
2 (interrupted), 3 (internal error) and 4 (usage error). This repository's
convention -- 2 for everything that is not a reading -- is coarser than the
field's by one distinction: "the instrument is missing" and "the population is
empty" are the same code here and different codes there.
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-03 22:28:58 UTC

Summary

Status Count
Total Open PRs 13
PRs with Failing Checks 9
PRs with All Checks Green 4
READY 0
FAILING 9
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9b8875f1c9d4 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-03 22:36:00 UTC

Summary

Status Count
Total Open PRs 14
PRs with Failing Checks 9
PRs with All Checks Green 5
READY 0
FAILING 9
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9b8875f1c9d4 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-03 23:02:58 UTC

Summary

Status Count
Total Open PRs 14
PRs with Failing Checks 12
PRs with All Checks Green 2
READY 1
FAILING 12
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9b8875f1c9d4 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag
gHashTag merged commit 08b419c into master Sep 3, 2026
28 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Two sessions wrote the same tool twice in one day; the answer was an open PR the whole time

1 participant