hecks 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/hecks/adapters/driven/claude_code.rb +72 -7
- data/lib/hecks/adapters/driven/d1.rb +187 -23
- data/lib/hecks/adapters/driven/folder.rb +83 -10
- data/lib/hecks/adapters/driven/google_authentication.rb +33 -12
- data/lib/hecks/adapters/driven/governance_authorization.rb +87 -18
- data/lib/hecks/adapters/driven/heki/journal.rb +13 -4
- data/lib/hecks/adapters/driven/heki/saga_store.rb +56 -10
- data/lib/hecks/adapters/driven/heki/snapshot.rb +1 -1
- data/lib/hecks/adapters/driven/heki.rb +106 -9
- data/lib/hecks/adapters/driven/identity_registry.rb +12 -2
- data/lib/hecks/adapters/driven/in_memory_ordering.rb +25 -3
- data/lib/hecks/adapters/driven/in_process_key_vault.adapter +3 -0
- data/lib/hecks/adapters/driven/in_process_key_vault.rb +53 -0
- data/lib/hecks/adapters/driven/lambda/client.rb +67 -14
- data/lib/hecks/adapters/driven/lambda.rb +82 -35
- data/lib/hecks/adapters/driven/local_storage.rb +83 -10
- data/lib/hecks/adapters/driven/memory.rb +205 -9
- data/lib/hecks/adapters/driven/mock_stripe_adapter.rb +21 -1
- data/lib/hecks/adapters/driven/postgres/codec.rb +27 -11
- data/lib/hecks/adapters/driven/postgres/outbox.rb +40 -2
- data/lib/hecks/adapters/driven/postgres/reconnect.rb +23 -7
- data/lib/hecks/adapters/driven/postgres/schema_builder.rb +14 -14
- data/lib/hecks/adapters/driven/postgres.rb +175 -28
- data/lib/hecks/adapters/driven/prism.rb +50 -11
- data/lib/hecks/adapters/driven/secure_random_identity.rb +3 -0
- data/lib/hecks/adapters/driven/sql_query_builder.rb +34 -22
- data/lib/hecks/adapters/driven/sqlite/codec.rb +38 -10
- data/lib/hecks/adapters/driven/sqlite/projection.rb +60 -32
- data/lib/hecks/adapters/driven/sqlite/schema_builder.rb +12 -12
- data/lib/hecks/adapters/driven/sqlite.rb +181 -21
- data/lib/hecks/adapters/driven/system_clock.rb +3 -0
- data/lib/hecks/adapters/driven/tenant_provisioner.adapter +3 -0
- data/lib/hecks/adapters/driven/tenant_provisioner.rb +66 -0
- data/lib/hecks/adapters/driven.rb +6 -4
- data/lib/hecks/adapters/driving/github_webhook.rb +31 -18
- data/lib/hecks/behaviors/dsl.rb +60 -2
- data/lib/hecks/behaviors/expectations.rb +190 -29
- data/lib/hecks/behaviors/ir.rb +12 -1
- data/lib/hecks/behaviors/rspec.rb +9 -1
- data/lib/hecks/behaviors/runner.rb +21 -2
- data/lib/hecks/behaviors.rb +9 -1
- data/lib/hecks/bluebook/aggregate.rb +43 -13
- data/lib/hecks/bluebook/assembly/aggregate_assembly.rb +17 -10
- data/lib/hecks/bluebook/assembly/build.rb +26 -5
- data/lib/hecks/bluebook/assembly/contract.rb +98 -23
- data/lib/hecks/bluebook/assembly/contracts.rb +59 -52
- data/lib/hecks/bluebook/assembly/marks.rb +159 -30
- data/lib/hecks/bluebook/assembly/specializer.rb +38 -21
- data/lib/hecks/bluebook/assembly.rb +32 -14
- data/lib/hecks/bluebook/attribute.rb +26 -12
- data/lib/hecks/bluebook/behaviour/aggregate.rb +43 -11
- data/lib/hecks/bluebook/behaviour/attribute.rb +18 -5
- data/lib/hecks/bluebook/behaviour/chapter.rb +76 -5
- data/lib/hecks/bluebook/behaviour/command.rb +55 -25
- data/lib/hecks/bluebook/behaviour/domain_port.rb +27 -7
- data/lib/hecks/bluebook/behaviour/entity.rb +20 -8
- data/lib/hecks/bluebook/behaviour/hexagon.rb +30 -4
- data/lib/hecks/bluebook/behaviour/lifecycle.rb +27 -6
- data/lib/hecks/bluebook/behaviour/policy.rb +42 -17
- data/lib/hecks/bluebook/behaviour/process_manager.rb +39 -8
- data/lib/hecks/bluebook/behaviour/query.rb +6 -1
- data/lib/hecks/bluebook/behaviour/read_model.rb +29 -8
- data/lib/hecks/bluebook/behaviour/traits.rb +48 -12
- data/lib/hecks/bluebook/behaviour/value_object.rb +21 -9
- data/lib/hecks/bluebook/capabilities.rb +27 -0
- data/lib/hecks/bluebook/chapter.rb +51 -9
- data/lib/hecks/bluebook/command.rb +62 -17
- data/lib/hecks/bluebook/domain_port.rb +34 -9
- data/lib/hecks/bluebook/dsl/adapter_builder.rb +24 -0
- data/lib/hecks/bluebook/dsl/aggregate_builder/sealing.rb +49 -49
- data/lib/hecks/bluebook/dsl/aggregate_builder.rb +282 -123
- data/lib/hecks/bluebook/dsl/attribute_collector.rb +112 -75
- data/lib/hecks/bluebook/dsl/binding_proxy.rb +81 -2
- data/lib/hecks/bluebook/dsl/bluebook_builder/validation.rb +486 -117
- data/lib/hecks/bluebook/dsl/bluebook_builder.rb +179 -47
- data/lib/hecks/bluebook/dsl/bootstrap_table.rb +116 -0
- data/lib/hecks/bluebook/dsl/command_builder.rb +284 -122
- data/lib/hecks/bluebook/dsl/const_shim.rb +46 -15
- data/lib/hecks/bluebook/dsl/domain_port_builder.rb +90 -25
- data/lib/hecks/bluebook/dsl/entity_builder.rb +191 -61
- data/lib/hecks/bluebook/dsl/generic_dispatch.rb +148 -132
- data/lib/hecks/bluebook/dsl/hecksagon_builder.rb +130 -30
- data/lib/hecks/bluebook/dsl/identity_declaration.rb +38 -21
- data/lib/hecks/bluebook/dsl/lifecycle_builder.rb +27 -4
- data/lib/hecks/bluebook/dsl/policy_builder.rb +86 -36
- data/lib/hecks/bluebook/dsl/port_builder.rb +38 -7
- data/lib/hecks/bluebook/dsl/port_operation_builder.rb +56 -22
- data/lib/hecks/bluebook/dsl/process_manager_builder.rb +111 -47
- data/lib/hecks/bluebook/dsl/query_builder.rb +37 -8
- data/lib/hecks/bluebook/dsl/read_model_builder.rb +127 -52
- data/lib/hecks/bluebook/dsl/rule_reference.rb +97 -43
- data/lib/hecks/bluebook/dsl/translation_builder.rb +150 -44
- data/lib/hecks/bluebook/dsl/value_object_builder.rb +68 -20
- data/lib/hecks/bluebook/dsl/word_gate.rb +59 -53
- data/lib/hecks/bluebook/dsl/world_builder.rb +51 -8
- data/lib/hecks/bluebook/entity.rb +40 -11
- data/lib/hecks/bluebook/expression/ast_json.rb +128 -36
- data/lib/hecks/bluebook/expression/ast_reader.rb +32 -3
- data/lib/hecks/bluebook/expression/canonical_form.rb +55 -16
- data/lib/hecks/bluebook/expression/evaluator.rb +221 -43
- data/lib/hecks/bluebook/expression/resolver/block_predicates.rb +54 -18
- data/lib/hecks/bluebook/expression/resolver.rb +369 -128
- data/lib/hecks/bluebook/hexagon.rb +35 -1
- data/lib/hecks/bluebook/lifecycle.rb +12 -1
- data/lib/hecks/bluebook/meta_validator/adapter_judge.rb +2 -1
- data/lib/hecks/bluebook/meta_validator/judge.rb +126 -108
- data/lib/hecks/bluebook/meta_validator/plan.rb +81 -46
- data/lib/hecks/bluebook/meta_validator/port_judge.rb +3 -2
- data/lib/hecks/bluebook/meta_validator/readings.rb +200 -50
- data/lib/hecks/bluebook/meta_validator/reconstruction.rb +68 -41
- data/lib/hecks/bluebook/meta_validator/shapes.rb +166 -21
- data/lib/hecks/bluebook/meta_validator/syntax_boot.rb +286 -46
- data/lib/hecks/bluebook/meta_validator/translation_judge.rb +11 -10
- data/lib/hecks/bluebook/meta_validator/world_judge.rb +6 -5
- data/lib/hecks/bluebook/meta_validator.rb +235 -139
- data/lib/hecks/bluebook/model_check.rb +434 -104
- data/lib/hecks/bluebook/pattern_subset.rb +32 -10
- data/lib/hecks/bluebook/policy.rb +15 -13
- data/lib/hecks/bluebook/process_manager.rb +27 -14
- data/lib/hecks/bluebook/project_discovery.rb +5 -0
- data/lib/hecks/bluebook/project_loader.rb +40 -0
- data/lib/hecks/bluebook/project_register.rb +50 -6
- data/lib/hecks/bluebook/query.rb +31 -4
- data/lib/hecks/bluebook/read_model.rb +35 -15
- data/lib/hecks/bluebook/reference.rb +26 -13
- data/lib/hecks/bluebook/smoke_test.rb +46 -23
- data/lib/hecks/bluebook/synthesizer.rb +46 -12
- data/lib/hecks/bluebook/translation.rb +34 -5
- data/lib/hecks/bluebook/value_object.rb +29 -11
- data/lib/hecks/bluebook.rb +5 -6
- data/lib/hecks/codemod.rb +138 -50
- data/lib/hecks/construct.rb +21 -7
- data/lib/hecks/corpus.rb +438 -0
- data/lib/hecks/deploy/bluebook/deploy.hecksagon +19 -0
- data/lib/hecks/doc/reference.rb +200 -31
- data/lib/hecks/embryonaut_bluebook.rb +38 -15
- data/lib/hecks/facade/cli_door.rb +69 -10
- data/lib/hecks/facade/cli_runner.rb +105 -24
- data/lib/hecks/facade/command_request.rb +23 -0
- data/lib/hecks/facade/handle.rb +155 -35
- data/lib/hecks/facade/json_door.rb +106 -25
- data/lib/hecks/facade/surface/aggregate_door.rb +50 -27
- data/lib/hecks/facade/surface/chapter.rb +26 -17
- data/lib/hecks/facade/surface.rb +16 -3
- data/lib/hecks/facade.rb +15 -4
- data/lib/hecks/forms/app.rb +46 -30
- data/lib/hecks/forms/command_form_renderer.rb +70 -9
- data/lib/hecks/forms/field_renderer.rb +142 -6
- data/lib/hecks/forms/field_shape.rb +183 -19
- data/lib/hecks/forms/html.rb +51 -7
- data/lib/hecks/forms/index_renderer.rb +14 -2
- data/lib/hecks/forms/page.rb +14 -0
- data/lib/hecks/forms/params.rb +120 -23
- data/lib/hecks/forms/port_argument.rb +14 -2
- data/lib/hecks/forms/query_form_renderer.rb +65 -2
- data/lib/hecks/forms/record_renderer.rb +60 -2
- data/lib/hecks/forms/record_table.rb +28 -1
- data/lib/hecks/forms/reference_options.rb +24 -0
- data/lib/hecks/forms/value_object_shape.rb +13 -3
- data/lib/hecks/forms.rb +24 -4
- data/lib/hecks/fqn.rb +59 -1
- data/lib/hecks/framework/bluebook/governance.bluebook +9 -0
- data/lib/hecks/framework/bluebook/privacy.bluebook +155 -0
- data/lib/hecks/framework/oidc.json +15 -0
- data/lib/hecks/framework.rb +79 -25
- data/lib/hecks/freezer.rb +27 -11
- data/lib/hecks/fuzzing/bounded_exhaustive_expressions.rb +241 -106
- data/lib/hecks/fuzzing/combination_miner.rb +178 -0
- data/lib/hecks/fuzzing/concurrent_dispatch.rb +241 -45
- data/lib/hecks/fuzzing/coverage_campaign.rb +161 -0
- data/lib/hecks/fuzzing/differential.rb +192 -0
- data/lib/hecks/fuzzing/domain_generator.rb +871 -0
- data/lib/hecks/fuzzing/era_boundary.rb +68 -19
- data/lib/hecks/fuzzing/form_census.rb +121 -20
- data/lib/hecks/fuzzing/generated_domain_check.rb +171 -0
- data/lib/hecks/fuzzing/invalid_value_generator.rb +45 -6
- data/lib/hecks/fuzzing/isolated_boot.rb +137 -80
- data/lib/hecks/fuzzing/nondeterministic.rb +79 -0
- data/lib/hecks/fuzzing/persistence_parity.rb +111 -21
- data/lib/hecks/fuzzing/properties/corrections.rb +34 -9
- data/lib/hecks/fuzzing/properties/dispatch_and_mutations.rb +300 -51
- data/lib/hecks/fuzzing/properties/guards.rb +86 -42
- data/lib/hecks/fuzzing/properties/invariants_and_aggregation.rb +80 -32
- data/lib/hecks/fuzzing/properties/lifecycle_and_replay.rb +40 -35
- data/lib/hecks/fuzzing/properties/outbox.rb +70 -32
- data/lib/hecks/fuzzing/properties/querying.rb +82 -28
- data/lib/hecks/fuzzing/properties.rb +84 -51
- data/lib/hecks/fuzzing/qa_settings.rb +164 -0
- data/lib/hecks/fuzzing/replay.rb +241 -133
- data/lib/hecks/fuzzing/rotation_priority.rb +48 -28
- data/lib/hecks/fuzzing/rust_gap_manifest.rb +139 -0
- data/lib/hecks/fuzzing/self_consistency.rb +315 -137
- data/lib/hecks/fuzzing/sequence_generator/adversary.rb +46 -40
- data/lib/hecks/fuzzing/sequence_generator/catalog.rb +18 -11
- data/lib/hecks/fuzzing/sequence_generator/outcome_tracker.rb +13 -12
- data/lib/hecks/fuzzing/sequence_generator/picker.rb +21 -12
- data/lib/hecks/fuzzing/sequence_generator/step_builder.rb +59 -32
- data/lib/hecks/fuzzing/sequence_generator.rb +158 -23
- data/lib/hecks/fuzzing/shrinker.rb +309 -0
- data/lib/hecks/fuzzing/structural_skips.rb +37 -130
- data/lib/hecks/fuzzing/sweep_depth.rb +12 -4
- data/lib/hecks/fuzzing/target_capabilities.rb +107 -29
- data/lib/hecks/fuzzing/value_generator.rb +110 -22
- data/lib/hecks/fuzzing.rb +5 -0
- data/lib/hecks/grammar/evolve.rb +188 -12
- data/lib/hecks/grammar.rb +53 -7
- data/lib/hecks/ir.rb +51 -20
- data/lib/hecks/language/bluebook/bluebook.bluebook +41 -0
- data/lib/hecks/language/bluebook/policy.bluebook +11 -1
- data/lib/hecks/language/bluebook/vocabulary.bluebook +348 -13
- data/lib/hecks/language/hecksagon/hecksagon.bluebook +11 -0
- data/lib/hecks/language/oidc.json +5 -0
- data/lib/hecks/literal.rb +41 -9
- data/lib/hecks/naming.rb +112 -31
- data/lib/hecks/ports/access_control.rb +53 -2
- data/lib/hecks/ports/agent/answers.rb +83 -6
- data/lib/hecks/ports/agent.rb +119 -35
- data/lib/hecks/ports/authentication.rb +44 -4
- data/lib/hecks/ports/authorization.rb +50 -11
- data/lib/hecks/ports/clock.rb +42 -23
- data/lib/hecks/ports/extraction.rb +16 -0
- data/lib/hecks/ports/identity_assignment.rb +23 -2
- data/lib/hecks/ports/identity_generation.rb +17 -3
- data/lib/hecks/ports/identity_resolution.rb +17 -1
- data/lib/hecks/ports/key_vault.port +6 -0
- data/lib/hecks/ports/key_vault.rb +58 -0
- data/lib/hecks/ports/loading.rb +4 -0
- data/lib/hecks/ports/persistence/append_only.rb +172 -8
- data/lib/hecks/ports/persistence/binding_policy.rb +34 -0
- data/lib/hecks/ports/persistence/codec_boundary.rb +178 -0
- data/lib/hecks/ports/persistence/execution.rb +4 -0
- data/lib/hecks/ports/persistence/null_saga_store.rb +12 -1
- data/lib/hecks/ports/persistence/plugin.rb +42 -4
- data/lib/hecks/ports/persistence/plugins/era/era_check.rb +218 -25
- data/lib/hecks/ports/persistence/plugins/era/era_guard/shape_diff.rb +77 -9
- data/lib/hecks/ports/persistence/plugins/era/era_guard.rb +81 -24
- data/lib/hecks/ports/persistence/plugins/era/era_tamper.rb +29 -18
- data/lib/hecks/ports/persistence/plugins/era/lineage.rb +144 -60
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage/era_store.rb +103 -8
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage/field_cache.rb +98 -23
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage/head_compiler.rb +282 -109
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage/mint_transaction.rb +63 -25
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage/provisioning.rb +118 -66
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage/resumable_backfill.rb +51 -28
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage/tail_merge.rb +34 -5
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage/transform_installer.rb +25 -12
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage.rb +129 -34
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage_manager/coverage_check.rb +51 -6
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage_manager/era_resolver.rb +33 -9
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage_manager/merge_coordinator.rb +16 -0
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage_manager/minter.rb +95 -6
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage_manager.rb +25 -2
- data/lib/hecks/ports/persistence/plugins/era/postgres_era.rb +314 -90
- data/lib/hecks/ports/persistence/plugins/era/storage_shape.rb +68 -10
- data/lib/hecks/ports/persistence/plugins/era/translation/audit/approval_digest.rb +9 -3
- data/lib/hecks/ports/persistence/plugins/era/translation/audit/layer_one.rb +9 -2
- data/lib/hecks/ports/persistence/plugins/era/translation/audit/layer_two.rb +48 -8
- data/lib/hecks/ports/persistence/plugins/era/translation/audit/unfed_report.rb +16 -1
- data/lib/hecks/ports/persistence/plugins/era/translation/audit.rb +36 -5
- data/lib/hecks/ports/persistence/plugins/era/translation/reattest.rb +23 -3
- data/lib/hecks/ports/persistence/plugins/era/translation/rule_compiler.rb +58 -19
- data/lib/hecks/ports/persistence/plugins/era/translation/scaffold/differ.rb +96 -5
- data/lib/hecks/ports/persistence/plugins/era/translation/scaffold/renderer.rb +15 -0
- data/lib/hecks/ports/persistence/plugins/era/translation/scaffold/writer.rb +9 -1
- data/lib/hecks/ports/persistence/plugins/era/translation/scaffold.rb +2 -2
- data/lib/hecks/ports/persistence/plugins/era.rb +12 -2
- data/lib/hecks/ports/persistence/remote_runtime.rb +9 -2
- data/lib/hecks/ports/persistence/repository_factory.rb +23 -3
- data/lib/hecks/ports/persistence/state_codec.rb +319 -0
- data/lib/hecks/ports/persistence.rb +36 -1
- data/lib/hecks/ports/projection.rb +61 -7
- data/lib/hecks/ports/query/in_memory.rb +41 -8
- data/lib/hecks/ports/query/ordering.rb +21 -6
- data/lib/hecks/ports/query.rb +35 -0
- data/lib/hecks/ports.rb +1 -0
- data/lib/hecks/projections/bootstrap_table.rb +147 -0
- data/lib/hecks/projections/diagrams.rb +315 -79
- data/lib/hecks/projections/glossary/html.rb +91 -3
- data/lib/hecks/projections/glossary/markdown.rb +50 -3
- data/lib/hecks/projections/glossary/mermaid.rb +49 -1
- data/lib/hecks/projections/glossary/sections.rb +1 -1
- data/lib/hecks/projections/glossary/sentences.rb +110 -5
- data/lib/hecks/projections/glossary.rb +173 -31
- data/lib/hecks/projections/ir.rb +1 -1
- data/lib/hecks/projections/model/deviations.rb +62 -17
- data/lib/hecks/projections/model.rb +75 -21
- data/lib/hecks/projections/oidc.rb +45 -8
- data/lib/hecks/projections/parser_table.rb +53 -12
- data/lib/hecks/projections/reference.rb +15 -3
- data/lib/hecks/projections/rust_vocabulary.rb +646 -0
- data/lib/hecks/projections/shape.rb +10 -2
- data/lib/hecks/projections/statements.rb +69 -22
- data/lib/hecks/projections/vocabulary.rb +26 -9
- data/lib/hecks/projections.rb +5 -3
- data/lib/hecks/projector/cli_projector.rb +245 -37
- data/lib/hecks/projector/docs_projector.rb +154 -28
- data/lib/hecks/projector/exporter.rb +104 -29
- data/lib/hecks/projector/ir_projector.rb +7 -1
- data/lib/hecks/projector/narrate_projector.rb +144 -23
- data/lib/hecks/projector/target.rb +42 -18
- data/lib/hecks/projector.rb +86 -18
- data/lib/hecks/query_ir.rb +94 -47
- data/lib/hecks/query_specification/common/comparators.rb +19 -3
- data/lib/hecks/query_specification/common/comparison.rb +109 -27
- data/lib/hecks/query_specification/common/dsl.rb +65 -9
- data/lib/hecks/query_specification/common/null_policy.rb +61 -15
- data/lib/hecks/query_specification/common/null_semantics.rb +4 -0
- data/lib/hecks/query_specification/common/options.rb +25 -0
- data/lib/hecks/query_specification/field_path.rb +69 -15
- data/lib/hecks/query_specification/hop_path.rb +57 -20
- data/lib/hecks/query_specification/read_model/specification.rb +4 -0
- data/lib/hecks/rendering.rb +9 -3
- data/lib/hecks/router/namespace_installer.rb +16 -3
- data/lib/hecks/router.rb +56 -1
- data/lib/hecks/runtime/aggregate_lock.rb +20 -11
- data/lib/hecks/runtime/boot_gates.rb +21 -3
- data/lib/hecks/runtime/caller.rb +40 -8
- data/lib/hecks/runtime/capability_graph.rb +13 -2
- data/lib/hecks/runtime/command_interpreter/argument_gate.rb +40 -41
- data/lib/hecks/runtime/command_interpreter/mutation_applier.rb +45 -67
- data/lib/hecks/runtime/command_interpreter.rb +195 -113
- data/lib/hecks/runtime/command_rules/admissibility.rb +231 -80
- data/lib/hecks/runtime/command_rules/arithmetic.rb +154 -96
- data/lib/hecks/runtime/command_rules/authorization.rb +38 -17
- data/lib/hecks/runtime/command_rules/emission.rb +18 -1
- data/lib/hecks/runtime/command_rules/references.rb +145 -55
- data/lib/hecks/runtime/command_rules.rb +3 -0
- data/lib/hecks/runtime/dependency_planning.rb +56 -11
- data/lib/hecks/runtime/dispatcher.rb +263 -92
- data/lib/hecks/runtime/entity_element.rb +304 -67
- data/lib/hecks/runtime/entity_interpreter.rb +149 -88
- data/lib/hecks/runtime/errors.rb +37 -23
- data/lib/hecks/runtime/event.rb +15 -10
- data/lib/hecks/runtime/identity.rb +91 -23
- data/lib/hecks/runtime/instance.rb +103 -18
- data/lib/hecks/runtime/interpreting.rb +24 -16
- data/lib/hecks/runtime/invocation.rb +358 -0
- data/lib/hecks/runtime/loader.rb +105 -19
- data/lib/hecks/runtime/outbox.rb +164 -26
- data/lib/hecks/runtime/policy_interpreter.rb +73 -60
- data/lib/hecks/runtime/port_operation_interpreter.rb +42 -19
- data/lib/hecks/runtime/query_interpreter.rb +93 -74
- data/lib/hecks/runtime/reaction_invocation.rb +73 -28
- data/lib/hecks/runtime/read_model_interpreter.rb +60 -44
- data/lib/hecks/runtime/rebuild_sweep.rb +32 -4
- data/lib/hecks/runtime/reference_hop.rb +48 -6
- data/lib/hecks/runtime/refusal_wording.rb +142 -115
- data/lib/hecks/runtime/registry/saga_persistence.rb +32 -21
- data/lib/hecks/runtime/registry/verification.rb +153 -28
- data/lib/hecks/runtime/registry.rb +202 -32
- data/lib/hecks/runtime/remote_dispatcher.rb +125 -24
- data/lib/hecks/runtime/routing.rb +36 -154
- data/lib/hecks/runtime/saga_interpreter/correlation.rb +25 -27
- data/lib/hecks/runtime/saga_interpreter.rb +90 -76
- data/lib/hecks/runtime/saga_pending_dispatch.rb +12 -12
- data/lib/hecks/runtime/tenant_check.rb +33 -13
- data/lib/hecks/runtime/tenant_scope.rb +23 -5
- data/lib/hecks/runtime/value/admission.rb +75 -30
- data/lib/hecks/runtime/value/coercion.rb +555 -142
- data/lib/hecks/runtime/value/entity_list_coercion.rb +132 -60
- data/lib/hecks/runtime/value.rb +71 -21
- data/lib/hecks/runtime.rb +39 -7
- data/lib/hecks/storehouse.rb +368 -72
- data/lib/hecks/tenancy/bluebook/tenancy.bluebook +130 -0
- data/lib/hecks/tenancy/bluebook/tenancy.hecksagon +32 -0
- data/lib/hecks/version.rb +3 -3
- data/lib/hecks/vocabulary.rb +205 -4
- data/lib/hecks.rb +91 -11
- data/lib/rubocop/cop/hecks/fallback_hash_lookup.rb +19 -11
- data/lib/rubocop/cop/hecks/sequential_hash_rename_in_loop.rb +24 -12
- data/lib/rubocop/cop/hecks/thread_shared_ivar_mutation.rb +38 -14
- metadata +28 -2
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# ITS OWN BOUNDED CONTEXT, booted centrally like `Deploy` — never
|
|
2
|
+
# attached via `uses_framework` (a framework member's aggregate folds
|
|
3
|
+
# into the ATTACHING domain's own per-boot registry, framework.rb:43-66
|
|
4
|
+
# — since hecks gives each tenant its own separate `Runtime.boot`, a
|
|
5
|
+
# framework-attached Tenant would exist as a single-row copy inside
|
|
6
|
+
# EVERY tenant's own boot, never as one cross-tenant list, defeating
|
|
7
|
+
# this domain's whole point). `Deploy::Tenant` (deploy.bluebook) stays
|
|
8
|
+
# a SEPARATE, validation-only aggregate — a shape check before
|
|
9
|
+
# provisioning; this is the durable, reactable runtime fact that
|
|
10
|
+
# aggregate's own comment named and deliberately deferred. Two
|
|
11
|
+
# different meanings of "Tenant," on purpose, translated at the one
|
|
12
|
+
# explicit seam `tenancy.hecksagon`'s own `translates` line names.
|
|
13
|
+
Hecks.bluebook "Tenancy" do
|
|
14
|
+
vision "Which tenants exist, which realm and storage each one owns, and whether each is currently allowed to run, is one queryable, historical fact — not scattered across a world-file overlay and a validation-only command."
|
|
15
|
+
|
|
16
|
+
supporting
|
|
17
|
+
|
|
18
|
+
aggregate "Tenant" do
|
|
19
|
+
description "One tenant's durable identity and lifecycle — registered, then active or suspended, until retired."
|
|
20
|
+
|
|
21
|
+
identified_by :slug
|
|
22
|
+
|
|
23
|
+
attribute :slug, Slug
|
|
24
|
+
attribute :domain, DomainName
|
|
25
|
+
attribute :realm, Realm
|
|
26
|
+
attribute :schema, Schema
|
|
27
|
+
attribute :status, Status, default: { value: "Active" }
|
|
28
|
+
|
|
29
|
+
value_object "Slug" do
|
|
30
|
+
attribute :value, String, pattern: '^[a-z][a-z0-9_]*$'
|
|
31
|
+
invariant("a tenant slug is named") { !value.to_s.empty? }
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
value_object "DomainName" do
|
|
35
|
+
attribute :value, String
|
|
36
|
+
invariant("a tenant names the domain it is for") { !value.to_s.empty? }
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
value_object "Realm" do
|
|
40
|
+
attribute :value, String
|
|
41
|
+
invariant("a tenant realm is named") { !value.to_s.empty? }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
value_object "Schema" do
|
|
45
|
+
attribute :value, String, pattern: '^[a-z][a-z0-9_]*$'
|
|
46
|
+
invariant("a schema is named") { !value.to_s.empty? }
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
value_object "Status" do
|
|
50
|
+
attribute :value, String, one_of: ["Active", "Suspended", "Retired"]
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# FIRES AFTER PROVISIONING, NEVER BEFORE — a pure record with no
|
|
54
|
+
# side effects, dispatched by `tenancy.hecksagon`'s own `translates`
|
|
55
|
+
# reaction once `Deploy::Tenant.Provision`'s adapter has already
|
|
56
|
+
# written the world overlay and proven the domain boots. Driving
|
|
57
|
+
# provisioning FROM this command's own emission would need a
|
|
58
|
+
# process manager reacting to it — the exact durable-saga cost
|
|
59
|
+
# `deploy.bluebook`'s own `Tenant` aggregate comment already argued
|
|
60
|
+
# three local, idempotent, single-process steps don't need.
|
|
61
|
+
command "Register" do
|
|
62
|
+
goal "Record that a tenant now exists, after its shape has been validated and its schema provisioned"
|
|
63
|
+
|
|
64
|
+
attribute :slug, Slug
|
|
65
|
+
attribute :domain, DomainName
|
|
66
|
+
attribute :realm, Realm
|
|
67
|
+
attribute :schema, Schema
|
|
68
|
+
|
|
69
|
+
sets :slug
|
|
70
|
+
sets :domain
|
|
71
|
+
sets :realm
|
|
72
|
+
sets :schema
|
|
73
|
+
|
|
74
|
+
emits "TenantRegistered"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# RECORD-ONLY — nothing today reads `status` before dispatch or
|
|
78
|
+
# boot, so suspending a tenant here does not yet stop anything from
|
|
79
|
+
# running. Spelled out in this command's own `goal`, not just a
|
|
80
|
+
# comment, so it survives into generated docs/corpus rather than
|
|
81
|
+
# quietly reading as enforced when it isn't — the exact "a dial
|
|
82
|
+
# says a check runs when nothing runs it" defect class this
|
|
83
|
+
# project has already been burned by once.
|
|
84
|
+
command "Suspend" do
|
|
85
|
+
goal "Record that a tenant should no longer be treated as active — nothing yet enforces this at dispatch or boot time"
|
|
86
|
+
|
|
87
|
+
reference_to Tenant
|
|
88
|
+
|
|
89
|
+
sets :status, to: "Suspended"
|
|
90
|
+
|
|
91
|
+
emits "TenantSuspended"
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
command "Reactivate" do
|
|
95
|
+
goal "Restore a suspended tenant to active"
|
|
96
|
+
|
|
97
|
+
reference_to Tenant
|
|
98
|
+
|
|
99
|
+
sets :status, to: "Active"
|
|
100
|
+
|
|
101
|
+
emits "TenantReactivated"
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# RECORD-ONLY, DELIBERATELY — dropping a live Postgres schema as an
|
|
105
|
+
# automatic side effect of a command handler would break the pure,
|
|
106
|
+
# no-adapter-calls-from-a-handler shape every other command in this
|
|
107
|
+
# corpus holds to. Real teardown, if ever built, is its own
|
|
108
|
+
# separate, deliberately reviewed tool — never implicit here.
|
|
109
|
+
command "Retire" do
|
|
110
|
+
goal "Record that a tenant is permanently done — real schema teardown is a deliberately separate, manually-run tool, never automatic here"
|
|
111
|
+
|
|
112
|
+
reference_to Tenant
|
|
113
|
+
|
|
114
|
+
sets :status, to: "Retired"
|
|
115
|
+
|
|
116
|
+
emits "TenantRetired"
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
query "Active" do
|
|
120
|
+
description "Every tenant currently allowed to run."
|
|
121
|
+
where(status: "Active")
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
query "BySlug" do
|
|
125
|
+
description "One tenant's current record, by its slug."
|
|
126
|
+
attribute :slug, Slug
|
|
127
|
+
where(slug: :slug)
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
Hecks.hecksagon "Tenancy" do
|
|
2
|
+
Tenancy::Tenant.persisted_by("LocalStorage")
|
|
3
|
+
|
|
4
|
+
# THE TRANSLATION SEAM — the one explicit place Deploy's "Tenant"
|
|
5
|
+
# (a validated request) becomes Tenancy's "Tenant" (a durable fact).
|
|
6
|
+
# `on` deliberately omits the "Deploy::" prefix: PolicyInterpreter
|
|
7
|
+
# matches by event name plus the emitting aggregate's own demodulised
|
|
8
|
+
# name only, never the domain (confirmed live — a domain-qualified
|
|
9
|
+
# `on` silently never matches).
|
|
10
|
+
#
|
|
11
|
+
# `with:` IS REQUIRED, confirmed live — `TenantProvisioned`'s own
|
|
12
|
+
# payload is the ANSWER (slug/domain/realm/schema) merged with the
|
|
13
|
+
# port operation's OWN dispatch-time args (database/adapter,
|
|
14
|
+
# PortOperationInterpreter#ask's `ctx.args.merge(spread(answer))`),
|
|
15
|
+
# so the whole payload forwarded verbatim carries two fields
|
|
16
|
+
# `Register` never declares and gets refused outright.
|
|
17
|
+
# CHECKED TOGETHER, NOT IN ISOLATION — `bin/model_check`'s own
|
|
18
|
+
# `deaf_policy` check only sees ONE domain's own emitted events by
|
|
19
|
+
# default, which would flag this reaction as deaf (it reacts to a
|
|
20
|
+
# FOREIGN event, not one Tenancy itself emits). Fixed by
|
|
21
|
+
# `global_emitted_events:`, a cross-domain set `bin/model_check`
|
|
22
|
+
# builds across every target it boots in one run — run `bin/model_check
|
|
23
|
+
# lib/hecks/deploy lib/hecks/tenancy` (both targets, one invocation),
|
|
24
|
+
# not each directory separately, or this reads as a false positive
|
|
25
|
+
# again. Neither `deploy` nor `tenancy` is in
|
|
26
|
+
# `Hecks::Corpus::MODEL_CHECK_KINDS`, so the automatic sweep never
|
|
27
|
+
# reaches this at all, checked or not.
|
|
28
|
+
translates "RegisterProvisionedTenant" do
|
|
29
|
+
on Tenant::TenantProvisioned
|
|
30
|
+
trigger Tenant::Register, with: { slug: :slug, domain: :domain, realm: :realm, schema: :schema }
|
|
31
|
+
end
|
|
32
|
+
end
|
data/lib/hecks/version.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module Hecks
|
|
2
|
-
#
|
|
2
|
+
# **Isolated, on purpose** — the gemspec reads this file directly rather
|
|
3
3
|
# than `require_relative "lib/hecks"` (the whole framework),
|
|
4
|
-
# specifically so evaluating the gemspec never triggers
|
|
4
|
+
# specifically so evaluating the gemspec never triggers any of this
|
|
5
5
|
# gem's own dependencies (prism among them) before Bundler has even
|
|
6
6
|
# resolved what to install. A real, live chicken-and-egg bug caught
|
|
7
7
|
# deploying to a Ruby version that doesn't bundle prism for free
|
|
@@ -12,5 +12,5 @@ module Hecks
|
|
|
12
12
|
# it there, or even in the consuming Gemfile, never closed the gap,
|
|
13
13
|
# because gemspec evaluation happens before anything Bundler
|
|
14
14
|
# resolves is actually loadable yet.
|
|
15
|
-
VERSION = "1.
|
|
15
|
+
VERSION = "1.5.0".freeze
|
|
16
16
|
end
|
data/lib/hecks/vocabulary.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Generated — projected from the language's own Vocabulary aggregate
|
|
2
2
|
# (lib/hecks/language/bluebook/vocabulary.bluebook).
|
|
3
3
|
#
|
|
4
|
-
#
|
|
4
|
+
# Do not edit. spec/vocabulary_table_spec.rb re-projects this in memory
|
|
5
5
|
# and refuses a diff, so an edit here fails the ordinary suite.
|
|
6
6
|
#
|
|
7
7
|
# Plain data on purpose — no requires, no dependency on the model —
|
|
@@ -13,6 +13,7 @@ module Hecks
|
|
|
13
13
|
module Vocabulary
|
|
14
14
|
TABLES = {
|
|
15
15
|
"AggregateDispatchOrder" => [
|
|
16
|
+
{"step"=>"decode_arguments"}.freeze,
|
|
16
17
|
{"step"=>"refuse_unknown_arguments"}.freeze,
|
|
17
18
|
{"step"=>"refuse_absent_arguments"}.freeze,
|
|
18
19
|
{"step"=>"normalize_args"}.freeze,
|
|
@@ -30,6 +31,24 @@ module Hecks
|
|
|
30
31
|
{"step"=>"save"}.freeze,
|
|
31
32
|
{"step"=>"emit"}.freeze
|
|
32
33
|
].freeze,
|
|
34
|
+
"CargoReservedName" => [
|
|
35
|
+
{"name"=>"name"}.freeze,
|
|
36
|
+
{"name"=>"version"}.freeze,
|
|
37
|
+
{"name"=>"edition"}.freeze,
|
|
38
|
+
{"name"=>"path"}.freeze,
|
|
39
|
+
{"name"=>"authors"}.freeze,
|
|
40
|
+
{"name"=>"license"}.freeze,
|
|
41
|
+
{"name"=>"description"}.freeze,
|
|
42
|
+
{"name"=>"default"}.freeze,
|
|
43
|
+
{"name"=>"features"}.freeze,
|
|
44
|
+
{"name"=>"package"}.freeze,
|
|
45
|
+
{"name"=>"lib"}.freeze,
|
|
46
|
+
{"name"=>"bin"}.freeze,
|
|
47
|
+
{"name"=>"dependencies"}.freeze,
|
|
48
|
+
{"name"=>"dev-dependencies"}.freeze,
|
|
49
|
+
{"name"=>"build-dependencies"}.freeze,
|
|
50
|
+
{"name"=>"workspace"}.freeze
|
|
51
|
+
].freeze,
|
|
33
52
|
"Comparison" => [
|
|
34
53
|
{"symbol"=>">=", "compares_less_than"=>"true", "compares_equal"=>"false", "negated"=>"true"}.freeze,
|
|
35
54
|
{"symbol"=>"<=", "compares_less_than"=>"true", "compares_equal"=>"true", "negated"=>"false"}.freeze,
|
|
@@ -56,6 +75,7 @@ module Hecks
|
|
|
56
75
|
{"name"=>"UnknownVerb"}.freeze
|
|
57
76
|
].freeze,
|
|
58
77
|
"EntityDispatchOrder" => [
|
|
78
|
+
{"step"=>"decode_arguments"}.freeze,
|
|
59
79
|
{"step"=>"refuse_unknown_arguments"}.freeze,
|
|
60
80
|
{"step"=>"refuse_absent_arguments"}.freeze,
|
|
61
81
|
{"step"=>"normalize_args"}.freeze,
|
|
@@ -123,6 +143,136 @@ module Hecks
|
|
|
123
143
|
{"name"=>"contains"}.freeze,
|
|
124
144
|
{"name"=>"none_in_state"}.freeze
|
|
125
145
|
].freeze,
|
|
146
|
+
"RefusalSiteArgument" => [
|
|
147
|
+
{"refusal"=>"NotFound", "site"=>"creating_no_identity", "argument"=>"command", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
148
|
+
{"refusal"=>"NotFound", "site"=>"creating_no_identity", "argument"=>"aggregate", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
149
|
+
{"refusal"=>"NotFound", "site"=>"creating_no_identity", "argument"=>"identity", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
150
|
+
{"refusal"=>"AlreadyExists", "site"=>"creating_duplicate", "argument"=>"command", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
151
|
+
{"refusal"=>"AlreadyExists", "site"=>"creating_duplicate", "argument"=>"aggregate", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
152
|
+
{"refusal"=>"AlreadyExists", "site"=>"creating_duplicate", "argument"=>"identity", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
153
|
+
{"refusal"=>"AlreadyExists", "site"=>"creating_duplicate", "argument"=>"offered", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
154
|
+
{"refusal"=>"AlreadyExists", "site"=>"entity_duplicate", "argument"=>"entity", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
155
|
+
{"refusal"=>"AlreadyExists", "site"=>"entity_duplicate", "argument"=>"aggregate", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
156
|
+
{"refusal"=>"AlreadyExists", "site"=>"entity_duplicate", "argument"=>"identity", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
157
|
+
{"refusal"=>"AlreadyExists", "site"=>"entity_duplicate", "argument"=>"offered", "shape"=>"list", "quoting"=>"none", "separator"=>", ", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
158
|
+
{"refusal"=>"NotFound", "site"=>"acting_no_identity", "argument"=>"command", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
159
|
+
{"refusal"=>"NotFound", "site"=>"acting_no_identity", "argument"=>"aggregate", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
160
|
+
{"refusal"=>"NotFound", "site"=>"acting_no_identity", "argument"=>"identity", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
161
|
+
{"refusal"=>"NotFound", "site"=>"record_missing", "argument"=>"aggregate", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
162
|
+
{"refusal"=>"NotFound", "site"=>"record_missing", "argument"=>"identity", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
163
|
+
{"refusal"=>"NotFound", "site"=>"record_missing", "argument"=>"offered", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
164
|
+
{"refusal"=>"NotFound", "site"=>"entity_parent_no_identity", "argument"=>"command", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
165
|
+
{"refusal"=>"NotFound", "site"=>"entity_parent_no_identity", "argument"=>"aggregate", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
166
|
+
{"refusal"=>"NotFound", "site"=>"entity_parent_no_identity", "argument"=>"entity", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
167
|
+
{"refusal"=>"NotFound", "site"=>"entity_parent_no_identity", "argument"=>"identity", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
168
|
+
{"refusal"=>"UnknownVerb", "site"=>"entity_unknown", "argument"=>"aggregate", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
169
|
+
{"refusal"=>"UnknownVerb", "site"=>"entity_unknown", "argument"=>"entity", "shape"=>"scalar", "quoting"=>"inspect", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
170
|
+
{"refusal"=>"NotFound", "site"=>"entity_element_no_identity", "argument"=>"command", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
171
|
+
{"refusal"=>"NotFound", "site"=>"entity_element_no_identity", "argument"=>"entity", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
172
|
+
{"refusal"=>"NotFound", "site"=>"entity_element_no_identity", "argument"=>"identity", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
173
|
+
{"refusal"=>"NotFound", "site"=>"entity_element_missing", "argument"=>"entity", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
174
|
+
{"refusal"=>"NotFound", "site"=>"entity_element_missing", "argument"=>"identity", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
175
|
+
{"refusal"=>"NotFound", "site"=>"entity_element_missing", "argument"=>"wants", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
176
|
+
{"refusal"=>"NotFound", "site"=>"entity_element_missing", "argument"=>"aggregate", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
177
|
+
{"refusal"=>"NotFound", "site"=>"entity_element_missing", "argument"=>"parent_id", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
178
|
+
{"refusal"=>"NotFound", "site"=>"reference_target_missing", "argument"=>"target", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
179
|
+
{"refusal"=>"NotFound", "site"=>"reference_target_missing", "argument"=>"heads", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
180
|
+
{"refusal"=>"NotFound", "site"=>"reference_target_missing", "argument"=>"key", "shape"=>"scalar", "quoting"=>"inspect", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
181
|
+
{"refusal"=>"NotFound", "site"=>"read_model_reference_missing", "argument"=>"aggregate", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
182
|
+
{"refusal"=>"NotFound", "site"=>"read_model_reference_missing", "argument"=>"offered", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
183
|
+
{"refusal"=>"TypeMismatch", "site"=>"read_model_object_reference", "argument"=>"query", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
184
|
+
{"refusal"=>"TypeMismatch", "site"=>"read_model_object_reference", "argument"=>"field", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
185
|
+
{"refusal"=>"UnknownVerb", "site"=>"no_query", "argument"=>"aggregate", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
186
|
+
{"refusal"=>"UnknownVerb", "site"=>"no_query", "argument"=>"query", "shape"=>"scalar", "quoting"=>"inspect", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
187
|
+
{"refusal"=>"UnknownVerb", "site"=>"entity_query_missing", "argument"=>"entity", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
188
|
+
{"refusal"=>"UnknownVerb", "site"=>"entity_query_missing", "argument"=>"query", "shape"=>"scalar", "quoting"=>"inspect", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
189
|
+
{"refusal"=>"UnknownVerb", "site"=>"entity_holds_no_list", "argument"=>"aggregate", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
190
|
+
{"refusal"=>"UnknownVerb", "site"=>"entity_holds_no_list", "argument"=>"entity", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
191
|
+
{"refusal"=>"UnknownVerb", "site"=>"entity_no_command", "argument"=>"entity", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
192
|
+
{"refusal"=>"UnknownVerb", "site"=>"entity_no_command", "argument"=>"command", "shape"=>"scalar", "quoting"=>"inspect", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
193
|
+
{"refusal"=>"UnknownVerb", "site"=>"aggregate_no_command", "argument"=>"aggregate", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
194
|
+
{"refusal"=>"UnknownVerb", "site"=>"aggregate_no_command", "argument"=>"command", "shape"=>"scalar", "quoting"=>"inspect", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
195
|
+
{"refusal"=>"UnknownVerb", "site"=>"port_no_operation", "argument"=>"port", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
196
|
+
{"refusal"=>"UnknownVerb", "site"=>"port_no_operation", "argument"=>"operation", "shape"=>"scalar", "quoting"=>"inspect", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
197
|
+
{"refusal"=>"UnknownVerb", "site"=>"no_domain", "argument"=>"domain", "shape"=>"scalar", "quoting"=>"inspect", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
198
|
+
{"refusal"=>"UnknownVerb", "site"=>"no_domain", "argument"=>"verb", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
199
|
+
{"refusal"=>"UnknownVerb", "site"=>"no_read_model", "argument"=>"domain", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
200
|
+
{"refusal"=>"UnknownVerb", "site"=>"no_read_model", "argument"=>"query", "shape"=>"scalar", "quoting"=>"inspect", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
201
|
+
{"refusal"=>"UnknownVerb", "site"=>"not_fully_qualified", "argument"=>"verb", "shape"=>"scalar", "quoting"=>"inspect", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
202
|
+
{"refusal"=>"UnknownVerb", "site"=>"no_aggregate", "argument"=>"domain", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
203
|
+
{"refusal"=>"UnknownVerb", "site"=>"no_aggregate", "argument"=>"aggregate", "shape"=>"scalar", "quoting"=>"inspect", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
204
|
+
{"refusal"=>"LifecycleRefused", "site"=>"transition_blocked", "argument"=>"command", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
205
|
+
{"refusal"=>"LifecycleRefused", "site"=>"transition_blocked", "argument"=>"field", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
206
|
+
{"refusal"=>"LifecycleRefused", "site"=>"transition_blocked", "argument"=>"current", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
207
|
+
{"refusal"=>"LifecycleRefused", "site"=>"transition_blocked", "argument"=>"allowed", "shape"=>"list", "quoting"=>"inspect", "separator"=>" or ", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
208
|
+
{"refusal"=>"TypeMismatch", "site"=>"value_object_shape", "argument"=>"name", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
209
|
+
{"refusal"=>"TypeMismatch", "site"=>"value_object_shape", "argument"=>"type", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
210
|
+
{"refusal"=>"TypeMismatch", "site"=>"value_object_shape", "argument"=>"offered", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
211
|
+
{"refusal"=>"TypeMismatch", "site"=>"reference_wrong_shape", "argument"=>"command", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
212
|
+
{"refusal"=>"TypeMismatch", "site"=>"reference_wrong_shape", "argument"=>"attribute", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
213
|
+
{"refusal"=>"TypeMismatch", "site"=>"reference_wrong_shape", "argument"=>"offered", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
214
|
+
{"refusal"=>"TypeMismatch", "site"=>"reference_wrong_shape", "argument"=>"known_by", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
215
|
+
{"refusal"=>"TypeMismatch", "site"=>"multi_field_scalar", "argument"=>"type", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
216
|
+
{"refusal"=>"TypeMismatch", "site"=>"composite_identity", "argument"=>"type", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
217
|
+
{"refusal"=>"TypeMismatch", "site"=>"numeric_field", "argument"=>"type", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
218
|
+
{"refusal"=>"TypeMismatch", "site"=>"numeric_field", "argument"=>"field", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
219
|
+
{"refusal"=>"TypeMismatch", "site"=>"numeric_field", "argument"=>"expected", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
220
|
+
{"refusal"=>"TypeMismatch", "site"=>"numeric_field", "argument"=>"offered", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
221
|
+
{"refusal"=>"TypeMismatch", "site"=>"non_finite_field", "argument"=>"type", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
222
|
+
{"refusal"=>"TypeMismatch", "site"=>"non_finite_field", "argument"=>"field", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
223
|
+
{"refusal"=>"TypeMismatch", "site"=>"non_finite_field", "argument"=>"offered", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
224
|
+
{"refusal"=>"TypeMismatch", "site"=>"integer_range", "argument"=>"type", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
225
|
+
{"refusal"=>"TypeMismatch", "site"=>"integer_range", "argument"=>"field", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
226
|
+
{"refusal"=>"TypeMismatch", "site"=>"integer_range", "argument"=>"offered", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
227
|
+
{"refusal"=>"TypeMismatch", "site"=>"pattern_mismatch", "argument"=>"type", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
228
|
+
{"refusal"=>"TypeMismatch", "site"=>"pattern_mismatch", "argument"=>"field", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
229
|
+
{"refusal"=>"TypeMismatch", "site"=>"pattern_mismatch", "argument"=>"pattern", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
230
|
+
{"refusal"=>"TypeMismatch", "site"=>"pattern_mismatch", "argument"=>"offered", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
231
|
+
{"refusal"=>"TypeMismatch", "site"=>"arithmetic_amount", "argument"=>"op", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
232
|
+
{"refusal"=>"TypeMismatch", "site"=>"arithmetic_amount", "argument"=>"target", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
233
|
+
{"refusal"=>"TypeMismatch", "site"=>"arithmetic_amount", "argument"=>"offered", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
234
|
+
{"refusal"=>"TypeMismatch", "site"=>"arithmetic_current", "argument"=>"op", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
235
|
+
{"refusal"=>"TypeMismatch", "site"=>"arithmetic_current", "argument"=>"target", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
236
|
+
{"refusal"=>"TypeMismatch", "site"=>"arithmetic_current", "argument"=>"offered", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
237
|
+
{"refusal"=>"TypeMismatch", "site"=>"arithmetic_shared_field", "argument"=>"op", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
238
|
+
{"refusal"=>"TypeMismatch", "site"=>"arithmetic_shared_field", "argument"=>"target", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
239
|
+
{"refusal"=>"UnknownArgument", "site"=>"unknown_args", "argument"=>"command", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
240
|
+
{"refusal"=>"UnknownArgument", "site"=>"unknown_args", "argument"=>"unknown", "shape"=>"list", "quoting"=>"none", "separator"=>", ", "sorted"=>"true", "when_empty"=>""}.freeze,
|
|
241
|
+
{"refusal"=>"UnknownArgument", "site"=>"unknown_args", "argument"=>"declared", "shape"=>"list", "quoting"=>"none", "separator"=>", ", "sorted"=>"false", "when_empty"=>"none"}.freeze,
|
|
242
|
+
{"refusal"=>"AbsentArgument", "site"=>"absent_args", "argument"=>"command", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
243
|
+
{"refusal"=>"AbsentArgument", "site"=>"absent_args", "argument"=>"absent", "shape"=>"list", "quoting"=>"none", "separator"=>", ", "sorted"=>"true", "when_empty"=>""}.freeze,
|
|
244
|
+
{"refusal"=>"AbsentArgument", "site"=>"absent_args", "argument"=>"declared", "shape"=>"list", "quoting"=>"none", "separator"=>", ", "sorted"=>"false", "when_empty"=>"none"}.freeze,
|
|
245
|
+
{"refusal"=>"InvariantViolation", "site"=>"closed_set_member", "argument"=>"type", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
246
|
+
{"refusal"=>"InvariantViolation", "site"=>"closed_set_member", "argument"=>"admitted", "shape"=>"list", "quoting"=>"inspect", "separator"=>", ", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
247
|
+
{"refusal"=>"InvariantViolation", "site"=>"closed_set_member", "argument"=>"offered", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
248
|
+
{"refusal"=>"InvariantViolation", "site"=>"value_object_invariant", "argument"=>"name", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
249
|
+
{"refusal"=>"InvariantViolation", "site"=>"value_object_invariant", "argument"=>"description", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
250
|
+
{"refusal"=>"InvariantViolation", "site"=>"value_object_invariant", "argument"=>"offered", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
251
|
+
{"refusal"=>"InvariantViolation", "site"=>"admits_declared_set", "argument"=>"name", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
252
|
+
{"refusal"=>"InvariantViolation", "site"=>"admits_declared_set", "argument"=>"admits", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
253
|
+
{"refusal"=>"InvariantViolation", "site"=>"admits_declared_set", "argument"=>"admitted", "shape"=>"list", "quoting"=>"inspect", "separator"=>", ", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
254
|
+
{"refusal"=>"InvariantViolation", "site"=>"admits_declared_set", "argument"=>"offered", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
255
|
+
{"refusal"=>"InvariantViolation", "site"=>"undeclared_set", "argument"=>"name", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
256
|
+
{"refusal"=>"InvariantViolation", "site"=>"undeclared_set", "argument"=>"admits", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
257
|
+
{"refusal"=>"Unauthorized", "site"=>"tenant_required", "argument"=>"query", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
258
|
+
{"refusal"=>"Unauthorized", "site"=>"tenant_required", "argument"=>"field", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
259
|
+
{"refusal"=>"Unauthorized", "site"=>"role_mismatch", "argument"=>"command", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
260
|
+
{"refusal"=>"Unauthorized", "site"=>"role_mismatch", "argument"=>"role", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
261
|
+
{"refusal"=>"Unauthorized", "site"=>"role_mismatch", "argument"=>"caller_role", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
262
|
+
{"refusal"=>"Unauthorized", "site"=>"cross_tenant_reference", "argument"=>"aggregate", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
263
|
+
{"refusal"=>"Unauthorized", "site"=>"cross_tenant_reference", "argument"=>"field", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
264
|
+
{"refusal"=>"Unauthorized", "site"=>"cross_tenant_reference", "argument"=>"tenant", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
265
|
+
{"refusal"=>"Unauthorized", "site"=>"cross_tenant_reference", "argument"=>"attribute", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
266
|
+
{"refusal"=>"Unauthorized", "site"=>"cross_tenant_reference", "argument"=>"target", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
267
|
+
{"refusal"=>"Unauthorized", "site"=>"cross_tenant_reference", "argument"=>"target_field", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
268
|
+
{"refusal"=>"Unauthorized", "site"=>"cross_tenant_reference", "argument"=>"other", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
269
|
+
{"refusal"=>"AttributeAbsent", "site"=>"absent_read", "argument"=>"aggregate", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
270
|
+
{"refusal"=>"AttributeAbsent", "site"=>"absent_read", "argument"=>"field", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
271
|
+
{"refusal"=>"ProjectionAbsent", "site"=>"absent_read", "argument"=>"aggregate", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
272
|
+
{"refusal"=>"ProjectionAbsent", "site"=>"absent_read", "argument"=>"field", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
273
|
+
{"refusal"=>"ProjectionAbsent", "site"=>"absent_read", "argument"=>"reference", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze,
|
|
274
|
+
{"refusal"=>"ProjectionAbsent", "site"=>"absent_read", "argument"=>"remote_field", "shape"=>"scalar", "quoting"=>"none", "separator"=>"", "sorted"=>"false", "when_empty"=>""}.freeze
|
|
275
|
+
].freeze,
|
|
126
276
|
"RefusalTemplate" => [
|
|
127
277
|
{"refusal"=>"NotFound", "site"=>"creating_no_identity", "template"=>"{command} creates a {aggregate} — pass {identity}:"}.freeze,
|
|
128
278
|
{"refusal"=>"AlreadyExists", "site"=>"creating_duplicate", "template"=>"{command} creates a {aggregate} that already exists — {identity} {offered}"}.freeze,
|
|
@@ -170,6 +320,57 @@ module Hecks
|
|
|
170
320
|
{"refusal"=>"AttributeAbsent", "site"=>"absent_read", "template"=>"{aggregate} {field} is absent on this record — declared, not optional, and added since it was written. Backfill it in a translation (backfill :{field}, default: ...), or declare it optional: true"}.freeze,
|
|
171
321
|
{"refusal"=>"ProjectionAbsent", "site"=>"absent_read", "template"=>"{aggregate} {field} is not yet projected on this record — declared via projects :{field}, but no rebuild sweep has populated it. Run the sweep, or read {reference}.{remote_field} directly if this rule cannot wait"}.freeze
|
|
172
322
|
].freeze,
|
|
323
|
+
"RustReservedWord" => [
|
|
324
|
+
{"word"=>"as"}.freeze,
|
|
325
|
+
{"word"=>"break"}.freeze,
|
|
326
|
+
{"word"=>"const"}.freeze,
|
|
327
|
+
{"word"=>"continue"}.freeze,
|
|
328
|
+
{"word"=>"crate"}.freeze,
|
|
329
|
+
{"word"=>"dyn"}.freeze,
|
|
330
|
+
{"word"=>"else"}.freeze,
|
|
331
|
+
{"word"=>"enum"}.freeze,
|
|
332
|
+
{"word"=>"extern"}.freeze,
|
|
333
|
+
{"word"=>"false"}.freeze,
|
|
334
|
+
{"word"=>"fn"}.freeze,
|
|
335
|
+
{"word"=>"for"}.freeze,
|
|
336
|
+
{"word"=>"if"}.freeze,
|
|
337
|
+
{"word"=>"impl"}.freeze,
|
|
338
|
+
{"word"=>"in"}.freeze,
|
|
339
|
+
{"word"=>"let"}.freeze,
|
|
340
|
+
{"word"=>"loop"}.freeze,
|
|
341
|
+
{"word"=>"match"}.freeze,
|
|
342
|
+
{"word"=>"mod"}.freeze,
|
|
343
|
+
{"word"=>"move"}.freeze,
|
|
344
|
+
{"word"=>"mut"}.freeze,
|
|
345
|
+
{"word"=>"pub"}.freeze,
|
|
346
|
+
{"word"=>"ref"}.freeze,
|
|
347
|
+
{"word"=>"return"}.freeze,
|
|
348
|
+
{"word"=>"self"}.freeze,
|
|
349
|
+
{"word"=>"Self"}.freeze,
|
|
350
|
+
{"word"=>"static"}.freeze,
|
|
351
|
+
{"word"=>"struct"}.freeze,
|
|
352
|
+
{"word"=>"super"}.freeze,
|
|
353
|
+
{"word"=>"trait"}.freeze,
|
|
354
|
+
{"word"=>"true"}.freeze,
|
|
355
|
+
{"word"=>"type"}.freeze,
|
|
356
|
+
{"word"=>"unsafe"}.freeze,
|
|
357
|
+
{"word"=>"use"}.freeze,
|
|
358
|
+
{"word"=>"where"}.freeze,
|
|
359
|
+
{"word"=>"while"}.freeze,
|
|
360
|
+
{"word"=>"abstract"}.freeze,
|
|
361
|
+
{"word"=>"become"}.freeze,
|
|
362
|
+
{"word"=>"box"}.freeze,
|
|
363
|
+
{"word"=>"do"}.freeze,
|
|
364
|
+
{"word"=>"final"}.freeze,
|
|
365
|
+
{"word"=>"macro"}.freeze,
|
|
366
|
+
{"word"=>"override"}.freeze,
|
|
367
|
+
{"word"=>"priv"}.freeze,
|
|
368
|
+
{"word"=>"typeof"}.freeze,
|
|
369
|
+
{"word"=>"unsized"}.freeze,
|
|
370
|
+
{"word"=>"virtual"}.freeze,
|
|
371
|
+
{"word"=>"yield"}.freeze,
|
|
372
|
+
{"word"=>"try"}.freeze
|
|
373
|
+
].freeze,
|
|
173
374
|
"SignTest" => [
|
|
174
375
|
{"name"=>"positive?", "compares_via"=>">"}.freeze,
|
|
175
376
|
{"name"=>"negative?", "compares_via"=>"<"}.freeze,
|
|
@@ -196,8 +397,8 @@ module Hecks
|
|
|
196
397
|
].freeze
|
|
197
398
|
}.freeze
|
|
198
399
|
|
|
199
|
-
#
|
|
200
|
-
# one-field vocabulary is the whole of it. Derived
|
|
400
|
+
# The terms — the first field of each row, which for a
|
|
401
|
+
# one-field vocabulary is the whole of it. Derived once and
|
|
201
402
|
# frozen rather than mapped per call: these are constant
|
|
202
403
|
# tables, and a constant that allocates a new array every
|
|
203
404
|
# time it is read is not one.
|