Skip to content

Tools versioning: 0.2.0rc1, tools_version/features, reserved-input tolerance, compat check, compat CI job - #110

Merged
guijacquemet merged 10 commits into
mainfrom
claude/versions
Oct 12, 2026
Merged

guijacquemet merged 10 commits into
mainfrom
claude/versions

Conversation

@guijacquemet

Copy link
Copy Markdown
Contributor

What

Roadmap 18 phase 0.2, in separate commits (each with its own tests):

  1. Version 0.2.0rc1 from one source (labconstrictor_tools/_version.py; pyproject reads it dynamically). OPERATIONS.md: tag names (vX.Y.Z, vX.Y.Z-rc.N), who tags (the maintainer; no tags or releases created here), procedure.
  2. Reserved underscore inputs (_job_dir, _calibration, _axes, any _name) are accepted and ignored by the worker. List is protocol.RESERVED_INPUTS, documented in PROTOCOL.md. convert.undeclared_inputs is the single check that issue Reject undeclared worker inputs instead of silently using defaults #51 must use; load_inputs consults it. A tool cannot declare a reserved name. Reject undeclared worker inputs instead of silently using defaults #51 is NOT implemented here.
  3. tools_version and features in the schema and in the registry entry; describe prints them, doctor shows them (missing = unknown/old). Additive within protocol 1. Feature ids: only reserved_inputs_v1 today. calibration_per_axis and retention_prune are documented as planned and must be added by the PR that implements them.
  4. labconstrictor_tools.compat.check_schema(schema, min_tools_version, required_features, warn_below_tools_version=None) returns ok/warn/refuse with a one-sentence reason. Rules are in PROTOCOL.md; vectors are in the compat section of the proposed conformance.json in HOST_PARITY.md.
  5. CI job compat: installs the newest v* tag (no tag: prints why and passes) and runs tests/compat_matrix.py (old/new schema read both ways, old/new worker requests). Frozen fixtures: tests/fixtures/schemas/tools_0.1 and tools_0.2, pinned by hash.
  6. OPERATIONS.md: how installers pin LC_TOOLS_SPEC to a tag, and the list of app files to change.
    Ledger rows added.

How verified

  • New tests: test_versions, test_reserved_inputs, test_tools_features, test_compat, test_compat_matrix. Each was sabotage-checked (breaking the production code fails them).
  • compat_matrix.py run against a real venv built from the previous main (Tools 0.1.0): all 11 checks pass.
  • black, ruff, mypy, vulture clean. Full suite with coverage: 86.94% (floor 85).
  • Locally 2 failures, neither from this change. test_hardening...foreign_owned_or_group_writable_shared_entry_is_skipped fails the same way on origin/main when run as root. test_sabotage hit a full disk in the sandbox and passed on rerun.
  • origin/main (including Registration: store absolute prefix, interpreter and pythonpath paths #102) merged before opening.

Open points

  • The maintainer must create the tag v0.2.0-rc.1 after merge.
  • App installer edits are documented only (later task).

🤖 Generated with Claude Code

https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN


Generated by Claude Code

claude added 10 commits October 12, 2026 14:10
…and consulted by load_inputs

Lands before #51 (reject undeclared inputs): that check may only reject what convert.undeclared_inputs returns.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
…scribe and doctor print them

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
…um Tools version or features

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
…ozen 0.1 and 0.2 schema fixtures

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
…edger rows

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
….yml conventions

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y2SN8SuEakTdiWy3F2WUqN
@guijacquemet
guijacquemet merged commit 5b86d8c into main Oct 12, 2026
6 checks passed
@guijacquemet
guijacquemet deleted the claude/versions branch October 14, 2026 16:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants