Repository navigation
Bind gunbc run --arg against declared parameter types - #13587
gunbai-bot[bot] wants to merge 8 commits into
Conversation
Silent String binding made Int comparisons fail closed on equal decimals (srv2 corrective integrate). The run verb still models argv as text; the seed binder now inhabits String, Int, and Bool and refuses every other declared type. Co-authored-by: Cursor <cursoragent@cursor.com>
Leaf-name matching treated foo.Int and branded String as the kernel types. Binding keys on the authored declaration spelling (DESIGN §4), so a qualified or branded label refuses instead of widening. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Addressed review 78036 (dashboard-only REQUEST_CHANGES): the binder no longer takes the last path segment of the authored type label. Only the exact spellings The seed-row advisory is left as-is: this is the retained |
NonEmptyStr is String where string_non_empty (std.types). A non-empty value inhabits; empty refuses naming the parameter. Refusing the type broke fabric/fci1 recipes (DESIGN §4d over-prohibition). Co-authored-by: Cursor <cursoragent@cursor.com>
|
Inhabitance of a fabric/fci1 recipe: The process reached The bind itself is the unit control |
The binder no longer keeps a NonEmptyStr→string_non_empty table or matches authored labels. Production peels the parameter type expr (alias RHS and where-predicates the checker already owns). Docs name that route, not an unimplemented Int-only shortcut. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Review 78036 (leaf-name cut Review 78044 (hand-copied The seed-row note on review 78036: this is the retained |
|
Review 78044 was against 8bcbd30. Current head 1511229 already removes those three defects:
No further code change for this review. — sent from royal-ram-582 |
The admission fixtures only exercise the text binder; deleting the where-chain peel stayed green. Resolve a small probe and bind through the production path so empty NonEmptyStr reds there. Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 78050 was right on head
— sent from royal-ram-582 |
bind_run_args_for_entry now only derives admissions from the resolved type and calls bind_run_arg_specs_against_admissions. The new seed function is rostered under gunbc.run_arg_typed_bind_seed_growth with a dissolution trigger on a modeled native-CLI run binder. Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 78066 on the prior head:
Head — sent from royal-ram-582 |
Kernel String/Int/Bool use KernelMinted provenance. NonEmptyStr binds only to the std.types declaration and its string_non_empty refinement. Same-spelling user types refuse. CLI docs no longer claim generic where-refinements. Execute --arg n=2 through the production binder. Co-authored-by: Cursor <cursoragent@cursor.com>
|
review 78081 non-blocking note: — sent from royal-ram-582 |
Admission was matching the ground by spelling and skipping deferred
predicates, so an isolated std.types with type String = Int bound n=2 as
Str("2"). Classify the ground via type_reference_identity, require the
predicate population to be exactly string_non_empty, and drop unused
RefinedInt / lookup_type_item.
Co-authored-by: Cursor <cursoragent@cursor.com>
Summary
gunbc run --arg name=valuebinds against the entry function's declared parameter type. KernelString/Int/Boolinhabit as themselves.NonEmptyStr(String where string_non_emptyinstd.types) inhabits through that refinement: a non-empty value binds as hostStr; empty refuses naming the parameter. Other declared types with no admission route refuse (no silentString)..dagbinder.gunbc.cli_dispatch_surfaceowns--argasCliTextValue. Typed inhabitance is seedcli_run::bind_run_args_for_entry.belt_scm_corrective_integrate_cli --arg supersedes=2(Int(2)). Does not break fabric/fci1NonEmptyStrrecipes (DESIGN §4d).Controls
Intgiven a non-numeric value refuses.Intgiven"2"bindsValue::Int(2).Stringcontrol.List<String>,foo.Int) refuses.NonEmptyStrnon-empty binds;NonEmptyStrempty refuses (names parameter andstring_non_empty).Census:
--argrecipes whose parameters are not kernelStringInt (now correctly typed):
belt_scm_corrective_integrate_cli—source: Int,supersedes: IntNonEmptyStr (now admitted through
string_non_empty):cas_store_live_probe—root: NonEmptyStrcp_live_reservation_is_exclusive—root: NonEmptyStrfabric_partition_read_served/fabric_seat_collision_probe—endpoint/partition/receipt: NonEmptyStrfabric_seat_probe—receipt: NonEmptyStrfci1_assert_checkpoint_token/fci1_write_checkpoint_terminal_receipt—token: NonEmptyStrfci1_grade_and_write_cell_receipt/fci1_write_zero_work_receipt—phase: NonEmptyStrfci1_write_canonical_cleanup_receipt/fci1_write_disposable_cleanup_receipt—root: NonEmptyStrString-only
--argrecipes are unchanged.Test plan
cli_run_arg_channel_tests, 17/17)gunbc run … --function fci1_assert_checkpoint_token --arg token=nonemust not refuse inhabitance ofNonEmptyStrbelt_scm_corrective_integrate_cli --arg supersedes=<int>no longer self-contradicts on equal ordinals