Repository navigation
chore: OSS-polish — Apache 2.0, issue templates, oracle path, release workflow - #6
Conversation
…acle path fix
Three small but consequential cleanups in preparation for flipping the
repo to public:
1. License: MIT to Apache 2.0
- Aligns with jamjet-labs/jamjet (Rust runtime, Apache 2.0) and the
agent-memory ecosystem (Mem0, Letta, Zep are all Apache 2.0).
- Apache 2.0 includes an explicit patent grant from contributors,
valued by enterprise adopters.
- Repo was private during the MIT period — no MIT-licensed copies
are in the wild, so this is a clean switch.
- LICENSE file replaced with the standard Apache 2.0 text (matches
the jamjet-labs/jamjet copy).
- pyproject.toml: license metadata + classifier updated.
- README badge + project meta updated.
2. Inbound contribution scaffolding
- .github/ISSUE_TEMPLATE/bug_report.md
- .github/ISSUE_TEMPLATE/feature_request.md
- .github/pull_request_template.md
Templates prompt for repro steps, environment, version — improves
inbound issue quality and signals "we take contributions seriously".
3. Oracle path fix
- benchmarks/smoke_runner.py and benchmarks/longmemeval_v2.py
defaulted the oracle path to ../jamjet-research/... — a
developer-machine-specific relative path that fails for everyone
else.
- Replaced with ./longmemeval_oracle.json default (cwd-relative).
LONGMEMEVAL_ORACLE env var still wins; the new default is a
sensible fail-fast location pointing at the LongMemEval repo.
Plus: gitignore *.md in benchmarks/reports/ alongside the existing
*.jsonl rule. Per-run artifacts shouldn't pollute git. uv.lock
regenerated to match the v0.1.0 version bump from PR #4.
ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Free Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughUpdates project license from MIT to Apache-2.0, adds GitHub issue and pull-request templates plus a release workflow, adjusts .gitignore and CHANGELOG entries, and refactors benchmark oracle defaults to use a cwd-relative ChangesLicense Update
GitHub Templates & Release Workflow
Benchmark Oracle Path Refactoring
Sequence DiagramsequenceDiagram
participant Dev as Developer (git tag)
participant GH as GitHub (push tag)
participant Actions as GitHub Actions (Release workflow)
participant Build as Build (wheel/sdist)
participant PyPI as PyPI
participant GHRel as GitHub Release
Dev->>GH: push annotated tag vX.Y.Z
GH->>Actions: trigger Release workflow
Actions->>Build: verify tag vs pyproject.toml\nbuild wheel & sdist
Build->>Actions: upload artifacts
Actions->>PyPI: publish artifacts via OIDC
Actions->>GHRel: create release, attach artifacts
GHRel->>Developer: release created
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Poem
Note 🎁 Summarized by CodeRabbit FreeYour organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login. Comment |
Summary
OSS-polish: license switch + inbound contribution scaffolding + oracle path fix + automated release pipeline. All in preparation for flipping the repo to public.
Changes
1. License: MIT → Apache 2.0
jamjet-labs/jamjet(Rust runtime, Apache 2.0) and the agent-memory ecosystem — Mem0, Letta, Zep are all Apache 2.0.jamjet-labs/jamjet/LICENSE).2. Inbound contribution scaffolding
.github/ISSUE_TEMPLATE/bug_report.md— env, version, repro steps, traceback.github/ISSUE_TEMPLATE/feature_request.md— use case, proposed solution, alternatives.github/pull_request_template.md— summary / why / what changed / test plan3. Oracle path fix
benchmarks/smoke_runner.py:98andbenchmarks/longmemeval_v2.py:44defaulted to a developer-machine-specific../jamjet-research/...path. Replaced with./longmemeval_oracle.jsoncwd-relative default.LONGMEMEVAL_ORACLEenv var still wins.4. Automated release pipeline (NEW)
.github/workflows/release.yml— triggered onv*.*.*tag push:pyproject.tomlversion doesn't match the tag (catches "tagged v0.1.1 but pyproject still says 0.1.0" mistakes).uv build. Artifacts uploaded for 30 days.PYPI_TOKENsecret to manage or rotate. Usespypa/gh-action-pypi-publish@release/v1.v1.0.0-rc1) auto-marked.One-time PyPI setup required after this merges, before tagging v0.1.0:
jamjet-labs, Repositoryengram, Workflowrelease.yml, EnvironmentpypiInstructions are also in the workflow file header.
Plus
.gitignore: also ignorebenchmarks/reports/*.md(alongside existing*.jsonlrule) — per-run smoke reports shouldn't pollute git.uv.lockregenerated to match the v0.1.0 version bump from PR feat: Engram v0.1.0 GA — first-class synthesis API + launch readiness #4 (was stale at0.1.0a0).Test plan
--strictcleanci.yml,release.yml) parse cleanly viayaml.safe_loadjamjet-labs/jamjet/LICENSE— identical0.1.0from pyproject correctly)After merge
The release flow is:
gh repo edit jamjet-labs/engram --visibility public --accept-visibility-change-consequencesgit tag -a v0.1.0 -m "Engram v0.1.0 — first GA release" && git push origin v0.1.0release.ymlworkflow handles the rest — PyPI upload + GitHub Release creation, no manualtwine uploadneeded.Summary by CodeRabbit
Chores
Bug Fixes
Documentation