Skip to content

Present native forms from admitted ObjectState declarations - #13

Merged
trissim merged 8 commits into
mainfrom
refactor/native-formbridge
Oct 16, 2026
Merged

trissim merged 8 commits into
mainfrom
refactor/native-formbridge

Conversation

@trissim

@trissim trissim commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Working source checkpoint, not installation-ready

Latest source 1a45b8e0: delete the converter's unused obj_type parameter and stale sibling-inheritance documentation (1+/2−). The prior recorded-declaration correction remains. The wider consumer search found two four-argument PyQt production calls and one test call outside the native Toad graph: PyQt #33 migrates them and the two remaining removed-signature-default API readers to recorded declarations, and aligns dependency ranges. All 24 known call sites now pass exactly three arguments (5 production; no alias/call-resolution proof claimed). 25 FormBridge checks passed in 0.17s; 30 PyQt checks passed in 1.20s. These are source/library checks using an isolated Python 3.12 environment borrowing existing Qt dependencies, not a resolved application build. Toad #670 f76f4d55e pins this exact FormBridge head (with ObjectState #61 82a6213); 107-package resolution and offline lock check pass. No build, installation or app acceptance. Claude review and explicit UNKNOWN disposition remain required.

Accepted leaf checkpoint 3478efcd: bridge conversion and PreviewFieldFormatRequest use existing DottedFieldPath.field_name; inspection and all matching ObjectState lifecycle consumers migrate in #61 973aa098. All twelve copies are removed without a helper/stored path copy. 13 FormBridge checks passed in 0.08s; 113 ObjectState checks passed in 0.94s, including root/nested preview naming and actual string-to-int bridge conversion. Toad #670 6c1748b31 pins these exact heads; 107-package resolution and offline lock check pass. No paired app build or installed acceptance.

Accepted parent checkpoint 360bc06a: preview grouping consumes DottedFieldPath.parent; the local _container_path helper/splitting/root branch is deleted. The owning ObjectState #61 source now shares parent and lineage behavior across all matching consumers. 6 preview checks passed in 0.02s, including actual ObjectState root/nested grouping, with 36 ObjectState checks passed in 0.13s. Static DSL and ScopeKey identities stay distinct.

parameters_for_state yields the original admitted DottedFieldPath alongside the existing parameter-kind information. Its native consumer passes that path into the existing bound field instead of rebuilding it through getattr on the static DSL. No new carrier class, cache, registry or unchecked path constructor. The yielded information is not retained as model state.

The paired Toad #670 f76f4d55e pins the latest source in both pyproject and lock, with ObjectState #61 and paired Textual #134/#135. Resolution and uv lock --check --offline pass; no new candidate build, native constructor/MRO or saved-app acceptance has run. Corrected full cohort source census against actual registry python-introspect 0.3.0: 999 modules, 5,166 original / 5,150 nominally projected classes, 16 OPEN, no parse errors. Earlier evidence used a python-introspect checkout still at 0.2.8; that dependency source input is corrected. Runtime dispatch/effects are not certified by AST.

ParameterFormService.parameters_for_state consumes ObjectState's admitted direct-child topology and declarations. Existing FormBridge visibility and field-kind selection remain the UI owner; no second recursive form tree is extracted or retained for this native boundary. Type selection unwraps Annotated once while preserving the original metadata on the declaration.

Delete _nested_param_info_cache: SignatureAnalyzer already owns declaration caching/lazy help. Existing nested extraction reads its admitted ParameterInfo records rather than raw dataclasses.Field.type (which can still be a forward string); delete the obsolete _get_field_value wrapper. No frontend-specific switch or new field registry.

Owner/consumer search: rg -n 'parameters_for_state|_nested_param_info_cache|_get_field_value|create_parameter_info|extract_nested_parameters' src <Toad root> <OpenHCS root>. The removed cache/helper have zero remaining production readers; all field-kind creation remains in the existing factory. Original package consumers of extract_nested_parameters are within this service.

Existing NRA source/class index: current ObjectState + FormBridge roots 124 modules/549 original and projected classes, zero parse omissions. This is source evidence, not a runtime equivalence proof. Syntax/diff whitespace checked; final package checks and actual settings/sort/provider-model/history journey remain after the complete native family. Based on current main 8cc5632 and its declared ObjectState4.0.1/python-introspect0.3/zmqruntime0.6.5 cohort; installed pins unchanged. Paired ObjectState/Toad drafts required. Codex integrates/installs.

trissim and others added 8 commits October 15, 2026 09:49
Unfinished source, not ready for integration or installation. Factory inheritance and frontend consumer migration are checkpointed. Nullable group editing and canonical topology transitions remain incomplete; Qt helper bodies still need to move into their behavior owners. Syntax and whitespace checked only; no behavioral tests, application or provider runs. Original refactor/native-formbridge branch is unchanged.
Removes public names (ParameterInfoBase, GenericInfo, create_parameter_info,
EnumDispatchService, ParameterServiceABC, the converter's fourth argument),
so this is a minor bump under 0.x.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@trissim

trissim commented Oct 16, 2026

Copy link
Copy Markdown
Contributor Author

claude-forms: checked and merging as part of P45 together with ObjectState #61, FormBridge #13 and PyQt #33. Versions: objectstate 5.0.0, formbridge 0.2.0, pyqt-reactive 0.9.0 (public names removed; see CHANGELOG). Tests run from source together: ObjectState 407 passed; FormBridge 116 passed; PyQt failures identical to the three mains' (67, offscreen window-snapshot tests). Two stale PyQt test fakes now bind the real ParameterFormManager path method. Outside this PR: PyQt main already imports formbridge.forms.raw_display_value, which exists only in open FormBridge #14.

🤖 Generated with Claude Code

@trissim
trissim marked this pull request as ready for review October 16, 2026 22:09
Copilot AI balanced review requested due to automatic review settings October 16, 2026 22:09
@trissim
trissim merged commit ebe2fa9 into main Oct 16, 2026
1 of 11 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

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