Conversation
Renames the PyPI distribution from lightcone-prism to lightcone-cli
and the executable from `prism` to `lc`. Reorganises the Python source
into PEP 420 namespace packages under `lightcone.*` so future sibling
packages (e.g. lightcone-ui) can contribute to the same namespace
without coordination.
Layout changes:
- src/prism/cli.py → src/lightcone/cli/commands.py
- src/prism/container.py + src/prism/dagster/* → src/lightcone/engine/
(flat; no nested dagster/ subdir)
- src/prism/eval/ → src/lightcone/eval/ (top-level peer of cli/engine)
- claude/prism/ → claude/lightcone/; skills/agent renamed to lc-*
The engine sub-package has zero imports from cli or eval, so a future
carve-out to a separate lightcone-engine distribution is a packaging
change, not a rewrite. Plugin discovery (`get_plugin_source_dir`) is
extracted to a standalone leaf module `lightcone.cli.plugin` to avoid
a cli↔eval import cycle.
User-facing changes:
- pip install lightcone-cli (was lightcone-prism)
- `lc` executable (was `prism`)
- Config at ~/.lightcone/ (was ~/.prism/); project at .lightcone/
- Project config file lightcone.yaml (was prism.yaml)
- Container image tags lc-{name}-{hash} (was prism-{name}-{hash})
- Skills: /lc-new, /lc-build, /lc-verify, /lc-migrate, /lc-feedback
- Env vars LIGHTCONE_EVAL_* (was PRISM_EVAL_*)
Breaking change with no migration shim: existing users reconfigure via
`lc setup`. The Langfuse telemetry hostname is unchanged — it's an
external deployed service URL.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
LCR-79 Rename Prism codebase (name conflicts with OpenAI's Prism)
The name "Prism" collides heavily with other projects — most relevantly OpenAI's Prism — which makes search, announcement, and branding all harder. Must be renamed before launch, ideally by end of this week. Current state
Scope of the rename
BlockerNeed a new name. Quick sync to pick one before this can start. Why urgentLaunch is May 13. Every day spent on the wrong name compounds rename work and risks leakage of the old name in press/external writeups. |
✅ Eval Results
Graders✅ spec_valid (1.00) Full output |
|
@claude can you review this PR and make sure the documentation and everything was correctly updated to the new structure of the code, and that almost no references to prism are left. |
|
Claude finished @EiffL's task in 3m 59s —— View job PR Review: Rename Prism → lightcone-cliTasks:
Verdict: ✅ Rename is thorough and correctRunning This matches the PR description exactly — the external Cloudflare Worker relay URL is left unchanged pending an ops cut-over. Everything else has been renamed. What was checkedSource code (
Packaging (
Claude plugin (
Documentation
CI / GitHub workflows
Minor observations (non-blocking)
Overall: The rename is complete and consistent. The only "prism" string remaining in committed code is the intentional external service URL, documented as a follow-up ops task. Safe to merge. |
Resolves conflicts from the Prism → lightcone-cli rename (#70): - Updated remaining `prism.dagster.*` imports to `lightcone.engine.*` in QoS/target code brought in from this branch. - Rewrote user-facing `prism target …` help text and messages to use `lc target …`. - Migrated `~/.prism/cache/` → `~/.lightcone/cache/`. - Kept HEAD's QoS-per-constraint design (no account-suffix resolution) and HEAD's `shlex.quote(project_root)` in the sbatch script, while picking up main's lightcone-cli rename of the comment header. - Moved src/prism/dagster/slurm_info.py → src/lightcone/engine/slurm_info.py. - Added the missing module-level logger in commands.py that the branch's `_discover_qos_suggestions` was already using. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Preserves the branch's original authorship (Kangning's commits remain in the first-parent history) while discarding its file contents. The feature work (intent-based targets with dynamic SLURM discovery) is reapplied in subsequent commits against the new lightcone-cli / lightcone.* namespace introduced by #70. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Reapplies the target-enhancement work from the original PR on top of the lightcone-cli/lightcone.* namespace introduced by #70. Tree-content equivalent to the pre-rename branch at a924114, translated to the new package layout and executable name (`lc`). What this adds: * `lightcone.engine.slurm_info` — queries sacctmgr/scontrol/sinfo to discover QoS, resource limits, partitions, and the user's associations. Results cached to `~/.lightcone/cache/<target>.cluster.yaml`. * Targets redesigned: a target now carries `defaults`, a `qos` list of `(name, constraint, slurm_qos, use_for)` entries, and `resource_limits`. Old flat-schema targets auto-migrate on first load. * `lc target add-qos | edit-qos | remove-qos | set-default-qos | refresh` subcommands for managing a target's queues without editing YAML. * `lc run` gains `--qos`, `--constraint`, `--time-limit`, `--account`, `--partition`, `--strategy {fit,switch}`. `fit` keeps the current QoS and reduces resources to stay within its limits; `switch` keeps resources and picks a different eligible QoS. * Runner validates requested resources against the cached QoS limits and applies the chosen strategy before sbatch submission. Auto-refreshes the cluster cache after target creation. * `site_registry` switches from node_types/qos_options to constraint_guidance/suggested_qos, and drops the account_suffixes/resolve_account mechanism (base QoS names are used directly with --constraint). * Setup wizard prompts for default QoS on known clusters and discovers QoS on unknown ones. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
lightcone-prismtolightcone-cliand the executable fromprismtolc.lightcone.*so future sibling packages (e.g.lightcone-ui) can contribute to the same namespace without coordination.src/lightcone/has no__init__.py.lightcone.engine) from the Click surface (lightcone.cli) so a future carve-out to a separatelightcone-enginedistribution is a packaging change, not a rewrite. Engine imports nothing from cli or eval.Layout
User-facing changes
pip install lightcone-prismpip install lightcone-cliprismexecutablelcexecutable~/.prism/,.prism/~/.lightcone/,.lightcone/prism.yamlproject configlightcone.yamlprism-{name}-{hash}container tagslc-{name}-{hash}/prism-new,/prism-build, …/lc-new,/lc-build, …PRISM_EVAL_*env varsLIGHTCONE_EVAL_*Breaking change with no migration shim — existing users reconfigure via
lc setup.Import-cycle avoidance
lightcone.eval.sandboxneeds plugin discovery;lightcone.cli.commandsregisterseval_groupas a subcommand. To keep both import paths acyclic, plugin discovery lives in a standalone leaf modulelightcone.cli.pluginthat imports nothing fromcommands.py.Follow-ups (not in this PR)
Prismtolightcone-cli. GitHub auto-redirects old URLs, but this PR already updates badges and links.prism-telemetry.lightconeresearch.workers.dev) is left unchanged — it's an external deployed service URL. Ops can cut over separately.Test plan
uv sync --all-groupsregeneratesuv.lockuv run ruff check src/ tests/— cleanuv run pytest tests/— 312 passeduv run mypy src/— same 28 pre-existing errors as onmain(none introduced by rename)uv run zensical build— docs build succeedsuv build— wheel shipslightcone/{cli,engine,eval}/with plugin bundle atlightcone/cli/claude/lightcone/and nolightcone/__init__.py(PEP 420 preserved)uv run lc --versionanduv run lc --help— both workimport lightcone.enginesucceeds without importinglightcone.cli(proves the split is real)🤖 Generated with Claude Code
Closes LCR-79