package manager: two majors of one package in one graph #28

Closed
opened 2026-10-05 21:07:12 +00:00 by orion · 5 comments
Collaborator

Context

Resolution allows one version per major (CONCEPT, "Packages and the Supply Chain"); two majors of one package in one graph are not supported yet.

Source

Acceptance criteria

  • PubGrub resolution and the lock hold two majors of one package
  • The build keeps their modules apart
  • A test graph with two majors

Dependencies

None known.

Moved from the planning lists of the docs; the design record stays the specification.

## Context Resolution allows one version per major (CONCEPT, "Packages and the Supply Chain"); two majors of one package in one graph are not supported yet. ## Source - [ROADMAP.md, the package manager](https://git.torb.dev/torbscript/language/src/commit/393ef2608e4a60b8ff76d8b6b408951b822d887d/docs/ROADMAP.md#L96) ## Acceptance criteria - [ ] PubGrub resolution and the lock hold two majors of one package - [ ] The build keeps their modules apart - [ ] A test graph with two majors ## Dependencies None known. _Moved from the planning lists of the docs; the design record stays the specification._
Author
Collaborator

[loop:torbscript] intake: in scope as an issue (author orion, label loop), with an owner question: CONCEPT "Packages and the Supply Chain" states one version per major; two majors in one graph changes the resolution model (breaking, language design choice). Not ready until Torben decides, to be filed in refine. Release freeze for 0.1.0 (2026-10-06) holds new PRs, next: refine (owner decision expected)

[loop:torbscript] intake: in scope as an issue (author orion, label loop), with an owner question: CONCEPT "Packages and the Supply Chain" states one version per major; two majors in one graph changes the resolution model (breaking, language design choice). Not ready until Torben decides, to be filed in refine. Release freeze for 0.1.0 (2026-10-06) holds new PRs, next: refine (owner decision expected)
Author
Collaborator

[loop:torbscript] refine: still queued behind the intake order. next: waiting (ready buffer full: #4, #163, #164, #223 are ready) until 2026-10-10T04:00:00Z

[loop:torbscript] refine: still queued behind the intake order. next: waiting (ready buffer full: #4, #163, #164, #223 are ready) until 2026-10-10T04:00:00Z
Author
Collaborator

[loop:torbscript] claim refine by session:loop-torbscript-20261012 until 2026-10-12T10:23Z

[loop:torbscript] claim refine by session:loop-torbscript-20261012 until 2026-10-12T10:23Z
Author
Collaborator

[loop:torbscript] decided by the loop: this is not an owner question. CONCEPT "Packages and the Supply Chain" already promises one version per major, docs/design/PROJECT.md section 6a calls today's single version the stricter subset and names the change (resolver package becomes (name, major), per-package resolution of use specifiers). It lifts a restriction, existing graphs resolve and build as before, and no published contract breaks. Technical choices: source specifiers stay version-free; the importing package's own dependency line picks the major; single-major packages keep today's names and lock bytes. Too large for one PR (resolver and lock, workspace and checker identity, lowering and back ends), so it is split by dependency: #323 (resolve and lock, ready) -> #324 (load side by side) -> #325 (keep modules apart, end to end, docs). #28 stays the umbrella and closes when #325 has landed. Its three acceptance criteria map to #323 (PubGrub and lock), #325 (modules apart), #323+#325 (test graph).
[loop:torbscript] refine: split into #323 (ready), #324, #325; no owner question, next: implement #323 (this issue: waiting (dependency #325)). Tokens: ~75k

[loop:torbscript] decided by the loop: this is not an owner question. CONCEPT "Packages and the Supply Chain" already promises one version per major, docs/design/PROJECT.md section 6a calls today's single version the stricter subset and names the change (resolver package becomes (name, major), per-package resolution of `use` specifiers). It lifts a restriction, existing graphs resolve and build as before, and no published contract breaks. Technical choices: source specifiers stay version-free; the importing package's own dependency line picks the major; single-major packages keep today's names and lock bytes. Too large for one PR (resolver and lock, workspace and checker identity, lowering and back ends), so it is split by dependency: #323 (resolve and lock, ready) -> #324 (load side by side) -> #325 (keep modules apart, end to end, docs). #28 stays the umbrella and closes when #325 has landed. Its three acceptance criteria map to #323 (PubGrub and lock), #325 (modules apart), #323+#325 (test graph). [loop:torbscript] refine: split into #323 (ready), #324, #325; no owner question, next: implement #323 (this issue: waiting (dependency #325)). Tokens: ~75k
Author
Collaborator

[loop:torbscript] close: all three slices have landed: #323 (resolve and lock), #324 (PR #360, load side by side) and #325 (PR #361, commit d8e9b575bf, modules kept apart end to end with two-majors.test.trb). main CI is green. Issue closed. next: done

[loop:torbscript] close: all three slices have landed: #323 (resolve and lock), #324 (PR https://git.torb.dev/torbscript/language/pulls/360, load side by side) and #325 (PR https://git.torb.dev/torbscript/language/pulls/361, commit https://git.torb.dev/torbscript/language/commit/d8e9b575bfd1922f6eb8bf92c44dc54773871b9a, modules kept apart end to end with `two-majors.test.trb`). `main` CI is green. Issue closed. next: done
orion closed this issue 2026-10-15 22:03:14 +00:00
Sign in to join this conversation.
No labels
loop
ready
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#28
No description provided.