refactor(lang): make composition the canonical name; deprecate compose#760
Open
kunyuan wants to merge 2 commits into
Open
refactor(lang): make composition the canonical name; deprecate compose#760kunyuan wants to merge 2 commits into
kunyuan wants to merge 2 commits into
Conversation
The verb-form alias compose reads as the inverse of decompose, which it is not: decompose is a claim-level structural equivalence, while this decorator builds an action-level composition template. Flip the canonical/alias relationship so the noun composition is the one true name (step 1 of #759): - runtime/composition.py: composition() is now the real decorator; compose() is a thin wrapper emitting DeprecationWarning. - gaia author composition is the canonical CLI verb; the compose verb still works but surfaces a deprecation warning in the envelope. - SDK cheatsheet, author/CLI help text, and docs present composition as canonical and fix the misleading compose(action_a, action_b) example; gaia_help baseline snapshot re-recorded accordingly. - Tests author with @composition; a new regression test pins the DeprecationWarning and the alias delegation. Refs #759 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Follow-up review pass on the compose→composition flip: - author list: the compositions section now reports kind=composition (was kind=compose; no test or doc pinned the old value). - author compose --interactive help no longer claims the verb surfaces no warnings — the deprecated alias now carries an envelope notice. - compose.py module docstring: CLI surface example and verb inventory now lead with composition. - gaia-formalize-fine skill (SKILL.md, pass-2, pass-4): all authoring guidance now teaches gaia author composition / @composition; this is the surface agents learn the verb from. Refs #759 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Step 1 of #759.
What
Flips the canonical/alias relationship between
composeandcomposition(the alias already existed; this PR only changes which name is the real one):gaia.engine.lang:composition()is now the real decorator;compose()is a thin delegating wrapper that emitsDeprecationWarning. Both stay importable; no package breaks.gaia author compositionis the canonical file-based verb.gaia author composestill works and now carries'gaia author compose' is deprecated; use 'gaia author composition'in the envelopewarnings.compositionshown as canonical; also fixes the previously misleadingcompose(action_a, action_b)example (that call shape never existed).docs/reference/cli/author.md,docs/foundations/gaia-lang/knowledge-and-reasoning.md,docs/for-users/language-reference.mdflipped to composition-first.@composition; new regression test pins the DeprecationWarning + alias delegation.gaia_helpbaseline snapshot re-recorded (author verb list wording).Why
composereads as the inverse ofdecompose, which it is not —decomposeis a claim-level structural equivalence, while this decorator builds an action-level composition template. gaia lang has genuine dual pairs (land/lor,forall/exists,implies/iff), so the morphological pairing actively teaches a wrong mental model. Full analysis in #759; the nouncompositionalso reads naturally oncegeneralizelands as a blessed composition pattern (step 2).Gates
ruff check .+ruff format --check .clean (tracked files)mypy --strictclean on touched filespytest -n auto -m 'pr_gate and not slow': 1162 passed🤖 Generated with Claude Code