Skip to content

refactor: remove unused extension points - #173

Merged
chamsechan merged 1 commit into
mainfrom
refactor/small-overengineering-cleanup
Oct 5, 2026
Merged

chamsechan merged 1 commit into
mainfrom
refactor/small-overengineering-cleanup

Conversation

@chamsechan

@chamsechan chamsechan commented Oct 5, 2026 •

Copy link
Copy Markdown
Owner

This change removes extension points that had no production user.

  • Batch limit is declared only on the IoBinding. Converter-level max_batch_size was 0 on every production converter, and every production binding uses the default of 64. EffectiveMaxBatchSize, which took the minimum over the binding and both converters, is removed, along with the converter field in the Catalog. A binding limit of 0 still fails the registry audit and deployment preparation.
  • Field Control keeps only ReplaceFields. PatchFields and the ControlFieldStrategy enum were used only by tests. The scaffold's starter template and the first_control.md tutorial use ReplaceFields, so it stays, and so does SharedId(), because the tutorial documents shared command IDs.
  • Port lifetime accepts request and session. global was added to the validation list in f7239a3 alongside the request|session values proposed by the RFC 0012 review (NA-006, repeated embedding of a static policy corpus). It never had defined semantics, runtime support, a producer or a consumer. The deferred cross-request state plan is also scoped to one Operator handle, which is session.
  • Catalog and validate-io drop transport: "operator". Its value never varied.
  • Plan update. Stage 4 (cross-request state) in plans/FRAMEWORK_SIMPLIFICATION_PLAN.md is marked deferred until a real business needs it.

Contract impact:

  • Operator ABI, Pipeline JSON and deployment .conf are unchanged.
  • Catalog no longer reports converter max_batch_size or transport, and validate-io no longer reports transport. No in-repo consumer read these fields.
  • Node and converter authoring APIs lose PatchFields and the converter max_batch_size field (internal, pre-release).
  • A port declaring lifetime: "global" is now rejected at registration.

Tests:

  • The patch-command tests now use a second ReplaceFields command that controls only suffix. Coverage of partial control, empty-payload rejection, validation rollback and concurrent controls is kept.
  • The batch-limit matrix test is reduced to a check that the binding limit is used.
  • The registry test helper now defaults to the standard limit of 64, because converters no longer supply a limit.

Validation: the canonical local gate passed (103/103 CTest tests), and the delivery script reruns it before push. The full adapter test binary also passes in one process (247 tests). Browser workflows were skipped because STUDIO_PLAYWRIGHT_MODULE is unset; no Studio page code changed. Real-model, sanitizer and target-hardware acceptance were not run locally.

🤖 Generated with Claude Code

- Batch limits are declared only on the IoBinding. Converter-level
  max_batch_size had no production user (all converters left it 0), so
  the three-way minimum (EffectiveMaxBatchSize) and its Catalog export go.
  A binding limit of 0 still fails the audit and deployment preparation.
- Field Control keeps only ReplaceFields. PatchFields and the
  ControlFieldStrategy enum were used only by tests; the starter template
  and the tutorial use ReplaceFields. SharedId() stays because the
  tutorial documents shared command IDs.
- Port lifetime accepts request and session; "global" had no producer
  or consumer.
- Catalog and validate-io drop the constant transport: "operator" field.
- The cross-request state plan (stage 4) is marked deferred until a real
  business needs it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@chamsechan
chamsechan merged commit 5d26382 into main Oct 5, 2026
6 checks passed
@chamsechan
chamsechan deleted the refactor/small-overengineering-cleanup branch October 5, 2026 12:15
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.

1 participant