Repository navigation
Conversation
|
Checkpoint ef7243c removes 777 old lines (414 additions including tests). Before: widget-type reset handlers mutated state and later dispatched another write; dispatch retained two independently assembled paths; native callbacks duplicated the manager pipeline; enabled paint read checkbox state and treated None as inheritance/True. After: admitted FieldWriteEvent/FieldResetEvent classes own apply; the common stage performs one operation. FieldDispatchContext retains event + root only, with addresses derived from the field and root lookup owned by the existing tree index. Reset handler family, context factory/path algorithms, duplicate native callback, forwarding-only enabled stages and unused initial-value mirror are deleted. EnabledFieldStylingService reads FieldProxy values, owns one subtree traversal and caches only last-painted effective enablement (including ancestors); all isChecked data reads and None-to-True policies are gone from it. DerivationContext no longer overwrites the resolved default scheme. Existing observers release through ExitStack; QSignalBlocker restores nested previous states. NRA syntax/class census and source-selected transformations are retained in the paired ObjectState checkout; runtime service discovery remains dynamic, not statically proved. New-case operation edit: one concrete event apply plus its actual UI action; no dispatcher switch edits. Six source-paired real Qt tests pass: default/explicit schemes, null/Unset/inheritance, native typing/reset click with one hook/publication, unknown-field rejection, open/nested backend enabled changes vs stale checkbox paint, release and nested signal blocking. Actual form journey also passes. Pair with ObjectState cc83a3e and FormBridge 881157d. Full Qt window/list/bridge ports and installed application acceptance remain incomplete; draft is NOT installable as a finished stack. |
Inspection/member correction delivered (not completion of the entire cutover)Pair: ObjectState
Source evidenceNRA ModuleSyntaxIndex/class-family census covers eight production/dependency roots: 1,585 modules; 9,875 before/9,876 after class rows; zero parse errors. Conditional Qt declarations/runtime signal bindings are not claimed statically resolved. Actual C3 MRO and shared implementation identity were checked for base/no-scroll int/double controls. A new numeric leaf supplies its native Qt base, type/range and any real formatter; it does not copy data-state or subscription algorithms. Requested raw rg Owned evidence: Confirmed behavior
Earlier import, signal-ordering, tuple-selection, constructor-tracking and negative-entry failures are retained separately; acceptance is the corrected run, not a silent retry. Test expectation that None means inherited display was replaced by explicit Inherit plus a distinct literal-null assertion; no skip/xfail, weakened count, timeout increase or provider replay. This is source-paired acceptance, not shared installation or full OpenHCS/Core/Qt-window cutover. Existing drafts and saved-data migration remain unfinished. |
Typed field members across the bridge boundaryPaired source checkpoints: ObjectState Owner and consumers
Source evidenceNRA Exact search after migration:
Evidence root: Confirmed behaviorReal Qt form/native typing, production Qt main-thread dispatcher, authenticated localhost ZMQ server/client, declaration-aware DTO decoding, mutation/catalog, reset, original-handle history undo, absence and view/server disposal pass. Explicit wire examples:
Receipts: Remaining application blockerOpenHCS tests do not reach collection. The old installed metaclass-registry lacks |
Declaration-owned checkpoint (source-paired, not installed)Pushed heads: ObjectState 93eae56; FormBridge b5d3af8; PyQt 8690060; OpenHCS f0c07c411. Dependency python-introspect ffcffaa (PR #25). ValueDeclaration compiles annotations once. ParameterOwnerDeclaration owns parameters, field_types and init_field_names (one definition each); constructor and configuration owners share that implementation. FieldValue.of only preserves meaning members or boxes data; it does not classify runtime payloads. Named configuration access is absent on scalar leaves. Declared collection element types own traversal and serialization. DeclaredValue shares metadata/copy/serialization lifecycle between configuration and collection values. InheritedDefault is the single frozen class-keyed default record; ValueDefault/FactoryDefault materialize it. own_default and inherited_default now index declared fields and raise KeyError for unknown names. Their direct resolver callers validate against the requested declaration; configuration_mro(field_name) filters ancestors by their declared fields before reading defaults. All touched production roots have zero Text-line counts (published baseline -> checkpoint): | production root | is_container | is_config_type | literal The two remaining lazy callback-name lines are its definition and register_type_resolver registration; zero callers, imports or exports remain in the touched production family. The normalization wrapper/cache and per-caller fallback expressions are removed. Archived dirty-before normalization count was 45, now 2. FormBridge FieldValue.of: published 3 -> 2; archived dirty-before 15 -> 2. get_base_type_for_lazy: 8 -> 0. metadata.get: 4 -> 2. Combined requested regex: published 15 -> 4; archived dirty-before 27 -> 4. The remaining FieldValue.of sites preserve DTO meaning after mapping JSON data, not payload kind. The remaining metadata.get sites read canonical runtime code-document tokens, not declaration metadata. widget_creation_type consumers: WidgetCreationPipeline.init selected an enum by the string; it now calls param_info.creation_type(WidgetCreationType). ParameterFormManager._create_parameter_widget only logged it; it now logs the actual info class. All four string ClassVars are deleted. NRA syntax/family evidence: 1,590 production/dependency modules, 9,953 classes, no parse errors. AST calls: ObjectState getattr 28 -> 13, FormBridge 17 -> 15; is_container/is_config_type calls zero, is_dataclass exactly one annotation compiler call. Dynamic resolution is not established by these syntax counts; the actual source-paired journey below checks the affected behavior. Exact deleted Python type-name DTO declarations remain: source_type (1), object_state_path_type (2), raw_value_type (2), resolved_value_type (2), object_type (3), help_target_type (1). Genuine mime_type is retained. Deletion gates cover the exact declarations, not all *_type fields. Verification: python-introspect public resolver/analyzer 64 passed; producer declaration/handle/inspection/scopeless/codegen/deletion cases 51 passed; bridge DTO/deletion cases 29 passed; Qt declared/numeric cases 66 passed. Actual source-paired native Qt input, main-thread dispatch, authenticated localhost ZMQ, DTO decode, reset, undo and disposal passed with null, empty string, text None, inheritance and absence. No provider and no installation. Still unfinished: OpenHCS config startup reaches SourceBindingsConfig.post_init but attempts to iterate Inherit in its source-binding normalization. Earlier removed has_value reads in the shared normalization owner are repaired; the whole remaining post-init normalizer needs a directive-aware owner pass. The old test_subfield_semantics.py still imports deleted MISSING/string APIs and fails collection; this failure is retained, not skipped or xfailed. Full OpenHCS/app acceptance and #32/#46 cutover are not complete. doctrine-segment remains the implementation owner. Dependency: python-introspect ffcffaa, draft PR #25. No shared runtime publication/restart performed. |
Companion to ObjectState #62, implementing #32 and then #46. Not ready to merge or install. Constructor-patching scopes are removed; explicit Inherit and Unset replace inheritance through None. Qt input state and native signal subscriptions are being moved into the existing shared input mixin rather than retaining duplicated None decisions. Producer core resolution and six real Qt controls have targeted checks; remaining form-manager, nested/inline input, saved-code, field-handle and installed application paths are unfinished. No complete migration or application-readiness claim. Original sessions and other owners worktrees are untouched.