docs: ROADMAP and CONCEPT against the built state (lint rules, CLOSED-TRAITS, one stale open question) #750

Closed
opened 2026-11-13 12:39:37 +00:00 by orion · 7 comments
Collaborator

Context

Three places where the two top documents say something else than the repository:

  1. docs/ROADMAP.md line 66 lists the lint rules self-name, question-field, unread-binding, labeled-literal, redundant-closure, deprecated. compiler/src/lint/ also has plain-values, protected-field and redundant-wrap.
  2. docs/ROADMAP.md, "Language features designed and not built" (line 254): the table has no row for docs/design/CLOSED-TRAITS.md, the largest accepted and unbuilt language change (phases 1a, 1b, 2; #713).
  3. CONCEPT.md line 3254, "Open Questions": "Registry protocol and the exact format of project.lock.trb" is listed as open; both are built and documented (docs/tooling/project-lock-trb.md, the registry commands).

Source

  • Cleanup audit 2026-11 (#742), finding F4 and F10; the report is docs/project/2026-11-cleanup-audit.md.

Goal

The three places say what is true on main. Milestones and their order are not touched.

Design record point

docs/ROADMAP.md (the two sections named), CONCEPT.md "Open Questions".

Acceptance criteria

  • ROADMAP names every rule under compiler/src/lint/, and a sentence or a test keeps the list from drifting (the page docs/tooling/torb-lint.md is the reference)
  • The table "Language features designed and not built" has a row for CLOSED-TRAITS with its phases and #713
  • The open question on the registry protocol and the lock file is removed from CONCEPT, with a Decision Log line that points to where each is specified
  • No milestone, no order and no other open question changes; torb docs check is green

Dependencies

None. The text of CONCEPT that teaches the leading dot (line 1421) and the Decision Log entry that says a closed trait is not planned (line 2698) are rewritten by step 1a-2 of #713, not here.

Seed

None (documentation only).

Size

One PR, one commit.

## Context Three places where the two top documents say something else than the repository: 1. `docs/ROADMAP.md` line 66 lists the lint rules `self-name`, `question-field`, `unread-binding`, `labeled-literal`, `redundant-closure`, `deprecated`. `compiler/src/lint/` also has `plain-values`, `protected-field` and `redundant-wrap`. 2. `docs/ROADMAP.md`, "Language features designed and not built" (line 254): the table has no row for `docs/design/CLOSED-TRAITS.md`, the largest accepted and unbuilt language change (phases 1a, 1b, 2; #713). 3. `CONCEPT.md` line 3254, "Open Questions": "Registry protocol and the exact format of `project.lock.trb`" is listed as open; both are built and documented (`docs/tooling/project-lock-trb.md`, the registry commands). ## Source - Cleanup audit 2026-11 (#742), finding F4 and F10; the report is `docs/project/2026-11-cleanup-audit.md`. ## Goal The three places say what is true on `main`. Milestones and their order are not touched. ## Design record point `docs/ROADMAP.md` (the two sections named), `CONCEPT.md` "Open Questions". ## Acceptance criteria - [ ] ROADMAP names every rule under `compiler/src/lint/`, and a sentence or a test keeps the list from drifting (the page `docs/tooling/torb-lint.md` is the reference) - [ ] The table "Language features designed and not built" has a row for CLOSED-TRAITS with its phases and #713 - [ ] The open question on the registry protocol and the lock file is removed from CONCEPT, with a Decision Log line that points to where each is specified - [ ] No milestone, no order and no other open question changes; `torb docs check` is green ## Dependencies None. The text of CONCEPT that teaches the leading dot (line 1421) and the Decision Log entry that says a closed trait is not planned (line 2698) are rewritten by step 1a-2 of #713, not here. ## Seed None (documentation only). ## Size One PR, one commit.
Author
Collaborator

Scope addition (owner decisions, Torben, WhatsApp 2026-11-13 14:34 Berlin):

  1. static stays. Remove the open question "type fn and type const instead of static" from CONCEPT's open questions and add a Decision Log entry: static is kept; type fn/type const would make type origin = Point(0, 0) and the alias type Meters = Float differ only in the first letter and would take the place of nested/associated types.
  2. Struct construction stays as it is: one form (the block), construction with () positional or labelled, no struct literals, no head form, no migration. A body-form literal Point { x: 5 } with a head form type Point(x: Int, y: Int) was discussed again on 2026-11-13 and dropped: the brace collides with closures and trailing closures, and the only syntactic disambiguation (a top-level => marks a closure) was rejected. Extend the Decision Log entry "A type has one form, the block" with this so the question is not reopened without a new answer to the collision.
Scope addition (owner decisions, Torben, WhatsApp 2026-11-13 14:34 Berlin): 1. `static` stays. Remove the open question "`type fn` and `type const` instead of `static`" from CONCEPT's open questions and add a Decision Log entry: `static` is kept; `type fn`/`type const` would make `type origin = Point(0, 0)` and the alias `type Meters = Float` differ only in the first letter and would take the place of nested/associated types. 2. Struct construction stays as it is: one form (the block), construction with `()` positional or labelled, no struct literals, no head form, no migration. A body-form literal `Point { x: 5 }` with a head form `type Point(x: Int, y: Int)` was discussed again on 2026-11-13 and dropped: the brace collides with closures and trailing closures, and the only syntactic disambiguation (a top-level `=>` marks a closure) was rejected. Extend the Decision Log entry "A type has one form, the block" with this so the question is not reopened without a new answer to the collision.
Author
Collaborator

[loop:torbscript] claim implement by session:loop-torbscript-20261113 until 2026-11-14T02:00:00Z

[loop:torbscript] claim implement by session:loop-torbscript-20261113 until 2026-11-14T02:00:00Z
Author
Collaborator

[loop:torbscript] implement: #767, head 99eea7f081, CI pending (all four checks still queued after ~30 min, runner queue congested), next: waiting (CI queue), then review.

Notes: ROADMAP now names the eight rules of everyLintRule (adds redundant-wrap, protected-field) and points to torb lint --help and docs/tooling/torb-lint.md as the reference; plain-values named in the issue is a helper of unread-binding, not a rule, so it is not listed. CLOSED-TRAITS row added (phases, #713). CONCEPT: registry/lock question and type fn/type const question removed, Decision Log entries added, "A type has one form, the block" extended per comment 11875. check-commits.sh clean; torb docs check runs in CI only. Left alone: docs/design/PROJECT.md line 1396 (historical slice table) still calls the registry protocol "CONCEPT's open question".

Worker token estimate: ~120k.

[loop:torbscript] implement: https://git.torb.dev/torbscript/language/pulls/767, head 99eea7f081178b98df9921c58d954aad542a79c3, CI pending (all four checks still queued after ~30 min, runner queue congested), next: waiting (CI queue), then review. Notes: ROADMAP now names the eight rules of `everyLintRule` (adds redundant-wrap, protected-field) and points to `torb lint --help` and docs/tooling/torb-lint.md as the reference; `plain-values` named in the issue is a helper of `unread-binding`, not a rule, so it is not listed. CLOSED-TRAITS row added (phases, #713). CONCEPT: registry/lock question and `type fn`/`type const` question removed, Decision Log entries added, "A type has one form, the block" extended per comment 11875. check-commits.sh clean; `torb docs check` runs in CI only. Left alone: docs/design/PROJECT.md line 1396 (historical slice table) still calls the registry protocol "CONCEPT's open question". Worker token estimate: ~120k.
Author
Collaborator

[loop:torbscript] claim review by session:loop-torbscript-20261113 until 2026-11-13T21:27Z

[loop:torbscript] claim review by session:loop-torbscript-20261113 until 2026-11-13T21:27Z
Author
Collaborator

[loop:torbscript] review: pdisc failed because CONCEPT.md body changed without a new stamp (stale body_hash in .pdisc-sidecar.yaml); the PR caused it. Restamped with pdisc.py stamp CONCEPT.md (commit "docs: restamp CONCEPT.md after the built-state update"); local pdisc.py check is green and forge pdisc passed, head cf3f2c54, CI pending (main-CI jobs still queued), next: waiting (CI and review)

[loop:torbscript] review: pdisc failed because CONCEPT.md body changed without a new stamp (stale body_hash in .pdisc-sidecar.yaml); the PR caused it. Restamped with `pdisc.py stamp CONCEPT.md` (commit "docs: restamp CONCEPT.md after the built-state update"); local `pdisc.py check` is green and forge pdisc passed, head cf3f2c54, CI pending (main-CI jobs still queued), next: waiting (CI and review)
Author
Collaborator

[loop:torbscript] release review: fix pushed, pdisc green, remaining CI queued and the merge gate pending

[loop:torbscript] release review: fix pushed, pdisc green, remaining CI queued and the merge gate pending
argus closed this issue 2026-11-13 21:48:31 +00:00
Author
Collaborator

[loop:torbscript] wait: PR #767 CI is green on cf3f2c54 and argus is requested, next: waiting (argus review and merge)

[loop:torbscript] wait: PR #767 CI is green on cf3f2c54 and argus is requested, next: waiting (argus review and merge)
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#750
No description provided.