Repository navigation
D1.24: remove the Rust tree from main - #166
Merged
Merged
Conversation
The first rewrite pull request removes the Rust workspace from main, as the product definition rules in D1.24 (Draft 4, decision-driven-design fcda5ed). Every crate, the workspace files, schema/, spec/, conventions/, examples/, scripts/, docs/, the .product/, .decisions/ and .ddd/ stores, the agent configuration, the three Rust workflows, CLAUDE.md, .gitignore and .github/copilot-instructions.md leave in this one commit; nothing was moved, renamed or edited first. Everything removed stays readable at the tag rust-final (tag object d0cf1f1, commit 70395df). LICENSE and README.md stay here and are replaced in their own commits. Refs #165 Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk> Claude-Session: https://claude.ai/code/session_01NbWSYSVJASSN4tw4nMJ9kU
What the repository is, where the definition lives and the rule that a definition change merges in decision-driven-design first, how ADRs are numbered and cited, the gates, the commit and session rules, and the never list. Refs #165 Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk> Claude-Session: https://claude.ai/code/session_01NbWSYSVJASSN4tw4nMJ9kU
One line, which Claude Code also reads as an import of AGENTS.md. Refs #165 Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk> Claude-Session: https://claude.ai/code/session_01NbWSYSVJASSN4tw4nMJ9kU
What the rewrite is, in two paragraphs from the definition's chapter 1; that the Rust tool is frozen at rust-final and its releases keep working; and a link to the definition. Refs #165 Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk> Claude-Session: https://claude.ai/code/session_01NbWSYSVJASSN4tw4nMJ9kU
LICENSE is the Apache-2.0 text from apache.org, unedited (sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30, the same bytes as Writ's). NOTICE names the copyright holder and states that the MIT licence keeps governing everything at rust-final and before. The relicensing is confirmed in review by the copyright holder named in the MIT file. Refs #165 Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk> Claude-Session: https://claude.ai/code/session_01NbWSYSVJASSN4tw4nMJ9kU
product-cli-adrs.md as Emil supplied it, byte for byte (sha256 3dcf7e5b1a84363866b3f3abd198dfe7de721483a51810d75f50982c096faffd). It is the source the adr-text check holds ADR-0001 to ADR-0012 against. Refs #165 Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk> Claude-Session: https://claude.ai/code/session_01NbWSYSVJASSN4tw4nMJ9kU
One file per ADR, under the interim rule of D1.22. Each is its section of docs/decisions/collected-2026-11-03.md with the heading promoted to # and its subheadings to ##, outside code fences, and the separators between sections dropped. The text is otherwise byte for byte. The Draft 4 notes follow in their own commit. Refs #165 Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk> Claude-Session: https://claude.ai/code/session_01NbWSYSVJASSN4tw4nMJ9kU
Each of the four ADRs whose rulings Draft 4 superseded or amended gets the note that the collected file's preamble gives for it, as a blockquote under its status lines headed "Note (2026-11-03, Draft 4)". The note is the preamble's bullet with its ADR lead removed and its sub-bullets de-indented one level. Nothing else in the four files changes. Refs #165 Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk> Claude-Session: https://claude.ai/code/session_01NbWSYSVJASSN4tw4nMJ9kU
Review keeps ADR discipline until Writ #7; writ import reads these files once it exists; every package entry carries Adr=. Also how ADRs are numbered and cited, their shape, and how ADR-0001 to ADR-0012 are held against the collected file. Refs #165 Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk> Claude-Session: https://claude.ai/code/session_01NbWSYSVJASSN4tw4nMJ9kU
Six jobs, each a Bash script in eng/gates/ that runs locally the same way: - commits: every commit carries Refs #N and a DCO sign-off naming a person, and names no model in its message, trailers, author or committer; - signatures: GitHub reports every commit of the pull request verified; - adr-shape: every file under docs/decisions/ is an ADR with its number, status, alternatives and consequences, or one of the two allowed files; - adr-text: ADR-0001 to ADR-0012 equal their sections of the collected file, with the Draft 4 notes, byte for byte; - no-toolchain: no Rust, Node or Python toolchain file at the root; - selftest: each check fails on its plant, with the finding the plant is for, and passes its clean case. The plants are built on the runner and never committed. No .NET solution, project or SDK pin: those come in slice 0. Refs #165 Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk> Claude-Session: https://claude.ai/code/session_01NbWSYSVJASSN4tw4nMJ9kU
The release descriptor, in Varve's shape. It names rust-final and that no Rust release follows it, and the sdlc: edition this repository will pin, edition 1, stated as pending until decision-driven-design tags it. It ships no binary and is cut once slice 0 brings a release path. accepted-by is left for the maintainer. Refs #165 Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk> Claude-Session: https://claude.ai/code/session_01NbWSYSVJASSN4tw4nMJ9kU
The prompt and the approval, verbatim; what was read; what the session found; the commits; the checks; and the deviations from the plan. In the shape of Writ's records, with the model written as not recorded (ADR-0007 D1). Refs #165 Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk> Claude-Session: https://claude.ai/code/session_01NbWSYSVJASSN4tw4nMJ9kU
The maintainer's statement, as copyright holder, that the repository is relicensed from MIT to Apache-2.0 from this pull request onward, with MIT governing everything at rust-final and earlier. Verbatim; nothing above the addendum changes. Refs #165 Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk> Claude-Session: https://claude.ai/code/session_01NbWSYSVJASSN4tw4nMJ9kU
The maintainer's exact statement of the boundary: Apache-2.0 from the commit that replaced the licence (59553ee), MIT for everything at rust-final and before it and for the Rust tool's releases. NOTICE already states it. Refs #165 Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk> Claude-Session: https://claude.ai/code/session_01NbWSYSVJASSN4tw4nMJ9kU
Collaborator
Author
|
Approved at |
This was referenced Nov 3, 2026
Closed
Keys per namespace: key close, D7, first policy; remove carried_over; the two notices (issue 6)
#160
Closed
This was referenced Nov 3, 2026
Closed
Closed
Hafeok
added a commit
to mindovermachine-dev/decision-driven-design
that referenced
this pull request
Nov 3, 2026
…corrected, the licence (chapter 8) The cross-repository table: the rust-final row is met, at tag object d0cf1f1ec40eb55c271b8d4dadfefcd260c03312, and a new row records the Rust tree removed from product-cli's main, met by mindovermachine-dev/product-cli#166, merged at 53bd547. The README row is unchanged. D1.25 adds step 0 to chapter 7's order of work: slice 0, the repository skeleton (ADR-0002, ADR-0003, ADR-0004), which needs no sdlc: edition. The header now reads D1.16 to D1.25. D1.21, the lift map: the "Attribute blank nodes" bullet is replaced. All 32 blank nodes become elements, keyed by owning subject, predicate and their own sorted description; the 15 pf:hasAttribute nodes become sdlc:Field and the 7 pf:offers and 10 pf:surfaces nodes become sdlc:Interaction. The ULIDs and adopted wire names are stored in the map, so lifting again reproduces the golden bytes. The licence (chapter 8): a bullet under "Boundaries and decisions taken", after Scope. Apache-2.0 from the commit after rust-final that replaced the licence (59553ee, merged at 53bd547); MIT for everything at rust-final and before it, and for the Rust tool's releases. Basis: DDD-dec-72 Refs mindovermachine-dev/product-cli#165 Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk> Claude-Session: https://claude.ai/code/session_01NbWSYSVJASSN4tw4nMJ9kU
Collaborator
Author
|
The licence question is answered. This PR asked whether the definition should name the licence, because the brief said Apache-2.0 is "as the definition requires" and Draft 4 named none. The definition now carries the answer as a bullet in chapter 8, "Boundaries and decisions taken", after Scope. The bullet arrives with mindovermachine-dev/decision-driven-design#57, commit
It states the same boundary as this repository's Generated by Claude Code |
Hafeok
added a commit
to mindovermachine-dev/decision-driven-design
that referenced
this pull request
Nov 3, 2026
…corrected, the licence (chapter 8) The cross-repository table: the rust-final row is met, at tag object d0cf1f1ec40eb55c271b8d4dadfefcd260c03312, and a new row records the Rust tree removed from product-cli's main, met by mindovermachine-dev/product-cli#166, merged at 53bd547. The README row is unchanged. D1.25 adds step 0 to chapter 7's order of work: slice 0, the repository skeleton (ADR-0002, ADR-0003, ADR-0004), which needs no sdlc: edition. The header now reads D1.16 to D1.25. D1.21, the lift map: the "Attribute blank nodes" bullet is replaced. All 32 blank nodes become elements, keyed by owning subject, predicate and their own sorted description; the 15 pf:hasAttribute nodes become sdlc:Field and the 7 pf:offers and 10 pf:surfaces nodes become sdlc:Interaction. The ULIDs and adopted wire names are stored in the map, so lifting again reproduces the golden bytes. The licence (chapter 8): a bullet under "Boundaries and decisions taken", after Scope. Apache-2.0 from the commit after rust-final that replaced the licence (59553ee, merged at 53bd547); MIT for everything at rust-final and before it, and for the Rust tool's releases. Basis: DDD-dec-72 Refs #58 Refs mindovermachine-dev/product-cli#165 Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk> Claude-Session: https://claude.ai/code/session_01NbWSYSVJASSN4tw4nMJ9kU
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #165
The first rewrite pull request, as D1.24`` rules. It carries out the approved plan.
The Rust tree stays readable at
rust-finalEverything this PR removes stays readable at the tag
rust-final(tag objectd0cf1f1ec40eb55c271b8d4dadfefcd260c03312, commit70395dfe317cb9a00665433813766ca763f3c58a, verified by GitHub). Nothing at the tag changes, and the published Rust releases, up tov0.7.0, keep working.The removal is one commit,
95bb957, made before anything was moved, renamed or edited. It deletes 1,937 files:schema/,spec/,conventions/,examples/,scripts/anddocs/;.product/,.decisions/and.ddd/stores;.claude/,.mcp.json,.htmlvalidate.jsonand.stylelintrc.json;CLAUDE.md;.gitignoreand.github/copilot-instructions.md.There was no
Cargo.lockto remove.LICENSEandREADME.mdare replaced in their own commits.No decision is lost.
docs/decisions/hafeok.ddd.ntandhafeok.ledger.ntare the Rust ledger's exports, and they leave with the tree.writ importreads the ledger (.decisions/) atrust-final.The licence
LICENSEis now Apache-2.0: the apache.org text, unedited and byte-identical to Writ's (sha256cfc7749b…bc523d30). It replaces MIT, and aNOTICEis added.The MIT text stays at the tag and governs everything there: every commit up to
rust-final, and the releases built from them.Relicensing confirmed by the copyright holder (recorded verbatim in the session record's addendum):
That commit is
59553ee.NOTICEstates the same boundary, and nothing in it changed.What
mainholds after this PROne commit each, in this order:
AGENTS.md, the single source for agents (ADR-0007). It includes the ADR numbering rule: the Rust workspace's own ADRs are cited asrust-final:conventions/adr/ADR-NNNN. Its never list is built from your answers, the definition and the ADRs.CLAUDE.md, one line.README.md.LICENSEandNOTICE.docs/decisions/:3dcf7e5b…c096faffd);README.md, with the interim rule..github/workflows/gates.ymlandeng/gates/.releases/v0.8.0-preview.1.yaml. It namesrust-final, and that no Rust release follows. The edition issdlc:edition 1, pending.accepted-byis left for you.docs/traceability/2026-11-03-issue-165-rust-removal.md. The model is "not recorded (ADR-0007 D1)". Its addendum holds the relicensing confirmation.git ls-tree -r --name-only HEAD:The gates
gates.yml, six jobs, each a Bash script ineng/gates/:commits;signatures;adr-shape;adr-text, which rebuilds the twelve files from the collected file, notes included, and compares bytes;no-toolchain;selftest.selftestchanged after the plan in one respect. Each plant now names the finding it must produce, so a check that fails for another reason counts as a self-test failure. The first local run caught exactly that: every commit plant was failing because the script ran in the wrong repository.Current head
a9df5c4: all six jobs green in run 41627148468.d4ea57bwas green too, in run 41627089375. The table and theselftestoutput below are from the first run, 41620431044, on9f14362.commits70395df..9f14362passessignatures12 commit(s) verified, eachverified (valid)adr-shapeadr-textno-toolchainselftestThe
selftestrun. It shows the finding line for each plant, with the diff bodies trimmed:The model ids above (
gpt-9,Opus 9.9) are fictitious.selftestassembles them at run time from fragments, so neither the repository nor any commit in it contains one.Commit verification, read through the REST API
95bb957052ff97d6b112b1a8eed921917021a9a0875a5130ea9bff45bc13e1523b6e58818d5ca0ab48f5c9ad83971a3df49446660d7376ef547b6183ed5008dfbe473bb2f8fc0ddc5741d0fb35065ad459553eee80d1660e0a1c5f03f55c009dc8b4c78beb270d957e3fcdcab9eaef885ab71ee011e6584fcc827e09ee84bd461a6ca1bac767bf27a2c7dab03fd396b0b877a2aa5f4cc7e2484b15aff4d6e97ad3bdf88d127b3d71e8d01257c790f279a0f390dc2ffd36ae418562a3af303c2a89f37e9bd4189e9ee14a897e3f780895f94dff40f8d069606d92b1959f14362ef44dd0eb0f736a9f98c185672f2053c5d4ea57bf0a1535929619cac072152e6b694bc523a9df5c4d21729357f12e7f22e1fb96292b8c87d7Disposition of the Rust tool's open work
I'll carry this out only after the merge, as approved on #165.
ns/<ns>/; refuse flat paths at the verified commit (issue 1) #154 to Close-out: namespaces, layout and authority (issues 1 to 10) #164. Each gets a comment citing D1.24 andrust-final.revisit_if; §3.7 calls that a schema fault andformat_faultshas no row for it #81, Signed grants and grant acceptances (D5 b) #82,rotate-genesis: replace the store's genesis grant #83,acceptrefuses in a namespace without a policy #84,accept,accept --batchand the inbox read authority from the union of branch and base #94, Retiring a landed entity that failsL011orA006, by a valid revocation; the inbox offers revoke and re-accept #95, Readiness check: a PR that adds a decision awaiting acceptance is red #101, Key lifecycle across namespaces, part 1: a key is bound once per namespace; a close ends the key #104, Key lifecycle across namespaces, part 2: rotate/revoke every namespace in one act; notice for a split state #105, The dsse check orders acts by timestamp where the ssh check uses landing order (D6) #106, and Load every store fromns/<ns>/; refuse flat paths at the verified commit #144 to Re-lay out this repository's store and regenerate its exports #153;After your merge, the decision-driven-design PR opens as one commit with the row met and the merge SHA. It also carries step 0 and the D1.21 correction.
Developed with AI assistance under human review.
🤖 Generated with Claude Code
https://claude.ai/code/session_01NbWSYSVJASSN4tw4nMJ9kU