-
Notifications
You must be signed in to change notification settings - Fork 0
[codex] Prepare repository for public release #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
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,59 @@ | ||
| name: CI | ||
|
|
||
| on: | ||
| pull_request: | ||
| push: | ||
| branches: | ||
| - master | ||
| - main | ||
|
|
||
| jobs: | ||
| test: | ||
| name: Rust checks (${{ matrix.os }}) | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: [ubuntu-latest, windows-latest] | ||
| runs-on: ${{ matrix.os }} | ||
| steps: | ||
| - uses: actions/checkout@v5 | ||
| - uses: dtolnay/rust-toolchain@stable | ||
| - name: Format | ||
| run: cargo fmt --check | ||
| - name: Clippy | ||
| run: cargo clippy --workspace --all-targets -- -D warnings | ||
| - name: Test | ||
| run: cargo test --workspace --locked | ||
|
|
||
| audit: | ||
| name: Dependency audit | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v5 | ||
| - uses: rustsec/audit-check@v2 | ||
| with: | ||
| token: ${{ secrets.GITHUB_TOKEN }} | ||
|
|
||
| secrets: | ||
| name: Secret scan | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v5 | ||
| with: | ||
| fetch-depth: 0 | ||
| - name: Install Gitleaks | ||
| env: | ||
| GITLEAKS_VERSION: 8.30.1 | ||
| run: | | ||
| set -euo pipefail | ||
| tmp="$(mktemp -d)" | ||
| trap 'rm -rf "$tmp"' EXIT | ||
| base="https://github.com/gitleaks/gitleaks/releases/download/v${GITLEAKS_VERSION}" | ||
| artifact="gitleaks_${GITLEAKS_VERSION}_linux_x64.tar.gz" | ||
| curl -sSfL "${base}/${artifact}" -o "${tmp}/${artifact}" | ||
| curl -sSfL "${base}/gitleaks_${GITLEAKS_VERSION}_checksums.txt" -o "${tmp}/checksums.txt" | ||
| (cd "$tmp" && grep " ${artifact}$" checksums.txt | sha256sum -c -) | ||
| tar -xzf "${tmp}/${artifact}" -C "$tmp" gitleaks | ||
| sudo install -m 0755 "${tmp}/gitleaks" /usr/local/bin/gitleaks | ||
| - name: Scan | ||
| run: gitleaks detect --source . --config .gitleaks.toml --redact --verbose | ||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,26 @@ | ||||||||||||||||||||||||||||||||||||||||||||
| title = "Tempyr secret scanning" | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| [extend] | ||||||||||||||||||||||||||||||||||||||||||||
| useDefault = true | ||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||
| [[allowlists]] | ||||||||||||||||||||||||||||||||||||||||||||
| description = "Intentional fake credentials used by redaction and no-leak tests" | ||||||||||||||||||||||||||||||||||||||||||||
| condition = "AND" | ||||||||||||||||||||||||||||||||||||||||||||
| paths = [ | ||||||||||||||||||||||||||||||||||||||||||||
| '''crates/tempyr-cli/src/commands/onboarding\.rs''', | ||||||||||||||||||||||||||||||||||||||||||||
| '''crates/tempyr-cli/tests/integration\.rs''', | ||||||||||||||||||||||||||||||||||||||||||||
| '''crates/tempyr-index/src/embeddings\.rs''', | ||||||||||||||||||||||||||||||||||||||||||||
| '''crates/tempyr-journal/src/redact\.rs''', | ||||||||||||||||||||||||||||||||||||||||||||
| '''crates/tempyr-journal/src/writer\.rs''', | ||||||||||||||||||||||||||||||||||||||||||||
| ] | ||||||||||||||||||||||||||||||||||||||||||||
| regexes = [ | ||||||||||||||||||||||||||||||||||||||||||||
| '''pa-1234567890abcdef''', | ||||||||||||||||||||||||||||||||||||||||||||
| '''AIzaSyA-LongerLookingKey123''', | ||||||||||||||||||||||||||||||||||||||||||||
| '''sk-doctor-test-secret-must-not-leak''', | ||||||||||||||||||||||||||||||||||||||||||||
| '''sk-mcp-doctor-secret-must-not-leak''', | ||||||||||||||||||||||||||||||||||||||||||||
| '''sk-ant-abcdefghijklmnop1234567890qrstuvwx''', | ||||||||||||||||||||||||||||||||||||||||||||
| '''sk-proj-abc1234567890defghij''', | ||||||||||||||||||||||||||||||||||||||||||||
| '''ghp_abcdefghijklmnopqrstuvwxyz0123456789AB''', | ||||||||||||||||||||||||||||||||||||||||||||
| '''AKIAIOSFODNN7EXAMPLE''', | ||||||||||||||||||||||||||||||||||||||||||||
| '''MIIEvQ\.\.\.etc''', | ||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+16
to
+25
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Anchor allowlist regexes to exact literals. These regexes are currently unanchored, so superstring matches can be allowlisted unintentionally. Since this file is meant to permit only specific fake fixtures, anchor each value with Suggested hardening diff regexes = [
- '''pa-1234567890abcdef''',
- '''AIzaSyA-LongerLookingKey123''',
- '''sk-doctor-test-secret-must-not-leak''',
- '''sk-mcp-doctor-secret-must-not-leak''',
- '''sk-ant-abcdefghijklmnop1234567890qrstuvwx''',
- '''sk-proj-abc1234567890defghij''',
- '''ghp_abcdefghijklmnopqrstuvwxyz0123456789AB''',
- '''AKIAIOSFODNN7EXAMPLE''',
- '''MIIEvQ\.\.\.etc''',
+ '''^pa-1234567890abcdef$''',
+ '''^AIzaSyA-LongerLookingKey123$''',
+ '''^sk-doctor-test-secret-must-not-leak$''',
+ '''^sk-mcp-doctor-secret-must-not-leak$''',
+ '''^sk-ant-abcdefghijklmnop1234567890qrstuvwx$''',
+ '''^sk-proj-abc1234567890defghij$''',
+ '''^ghp_abcdefghijklmnopqrstuvwxyz0123456789AB$''',
+ '''^AKIAIOSFODNN7EXAMPLE$''',
+ '''^MIIEvQ\.\.\.etc$''',
]📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||
| ] | ||||||||||||||||||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| # Changelog | ||
|
|
||
| All notable changes to Tempyr will be documented here. | ||
|
|
||
| This project follows human-readable release notes. Until the first tagged | ||
| release, changes are tracked through pull requests and the `master` | ||
| branch history. | ||
|
|
||
| ## Unreleased | ||
|
|
||
| - Initial public-readiness documentation and CI setup. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| # Code of Conduct | ||
|
|
||
| Tempyr contributors are expected to keep project spaces respectful, | ||
| professional, and focused on the work. | ||
|
|
||
| Do not harass, threaten, insult, or deliberately derail other contributors. | ||
| Assume good intent where reasonable, but prioritize clear technical discussion | ||
| and maintainers' moderation decisions. | ||
|
|
||
| Report conduct concerns privately by opening a GitHub Security Advisory at | ||
| https://github.com/cleak/tempyr/security/advisories/new. Maintainers will keep | ||
| reports confidential. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,41 @@ | ||
| # Contributing | ||
|
|
||
| Thanks for helping improve Tempyr. | ||
|
|
||
| ## Development Setup | ||
|
|
||
| Install the stable Rust toolchain, then run the standard checks from the | ||
| repository root: | ||
|
|
||
| ```sh | ||
| cargo fmt --check | ||
| cargo clippy --workspace --all-targets -- -D warnings | ||
| cargo test --workspace --locked | ||
| cargo audit | ||
| gitleaks detect --source . --config .gitleaks.toml --redact --verbose | ||
| ``` | ||
|
|
||
| `cargo audit` and `gitleaks` are separate developer tools; install them before | ||
| running the full local suite. | ||
|
|
||
| The source install path targets the CLI crate: | ||
|
|
||
| ```sh | ||
| cargo install --path crates/tempyr-cli --locked | ||
| ``` | ||
|
|
||
| ## Pull Requests | ||
|
|
||
| - Keep changes focused on one behavior or documentation area. | ||
| - Add or update tests for user-visible behavior changes. | ||
| - Do not commit secrets, `.env` files, local agent settings, generated indexes, | ||
| or rendered output unless a maintainer explicitly asks for them. | ||
| - When changing graph or journal behavior, update the relevant docs under | ||
| `docs/`. | ||
|
|
||
| ## Agent-Specific Files | ||
|
|
||
| The checked-in `.claude/skills` and `.claude/agents` files are examples for | ||
| Claude Code integration. Active hook settings are intentionally not committed; | ||
| copy the example from `docs/claude-settings.example.json` or generate them | ||
| locally with `tempyr init` when needed. |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
| Original file line number | Diff line number | Diff line change | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,34 @@ | ||||||||||||||
| # Release Process | ||||||||||||||
|
|
||||||||||||||
| 1. Run the full local check suite: | ||||||||||||||
|
|
||||||||||||||
| ```sh | ||||||||||||||
| cargo fmt --check | ||||||||||||||
| cargo clippy --workspace --all-targets -- -D warnings | ||||||||||||||
| cargo test --workspace --locked | ||||||||||||||
| cargo audit | ||||||||||||||
| gitleaks detect --source . --config .gitleaks.toml --redact --verbose | ||||||||||||||
| ``` | ||||||||||||||
|
|
||||||||||||||
| 2. Update `CHANGELOG.md` with user-facing changes. | ||||||||||||||
| 3. Confirm the managed Claude settings example matches the embedded asset: | ||||||||||||||
|
|
||||||||||||||
| ```sh | ||||||||||||||
| git diff --no-index --exit-code docs/claude-settings.example.json crates/tempyr-cli/assets/claude.settings.json | ||||||||||||||
| ``` | ||||||||||||||
|
|
||||||||||||||
| 4. Confirm install scripts still work on their target platforms: | ||||||||||||||
|
|
||||||||||||||
| ```sh | ||||||||||||||
| bash install.sh --no-path-update | ||||||||||||||
| powershell -ExecutionPolicy Bypass -File .\install.ps1 -NoPathUpdate | ||||||||||||||
| ``` | ||||||||||||||
|
|
||||||||||||||
| 5. Tag the release: | ||||||||||||||
|
|
||||||||||||||
| ```sh | ||||||||||||||
| git tag -a v0.1.0 -m "Tempyr v0.1.0" | ||||||||||||||
| git push origin v0.1.0 | ||||||||||||||
|
Comment on lines
+27
to
+31
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Make the tag step version-agnostic. Hardcoding Suggested doc fix📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||
| ``` | ||||||||||||||
|
|
||||||||||||||
| 6. Publish release notes from the changelog entry. | ||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| # Security Policy | ||
|
|
||
| ## Reporting Vulnerabilities | ||
|
|
||
| Please report suspected vulnerabilities privately by opening a GitHub security | ||
| advisory on this repository. If advisories are unavailable, contact the | ||
| maintainers through the repository owner profile and avoid posting exploit | ||
| details in a public issue. | ||
|
|
||
| Include: | ||
|
|
||
| - Affected version or commit. | ||
| - Impact and expected exposure. | ||
| - Steps to reproduce, if safe to share. | ||
| - Any suggested fix or mitigation. | ||
|
|
||
| ## Secret Handling | ||
|
|
||
| Tempyr reads provider keys from the environment or local `.env` files. Do not | ||
| commit real API keys, tokens, private keys, or generated local configuration. | ||
| The repository includes fake secret-shaped strings in redaction tests; they are | ||
| allowlisted in `.gitleaks.toml` for scanner noise only and are not usable | ||
| credentials. GitHub's native secret scanning may still report these fixtures; | ||
| maintainers should dismiss them as test credentials only after verifying the | ||
| exact literal appears in the allowlist. |
Uh oh!
There was an error while loading. Please reload this page.