You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit e529a61
Browse filesBrowse the repository at this point in the historyBrowse files
fix(python,sdk,metadata): the nudge blind to 1.0, and three rules with a second spelling
The Python agent-context nudge dropped the leading MAJOR from both of its version
coordinates, borrowing the Java port's rationale verbatim. That rationale is
explicitly "a fact peculiar to the JVM": Maven Central carries a historical major
of npm-major + 7, so 7.24.1 and 0.24.1 genuinely name one release. Nothing of the
kind is true here — `generatedBy` is an npm version stamped by the Node CLI,
`installed_metaobjects_version()` reads the PyPI version, and npm and PyPI share
the major by policy.
So 1.0.0 and 2.0.0 compared EQUAL, and — the live case — a Python install upgraded
to 1.0.0 whose context was scaffolded at 0.25.0 got NO advisory at all: the
ordering helper compared (25,0) to (0,0), concluded the 0.25.0 context was newer
than the 1.0.0 install, and took the publish-what-changed exemption. That is the one
upgrade the feature exists to catch, and every Python adopter hits it the moment 1.0
ships. The docstring's own "known bound" was also not the "suppressed once" it
claimed — nothing changes the state, so it was permanent.
Both coordinates carry the major now, and the ordering coordinate is DERIVED from
the equality one instead of parsed by a second regex — differential-checked over 11k
inputs as identical on orderability and on (minor, patch). PEP 440 spelling
equivalence and the publish-what-changed exemption are unchanged.
REMOVED the sdk's `.meta` path helpers, finishing what took the forge record store.
`recordPath` built `<metaRoot>/memory/<type>/<id>.json` — that store's exact layout.
`resolveMetaRoot` walked up for a `.meta` dir `meta init` does not scaffold and this
package's own test asserts is NOT created. Its only caller anywhere was the sdk
README example, wrong twice: it threw before reaching `loadConfig`, and `loadConfig`
reads `<dir>/config.json` while a project's config lives under `.metaobjects/`. The
example now shows `resolveCollection` feeding `loadMemory`, verified by RUNNING it
verbatim against a freshly `meta init`-ed project. Also corrected a comment claiming
the removed storage layer "had no test at all" — the same commit that wrote that
sentence deleted its 217-line test.
Three rules that had a second, unexercised spelling:
- the authored-`<type>.base` refusal, written twice with a byte-identical `why`
and migration path in the JSON and YAML rewriter arms. Detection legitimately
differs and stays per-arm; the verdict has one source now.
- `mavenVersion` inlined the major offset instead of calling `mavenMajor` — in the
file that exists because that offset had four doors and two were wrong. It made
a fifth, and left `mavenMajor` with no production caller at all.
- `release-verify.mjs` reassembled VERSION from the captures of the match it had
just made on VERSION.
- Python's `gen_state_dir_for` re-derived the project root rather than calling
`project_root_for`, whose docstring already claimed it "is anchored here".
python 1998 pass; metadata 2621 pass; sdk 273 pass; scripts typecheck + maven
coordinate tests green.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NTcEKXTQMYt84fAjuw5A2M
0 commit comments