Rename: synthpanel → althing#587
Conversation
The project is now Althing (althing.dev). Canonical import module is althing (one word), retiring the synth_panel/synthpanel split from #509. - dist/CLI/module: althing; env vars ALTHING_* (SYNTHPANEL_* honored with a DeprecationWarning via a central bridge in althing/__init__) - synthpanel + synth_panel kept as deprecation shim modules (__path__ redirect + PEP 562 __getattr__ delegation) - synthpanel console script kept as deprecated alias - shim-dist/: transitional PyPI metapackage so pip install synthpanel keeps working (depends on althing); publish.yml builds both dists - site: canonical URLs → althing.dev, _redirects for renamed blog slug and agent-skills path; agent-skills index regenerated - version 1.6.0 → 1.7.0 (rename release) - historical CHANGELOG entries retain the old name Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Deploying synthpanel with
|
| Latest commit: |
7ecde2f
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://4f0fe854.synthpanel.pages.dev |
| Branch Preview URL: | https://rename-althing.synthpanel.pages.dev |
| ) | ||
| d = entry.to_yaml_dict() | ||
| assert "alignment_error" not in d | ||
| assert d["dataset"] == "gss" | ||
| assert d["jsd"] == 0.18 | ||
| assert d["models"] == ["haiku:0.5", "gemini-flash-lite:0.5"] | ||
| assert d["methodology_url"].startswith("https://synthpanel.dev") | ||
| assert d["methodology_url"].startswith("https://althing.dev") |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ab4b217d18
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "althing.packs.instruments" = ["*.yaml"] | ||
| "althing.schemas" = ["*.json"] | ||
| "althing.data" = ["*.json"] | ||
| "althing.agent_assets" = [ |
There was a problem hiding this comment.
Package the Althing director skill
Add a skills/althing/*.md package-data glob here. _INSTALL_SKILLS_SKILLS now includes althing in src/althing/cli/commands.py, but this manifest only packages the five named sub-skills; source-tree tests pass because the file exists in the checkout, while an installed wheel lacks agent_assets/skills/althing/SKILL.md, causing althing install-skills to report an error and exit 1.
Useful? React with 👍 / 👎.
| xdg = os.environ.get("XDG_CONFIG_HOME", "").strip() | ||
| base = Path(xdg).expanduser() if xdg else Path.home() / ".config" | ||
| return base / "synthpanel" / "credentials.json" | ||
| return base / "althing" / "credentials.json" |
There was a problem hiding this comment.
Fall back to the legacy credential store
When upgrading an existing installation that used synthpanel login, credentials remain at ~/.config/synthpanel/credentials.json, but this function now reads only the new Althing path. Users relying on persisted keys therefore immediately receive missing-API-key errors after upgrading; read or migrate the legacy file when the new store is absent for the promised deprecation cycle.
Useful? React with 👍 / 👎.
| def _data_dir() -> Path: | ||
| """Return the root data directory, creating it if needed.""" | ||
| d = Path(os.environ.get("SYNTH_PANEL_DATA_DIR", "~/.synthpanel")).expanduser() | ||
| d = Path(os.environ.get("SYNTH_PANEL_DATA_DIR", "~/.althing")).expanduser() | ||
| d.mkdir(parents=True, exist_ok=True) |
There was a problem hiding this comment.
Preserve access to the legacy data directory
When SYNTH_PANEL_DATA_DIR is unset, existing users' saved results, persona packs, instruments, and attachment references remain under ~/.synthpanel, but the renamed CLI now creates and reads only ~/.althing. As a result, commands such as results list, report, and pack lookup make prior data appear lost after an in-place upgrade; migrate the old directory or use it as a fallback when the new directory has not been initialized.
Useful? React with 👍 / 👎.
…l, E402-clean env bridge, re-rendered site index - synthbench-contract: install 'synthbench-eval @ git+…' — pip >= 25 hard-errors when the requested name doesn't match built metadata, and the bare 'synthbench' PyPI name belongs to an unrelated project (this was a latent break on main, surfaced by the runner's pip upgrade) - env bridge moved to althing/_compat_env (imported first) so __init__ is all-imports and ruff-clean - site/index.html re-rendered from the j2 template (version 1.7.0) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
server.json, MCP server card, agent-skills index, and site markdown re-rendered at 1.7.0; CLAUDE.md rename (grep -I had skipped it as binary during the sweep). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The mechanical rename had collapsed tests/test_synthpanel_shim.py into self-comparisons (althing vs althing) — rewritten as tests/test_rename_shims.py covering both legacy aliases: python -m parity + stderr rename notice, DeprecationWarning on import, __all__ re-export, dotted-path imports, PEP 562 attribute delegation, __path__ shape, and the SYNTHPANEL_* env bridge (incl. explicit-value precedence). Shim __path__ now keeps the shim's own directory first so its __main__.py (which prints the rename notice) isn't shadowed by althing/__main__.py through the redirect. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
CI runs ruff format --check in addition to ruff check; six files from the rename (shim mains, _compat_env, rewritten shim tests, and two sed-touched tests) needed formatting. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
npm/ carries the althing namespace package (published manually as 0.0.1 to claim the name). publish.yml gains a publish-npm job using npm Trusted Publishing — id-token: write, no token — that skips when the version is unchanged so Python releases don't fail on the placeholder. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Resolutions: took main's graceful-degradation semantics for tests/test_synthesis_failure.py with renamed module paths; renamed merge-introduced synth_panel/synthpanel references in the #588 test, docs hint, and CLI hint; noqa'd the intentional en-dash bullet regex (RUF001 — newer ruff flags it; heals main's currently-red lint). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* rename: synthpanel → althing Companion to DataViking-Tech/Althing#587. Repo renamed to althing-registry; pack index and docs now reference althing (pip install althing, ALTHING_REGISTRY_URL, althing.dev). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix: rename pack manifests to althing-pack.yaml + regenerate default.json build_registry.py expects the renamed manifest filename; regenerated default.json from pack sources so the freshness check passes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix: rename icp-synthpanel pack dir to icp-althing (matches renamed pack id) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore: regenerate default.json after pack dir rename Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: OpenClaw <openclaw@dataviking.tech> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* rename: update synthpanel references to althing Companion to DataViking-Tech/Althing#587 (synthpanel → althing). - provider: module/class renamed to althing/AlthingProvider; 'synthpanel' kept as a registry alias and SynthPanelProvider as an import alias; CLI fallback tries the althing binary then the legacy synthpanel one; direct-API import falls back to pre-rename synth_panel installs - leaderboard taxonomy: althing/* display entries plus historical synthpanel/* alias keys so recorded results keep resolving; display names show the new brand for both - config_id: 'synthpanel' accepted as a runner prefix (historical ids); golden test restored to the pre-rename id + new althing golden added - FINDINGS.md: naming note added; generated sections + leaderboard.json regenerated (includes one recomputed SPS per #305 publish policy) - leaderboard-results/, docs/papers, docs/reports, dated audits: untouched (historical record) - core dependency: synthpanel>=0.2.0 → althing>=1.7.0 (merge AFTER althing publishes to PyPI) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore: trigger VRT baseline regeneration Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore: re-trigger CI — althing 1.7.0 now on PyPI Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore(vrt): update baselines via vrt-baseline-update label * style: ruff format pass (CI also runs ruff format --check) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: OpenClaw <openclaw@dataviking.tech> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: dataviking-infra-terraform[bot] <274205567+dataviking-infra-terraform[bot]@users.noreply.github.com>
SynthPanel → Althing
Following the naming-conflict research and legal clearance, the project ships under its new name: Althing (althing.dev).
What changes
althing— one word, retiring thesynth_panel-vs-synthpanelmodule split from Document or shim package/module name mismatch for Python entrypoints #509ALTHING_*(12 vars), withSYNTHPANEL_*honored for one deprecation cycle via a central bridge_redirectsfor the renamed blog slug + agent-skills path, index regeneratedshim-dist/: transitional PyPI metapackage keepingpip install synthpanelworking (depends onalthing); publish.yml builds both distsBack-compat (removed next major)
import synthpanel/import synth_panel— shim modules withDeprecationWarningsynthpanelconsole script — works, prints rename noticeSYNTHPANEL_*env vars — bridged with warningNot changed
synthbenchreferences untouchedTests
Full suite: 3470 passed, 0 failed, coverage 87.74%.
Merge sequencing (important)
althingmust be configured (ownerDataViking-Tech, repoAlthing, workflowpublish.yml, environmentpypi) — see comment in publish.ymlalthingexisting on PyPI — merge that one after this publishes🤖 Generated with Claude Code