feat(core): describe calculation inputs and outputs without execution
Summary
Python calculation source
describe without execution
input and output metadata
entry identity and source closure
core definition contract
Provides the definition used to derive a local input form and validate calculation requests. Includes the merged #63 and concentrated test suite from #65; based on current main.
Evidence
- Before:
python -m cso_python describefailed with an invalid command error.
After: The refreshed installed-wheel suite and concentrated TypeScript suite cover the definition workflow, including declared legacy input types and regenerated bindings. The two-panel integration test confirms definition/execution identity and independently checks area, volume and mass. - Before: No shared contract represented calculation inputs and outputs before execution.
After: Definition validation rejects mismatched entry identity, invalid defaults and inconsistent source closures. Review fixes use explicit diagnostic codes, validate duplicate manifest diagnostics, guard the no-execution fixture edit, and include subprocess output on JSON failures. Changing a legacy input’s declared numeric type now changes its fingerprint and generated binding signature; ordinary matching-type fingerprints remain unchanged.
Current verification
Merged current main to incorporate the reduced suite and title-viewport CI fix. On cd512e6, CI passes all 675 tests (565 TypeScript and 110 Python), lint, typechecking, package isolation, installed-package consumers and CodeQL. All five original review threads are addressed and resolved.
Merge Danger
Door: two-way
Adds a command and contract. Regenerate bindings for legacy calculations whose declared input type differs from their documented given-row type; their interface fingerprints now include both types.
Blast Radius: authoring
Consumers can use declared numeric types, defaults, units and source identity without running authored calculations.