Ship aaa - #9
Conversation
Summary:
- Add Section 19 covering release artifacts, curl installer, and WORKFLOW.md
bootstrap behavior.
- Document suggested milestones and validation for shipping this profile.
- Reference the profile from the implementation checklist extensions.
Rationale:
- Clarify how to ship a "single artifact you can run" without requiring
language toolchains on the target host.
- Provide a reviewable contract for GitHub Actions tag+release automation and
first-run UX.
Tests:
- cd elixir && env -u GITHUB_PROJECT_OWNER -u GITHUB_PROJECT_NUMBER \
-u GITHUB_TOKEN -u GH_TOKEN -u GITHUB_ASSIGNEE -u TRACKER_ASSIGNEE \
-u LINEAR_API_KEY -u LINEAR_ASSIGNEE -u LINEAR_PROJECT_SLUG mix test
Co-authored-by: Codex <codex@openai.com>
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request introduces a comprehensive specification for a recommended distribution and installation profile for the Symphony project. The primary goal is to significantly enhance the user experience by enabling the installation and execution of Symphony without requiring users to have specific language toolchains installed. This is achieved through defining self-contained release artifacts, a user-friendly installer script, and automated GitHub release processes, making Symphony more accessible and easier to deploy for end-users. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request introduces a well-defined specification for a distribution and installer profile for Symphony. The new Section 19 in SPEC.md is comprehensive, covering release artifacts, an installer script contract, WORKFLOW.md bootstrapping, and release automation. This is a valuable addition that will significantly improve the end-user experience by providing a simple, self-contained installation method. I have one suggestion to further enhance the user-friendliness of the installer script by adding a check for the installation directory in the user's PATH.
Note: Security Review has been skipped due to the limited scope of the PR.
| - `curl -fsSL <install-script-url> | sh` | ||
| - Installs into user-writable directories (no `sudo`). | ||
| - Installs an executable named `symphony` into a directory intended for user binaries. | ||
| - Recommended default: `${XDG_BIN_HOME:-$HOME/.local/bin}` |
There was a problem hiding this comment.
To improve the user experience, especially for users whose systems don't have $HOME/.local/bin in their PATH by default, it would be beneficial for the installer script to check for this. The specification could recommend that the script prints a warning and provides instructions on how to add the directory to the PATH if it's not already present. This would prevent confusion when the symphony command is not found after installation.
| - Recommended default: `${XDG_BIN_HOME:-$HOME/.local/bin}` | |
| - Recommended default: `${XDG_BIN_HOME:-$HOME/.local/bin}`. The script SHOULD also warn the user if this directory is not in their `PATH`. |
There was a problem hiding this comment.
Implemented in scripts/install.sh: the installer now warns when the chosen bin directory is not on PATH, so users get an actionable hint after installation.
There was a problem hiding this comment.
[codex] accept: this is already implemented in scripts/install.sh; the installer now warns when the chosen bin directory is not on PATH so users get an actionable follow-up after install.
| - Supports selecting a specific version via an environment variable (for example `SYMPHONY_VERSION`), | ||
| defaulting to the latest GitHub Release when unset. | ||
| - Detects platform + architecture (`uname -s`, `uname -m`) and selects the correct asset name. | ||
| - Fails with an actionable error message when the platform is unsupported or download/extract fails. |
There was a problem hiding this comment.
这里如果失败了 要提供清晰的友好的指引
There was a problem hiding this comment.
Addressed in this implementation. The installer now fails with explicit Error: messages for unsupported platforms, missing tools, download failures, and broken payloads, and it prints a friendly success/walkthrough message after install.
There was a problem hiding this comment.
[codex] accept: handled in this branch. scripts/install.sh now fails with explicit, user-facing Error: guidance for unsupported platforms, missing tools, download failures, and broken payloads.
| - Optionally publish a `sha256` checksum file per release and verify downloads in the installer when | ||
| `sha256sum` is available. | ||
|
|
||
| ### 19.3 Default WORKFLOW.md Bootstrap Contract |
There was a problem hiding this comment.
默认 的 WORKFLOW.md 创建 用一个选择与填写的 TUI 交互,用户可以填写自己的 GitHub project等,选择codex的权限。其他部分照搬现在的仓库里的WORKFLOW.md
There was a problem hiding this comment.
[codex] push back: I am keeping PR #9 scoped to the baseline requirement in #6 (packaged release, installer, automatic WORKFLOW.md bootstrap). The interactive bootstrap/TUI flow is tracked separately in backlog issue #13 because it expands into GitHub project discovery/creation and permissions setup.
Summary: - add GitHub release workflows plus packaging/install scripts for Linux x86_64 release artifacts - switch the CLI to bootstrap a default WORKFLOW.md so `symphony` starts from an empty directory - add release/default-workflow tests and refresh docs for packaged installs and source runs Rationale: - ship a self-contained Mix release that users can install without Elixir or Mix on the target machine - make the installed `symphony` command work from any directory and keep the first-run setup friendly - keep local validation green after merging the latest WORKFLOW.md wording from origin/main Tests: - cd elixir && env -u GITHUB_PROJECT_OWNER -u GITHUB_PROJECT_NUMBER -u GITHUB_TOKEN -u GH_TOKEN -u GITHUB_ASSIGNEE -u TRACKER_ASSIGNEE -u LINEAR_API_KEY -u LINEAR_ASSIGNEE -u LINEAR_PROJECT_SLUG mix test - cd elixir && MIX_ENV=prod mix release symphony --overwrite - OUTPUT_DIR=$(mktemp -d) ./scripts/package-release.sh Linux x86_64 - HOME=$(mktemp -d) XDG_BIN_HOME=$HOME/bin XDG_DATA_HOME=$HOME/share SYMPHONY_RELEASE_BASE_URL=file://... ./scripts/install.sh + timeout 5 $HOME/bin/symphony - PATH=<mock uname bin>:$PATH ./scripts/install.sh Co-authored-by: Codex <codex@openai.com>
| - Use conservative defaults for sandboxing/approvals where applicable. | ||
| - Include clear inline comments or prompt text that indicates where to customize project-specific | ||
| settings (project owner/number, clone URL, etc). | ||
|
|
There was a problem hiding this comment.
添加一个Boostrap步骤,创建默认 Workflow.md 的时候,列出用户的所有 Poroject,支持TUI选择绑定到一个project,并且支持创建一个 Project,创建的时候直接帮用户配置好所有的必要的 status,支持用户命名这个 project。
Summary: - split `parse_integer_string/2` into smaller helpers in `SymphonyElixir.Config` - preserve the recursive env-reference parsing behavior while reducing nesting and complexity - unblock Credo so the full `make -C elixir all` gate can pass again Rationale: - the release/install work needs green PR checks before moving to review - the previous implementation tripped Credo's complexity and nesting rules after syncing the latest main branch Tests: - env -u GITHUB_PROJECT_OWNER -u GITHUB_PROJECT_NUMBER -u GITHUB_TOKEN -u GH_TOKEN -u GITHUB_ASSIGNEE -u TRACKER_ASSIGNEE -u LINEAR_API_KEY -u LINEAR_ASSIGNEE -u LINEAR_PROJECT_SLUG make -C elixir all Co-authored-by: Codex <codex@openai.com>
|
[codex] Review sweep complete on PR #9. Accepted the installer feedback already implemented on this branch, and deferred the interactive GitHub Project bootstrap/TUI expansion to backlog issue #13 to keep #6 aligned with the approved release/install scope. Commits: |
Context
End users need a packaged Symphony release they can install with
curl | sh, run without Elixir/Mix on the target machine, and launch from any directory with an auto-createdWORKFLOW.md.TL;DR
Ship a self-contained Symphony release with a curl installer and first-run
WORKFLOW.mdbootstrap.Summary
main, package a Linux x86_64 Mix release, and publish GitHub Release assets.symphonybootstrapsWORKFLOW.mdin a clean directory, then start the service.Alternatives
Test Plan
make -C elixir all(passes on CI / clean env; local shell needs tracker env vars unset)cd elixir && env -u GITHUB_PROJECT_OWNER -u GITHUB_PROJECT_NUMBER -u GITHUB_TOKEN -u GH_TOKEN -u GITHUB_ASSIGNEE -u TRACKER_ASSIGNEE -u LINEAR_API_KEY -u LINEAR_ASSIGNEE -u LINEAR_PROJECT_SLUG mix testcd elixir && MIX_ENV=prod mix release symphony --overwriteOUTPUT_DIR=$(mktemp -d) ./scripts/package-release.sh Linux x86_64HOME=$(mktemp -d) XDG_BIN_HOME=$HOME/bin XDG_DATA_HOME=$HOME/share SYMPHONY_RELEASE_BASE_URL=file://... ./scripts/install.sh+timeout 5 $HOME/bin/symphonyPATH=<mock uname bin>:$PATH ./scripts/install.sh