cleanup: 2026-11 audit plan (epic) #742

Open
opened 2026-11-13 12:22:58 +00:00 by orion · 5 comments
Collaborator

Context

One audit of the whole repository (language, compiler, standard library, documentation, issue tracker) on 2026-11-13, after an accepted record (CLOSED-TRAITS, the leading dot) was found to have had no issue for six weeks. The audit lists what is wrong or missing, maps every design record to the issue that tracks its open part, and orders the cleanup so that the loop can take it item by item.

Source

  • The report: docs/project/2026-11-cleanup-audit.md (PR #756). 14 findings: 1 blocker, 6 major, 7 minor.
  • The sweep of 2026-11-07 (#709 to #713) is the base; this audit does not repeat it.

Steps (epic: no ready on this issue)

In plan order. Breaking changes come first, because after 1.0 each needs a deprecation path. owner marks a step only the owner takes. Steps without a dependency may run in parallel.

  • 1. #743 bare cases beside .Case, the bare-case lint rule (CLOSED-TRAITS 1a-1)
  • 2. owner: refresh and publish the seed (#713, step 1a-seed); after 1
  • 3. #713 step 1a-2, migrate and refuse; after 2
  • 4. #744 the table of decision 7.3 for every public error type
  • 5. #713 step 7.3, the newtype conversions, one package round each; after 4
  • 6. #713 step 1b, case types, then owner: seed; after 3
  • 7. #713 step 2, case bodies and nested cases, then owner: seed; after 6
  • 8. #747 ? in a body whose result type is inferred
  • 9. #748 a where clause with a concrete subject, into() under an Into bound
  • 10. #745 two exits in the lowering: invariant and unsupported
  • 11. #746 refuse at check time what no back end lowers; after 10
  • 12. #753 two Multiply implementations on one type
  • 13. #751 remove torb canon, move the formatter's rewrite modules
  • 14. #146 the public surface of std: remaining helpers and constructor names
  • 15. #749 status lines of the design records
  • 16. #750 ROADMAP and CONCEPT against the built state
  • 17. #752 a page or a line for every command of torb
  • 18. #754 free what a stopped script held
  • 19. #755 the zone database

Steps 15 to 17 are documentation only and have no dependency: they fit while step 2 waits for the seed.

Owner decisions

Listed with a recommendation each in section 6 of the report: the day of the seed for phase 1a, static against type fn, the other open questions of CONCEPT, when the application framework is built, one suffix for error types, which docs subcommands are public.

Dependencies

As written per step. Nothing here depends on an issue outside the list.

Each step is its own issue; this epic only orders them.

## Context One audit of the whole repository (language, compiler, standard library, documentation, issue tracker) on 2026-11-13, after an accepted record (CLOSED-TRAITS, the leading dot) was found to have had no issue for six weeks. The audit lists what is wrong or missing, maps every design record to the issue that tracks its open part, and orders the cleanup so that the loop can take it item by item. ## Source - The report: `docs/project/2026-11-cleanup-audit.md` (PR #756). 14 findings: 1 blocker, 6 major, 7 minor. - The sweep of 2026-11-07 (#709 to #713) is the base; this audit does not repeat it. ## Steps (epic: no `ready` on this issue) In plan order. Breaking changes come first, because after 1.0 each needs a deprecation path. *owner* marks a step only the owner takes. Steps without a dependency may run in parallel. - [ ] 1. #743 bare cases beside `.Case`, the `bare-case` lint rule (CLOSED-TRAITS 1a-1) - [ ] 2. *owner*: refresh and publish the seed (#713, step 1a-seed); after 1 - [ ] 3. #713 step 1a-2, migrate and refuse; after 2 - [ ] 4. #744 the table of decision 7.3 for every public error type - [ ] 5. #713 step 7.3, the newtype conversions, one package round each; after 4 - [ ] 6. #713 step 1b, case types, then *owner*: seed; after 3 - [ ] 7. #713 step 2, case bodies and nested cases, then *owner*: seed; after 6 - [ ] 8. #747 `?` in a body whose result type is inferred - [ ] 9. #748 a `where` clause with a concrete subject, `into()` under an `Into` bound - [ ] 10. #745 two exits in the lowering: invariant and unsupported - [ ] 11. #746 refuse at check time what no back end lowers; after 10 - [ ] 12. #753 two `Multiply` implementations on one type - [ ] 13. #751 remove `torb canon`, move the formatter's rewrite modules - [ ] 14. #146 the public surface of `std`: remaining helpers and constructor names - [ ] 15. #749 status lines of the design records - [ ] 16. #750 ROADMAP and CONCEPT against the built state - [ ] 17. #752 a page or a line for every command of `torb` - [ ] 18. #754 free what a stopped script held - [ ] 19. #755 the zone database Steps 15 to 17 are documentation only and have no dependency: they fit while step 2 waits for the seed. ## Owner decisions Listed with a recommendation each in section 6 of the report: the day of the seed for phase 1a, `static` against `type fn`, the other open questions of CONCEPT, when the application framework is built, one suffix for error types, which `docs` subcommands are public. ## Dependencies As written per step. Nothing here depends on an issue outside the list. _Each step is its own issue; this epic only orders them._
Author
Collaborator

[loop:torbscript] audit checkpoint 1: done: tracker snapshot (142 open, 300 closed), design-record status lines, ROADMAP, CONCEPT open questions, leading-dot census, std error-type classification. In flight: tooling vs docs, compiler structure. Next: std API consistency, book and skill drift, then the report and the plan issues.

[loop:torbscript] audit checkpoint 1: done: tracker snapshot (142 open, 300 closed), design-record status lines, ROADMAP, CONCEPT open questions, leading-dot census, std error-type classification. In flight: tooling vs docs, compiler structure. Next: std API consistency, book and skill drift, then the report and the plan issues.
Author
Collaborator

Checkpoint 2 (audit lead)

  • Done: tooling pages against the command table, status lines of the design records, the spec gaps of the type checker, the inventory of "not supported" sites in the lowering, error type and constructor naming in std, the record to issue gap table.
  • In flight: the report.
  • Next: report PR, plan issues, the checklist of this epic.
Checkpoint 2 (audit lead) - Done: tooling pages against the command table, status lines of the design records, the spec gaps of the type checker, the inventory of "not supported" sites in the lowering, error type and constructor naming in std, the record to issue gap table. - In flight: the report. - Next: report PR, plan issues, the checklist of this epic.
Author
Collaborator

Checkpoint 3 (audit lead, final)

  • Done: the report is PR #756 (reviewer requested, not merged); the plan items are #743 to #755 and linked above in plan order; #713, #146 and #596 carry a comment on what the audit changes for them.
  • In flight: CI of PR #756 was still queued when the audit ended; the line in the generated block of docs/project/index.md is hand-written and docs index --check has to confirm it.
  • Next: the owner decisions of section 6 of the report; the loop starts with #743.
Checkpoint 3 (audit lead, final) - Done: the report is PR #756 (reviewer requested, not merged); the plan items are #743 to #755 and linked above in plan order; #713, #146 and #596 carry a comment on what the audit changes for them. - In flight: CI of PR #756 was still queued when the audit ended; the line in the generated block of `docs/project/index.md` is hand-written and `docs index --check` has to confirm it. - Next: the owner decisions of section 6 of the report; the loop starts with #743.
Author
Collaborator

Owner decisions on the audit questions (Torben, WhatsApp 2026-11-13 13:57 Berlin):

  1. Seed for phase 1a: refresh and publish the seed once #743 is on main (CLOSED-TRAITS 9.2). Orion runs it.
  2. static vs type fn/type const: open, explanation sent; no decision yet.
  3. Recommendation withdrawn: open CONCEPT questions are NOT frozen as "not before 1.0". Syntax may still change hard; questions are decided when reached.
  4. Framework build: no issue until the breaking steps 1-14 are on main. Accepted.
  5. Error type suffix: Error for what a Result carries, Problem only for the kind inside a record-shaped error; rename StorageFailure, PathFailure, JsonPointerProblem, PatchProblem in the 7.3 rounds. Accepted.
  6. torb upgrade and docs check get their own pages; the remaining docs subcommands go on one contributor page. Accepted.

Also open: a struct construction redesign (body form constructed with Point { x: 5 }, head form type Point(x: Int, y: Int) with ()), in discussion with the owner; a design record follows once agreed. It supersedes the open question "Fields on one line".

Owner decisions on the audit questions (Torben, WhatsApp 2026-11-13 13:57 Berlin): 1. Seed for phase 1a: refresh and publish the seed once #743 is on main (CLOSED-TRAITS 9.2). Orion runs it. 2. `static` vs `type fn`/`type const`: open, explanation sent; no decision yet. 3. Recommendation withdrawn: open CONCEPT questions are NOT frozen as "not before 1.0". Syntax may still change hard; questions are decided when reached. 4. Framework build: no issue until the breaking steps 1-14 are on main. Accepted. 5. Error type suffix: `Error` for what a `Result` carries, `Problem` only for the kind inside a record-shaped error; rename `StorageFailure`, `PathFailure`, `JsonPointerProblem`, `PatchProblem` in the 7.3 rounds. Accepted. 6. `torb upgrade` and `docs check` get their own pages; the remaining `docs` subcommands go on one contributor page. Accepted. Also open: a struct construction redesign (body form constructed with `Point { x: 5 }`, head form `type Point(x: Int, y: Int)` with `()`), in discussion with the owner; a design record follows once agreed. It supersedes the open question "Fields on one line".
Author
Collaborator

Owner follow-up (Torben, 2026-11-13 14:34 Berlin): point 1, Orion does the seed refresh as needed after #743. Point 2, static stays (recorded in #750). Struct redesign dropped: no head form, no struct literals, no migration (recorded in #750).

Owner follow-up (Torben, 2026-11-13 14:34 Berlin): point 1, Orion does the seed refresh as needed after #743. Point 2, `static` stays (recorded in #750). Struct redesign dropped: no head form, no struct literals, no migration (recorded in #750).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
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
torbscript/language#742
No description provided.