Command scripts and PhaseMergeHarnessTest.scala do not have exactly two PURPOSE lines #636

Closed
opened 2026-09-26 02:52:47 +00:00 by claude · 6 comments
Member

Found during IW-629 (FOLLOW-UPS.md). IW-629 fixed the core harness tests only. These files still have fewer or more than two // PURPOSE: lines, verified with rg -c '^// PURPOSE:':

  • commands/*.scala — 27 files, count 1
  • .iw/commands/test.scala — count 1
  • core/test/PhaseMergeHarnessTest.scala — count 3
  • research/approach-3-hybrid/commands/{hello,version}.scala and research/approach-4-combined/commands/{hello,version}.scala — count 1

The check that #630 asks for cannot pass until these files are fixed.

> Found during IW-629 (FOLLOW-UPS.md). IW-629 fixed the core harness tests only. These files still have fewer or more than two `// PURPOSE:` lines, verified with `rg -c '^// PURPOSE:'`: - `commands/*.scala` — 27 files, count 1 - `.iw/commands/test.scala` — count 1 - `core/test/PhaseMergeHarnessTest.scala` — count 3 - `research/approach-3-hybrid/commands/{hello,version}.scala` and `research/approach-4-combined/commands/{hello,version}.scala` — count 1 The check that #630 asks for cannot pass until these files are fixed.
Author
Member

Intake: needs-input. The fix for core/test/PhaseMergeHarnessTest.scala is clear from the code. The other files need these decisions. #630 asks the same questions (its question 2), and they have no answer yet, so one answer can settle both issues.

  1. docs/testing.md (lines 167-168) says that the 27 commands/*.scala shims are "the one deliberate exception" to the two-line // PURPOSE: header, because a second line "could only restate the declaration". Which do you want?
    • Cancel the exception: give each shim a second PURPOSE line and change docs/testing.md to agree.
    • Keep the exception: remove the shims from IW-636, and the #630 check exempts them.
  2. .iw/commands/test.scala has one // PURPOSE: line, then // USAGE: and // ARGS: lines. This is the project-command script format. Which do you want?
    • (a) Add a second PURPOSE line above // USAGE:.
    • (b) Exempt this file as a project-command script. If (b), must the check exempt all files in .iw/commands/?
  3. research/ holds four prototype directories and COMPARISON.md. No build file and no doc refers to them. For research/approach-3-hybrid/commands/{hello,version}.scala and research/approach-4-combined/commands/{hello,version}.scala, which do you want?
    • (a) Add the second PURPOSE line.
    • (b) Delete research/ (all of it, or only these approaches).
    • (c) Exempt research/ from the #630 check.
Intake: needs-input. The fix for `core/test/PhaseMergeHarnessTest.scala` is clear from the code. The other files need these decisions. #630 asks the same questions (its question 2), and they have no answer yet, so one answer can settle both issues. 1. `docs/testing.md` (lines 167-168) says that the 27 `commands/*.scala` shims are "the one deliberate exception" to the two-line `// PURPOSE:` header, because a second line "could only restate the declaration". Which do you want? - Cancel the exception: give each shim a second PURPOSE line and change `docs/testing.md` to agree. - Keep the exception: remove the shims from IW-636, and the #630 check exempts them. 2. `.iw/commands/test.scala` has one `// PURPOSE:` line, then `// USAGE:` and `// ARGS:` lines. This is the project-command script format. Which do you want? - (a) Add a second PURPOSE line above `// USAGE:`. - (b) Exempt this file as a project-command script. If (b), must the check exempt all files in `.iw/commands/`? 3. `research/` holds four prototype directories and COMPARISON.md. No build file and no doc refers to them. For `research/approach-3-hybrid/commands/{hello,version}.scala` and `research/approach-4-combined/commands/{hello,version}.scala`, which do you want? - (a) Add the second PURPOSE line. - (b) Delete `research/` (all of it, or only these approaches). - (c) Exempt `research/` from the #630 check.
Owner
  1. no exceptions
  2. a)
  3. b)
1. no exceptions 2. a) 3. b)
Author
Member

Intake: needs-input. I took your answers to questions 1 and 2:

  • 1 = no exceptions. Each of the 27 commands/*.scala shims gets a second PURPOSE line, and docs/testing.md lines 167-168 change to agree.
  • 2 = (a). .iw/commands/test.scala gets a second PURPOSE line above // USAGE:.

Your answer to question 3 was (b), "Delete research/ (all of it, or only these approaches)". That option holds one more choice:

  1. How much of research/ do you want to delete?

    • (i) All of research/: the four approach directories and research/COMPARISON.md.
    • (ii) Only research/approach-3-hybrid/ and research/approach-4-combined/.
    • (iii) Only the four files research/approach-3-hybrid/commands/{hello,version}.scala and research/approach-4-combined/commands/{hello,version}.scala.

    No build file refers to research/. Only issue documents refer to it: project-management/issues/IW-463/analysis.md:39 and project-management/issues/IW-463/LESSONS.md:151-156 cite research/approach-3-hybrid/core/CommandMetadata.scala, research/approach-3-hybrid/commands.index.md and research/COMPARISON.md as prior art. The other .scala files in approaches 1 to 4 already have two PURPOSE lines, so (ii) and (iii) also let the #630 check pass.

Answer in a comment on this issue; intake reads it on its next iteration.

Intake: needs-input. I took your answers to questions 1 and 2: - 1 = no exceptions. Each of the 27 `commands/*.scala` shims gets a second PURPOSE line, and `docs/testing.md` lines 167-168 change to agree. - 2 = (a). `.iw/commands/test.scala` gets a second PURPOSE line above `// USAGE:`. Your answer to question 3 was (b), "Delete `research/` (all of it, or only these approaches)". That option holds one more choice: 1. How much of `research/` do you want to delete? - (i) All of `research/`: the four approach directories and `research/COMPARISON.md`. - (ii) Only `research/approach-3-hybrid/` and `research/approach-4-combined/`. - (iii) Only the four files `research/approach-3-hybrid/commands/{hello,version}.scala` and `research/approach-4-combined/commands/{hello,version}.scala`. No build file refers to `research/`. Only issue documents refer to it: `project-management/issues/IW-463/analysis.md:39` and `project-management/issues/IW-463/LESSONS.md:151-156` cite `research/approach-3-hybrid/core/CommandMetadata.scala`, `research/approach-3-hybrid/commands.index.md` and `research/COMPARISON.md` as prior art. The other `.scala` files in approaches 1 to 4 already have two PURPOSE lines, so (ii) and (iii) also let the #630 check pass. Answer in a comment on this issue; intake reads it on its next iteration.
Owner

Delete all of research/

Delete all of research/
Author
Member

Intake: needs-human
Workflow: waterfall
Reason: G7 — review found a blocking finding: the proposed second PURPOSE line for .iw/commands/test.scala says it "stops any build daemon the run started", but withoutLeavingADaemon wraps only compile/e2e/contract and stops only bloop daemons
Analysis: project-management/issues/IW-636/analysis.md on branch IW-636

Intake: needs-human Workflow: waterfall Reason: G7 — review found a blocking finding: the proposed second PURPOSE line for `.iw/commands/test.scala` says it "stops any build daemon the run started", but `withoutLeavingADaemon` wraps only compile/e2e/contract and stops only bloop daemons Analysis: project-management/issues/IW-636/analysis.md on branch IW-636
Author
Member

Intake: agent-ready
Workflow: waterfall
Reason: all gates passed
Analysis: project-management/issues/IW-636/analysis.md on branch IW-636

Intake: agent-ready Workflow: waterfall Reason: all gates passed Analysis: project-management/issues/IW-636/analysis.md on branch IW-636
mph closed this issue 2026-09-29 12:36:17 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
iterative-works/iw-cli#636
No description provided.