forked from Lucent-Financial-Group/Zeta
-
Notifications
You must be signed in to change notification settings - Fork 0
substrate: install-script language strategy (pre-install bash+PowerShell / post-install TypeScript / Python for AI-ML) #40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
AceHack
merged 1 commit into
main
from
project/post-install-typescript-pre-install-bash-strategy
Apr 27, 2026
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
239 changes: 239 additions & 0 deletions
239
...t_install_typescript_pre_install_bash_powershell_python_for_ai_ml_2026_04_27.md
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
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,239 @@ | ||||||
| --- | ||||||
| name: Install-script language strategy — post-install TypeScript / pre-install bash + PowerShell / Python for AI-ML | ||||||
| description: Aaron 2026-04-27 confirms long-horizon plan for `tools/setup/` install machinery — pre-install scripts stay bash + PowerShell (must work where users are with nothing installed); post-install scripts will eventually migrate to TypeScript (declarative state, easier to test, type-safe); Python is good for AI/ML scripts eventually but is not the default for general post-install work; Python pickup in `../scratch` was the foundation Otto observed and added to .mise.toml — that was the correct read of the future declarative state. | ||||||
| type: project | ||||||
| --- | ||||||
|
|
||||||
| # Install-script language strategy — pre/post-install split | ||||||
|
|
||||||
| ## Verbatim quote (Aaron 2026-04-27) | ||||||
|
|
||||||
| After Otto landed PR #26's INSTALLED.md update changing the | ||||||
| Python row from "system default / pre-installed" to | ||||||
| "3.14 (mise-pinned)", Aaron responded: | ||||||
|
|
||||||
| > "cool, this is a you. I'm guessing you like python and saw | ||||||
| > that ../scratch already had it install and that's our future | ||||||
| > declarative state for all our dependences so you went ahead | ||||||
| > and got python early. lol our post install scripts will | ||||||
| > eventually be typescript but python is good too for AI/ML | ||||||
| > based scripts eventually. Regular kind of post isntall will | ||||||
| > all end up being typescript instead of bash. bash and windows | ||||||
| > powershell will be use only for pre install scripts cause we | ||||||
| > have to go to the users where they are, can't expect anyting | ||||||
| > installed. Good job on everything." | ||||||
|
|
||||||
| ## What this gives the substrate | ||||||
|
|
||||||
| Three load-bearing decisions for `tools/setup/` and the | ||||||
| broader install machinery: | ||||||
|
|
||||||
| ### 1. Pre-install stays bash + PowerShell | ||||||
|
|
||||||
| Pre-install scripts are the bootstrap layer: they run on a | ||||||
| fresh machine with NOTHING installed. Aaron's framing — | ||||||
| "we have to go to the users where they are, can't expect | ||||||
| anyting installed" — codifies the inescapable constraint: | ||||||
|
|
||||||
| - macOS / Linux: bash 3.2+ (the macOS default). Already the | ||||||
| factory's compatibility target per Otto-235 (4-shell | ||||||
| bash compatibility: macOS 3.2 / Ubuntu / git-bash / WSL). | ||||||
| - Windows: PowerShell. Pre-installed on every modern | ||||||
| Windows box; nothing else can be assumed. | ||||||
|
|
||||||
| Pre-install scope: detect / install package managers (mise, | ||||||
| homebrew, scoop, etc.), install language runtimes that | ||||||
| nothing else depends on, set up the minimum environment | ||||||
| necessary to run a richer post-install pass. NO higher-level | ||||||
| tooling assumed. | ||||||
|
|
||||||
| ### 2. Post-install migrates to TypeScript | ||||||
|
|
||||||
| Once a runtime exists (because pre-install ran), post-install | ||||||
| work — the larger, more complex configuration / artifact- | ||||||
| download / verification work — moves to TypeScript: | ||||||
|
|
||||||
| - Declarative state is easier to express in TypeScript than | ||||||
| bash. | ||||||
| - Type-safety catches whole classes of bug (off-by-one, | ||||||
| unhandled null, wrong-shape config) before they ship. | ||||||
| - Cross-platform behaviour is more uniform than bash | ||||||
| (which has macOS 3.2 / Linux 4+/5 incompatibilities + WSL | ||||||
| edge cases). | ||||||
| - Same runtime as the bun-TS migration Otto-215 already | ||||||
| flagged (bun + TypeScript displacing bash for post-install | ||||||
| scripts). | ||||||
|
|
||||||
| This composes cleanly with Otto-215's framing: "Bun-TS | ||||||
| post-install migration before substantive Windows work" — | ||||||
| the post-install→TypeScript decision IS the migration plan, | ||||||
| expressed as language strategy rather than as platform | ||||||
| sequencing. | ||||||
|
|
||||||
| ### 3. Python for AI/ML eventually | ||||||
|
|
||||||
| Python is NOT the default for general post-install. Aaron | ||||||
| explicitly: *"python is good too for AI/ML based scripts | ||||||
| eventually. Regular kind of post isntall will all end up | ||||||
| being typescript instead of bash."* | ||||||
|
|
||||||
| Python's role is narrow: AI/ML-specific work where the | ||||||
| ecosystem (NumPy / PyTorch / HuggingFace / scikit-learn / | ||||||
| etc.) is unmatched. Calls for Python in install machinery | ||||||
| should pass the AI/ML test before being accepted; otherwise | ||||||
| TypeScript is the answer. | ||||||
|
|
||||||
| ## Why Otto's Python pickup was correct | ||||||
|
|
||||||
| Aaron validated the move: *"that's our future declarative | ||||||
| state for all our dependences so you went ahead and got | ||||||
| python early."* The structural reasoning: | ||||||
|
|
||||||
| - `../scratch` is Aaron's reference workspace — the dir | ||||||
| where future-state experiments live BEFORE they land in | ||||||
| factory canonical paths. | ||||||
| - `.mise.toml` already pinned `python = "3.14"` (line 25), | ||||||
| so the Python row in `docs/INSTALLED.md` showing | ||||||
| "system default" was stale documentation, not a | ||||||
| policy choice. | ||||||
| - The PR #26 review thread asked specifically whether the | ||||||
| Python row should be updated to mise-managed. The | ||||||
| affirmative answer was correct. | ||||||
|
|
||||||
| The corollary: future Otto reads of `../scratch` for | ||||||
| declarative-state hints are blessed; that workspace IS the | ||||||
| forward-looking factory state. (Same pattern as Otto reading | ||||||
| the Aaron-Amara conversation archive for upstream design | ||||||
| context — `docs/amara-full-conversation/` IS the | ||||||
|
||||||
| context — `docs/amara-full-conversation/` IS the | |
| context — that archive was part of the upstream |
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This new MEMORY.md index entry is extremely long (multiple clauses + detailed composition/validation notes).
memory/README.mddocuments that MEMORY.md entries should be terse due to the ~200-line cap (see memory/README.md:56-58). Please shorten this line to a minimal summary and leave the detail in the linked memory file.