hecks 2.8.0 → 3.0.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/exe/hecks +50 -7
- data/lib/hecks/adapters/driven/claude_code.rb +4 -104
- data/lib/hecks/adapters/driven/d1.rb +44 -237
- data/lib/hecks/adapters/driven/folder.rb +17 -76
- data/lib/hecks/adapters/driven/google_authentication.rb +15 -49
- data/lib/hecks/adapters/driven/governance_authorization.rb +23 -70
- data/lib/hecks/adapters/driven/heki/journal.rb +8 -41
- data/lib/hecks/adapters/driven/heki/saga_store.rb +12 -54
- data/lib/hecks/adapters/driven/heki/snapshot.rb +4 -12
- data/lib/hecks/adapters/driven/heki.rb +13 -42
- data/lib/hecks/adapters/driven/identity_registry.rb +3 -14
- data/lib/hecks/adapters/driven/in_memory_ordering.rb +9 -26
- data/lib/hecks/adapters/driven/in_process_key_vault.rb +2 -14
- data/lib/hecks/adapters/driven/lambda/client.rb +10 -51
- data/lib/hecks/adapters/driven/lambda.rb +10 -84
- data/lib/hecks/adapters/driven/local_storage.rb +5 -40
- data/lib/hecks/adapters/driven/memory.rb +32 -100
- data/lib/hecks/adapters/driven/mock_stripe_adapter.rb +5 -21
- data/lib/hecks/adapters/driven/postgres/codec.rb +6 -28
- data/lib/hecks/adapters/driven/postgres/outbox.rb +3 -12
- data/lib/hecks/adapters/driven/postgres/reconnect.rb +10 -32
- data/lib/hecks/adapters/driven/postgres/schema_builder.rb +34 -108
- data/lib/hecks/adapters/driven/postgres/shared_connection.rb +180 -0
- data/lib/hecks/adapters/driven/postgres.rb +149 -136
- data/lib/hecks/adapters/driven/postgres_era.adapter +4 -15
- data/lib/hecks/adapters/driven/prism.rb +48 -38
- data/lib/hecks/adapters/driven/sql_query_builder.rb +21 -121
- data/lib/hecks/adapters/driven/sqlite/codec.rb +8 -40
- data/lib/hecks/adapters/driven/sqlite/projection.rb +26 -82
- data/lib/hecks/adapters/driven/sqlite/schema_builder.rb +40 -84
- data/lib/hecks/adapters/driven/sqlite.rb +128 -65
- data/lib/hecks/adapters/driven/tenant_provisioner.rb +76 -62
- data/lib/hecks/adapters/driven.rb +5 -36
- data/lib/hecks/adapters/driving/github_webhook.rb +8 -76
- data/lib/hecks/behaviors/dsl.rb +7 -25
- data/lib/hecks/behaviors/expectations.rb +32 -142
- data/lib/hecks/behaviors/ir.rb +7 -20
- data/lib/hecks/behaviors/rspec.rb +6 -17
- data/lib/hecks/behaviors/runner.rb +10 -34
- data/lib/hecks/behaviors.rb +4 -8
- data/lib/hecks/bench/cli.rb +62 -0
- data/lib/hecks/bench/environment.rb +71 -0
- data/lib/hecks/bench/postgres_probe.rb +30 -0
- data/lib/hecks/bench/report.rb +76 -0
- data/lib/hecks/bench/ruby_runner.rb +93 -0
- data/lib/hecks/bench/run.rb +55 -0
- data/lib/hecks/bench/rust_runner.rb +101 -0
- data/lib/hecks/bench/stats.rb +46 -0
- data/lib/hecks/bench/suite.rb +98 -0
- data/lib/hecks/bench/workload.rb +89 -0
- data/lib/hecks/bench.rb +17 -0
- data/lib/hecks/bluebook/aggregate.rb +9 -75
- data/lib/hecks/bluebook/assembly/aggregate_assembly.rb +9 -38
- data/lib/hecks/bluebook/assembly/build.rb +4 -15
- data/lib/hecks/bluebook/assembly/contract.rb +15 -136
- data/lib/hecks/bluebook/assembly/contracts.rb +56 -174
- data/lib/hecks/bluebook/assembly/marks.rb +31 -223
- data/lib/hecks/bluebook/assembly/specializer.rb +6 -52
- data/lib/hecks/bluebook/assembly.rb +6 -45
- data/lib/hecks/bluebook/attribute.rb +12 -61
- data/lib/hecks/bluebook/behaviour/aggregate.rb +39 -39
- data/lib/hecks/bluebook/behaviour/attribute.rb +3 -14
- data/lib/hecks/bluebook/behaviour/chapter.rb +14 -42
- data/lib/hecks/bluebook/behaviour/command.rb +14 -66
- data/lib/hecks/bluebook/behaviour/domain_port.rb +11 -20
- data/lib/hecks/bluebook/behaviour/entity.rb +7 -27
- data/lib/hecks/bluebook/behaviour/hexagon.rb +23 -41
- data/lib/hecks/bluebook/behaviour/lifecycle.rb +15 -40
- data/lib/hecks/bluebook/behaviour/policy.rb +23 -52
- data/lib/hecks/bluebook/behaviour/process_manager.rb +30 -57
- data/lib/hecks/bluebook/behaviour/read_model.rb +25 -31
- data/lib/hecks/bluebook/behaviour/traits.rb +27 -64
- data/lib/hecks/bluebook/behaviour/value_object.rb +5 -24
- data/lib/hecks/bluebook/capabilities.rb +17 -49
- data/lib/hecks/bluebook/chapter.rb +16 -50
- data/lib/hecks/bluebook/command.rb +23 -81
- data/lib/hecks/bluebook/domain_port.rb +49 -67
- data/lib/hecks/bluebook/dsl/aggregate_builder/sealing.rb +50 -229
- data/lib/hecks/bluebook/dsl/aggregate_builder.rb +50 -377
- data/lib/hecks/bluebook/dsl/attribute_collector.rb +33 -204
- data/lib/hecks/bluebook/dsl/binding_proxy.rb +16 -69
- data/lib/hecks/bluebook/dsl/bluebook_builder/validation.rb +96 -708
- data/lib/hecks/bluebook/dsl/bluebook_builder.rb +63 -169
- data/lib/hecks/bluebook/dsl/bootstrap_table.rb +3 -1
- data/lib/hecks/bluebook/dsl/command_builder.rb +74 -546
- data/lib/hecks/bluebook/dsl/const_shim.rb +8 -41
- data/lib/hecks/bluebook/dsl/domain_port_builder.rb +42 -89
- data/lib/hecks/bluebook/dsl/entity_builder.rb +44 -330
- data/lib/hecks/bluebook/dsl/generic_dispatch.rb +20 -269
- data/lib/hecks/bluebook/dsl/hecksagon_builder.rb +148 -197
- data/lib/hecks/bluebook/dsl/identity_declaration.rb +13 -88
- data/lib/hecks/bluebook/dsl/lifecycle_builder.rb +6 -20
- data/lib/hecks/bluebook/dsl/policy_builder.rb +16 -88
- data/lib/hecks/bluebook/dsl/port_builder.rb +2 -6
- data/lib/hecks/bluebook/dsl/port_operation_builder.rb +22 -96
- data/lib/hecks/bluebook/dsl/process_manager_builder.rb +31 -184
- data/lib/hecks/bluebook/dsl/query_builder.rb +38 -43
- data/lib/hecks/bluebook/dsl/read_model_builder.rb +75 -201
- data/lib/hecks/bluebook/dsl/rule_reference.rb +22 -163
- data/lib/hecks/bluebook/dsl/translation_builder.rb +28 -114
- data/lib/hecks/bluebook/dsl/value_object_builder.rb +10 -124
- data/lib/hecks/bluebook/dsl/word_gate.rb +16 -162
- data/lib/hecks/bluebook/dsl/world_builder.rb +46 -111
- data/lib/hecks/bluebook/entity.rb +13 -71
- data/lib/hecks/bluebook/expression/ast_json.rb +24 -190
- data/lib/hecks/bluebook/expression/ast_reader.rb +12 -54
- data/lib/hecks/bluebook/expression/canonical_form.rb +11 -88
- data/lib/hecks/bluebook/expression/evaluator.rb +47 -295
- data/lib/hecks/bluebook/expression/resolver/block_predicates.rb +30 -147
- data/lib/hecks/bluebook/expression/resolver.rb +39 -661
- data/lib/hecks/bluebook/hexagon.rb +18 -33
- data/lib/hecks/bluebook/lifecycle.rb +5 -16
- data/lib/hecks/bluebook/meta_validator/adapter_judge.rb +1 -7
- data/lib/hecks/bluebook/meta_validator/judge.rb +111 -361
- data/lib/hecks/bluebook/meta_validator/plan.rb +33 -162
- data/lib/hecks/bluebook/meta_validator/port_judge.rb +2 -7
- data/lib/hecks/bluebook/meta_validator/readings.rb +56 -342
- data/lib/hecks/bluebook/meta_validator/reconstruction.rb +25 -176
- data/lib/hecks/bluebook/meta_validator/shapes.rb +53 -267
- data/lib/hecks/bluebook/meta_validator/syntax_boot.rb +47 -306
- data/lib/hecks/bluebook/meta_validator/translation_judge.rb +7 -43
- data/lib/hecks/bluebook/meta_validator/verdict_cache.rb +246 -0
- data/lib/hecks/bluebook/meta_validator/world_judge.rb +6 -18
- data/lib/hecks/bluebook/meta_validator.rb +87 -352
- data/lib/hecks/bluebook/model_check/client_profile.rb +6 -21
- data/lib/hecks/bluebook/model_check.rb +122 -596
- data/lib/hecks/bluebook/pattern_subset.rb +49 -69
- data/lib/hecks/bluebook/process_manager.rb +13 -83
- data/lib/hecks/bluebook/project_loader.rb +3 -39
- data/lib/hecks/bluebook/project_register.rb +12 -60
- data/lib/hecks/bluebook/query.rb +27 -51
- data/lib/hecks/bluebook/read_model.rb +57 -81
- data/lib/hecks/bluebook/reference.rb +7 -41
- data/lib/hecks/bluebook/smoke_test.rb +9 -99
- data/lib/hecks/bluebook/synthesizer.rb +13 -62
- data/lib/hecks/bluebook/translation.rb +26 -62
- data/lib/hecks/bluebook/value_object.rb +11 -36
- data/lib/hecks/bluebook.rb +5 -22
- data/lib/hecks/cache_dir.rb +4 -23
- data/lib/hecks/canonical_json.rb +30 -0
- data/lib/hecks/chapters.rb +102 -0
- data/lib/hecks/cli/behaviors.rb +61 -0
- data/lib/hecks/cli/canonicalise.rb +25 -0
- data/lib/hecks/cli/check_engine_agreement.rb +32 -0
- data/lib/hecks/cli/check_era.rb +88 -0
- data/lib/hecks/cli/console.rb +66 -0
- data/lib/hecks/cli/deploy_template_diff.rb +40 -0
- data/lib/hecks/cli/doc_coverage.rb +32 -0
- data/lib/hecks/cli/document.rb +5 -23
- data/lib/hecks/cli/expression_projection.rb +41 -0
- data/lib/hecks/cli/follow.rb +88 -0
- data/lib/hecks/cli/history.rb +44 -0
- data/lib/hecks/cli/ir.rb +4 -6
- data/lib/hecks/cli/mcp.rb +5 -6
- data/lib/hecks/cli/model_check.rb +24 -88
- data/lib/hecks/cli/pattern_cases.rb +47 -0
- data/lib/hecks/cli/present.rb +39 -0
- data/lib/hecks/cli/project_cli.rb +223 -64
- data/lib/hecks/cli/project_diagrams.rb +4 -10
- data/lib/hecks/cli/project_glossary.rb +44 -0
- data/lib/hecks/cli/reference.rb +46 -0
- data/lib/hecks/cli/refresh_projections.rb +44 -0
- data/lib/hecks/cli/refresh_rspec_runtime_baseline.rb +150 -0
- data/lib/hecks/cli/release.rb +70 -0
- data/lib/hecks/cli/release_gem.rb +59 -0
- data/lib/hecks/cli/rspec_io_parallel_files.rb +137 -0
- data/lib/hecks/cli/rspec_shard_files.rb +66 -0
- data/lib/hecks/cli/run.rb +15 -61
- data/lib/hecks/cli/seed_semantics_corpus.rb +71 -0
- data/lib/hecks/cli/serve_query_ir_mcp.rb +30 -0
- data/lib/hecks/cli/shape.rb +70 -0
- data/lib/hecks/cli/smoke_http.rb +230 -0
- data/lib/hecks/cli/smoke_test.rb +7 -19
- data/lib/hecks/cli/spec_example.rb +27 -0
- data/lib/hecks/cli/statements.rb +32 -0
- data/lib/hecks/cli/stores.rb +4 -6
- data/lib/hecks/cli/stress_concurrency_specs.rb +177 -0
- data/lib/hecks/cli.rb +216 -73
- data/lib/hecks/codemod.rb +324 -0
- data/lib/hecks/construct.rb +8 -34
- data/lib/hecks/corpus.rb +423 -0
- data/lib/hecks/deploy/bluebook/deploy.bluebook +617 -158
- data/lib/hecks/deploy/bluebook/deploy.hecksagon +41 -11
- data/lib/hecks/deploy/oidc.json +82 -2
- data/lib/hecks/doc/reference.rb +351 -0
- data/lib/hecks/doors/cli_door.rb +196 -0
- data/lib/hecks/doors/cli_runner.rb +297 -0
- data/lib/hecks/{facade → doors}/command_request.rb +14 -34
- data/lib/hecks/doors/handle.rb +206 -0
- data/lib/hecks/doors/json_door.rb +132 -0
- data/lib/hecks/doors/launcher_options.rb +129 -0
- data/lib/hecks/{cli → doors}/mcp_door.rb +25 -120
- data/lib/hecks/doors/mcp_door_scope.rb +97 -0
- data/lib/hecks/doors/ruby_door/aggregate_door.rb +162 -0
- data/lib/hecks/doors/ruby_door/chapter.rb +72 -0
- data/lib/hecks/doors/ruby_door.rb +77 -0
- data/lib/hecks/doors.rb +61 -0
- data/lib/hecks/embryonaut_bluebook/lock.rb +3 -35
- data/lib/hecks/embryonaut_bluebook/shape.rb +1 -17
- data/lib/hecks/embryonaut_bluebook/vendor.rb +8 -53
- data/lib/hecks/embryonaut_bluebook/vendor_cli.rb +4 -19
- data/lib/hecks/embryonaut_bluebook.rb +5 -72
- data/lib/hecks/engine_agreement.rb +156 -0
- data/lib/hecks/facade.rb +23 -51
- data/lib/hecks/forms/app.rb +21 -76
- data/lib/hecks/forms/banking_presentation.rb +50 -0
- data/lib/hecks/forms/command_form_renderer.rb +10 -29
- data/lib/hecks/forms/field_renderer.rb +17 -156
- data/lib/hecks/forms/field_shape.rb +31 -222
- data/lib/hecks/forms/html.rb +12 -47
- data/lib/hecks/forms/index_renderer.rb +1 -4
- data/lib/hecks/forms/page.rb +3 -9
- data/lib/hecks/forms/params.rb +14 -60
- data/lib/hecks/forms/port_argument.rb +2 -19
- data/lib/hecks/forms/query_form_renderer.rb +4 -79
- data/lib/hecks/forms/record_renderer.rb +8 -75
- data/lib/hecks/forms/record_table.rb +7 -50
- data/lib/hecks/forms/reference_options.rb +3 -30
- data/lib/hecks/forms/value_object_shape.rb +8 -35
- data/lib/hecks/forms.rb +5 -33
- data/lib/hecks/fqn.rb +5 -12
- data/lib/hecks/framework/bluebook/compliance.bluebook +16 -65
- data/lib/hecks/framework/bluebook/console_settings.bluebook +47 -134
- data/lib/hecks/framework/bluebook/framework.hecksagon +5 -14
- data/lib/hecks/framework/bluebook/governance.bluebook +13 -34
- data/lib/hecks/framework/bluebook/identity.bluebook +11 -26
- data/lib/hecks/framework/bluebook/privacy.bluebook +8 -33
- data/lib/hecks/framework.rb +11 -80
- data/lib/hecks/freezer.rb +5 -39
- data/lib/hecks/fuzzing/bounded_exhaustive_expressions.rb +393 -0
- data/lib/hecks/fuzzing/combination_miner.rb +86 -0
- data/lib/hecks/fuzzing/concurrent_dispatch.rb +214 -0
- data/lib/hecks/fuzzing/coverage_campaign.rb +143 -0
- data/lib/hecks/fuzzing/differential.rb +156 -0
- data/lib/hecks/fuzzing/domain_generator.rb +615 -0
- data/lib/hecks/fuzzing/era_boundary.rb +71 -0
- data/lib/hecks/fuzzing/form_census.rb +136 -0
- data/lib/hecks/fuzzing/generated_domain_check.rb +93 -0
- data/lib/hecks/fuzzing/invalid_value_generator.rb +64 -0
- data/lib/hecks/fuzzing/isolated_boot.rb +301 -0
- data/lib/hecks/fuzzing/nondeterministic.rb +51 -0
- data/lib/hecks/fuzzing/outside_world.rb +45 -0
- data/lib/hecks/fuzzing/persistence_parity.rb +102 -0
- data/lib/hecks/fuzzing/properties/corrections.rb +88 -0
- data/lib/hecks/fuzzing/properties/dispatch_and_mutations.rb +314 -0
- data/lib/hecks/fuzzing/properties/guards.rb +190 -0
- data/lib/hecks/fuzzing/properties/invariants_and_aggregation.rb +300 -0
- data/lib/hecks/fuzzing/properties/lifecycle_and_replay.rb +93 -0
- data/lib/hecks/fuzzing/properties/outbox.rb +89 -0
- data/lib/hecks/fuzzing/properties/querying.rb +175 -0
- data/lib/hecks/fuzzing/properties.rb +162 -0
- data/lib/hecks/fuzzing/qa_settings.rb +123 -0
- data/lib/hecks/fuzzing/replay.rb +505 -0
- data/lib/hecks/fuzzing/rotation_priority.rb +48 -0
- data/lib/hecks/fuzzing/rust_gap_manifest.rb +108 -0
- data/lib/hecks/fuzzing/self_consistency.rb +339 -0
- data/lib/hecks/fuzzing/sequence_generator/adversary.rb +385 -0
- data/lib/hecks/fuzzing/sequence_generator/catalog.rb +132 -0
- data/lib/hecks/fuzzing/sequence_generator/outcome_tracker.rb +95 -0
- data/lib/hecks/fuzzing/sequence_generator/picker.rb +77 -0
- data/lib/hecks/fuzzing/sequence_generator/query_binding.rb +109 -0
- data/lib/hecks/fuzzing/sequence_generator/step_builder.rb +237 -0
- data/lib/hecks/fuzzing/sequence_generator.rb +189 -0
- data/lib/hecks/fuzzing/shrinker.rb +166 -0
- data/lib/hecks/fuzzing/structural_skips.rb +33 -0
- data/lib/hecks/fuzzing/sweep_depth.rb +43 -0
- data/lib/hecks/fuzzing/target_capabilities.rb +163 -0
- data/lib/hecks/fuzzing/value_generator.rb +216 -0
- data/lib/hecks/fuzzing.rb +23 -0
- data/lib/hecks/grammar/evolve.rb +336 -0
- data/lib/hecks/grammar/expression.bluebook +15 -40
- data/lib/hecks/grammar/translation.bluebook +3 -6
- data/lib/hecks/grammar.rb +16 -41
- data/lib/hecks/hecks/adapters/codebase/codemods.rb +45 -0
- data/lib/hecks/hecks/adapters/codebase/conformance.rb +71 -0
- data/lib/hecks/hecks/adapters/codebase/corpus_tasks.rb +202 -0
- data/lib/hecks/hecks/adapters/codebase/gem_registry.rb +80 -0
- data/lib/hecks/hecks/adapters/codebase/kernel_tables.rb +54 -0
- data/lib/hecks/hecks/adapters/codebase/language.rb +240 -0
- data/lib/hecks/hecks/adapters/codebase/npm_registry.rb +102 -0
- data/lib/hecks/hecks/adapters/codebase/publishing.rb +142 -0
- data/lib/hecks/hecks/adapters/codebase/regeneration.rb +67 -0
- data/lib/hecks/hecks/adapters/codebase/release_facts.rb +90 -0
- data/lib/hecks/hecks/adapters/codebase/ruby_child.rb +83 -0
- data/lib/hecks/hecks/adapters/codebase/secret_vault.rb +36 -0
- data/lib/hecks/hecks/adapters/codebase/source_tree.adapter +7 -0
- data/lib/hecks/hecks/adapters/codebase/source_tree.rb +189 -0
- data/lib/hecks/hecks/adapters/codebase/sqlite_fixture.rb +71 -0
- data/lib/hecks/hecks/adapters/codebase/style.rb +171 -0
- data/lib/hecks/hecks/adapters/codebase/test_runner.rb +55 -0
- data/lib/hecks/hecks/adapters/codebase/test_suite.rb +165 -0
- data/lib/hecks/hecks/adapters/codebase/tree.rb +111 -0
- data/lib/hecks/hecks/adapters/console_capture.rb +79 -0
- data/lib/hecks/hecks/adapters/deploy_toolchain.adapter +7 -0
- data/lib/hecks/hecks/adapters/deploy_toolchain.rb +108 -0
- data/lib/hecks/hecks/adapters/git.adapter +7 -0
- data/lib/hecks/hecks/adapters/git.rb +102 -0
- data/lib/hecks/hecks/adapters/host_http.adapter +7 -0
- data/lib/hecks/hecks/adapters/host_http.rb +65 -0
- data/lib/hecks/hecks/adapters/in_process_boot.adapter +7 -0
- data/lib/hecks/hecks/adapters/in_process_boot.rb +197 -0
- data/lib/hecks/hecks/adapters/in_process_operations.rb +202 -0
- data/lib/hecks/hecks/adapters/journal_store/changes.rb +143 -0
- data/lib/hecks/hecks/adapters/journal_store/compaction.rb +145 -0
- data/lib/hecks/hecks/adapters/journal_store/edge_audit.rb +132 -0
- data/lib/hecks/hecks/adapters/journal_store/examination.rb +135 -0
- data/lib/hecks/hecks/adapters/journal_store/held_domain.rb +163 -0
- data/lib/hecks/hecks/adapters/journal_store/readings.rb +187 -0
- data/lib/hecks/hecks/adapters/journal_store.adapter +7 -0
- data/lib/hecks/hecks/adapters/journal_store.rb +64 -0
- data/lib/hecks/hecks/adapters/local_files.adapter +7 -0
- data/lib/hecks/hecks/adapters/local_files.rb +46 -0
- data/lib/hecks/hecks/adapters/pg_admin.adapter +7 -0
- data/lib/hecks/hecks/adapters/pg_admin.rb +245 -0
- data/lib/hecks/hecks/adapters/process_pool.adapter +7 -0
- data/lib/hecks/hecks/adapters/process_pool.rb +119 -0
- data/lib/hecks/hecks/adapters/rust_toolchain.adapter +7 -0
- data/lib/hecks/hecks/adapters/rust_toolchain.rb +179 -0
- data/lib/hecks/hecks/adapters/rust_workspace.rb +150 -0
- data/lib/hecks/hecks/adapters/shell.adapter +7 -0
- data/lib/hecks/hecks/adapters/shell.rb +49 -0
- data/lib/hecks/hecks/adapters/terminal.adapter +7 -0
- data/lib/hecks/hecks/adapters/terminal.rb +74 -0
- data/lib/hecks/hecks/codebase.behaviors +172 -0
- data/lib/hecks/hecks/codebase.bluebook +2453 -0
- data/lib/hecks/hecks/context_map.hecksagon +13 -0
- data/lib/hecks/hecks/custodian.behaviors +179 -0
- data/lib/hecks/hecks/custodian.bluebook +1847 -0
- data/lib/hecks/hecks/deploy.behaviors +74 -0
- data/lib/hecks/hecks/deploy.world +12 -0
- data/lib/hecks/hecks/environments/memory.world +10 -0
- data/lib/hecks/hecks/governance.world +7 -0
- data/lib/hecks/hecks/hecks.behaviors +62 -0
- data/lib/hecks/hecks/hecks.bluebook +124 -0
- data/lib/hecks/hecks/hecks.hecksagon +390 -0
- data/lib/hecks/hecks/hecks.world +42 -0
- data/lib/hecks/ir.rb +14 -83
- data/lib/hecks/kernel_capabilities.rb +194 -0
- data/lib/hecks/language/adapter.bluebook +2 -7
- data/lib/hecks/language/bluebook/aggregate.bluebook +56 -221
- data/lib/hecks/language/bluebook/attaches/paging.bluebook +6 -15
- data/lib/hecks/language/bluebook/bluebook.bluebook +26 -83
- data/lib/hecks/language/bluebook/bluebook.hecksagon +3 -15
- data/lib/hecks/language/bluebook/command.bluebook +27 -144
- data/lib/hecks/language/bluebook/entity.bluebook +24 -97
- data/lib/hecks/language/bluebook/policy.bluebook +16 -67
- data/lib/hecks/language/bluebook/process_manager.bluebook +28 -151
- data/lib/hecks/language/bluebook/projection.bluebook +126 -60
- data/lib/hecks/language/bluebook/query.bluebook +19 -43
- data/lib/hecks/language/bluebook/shape.bluebook +23 -73
- data/lib/hecks/language/bluebook/syntax.bluebook +51 -262
- data/lib/hecks/language/bluebook/vocabulary.bluebook +83 -198
- data/lib/hecks/language/hecksagon/adapter_binding.bluebook +3 -10
- data/lib/hecks/language/hecksagon/domain_port.bluebook +14 -19
- data/lib/hecks/language/hecksagon/hecksagon.bluebook +26 -25
- data/lib/hecks/language/hecksagon/port_operation.bluebook +3 -14
- data/lib/hecks/language/oidc.json +35 -0
- data/lib/hecks/language/port.bluebook +4 -17
- data/lib/hecks/language/translation/translation.bluebook +3 -9
- data/lib/hecks/language/translation/translation_aggregate.bluebook +5 -24
- data/lib/hecks/language/world/wiring.bluebook +1 -3
- data/lib/hecks/language/world/world.bluebook +5 -7
- data/lib/hecks/literal.rb +8 -50
- data/lib/hecks/mcp_stdio_guard.rb +4 -41
- data/lib/hecks/naming.rb +29 -137
- data/lib/hecks/persistence_legacy_fixture/regenerate.rb +161 -0
- data/lib/hecks/persistence_legacy_fixture.rb +113 -0
- data/lib/hecks/ports/access_control.rb +7 -23
- data/lib/hecks/ports/agent/answers.rb +5 -23
- data/lib/hecks/ports/agent.rb +47 -172
- data/lib/hecks/ports/authentication.rb +12 -39
- data/lib/hecks/ports/authorization.rb +16 -43
- data/lib/hecks/ports/clock.rb +5 -45
- data/lib/hecks/ports/extraction.rb +7 -12
- data/lib/hecks/ports/identity_assignment.rb +8 -29
- data/lib/hecks/ports/identity_generation.rb +6 -29
- data/lib/hecks/ports/identity_resolution.rb +2 -10
- data/lib/hecks/ports/key_vault.rb +9 -45
- data/lib/hecks/ports/persistence/append_only.rb +61 -64
- data/lib/hecks/ports/persistence/binding_policy.rb +4 -14
- data/lib/hecks/ports/persistence/codec_boundary.rb +20 -80
- data/lib/hecks/ports/persistence/null_saga_store.rb +4 -20
- data/lib/hecks/ports/persistence/plugin.rb +13 -42
- data/lib/hecks/ports/persistence/plugins/era/era_check.rb +44 -144
- data/lib/hecks/ports/persistence/plugins/era/era_guard/shape_diff.rb +15 -115
- data/lib/hecks/ports/persistence/plugins/era/era_guard.rb +20 -85
- data/lib/hecks/ports/persistence/plugins/era/era_tamper.rb +6 -25
- data/lib/hecks/ports/persistence/plugins/era/expected_era.rb +18 -24
- data/lib/hecks/ports/persistence/plugins/era/lineage.rb +55 -181
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/events.rb +77 -0
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage/era_store.rb +12 -122
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage/field_cache.rb +28 -128
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage/head_compiler.rb +73 -474
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage/mint_transaction.rb +31 -124
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage/provisioning.rb +45 -219
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage/resumable_backfill.rb +13 -108
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage/tail_merge.rb +19 -76
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage/transform_installer.rb +9 -49
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage.rb +6 -123
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage_manager/coverage_check.rb +23 -55
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage_manager/era_resolver.rb +14 -72
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage_manager/merge_coordinator.rb +7 -16
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage_manager/minter.rb +43 -127
- data/lib/hecks/ports/persistence/plugins/era/postgres_era/lineage_manager.rb +13 -45
- data/lib/hecks/ports/persistence/plugins/era/postgres_era.rb +131 -555
- data/lib/hecks/ports/persistence/plugins/era/storage_shape.rb +13 -63
- data/lib/hecks/ports/persistence/plugins/era/translation/approval_file.rb +227 -0
- data/lib/hecks/ports/persistence/plugins/era/translation/audit/approval_digest.rb +2 -17
- data/lib/hecks/ports/persistence/plugins/era/translation/audit/layer_one.rb +3 -14
- data/lib/hecks/ports/persistence/plugins/era/translation/audit/layer_two.rb +13 -58
- data/lib/hecks/ports/persistence/plugins/era/translation/audit/unfed_report.rb +3 -17
- data/lib/hecks/ports/persistence/plugins/era/translation/audit.rb +9 -26
- data/lib/hecks/ports/persistence/plugins/era/translation/reattest.rb +50 -47
- data/lib/hecks/ports/persistence/plugins/era/translation/rule_compiler.rb +18 -124
- data/lib/hecks/ports/persistence/plugins/era/translation/scaffold/differ.rb +34 -123
- data/lib/hecks/ports/persistence/plugins/era/translation/scaffold/renderer.rb +5 -12
- data/lib/hecks/ports/persistence/plugins/era/translation/scaffold/writer.rb +3 -9
- data/lib/hecks/ports/persistence/plugins/era/translation/scaffold.rb +2 -14
- data/lib/hecks/ports/persistence/plugins/era/translation.rb +1 -0
- data/lib/hecks/ports/persistence/plugins/era.rb +4 -23
- data/lib/hecks/ports/persistence/postgres_dump/connection.rb +7 -23
- data/lib/hecks/ports/persistence/postgres_dump.rb +4 -35
- data/lib/hecks/ports/persistence/remote_runtime.rb +2 -24
- data/lib/hecks/ports/persistence/repository_factory.rb +8 -27
- data/lib/hecks/ports/persistence/state_codec.rb +47 -108
- data/lib/hecks/ports/persistence.rb +7 -14
- data/lib/hecks/ports/projection.rb +42 -84
- data/lib/hecks/ports/query/in_memory.rb +10 -58
- data/lib/hecks/ports/query/ordering.rb +11 -32
- data/lib/hecks/ports/query.rb +14 -37
- data/lib/hecks/ports.rb +2 -8
- data/lib/hecks/projection_files.rb +285 -0
- data/lib/hecks/projections/bootstrap_table.rb +12 -44
- data/lib/hecks/projections/deploy/fargate/assembly.rb +2 -15
- data/lib/hecks/projections/deploy/fargate/cdn.rb +1 -48
- data/lib/hecks/projections/deploy/fargate/cdn_default.rb +2 -11
- data/lib/hecks/projections/deploy/fargate/check.rb +5 -14
- data/lib/hecks/projections/deploy/fargate/containers.rb +3 -78
- data/lib/hecks/projections/deploy/fargate/extras.rb +3 -44
- data/lib/hecks/projections/deploy/fargate/monitoring.rb +0 -44
- data/lib/hecks/projections/deploy/fargate/settings.rb +2 -54
- data/lib/hecks/projections/deploy/fargate/yaml.rb +13 -58
- data/lib/hecks/projections/deploy/fargate.rb +40 -207
- data/lib/hecks/projections/deploy/lambda.rb +191 -708
- data/lib/hecks/projections/deploy/preview/access_yaml.rb +1 -33
- data/lib/hecks/projections/deploy/preview/containers.rb +6 -111
- data/lib/hecks/projections/deploy/preview/preview.sh.erb +1 -1
- data/lib/hecks/projections/deploy/preview/routing_yaml.rb +4 -56
- data/lib/hecks/projections/deploy/preview/script.rb +2 -14
- data/lib/hecks/projections/deploy/preview/settings.rb +3 -33
- data/lib/hecks/projections/deploy/preview/task_yaml.rb +2 -38
- data/lib/hecks/projections/deploy/preview/template.rb +3 -59
- data/lib/hecks/projections/deploy/preview.rb +2 -67
- data/lib/hecks/projections/deploy/scripts/deploy-service.sh.tmpl +1 -1
- data/lib/hecks/projections/deploy/scripts/expected-era.header +1 -1
- data/lib/hecks/projections/deploy/scripts/hosting.mk.tmpl +3 -3
- data/lib/hecks/projections/deploy/scripts/settings.rb +3 -25
- data/lib/hecks/projections/deploy/scripts/smoke-after-deploy.sh.tmpl +1 -1
- data/lib/hecks/projections/deploy/scripts.rb +4 -57
- data/lib/hecks/projections/deploy/shared.rb +48 -147
- data/lib/hecks/projections/deploy/smoke.rb +4 -61
- data/lib/hecks/projections/deploy/template_diff/comparer.rb +3 -25
- data/lib/hecks/projections/deploy/template_diff/loader.rb +2 -11
- data/lib/hecks/projections/deploy/template_diff.rb +5 -57
- data/lib/hecks/projections/diagrams.rb +22 -584
- data/lib/hecks/projections/glossary/html.rb +14 -130
- data/lib/hecks/projections/glossary/markdown.rb +8 -69
- data/lib/hecks/projections/glossary/mermaid.rb +9 -66
- data/lib/hecks/projections/glossary/sensitivity.rb +5 -34
- data/lib/hecks/projections/glossary/sentences.rb +14 -159
- data/lib/hecks/projections/glossary.rb +30 -222
- data/lib/hecks/projections/ir.rb +3 -10
- data/lib/hecks/projections/model/deviations.rb +16 -43
- data/lib/hecks/projections/model.rb +12 -51
- data/lib/hecks/projections/oidc.rb +12 -56
- data/lib/hecks/projections/parser_table.rb +13 -32
- data/lib/hecks/projections/reference.rb +4 -18
- data/lib/hecks/projections/rust_vocabulary.rb +13 -251
- data/lib/hecks/projections/shape.rb +3 -29
- data/lib/hecks/projections/statements.rb +7 -86
- data/lib/hecks/projections/vocabulary.rb +6 -22
- data/lib/hecks/projections.rb +2 -16
- data/lib/hecks/projector/cli_projector.rb +154 -400
- data/lib/hecks/projector/docs_projector.rb +10 -201
- data/lib/hecks/projector/exporter.rb +42 -134
- data/lib/hecks/projector/ir_projector.rb +2 -9
- data/lib/hecks/projector/narrate_projector.rb +15 -189
- data/lib/hecks/projector/target.rb +13 -76
- data/lib/hecks/projector.rb +30 -121
- data/lib/hecks/quality_control/adapters/agent.adapter +7 -0
- data/lib/hecks/quality_control/adapters/agent.rb +58 -0
- data/lib/hecks/quality_control/adapters/angle_tools.adapter +7 -0
- data/lib/hecks/quality_control/adapters/angle_tools.rb +15 -0
- data/lib/hecks/quality_control/adapters/clearance_recorder.rb +36 -0
- data/lib/hecks/quality_control/adapters/clearance_tools.adapter +7 -0
- data/lib/hecks/quality_control/adapters/clearance_tools.rb +17 -0
- data/lib/hecks/quality_control/adapters/git_pr.adapter +7 -0
- data/lib/hecks/quality_control/adapters/git_pr.rb +226 -0
- data/lib/hecks/quality_control/adapters/github_checks.adapter +9 -0
- data/lib/hecks/quality_control/adapters/github_checks.rb +83 -0
- data/lib/hecks/quality_control/adapters/github_ci_webhook.rb +56 -0
- data/lib/hecks/quality_control/adapters/github_issues.adapter +7 -0
- data/lib/hecks/quality_control/adapters/github_issues.rb +49 -0
- data/lib/hecks/quality_control/adapters/qa_tool.rb +59 -0
- data/lib/hecks/quality_control/adapters/sweep_tools.adapter +7 -0
- data/lib/hecks/quality_control/adapters/sweep_tools.rb +51 -0
- data/lib/hecks/quality_control/adapters/target_tools.adapter +7 -0
- data/lib/hecks/quality_control/adapters/target_tools.rb +43 -0
- data/lib/hecks/quality_control/cli/child.rb +45 -0
- data/lib/hecks/quality_control/cli/qa_concurrency_racer.rb +45 -0
- data/lib/hecks/quality_control/cli/qa_discover_external_domains.rb +248 -0
- data/lib/hecks/quality_control/cli/qa_domain_novelty.rb +163 -0
- data/lib/hecks/quality_control/cli/qa_generated_domains.rb +450 -0
- data/lib/hecks/quality_control/cli/qa_log_bug.rb +195 -0
- data/lib/hecks/quality_control/cli/qa_mine_combinations.rb +220 -0
- data/lib/hecks/quality_control/cli/qa_open_pr.rb +305 -0
- data/lib/hecks/quality_control/cli/qa_postgres_migrate.rb +154 -0
- data/lib/hecks/quality_control/cli/qa_postgres_role.rb +159 -0
- data/lib/hecks/quality_control/cli/qa_pr_check.rb +232 -0
- data/lib/hecks/quality_control/cli/qa_seed_angles.rb +142 -0
- data/lib/hecks/quality_control/cli/qa_seed_targets.rb +69 -0
- data/lib/hecks/quality_control/cli/qa_sweep/all_mode.rb +280 -0
- data/lib/hecks/quality_control/cli/qa_sweep/checks.rb +329 -0
- data/lib/hecks/quality_control/cli/qa_sweep/dials.rb +92 -0
- data/lib/hecks/quality_control/cli/qa_sweep/finding_report.rb +117 -0
- data/lib/hecks/quality_control/cli/qa_sweep/parsing.rb +175 -0
- data/lib/hecks/quality_control/cli/qa_sweep/release_mode.rb +60 -0
- data/lib/hecks/quality_control/cli/qa_sweep.rb +611 -0
- data/lib/hecks/quality_control/cli/qa_tick.rb +274 -0
- data/lib/hecks/quality_control/quality_control.bluebook +2224 -0
- data/lib/hecks/quality_control/quality_control.hecksagon +13 -0
- data/lib/hecks/quality_control/quality_control.ports.hecksagon +54 -0
- data/lib/hecks/query_ir.rb +346 -0
- data/lib/hecks/query_ir_mcp.rb +198 -0
- data/lib/hecks/query_specification/common/comparators.rb +5 -26
- data/lib/hecks/query_specification/common/comparison.rb +35 -143
- data/lib/hecks/query_specification/common/dsl.rb +8 -24
- data/lib/hecks/query_specification/common/null_policy.rb +20 -70
- data/lib/hecks/query_specification/common/options.rb +2 -6
- data/lib/hecks/query_specification/common/where_clause.rb +2 -10
- data/lib/hecks/query_specification/field_path.rb +37 -77
- data/lib/hecks/query_specification/hop_path.rb +12 -76
- data/lib/hecks/release/gem_pin.rb +2 -26
- data/lib/hecks/release/runner/ci_publisher.rb +5 -8
- data/lib/hecks/release/runner/clean_tree.rb +42 -0
- data/lib/hecks/release/runner/commands.rb +2 -4
- data/lib/hecks/release/runner/console.rb +6 -0
- data/lib/hecks/release/runner/gem_publisher.rb +15 -9
- data/lib/hecks/release/runner/npm_publisher.rb +9 -53
- data/lib/hecks/release/runner/preflight.rb +29 -20
- data/lib/hecks/release/runner/published.rb +8 -26
- data/lib/hecks/release/runner/tagger.rb +31 -23
- data/lib/hecks/release/runner.rb +60 -38
- data/lib/hecks/rendering.rb +4 -26
- data/lib/hecks/router/namespace_installer.rb +15 -39
- data/lib/hecks/router.rb +4 -8
- data/lib/hecks/runtime/adapter_lookup.rb +124 -0
- data/lib/hecks/runtime/aggregate_lock.rb +8 -33
- data/lib/hecks/runtime/boot_gates.rb +3 -18
- data/lib/hecks/runtime/caller.rb +19 -59
- data/lib/hecks/runtime/capability_graph.rb +5 -21
- data/lib/hecks/runtime/command_interpreter/argument_gate.rb +16 -78
- data/lib/hecks/runtime/command_interpreter/mutation_applier.rb +27 -160
- data/lib/hecks/runtime/command_interpreter.rb +124 -306
- data/lib/hecks/runtime/command_rules/admissibility.rb +95 -366
- data/lib/hecks/runtime/command_rules/arithmetic.rb +66 -196
- data/lib/hecks/runtime/command_rules/authorization.rb +13 -45
- data/lib/hecks/runtime/command_rules/emission.rb +8 -21
- data/lib/hecks/runtime/command_rules/references.rb +23 -202
- data/lib/hecks/runtime/dependency_planning.rb +50 -104
- data/lib/hecks/runtime/dispatcher.rb +134 -243
- data/lib/hecks/runtime/entity_element.rb +40 -462
- data/lib/hecks/runtime/entity_interpreter.rb +64 -219
- data/lib/hecks/runtime/errors.rb +32 -115
- data/lib/hecks/runtime/event.rb +3 -25
- data/lib/hecks/runtime/identity.rb +18 -154
- data/lib/hecks/runtime/instance.rb +18 -150
- data/lib/hecks/runtime/interpreting.rb +14 -70
- data/lib/hecks/runtime/invocation.rb +28 -164
- data/lib/hecks/runtime/loader.rb +109 -194
- data/lib/hecks/runtime/outbox.rb +39 -262
- data/lib/hecks/runtime/policy_interpreter.rb +43 -202
- data/lib/hecks/runtime/port_operation_interpreter.rb +28 -97
- data/lib/hecks/runtime/query_interpreter.rb +122 -187
- data/lib/hecks/runtime/reaction_invocation.rb +36 -138
- data/lib/hecks/runtime/reaction_outcome.rb +89 -0
- data/lib/hecks/runtime/read_model_interpreter.rb +117 -208
- data/lib/hecks/runtime/rebuild_sweep.rb +8 -54
- data/lib/hecks/runtime/reference_hop.rb +8 -81
- data/lib/hecks/runtime/refusal_wording.rb +28 -87
- data/lib/hecks/runtime/registry/saga_persistence.rb +10 -102
- data/lib/hecks/runtime/registry/verification.rb +213 -227
- data/lib/hecks/runtime/registry/world_defaults.rb +4 -53
- data/lib/hecks/runtime/registry.rb +156 -247
- data/lib/hecks/runtime/remote_dispatcher.rb +68 -154
- data/lib/hecks/runtime/routing.rb +4 -15
- data/lib/hecks/runtime/saga_interpreter/correlation.rb +14 -61
- data/lib/hecks/runtime/saga_interpreter.rb +79 -263
- data/lib/hecks/runtime/saga_pending_dispatch.rb +2 -43
- data/lib/hecks/runtime/tenant_check.rb +6 -68
- data/lib/hecks/runtime/tenant_scope.rb +3 -28
- data/lib/hecks/runtime/value/admission.rb +16 -67
- data/lib/hecks/runtime/value/coercion.rb +162 -760
- data/lib/hecks/runtime/value/entity_list_coercion.rb +26 -219
- data/lib/hecks/runtime/value/field_checks.rb +172 -0
- data/lib/hecks/runtime/value.rb +15 -84
- data/lib/hecks/runtime.rb +35 -69
- data/lib/hecks/rust_build/conformance.rb +158 -0
- data/lib/hecks/rust_build/conformance_fuzz.rb +71 -0
- data/lib/hecks/rust_build/coverage.rb +218 -0
- data/lib/hecks/rust_build/native_build.rb +124 -0
- data/lib/hecks/rust_build/project_rust/root_mod.rb +120 -0
- data/lib/hecks/rust_build/project_rust.rb +332 -0
- data/lib/hecks/rust_build/wasm.rb +105 -0
- data/lib/hecks/rust_build/wasm_browser.rb +113 -0
- data/lib/hecks/rust_build.rb +144 -0
- data/lib/hecks/storehouse.rb +155 -582
- data/lib/hecks/tenancy/bluebook/tenancy.bluebook +10 -34
- data/lib/hecks/tenancy/bluebook/tenancy.hecksagon +6 -23
- data/lib/hecks/three_zero/forms.yml +127 -0
- data/lib/hecks/three_zero.rb +12 -0
- data/lib/hecks/tools/argument_gate_matrix.rb +316 -0
- data/lib/hecks/tools/comment_style.rb +1070 -0
- data/lib/hecks/tools/corpus_report.rb +87 -0
- data/lib/hecks/tools/deploy_recipe.rb +255 -0
- data/lib/hecks/tools/deploy_recipe_lint.rb +282 -0
- data/lib/hecks/tools/drop_implicit_append_fields.rb +95 -0
- data/lib/hecks/tools/era_projection_backfill.rb +94 -0
- data/lib/hecks/tools/era_reattest.rb +146 -0
- data/lib/hecks/tools/evolve_run.rb +189 -0
- data/lib/hecks/tools/fuzz_sweep.rb +373 -0
- data/lib/hecks/tools/heki_compaction.rb +100 -0
- data/lib/hecks/tools/hoist_local_givens.rb +246 -0
- data/lib/hecks/tools/journal_compaction.rb +89 -0
- data/lib/hecks/tools/oidc_manifests.rb +70 -0
- data/lib/hecks/tools/query_ir_run.rb +81 -0
- data/lib/hecks/tools/regeneration_run.rb +166 -0
- data/lib/hecks/tools/rust_comment_style.rb +642 -0
- data/lib/hecks/tools/sequence_script.rb +62 -0
- data/lib/hecks/tools/tail_merge.rb +117 -0
- data/lib/hecks/tools/tenant_provisioning.rb +142 -0
- data/lib/hecks/tools/translation_audit.rb +208 -0
- data/lib/hecks/tools/translation_scaffold.rb +131 -0
- data/lib/hecks/tools.rb +86 -0
- data/lib/hecks/vendoring/git_environment.rb +2 -8
- data/lib/hecks/vendoring/git_source.rb +4 -10
- data/lib/hecks/vendoring.rb +7 -46
- data/lib/hecks/version.rb +3 -14
- data/lib/hecks.rb +52 -90
- data/lib/rubocop/cop/hecks/fallback_hash_lookup.rb +8 -46
- data/lib/rubocop/cop/hecks/sequential_hash_rename_in_loop.rb +11 -80
- data/lib/rubocop/cop/hecks/thread_shared_ivar_mutation.rb +10 -99
- data/qa/settings.yml +66 -0
- data/rust/.cargo/config.toml +6 -0
- data/rust/.gitignore +2 -0
- data/rust/Cargo.lock +54 -0
- data/rust/Cargo.toml +61 -0
- data/rust/build/.cargo/config.toml +3 -0
- data/rust/build/.gitignore +1 -0
- data/rust/build/Cargo.lock +7 -0
- data/rust/build/Cargo.toml +19 -0
- data/rust/build/src/build_artifact.rs +47 -0
- data/rust/build/src/cargo_sync.rs +248 -0
- data/rust/build/src/json.rs +421 -0
- data/rust/build/src/lineage_pass.rs +285 -0
- data/rust/build/src/main.rs +51 -0
- data/rust/build/src/optional_pass.rs +150 -0
- data/rust/build/src/pipeline.rs +264 -0
- data/rust/build/src/reserved_names.rs +76 -0
- data/rust/build/src/resolve.rs +124 -0
- data/rust/build/src/root.rs +25 -0
- data/rust/build/src/sidecars.rs +73 -0
- data/rust/build/src/subprocess.rs +51 -0
- data/rust/build/src/tmp.rs +31 -0
- data/rust/codegen/.cargo/config.toml +3 -0
- data/rust/codegen/.gitignore +1 -0
- data/rust/codegen/Cargo.lock +7 -0
- data/rust/codegen/Cargo.toml +20 -0
- data/rust/codegen/src/attr.rs +32 -0
- data/rust/codegen/src/bridging.rs +481 -0
- data/rust/codegen/src/commands.rs +1226 -0
- data/rust/codegen/src/constraints.rs +109 -0
- data/rust/codegen/src/dependency_planning.rs +209 -0
- data/rust/codegen/src/domain_generator.rs +1288 -0
- data/rust/codegen/src/exemplar.rs +230 -0
- data/rust/codegen/src/expr_emitter.rs +87 -0
- data/rust/codegen/src/fielded.rs +192 -0
- data/rust/codegen/src/hecks_naming.rs +33 -0
- data/rust/codegen/src/json.rs +335 -0
- data/rust/codegen/src/json_codec.rs +697 -0
- data/rust/codegen/src/literal.rs +207 -0
- data/rust/codegen/src/main.rs +290 -0
- data/rust/codegen/src/manifest.rs +227 -0
- data/rust/codegen/src/mutations.rs +784 -0
- data/rust/codegen/src/naming.rs +286 -0
- data/rust/codegen/src/ports.rs +208 -0
- data/rust/codegen/src/prelude.rs +116 -0
- data/rust/codegen/src/queries.rs +786 -0
- data/rust/codegen/src/reactions.rs +532 -0
- data/rust/codegen/src/read_models.rs +697 -0
- data/rust/codegen/src/reference_specs.rs +40 -0
- data/rust/codegen/src/registry.rs +966 -0
- data/rust/codegen/src/reserved_names.rs +76 -0
- data/rust/codegen/src/shared.rs +93 -0
- data/rust/codegen/src/skip_reason.rs +25 -0
- data/rust/codegen/src/types.rs +362 -0
- data/rust/host/.cargo/config.toml +3 -0
- data/rust/host/.gitignore +1 -0
- data/rust/host/Cargo.lock +4297 -0
- data/rust/host/Cargo.toml +61 -0
- data/rust/host/HECKS_RELEASE +1 -0
- data/rust/host/rds-ca-bundle.pem +2736 -0
- data/rust/host/src/api.rs +1596 -0
- data/rust/host/src/approval.rs +652 -0
- data/rust/host/src/auth.rs +1287 -0
- data/rust/host/src/bin/expr_harness.rs +46 -0
- data/rust/host/src/bin/lineage_harness.rs +119 -0
- data/rust/host/src/bin/mint_harness.rs +135 -0
- data/rust/host/src/checkout.rs +265 -0
- data/rust/host/src/dispatch.rs +1443 -0
- data/rust/host/src/expr_json.rs +1117 -0
- data/rust/host/src/field_hints.rs +52 -0
- data/rust/host/src/ir.rs +733 -0
- data/rust/host/src/journal.rs +874 -0
- data/rust/host/src/lambda_client.rs +378 -0
- data/rust/host/src/log.rs +147 -0
- data/rust/host/src/main.rs +474 -0
- data/rust/host/src/mint.rs +1865 -0
- data/rust/host/src/payments/keystore.rs +330 -0
- data/rust/host/src/payments/tests.rs +1400 -0
- data/rust/host/src/payments.rs +767 -0
- data/rust/host/src/presentation.rs +698 -0
- data/rust/host/src/presentation_write.rs +1431 -0
- data/rust/host/src/query_step.rs +149 -0
- data/rust/host/src/rate_limit.rs +904 -0
- data/rust/host/src/reference_transform.rs +241 -0
- data/rust/host/src/reference_validate.rs +338 -0
- data/rust/host/src/resend.rs +296 -0
- data/rust/host/src/secrets.rs +106 -0
- data/rust/host/src/server.rs +663 -0
- data/rust/host/src/storage_shape.rs +175 -0
- data/rust/host/src/test_pg.rs +40 -0
- data/rust/host/src/ui_schema.rs +1351 -0
- data/rust/host/src/wasm_runner.rs +191 -0
- data/rust/host/src/web/newsletter/cooldown.rs +126 -0
- data/rust/host/src/web/newsletter/tests.rs +104 -0
- data/rust/host/src/web/newsletter.rs +310 -0
- data/rust/host/src/web/newsletter_send.rs +357 -0
- data/rust/host/src/web/registrations.rs +1505 -0
- data/rust/host/src/web.rs +2937 -0
- data/rust/lsp/.gitignore +1 -0
- data/rust/lsp/Cargo.lock +7 -0
- data/rust/lsp/Cargo.toml +16 -0
- data/rust/lsp/README.md +133 -0
- data/rust/lsp/src/diagnostics.rs +165 -0
- data/rust/lsp/src/json.rs +385 -0
- data/rust/lsp/src/main.rs +399 -0
- data/rust/lsp/src/outline.rs +177 -0
- data/rust/lsp/src/rpc.rs +67 -0
- data/rust/parser/.cargo/config.toml +5 -0
- data/rust/parser/.gitignore +1 -0
- data/rust/parser/Cargo.lock +7 -0
- data/rust/parser/Cargo.toml +21 -0
- data/rust/parser/src/build/closed_sets.rs +27 -0
- data/rust/parser/src/build/identity.rs +276 -0
- data/rust/parser/src/build/mod.rs +12 -0
- data/rust/parser/src/build/naming.rs +141 -0
- data/rust/parser/src/build/pattern_subset.rs +161 -0
- data/rust/parser/src/build/query_derive.rs +72 -0
- data/rust/parser/src/build/query_inference.rs +269 -0
- data/rust/parser/src/build/query_options.rs +100 -0
- data/rust/parser/src/build/read_model.rs +94 -0
- data/rust/parser/src/build/references.rs +32 -0
- data/rust/parser/src/canonical.rs +114 -0
- data/rust/parser/src/diag.rs +55 -0
- data/rust/parser/src/emit.rs +953 -0
- data/rust/parser/src/expr/ast_json.rs +147 -0
- data/rust/parser/src/expr/evaluator.rs +81 -0
- data/rust/parser/src/expr/mod.rs +84 -0
- data/rust/parser/src/expr/resolver.rs +497 -0
- data/rust/parser/src/ir.rs +387 -0
- data/rust/parser/src/keywords.rs +585 -0
- data/rust/parser/src/lex.rs +662 -0
- data/rust/parser/src/main.rs +252 -0
- data/rust/parser/src/parse/aggregate.rs +612 -0
- data/rust/parser/src/parse/chapter.rs +517 -0
- data/rust/parser/src/parse/command.rs +637 -0
- data/rust/parser/src/parse/domain_port.rs +127 -0
- data/rust/parser/src/parse/entity.rs +527 -0
- data/rust/parser/src/parse/file.rs +67 -0
- data/rust/parser/src/parse/hecksagon.rs +231 -0
- data/rust/parser/src/parse/lifecycle.rs +162 -0
- data/rust/parser/src/parse/mod.rs +1262 -0
- data/rust/parser/src/parse/policy.rs +87 -0
- data/rust/parser/src/parse/process_manager.rs +305 -0
- data/rust/parser/src/parse/query.rs +100 -0
- data/rust/parser/src/parse/read_model.rs +214 -0
- data/rust/parser/src/parse/value_object.rs +250 -0
- data/rust/parser/src/ruby_value.rs +422 -0
- data/rust/project/bridging.rb +257 -0
- data/rust/project/commands.rb +877 -0
- data/rust/project/constraints.rb +86 -0
- data/rust/project/dependency_planning.rb +178 -0
- data/rust/project/domain_generator.rb +980 -0
- data/rust/project/exemplar.rb +148 -0
- data/rust/project/expr_emitter.rb +72 -0
- data/rust/project/fielded.rb +141 -0
- data/rust/project/json_codec.rb +641 -0
- data/rust/project/mutations.rb +721 -0
- data/rust/project/naming.rb +205 -0
- data/rust/project/ports.rb +65 -0
- data/rust/project/queries.rb +493 -0
- data/rust/project/reactions.rb +317 -0
- data/rust/project/read_models.rb +690 -0
- data/rust/project/reference_specs.rb +27 -0
- data/rust/project/registry.rb +396 -0
- data/rust/project/skip_reason.rb +29 -0
- data/rust/project/types.rb +225 -0
- data/rust/project/write_if_changed.rb +83 -0
- data/rust/project.rb +30 -0
- data/rust/project_rust_pipeline.rb +383 -0
- data/rust/src/exemplar/commands.rs +279 -0
- data/rust/src/exemplar/constraints.rs +18 -0
- data/rust/src/exemplar/fielded.rs +280 -0
- data/rust/src/exemplar/json.rs +277 -0
- data/rust/src/exemplar/mod.rs +17 -0
- data/rust/src/exemplar/mutations.rs +80 -0
- data/rust/src/exemplar/queries.rs +33 -0
- data/rust/src/exemplar/reactions.rs +88 -0
- data/rust/src/exemplar/read_models.rs +48 -0
- data/rust/src/exemplar/registry.rs +166 -0
- data/rust/src/exemplar/types.rs +44 -0
- data/rust/src/kernel/attribute_shapes/composite.rs +88 -0
- data/rust/src/kernel/attribute_shapes/list.rs +18 -0
- data/rust/src/kernel/attribute_shapes/mod.rs +44 -0
- data/rust/src/kernel/attribute_shapes/optional.rs +9 -0
- data/rust/src/kernel/attribute_shapes/scalar.rs +39 -0
- data/rust/src/kernel/cli.rs +585 -0
- data/rust/src/kernel/dispatch.rs +1090 -0
- data/rust/src/kernel/expr.rs +458 -0
- data/rust/src/kernel/expression_operators/arithmetic.rs +128 -0
- data/rust/src/kernel/expression_operators/comparison.rs +48 -0
- data/rust/src/kernel/expression_operators/enumeration.rs +232 -0
- data/rust/src/kernel/expression_operators/logical.rs +13 -0
- data/rust/src/kernel/expression_operators/membership.rs +18 -0
- data/rust/src/kernel/expression_operators/mod.rs +68 -0
- data/rust/src/kernel/expression_operators/pattern_match.rs +73 -0
- data/rust/src/kernel/expression_operators/positional.rs +126 -0
- data/rust/src/kernel/expression_operators/presence.rs +101 -0
- data/rust/src/kernel/expression_operators/sign_test.rs +16 -0
- data/rust/src/kernel/expression_operators/sized.rs +35 -0
- data/rust/src/kernel/expression_operators/text.rs +79 -0
- data/rust/src/kernel/expression_operators/to_string.rs +18 -0
- data/rust/src/kernel/json.rs +779 -0
- data/rust/src/kernel/mod.rs +133 -0
- data/rust/src/kernel/named_query.rs +219 -0
- data/rust/src/kernel/orchestrate.rs +1810 -0
- data/rust/src/kernel/pattern.rs +307 -0
- data/rust/src/kernel/query_comparators.rs +206 -0
- data/rust/src/kernel/query_ordering.rs +103 -0
- data/rust/src/kernel/read_model.rs +914 -0
- data/rust/src/kernel/reference_lookup.rs +149 -0
- data/rust/src/kernel/repository.rs +468 -0
- data/rust/src/kernel/routing.rs +612 -0
- data/rust/src/kernel/vocab/aggregate_dispatch_order.rs +118 -0
- data/rust/src/kernel/vocab/entity_dispatch_order.rs +114 -0
- data/rust/src/kernel/vocab/field_hint.rs +70 -0
- data/rust/src/kernel/vocab/mod.rs +20 -0
- data/rust/src/kernel/vocab/query_comparator.rs +65 -0
- data/rust/src/kernel/vocab/refusal_template.rs +1592 -0
- data/rust/src/lib.rs +8 -0
- data/rust/src/main.rs +16 -0
- data/rust/web/.gitignore +1 -0
- data/rust/web/Cargo.lock +119 -0
- data/rust/web/Cargo.toml +18 -0
- data/rust/web/src/lib.rs +8 -0
- metadata +478 -12
- data/lib/hecks/facade/cli_door.rb +0 -178
- data/lib/hecks/facade/cli_runner.rb +0 -271
- data/lib/hecks/facade/handle.rb +0 -293
- data/lib/hecks/facade/json_door.rb +0 -247
- data/lib/hecks/facade/surface/aggregate_door.rb +0 -222
- data/lib/hecks/facade/surface/chapter.rb +0 -116
- data/lib/hecks/facade/surface.rb +0 -61
- data/lib/hecks/mcp_door_scope.rb +0 -176
|
@@ -1,24 +1,10 @@
|
|
|
1
1
|
Hecks.bluebook "Bluebook" do
|
|
2
2
|
aggregate "Vocabulary" do
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
# no commands on purpose : nothing dispatches a vocabulary. They are READ
|
|
6
|
-
# from the IR and projected — bin/project_vocabulary writes the Ruby tables
|
|
7
|
-
# (lib/hecks/vocabulary.rb) the runtime's constants read, and
|
|
8
|
-
# bin/project_rust_vocabulary writes rust/src/kernel/vocab/ — so the
|
|
9
|
-
# runtimes carry no hand-typed copies to drift.
|
|
10
|
-
#
|
|
11
|
-
# Every one of these is a set the runtime must agree with, and every one has
|
|
12
|
-
# already drifted or leaked at least once :
|
|
13
|
-
# Comparison went disjoint from the grammar chapter's operator table
|
|
14
|
-
# NormalisationStrategy is the third, unchecked copy of the canonical-form table
|
|
15
|
-
# Primitive is what "primitives live in value objects only" is ABOUT
|
|
16
|
-
# DomainRefusal is the boundary three raw Ruby TypeErrors crossed tonight
|
|
3
|
+
# Closed sets the language admits, projected into matching Ruby and Rust
|
|
4
|
+
# tables (hecks project_vocabulary, hecks project_rust_vocabulary) so both runtimes agree.
|
|
17
5
|
description "The closed sets the language admits — the whole of what any runtime may accept, declared once."
|
|
18
6
|
|
|
19
|
-
#
|
|
20
|
-
# closed sets are the language's own, declared once — so one path is the whole
|
|
21
|
-
# identity.
|
|
7
|
+
# Named only by itself; a vocabulary hangs under nothing else.
|
|
22
8
|
identified_by VocabularyName, as: :name
|
|
23
9
|
|
|
24
10
|
|
|
@@ -27,11 +13,9 @@ Hecks.bluebook "Bluebook" do
|
|
|
27
13
|
invariant("a vocabulary is named") { !value.to_s.empty? }
|
|
28
14
|
end
|
|
29
15
|
|
|
30
|
-
#
|
|
31
|
-
#
|
|
32
|
-
#
|
|
33
|
-
# together, negated inverts the result. `compare` reads this table instead of
|
|
34
|
-
# hardcoding a six-way case statement — see Evaluator::COMPARISONS.
|
|
16
|
+
# The six comparison operators. `compare` reduces each to two primitives
|
|
17
|
+
# (less_than, equal) combined by compares_less_than/compares_equal/negated,
|
|
18
|
+
# rather than a six-way case statement (Expression::Evaluator::COMPARISONS).
|
|
35
19
|
value_object "Comparison" do
|
|
36
20
|
attribute :symbol, String
|
|
37
21
|
attribute :compares_less_than, String
|
|
@@ -46,12 +30,9 @@ Hecks.bluebook "Bluebook" do
|
|
|
46
30
|
member symbol: "!=", compares_less_than: "false", compares_equal: "true", negated: "true"
|
|
47
31
|
end
|
|
48
32
|
|
|
49
|
-
#
|
|
50
|
-
#
|
|
51
|
-
#
|
|
52
|
-
# test is sugar for an existing operator rather than a second algebra
|
|
53
|
-
# beside it. `positive?` = value > 0, `negative?` = value < 0, `zero?` =
|
|
54
|
-
# value == 0.
|
|
33
|
+
# Each sign test compares against 0 using an operator Comparison already
|
|
34
|
+
# declares (compares_via) — sugar for an existing operator, not a second
|
|
35
|
+
# algebra. positive? = value > 0, negative? = value < 0, zero? = value == 0.
|
|
55
36
|
value_object "SignTest" do
|
|
56
37
|
attribute :name, String
|
|
57
38
|
attribute :compares_via, String
|
|
@@ -61,11 +42,9 @@ Hecks.bluebook "Bluebook" do
|
|
|
61
42
|
member name: "zero?", compares_via: "=="
|
|
62
43
|
end
|
|
63
44
|
|
|
64
|
-
# `.include?`'s haystack type decides its
|
|
65
|
-
#
|
|
66
|
-
#
|
|
67
|
-
# else is always false — not declared here, since it is the fallback
|
|
68
|
-
# every OTHER haystack type shares, not a case of its own.
|
|
45
|
+
# `.include?`'s haystack type decides its behavior: Array does membership,
|
|
46
|
+
# String does substring match. Every other type is always false and is not
|
|
47
|
+
# declared here — that fallback isn't a case of its own.
|
|
69
48
|
value_object "IncludeHaystack" do
|
|
70
49
|
attribute :type, String
|
|
71
50
|
attribute :strategy, String
|
|
@@ -74,18 +53,15 @@ Hecks.bluebook "Bluebook" do
|
|
|
74
53
|
member type: "String", strategy: "substring"
|
|
75
54
|
end
|
|
76
55
|
|
|
77
|
-
# `.to_s` admits
|
|
78
|
-
#
|
|
79
|
-
# number its digits, a string itself) — a closed set to admit into, not a
|
|
80
|
-
# table of different rules per type.
|
|
56
|
+
# Scalar types `.to_s` admits; every one uses Ruby's own to_s (nil → "",
|
|
57
|
+
# a bool its name, a number its digits) — one rule, not a table per type.
|
|
81
58
|
value_object "ToStringType" do
|
|
82
59
|
attribute :type, String, one_of: ["String", "Integer", "Float", "TrueClass", "FalseClass", "NilClass"]
|
|
83
60
|
end
|
|
84
61
|
|
|
85
|
-
# `.size` and `.empty?` admit
|
|
86
|
-
#
|
|
87
|
-
#
|
|
88
|
-
# the only thing either needed to say.
|
|
62
|
+
# The closed set `.size` and `.empty?` both admit — a list, a string, or
|
|
63
|
+
# an open map — sharing one declaration since both just call Ruby's own
|
|
64
|
+
# method of the same name.
|
|
89
65
|
value_object "SizedType" do
|
|
90
66
|
attribute :type, String, one_of: ["Array", "String", "Hash"]
|
|
91
67
|
end
|
|
@@ -100,12 +76,9 @@ Hecks.bluebook "Bluebook" do
|
|
|
100
76
|
attribute :name, String, one_of: ["collapse_whitespace", "replace"]
|
|
101
77
|
end
|
|
102
78
|
|
|
103
|
-
#
|
|
104
|
-
#
|
|
105
|
-
#
|
|
106
|
-
# amount`, differing only in which sign. set and append do no arithmetic,
|
|
107
|
-
# so they carry no sign — ABSENT IS NOT EMPTY, same reading as elsewhere in
|
|
108
|
-
# this file.
|
|
79
|
+
# Ops Runtime::CommandInterpreter applies. `sign` is the arithmetic delta
|
|
80
|
+
# increment/decrement share (current + sign * amount); set and append do
|
|
81
|
+
# no arithmetic, so they carry no sign.
|
|
109
82
|
value_object "MutationOp" do
|
|
110
83
|
attribute :name, String
|
|
111
84
|
attribute :sign, String
|
|
@@ -114,46 +87,27 @@ Hecks.bluebook "Bluebook" do
|
|
|
114
87
|
member name: "append", sign: ""
|
|
115
88
|
member name: "increment", sign: "1"
|
|
116
89
|
member name: "decrement", sign: "-1"
|
|
117
|
-
#
|
|
118
|
-
#
|
|
119
|
-
#
|
|
120
|
-
# (`current.clamp(min, max)`) — neither is an add/subtract, so
|
|
121
|
-
# neither carries a sign, same reading as set/append above.
|
|
90
|
+
# multiply scales (current * amount), clamp bounds
|
|
91
|
+
# (current.clamp(min, max)) — neither is add/subtract, so neither
|
|
92
|
+
# carries a sign.
|
|
122
93
|
member name: "multiply", sign: ""
|
|
123
94
|
member name: "clamp", sign: ""
|
|
124
|
-
#
|
|
125
|
-
#
|
|
126
|
-
# matching an element by value. No sign, same reading as append.
|
|
95
|
+
# remove is append's list-removal counterpart, matching an element
|
|
96
|
+
# by value; no sign, same reading as append.
|
|
127
97
|
member name: "remove", sign: ""
|
|
128
|
-
#
|
|
129
|
-
#
|
|
130
|
-
#
|
|
131
|
-
# into one nested entity command, rather than a policy/saga's own
|
|
132
|
-
# commit-then-react reentry. Rides the SAME multi-binding wire
|
|
133
|
-
# shape append does (`with: {...}` is a field map, same as
|
|
134
|
-
# append's own `fields:`), so it carries no sign, same reading.
|
|
98
|
+
# delegate is an aggregate command's synchronous handoff into a nested
|
|
99
|
+
# entity command (see CommandBuilder#delegates_to). Shares append's
|
|
100
|
+
# multi-binding wire shape (`with:` ~ `fields:`), so it carries no sign.
|
|
135
101
|
member name: "delegate", sign: ""
|
|
136
|
-
#
|
|
137
|
-
#
|
|
138
|
-
#
|
|
139
|
-
# wire shape append/delegate do (`as:`/`reason:`/`reverses:`,
|
|
140
|
-
# assembled into one `source` hash by hand, same as `with:` is),
|
|
141
|
-
# so it carries no sign either.
|
|
102
|
+
# corrects declares a past event it amends rather than a fresh
|
|
103
|
+
# mutation (see CommandBuilder#corrects_impl). Shares append/delegate's
|
|
104
|
+
# multi-binding wire shape (as:/reason:/reverses:), so no sign either.
|
|
142
105
|
member name: "corrects", sign: ""
|
|
143
106
|
end
|
|
144
107
|
|
|
145
|
-
#
|
|
146
|
-
#
|
|
147
|
-
#
|
|
148
|
-
# test membership in opposite directions), so this stays a flat closed set —
|
|
149
|
-
# the same shape MutationOp had before it grew a sign.
|
|
150
|
-
# `none_in_state` (the last member) is a vendored addition, not (yet)
|
|
151
|
-
# upstream hecks (migration plan task 4) — see
|
|
152
|
-
# query_specification/common/comparators.rb's own comment on
|
|
153
|
-
# none_in_state. Both closed sets (the Ruby COMPARATORS constant and
|
|
154
|
-
# this self-hosted grammar entry) must agree, the same two-places-
|
|
155
|
-
# must-agree discipline MutationOp/multiply/clamp already required
|
|
156
|
-
# earlier this pass.
|
|
108
|
+
# A where-clause's admitted operators (QuerySpecification::Common::
|
|
109
|
+
# Comparators::COMPARATORS) — flat, not one shared algebra like Comparison,
|
|
110
|
+
# since eq/ne/gt/lt/in/contains differ in kind. Must stay in sync with that constant.
|
|
157
111
|
value_object "QueryComparator" do
|
|
158
112
|
attribute :name, String, one_of: ["eq", "ne", "gt", "gte", "lt", "lte", "in", "contains", "none_in_state"]
|
|
159
113
|
end
|
|
@@ -164,24 +118,13 @@ Hecks.bluebook "Bluebook" do
|
|
|
164
118
|
one_of: ["*.port", "*.adapter", "*.bluebook", "translations/*.bluebook", "*.hecksagon", "*.world"]
|
|
165
119
|
end
|
|
166
120
|
|
|
167
|
-
# CommandInterpreter#call
|
|
168
|
-
#
|
|
169
|
-
#
|
|
170
|
-
#
|
|
171
|
-
# different class — reaction is
|
|
172
|
-
# what a command's OWN emitted events cause, not what interpreting
|
|
173
|
-
# the command does. Two conditional steps — assign_creation_attributes only
|
|
174
|
-
# fires for a creating command, advance_lifecycle only when a transition
|
|
175
|
-
# applies — so this is the order a command that does both follows,
|
|
176
|
-
# confirmed by tracing a real dispatch, not read off the source.
|
|
121
|
+
# The order CommandInterpreter#call follows, ending at the events it
|
|
122
|
+
# emits — reaction (policies, sagas) is a separate phase that runs after,
|
|
123
|
+
# in a different class. assign_creation_attributes only fires for a
|
|
124
|
+
# creating command; advance_lifecycle only when a transition applies.
|
|
177
125
|
#
|
|
178
|
-
# decode_arguments
|
|
179
|
-
#
|
|
180
|
-
# judges them. A no-op in Ruby today (routing already hands the
|
|
181
|
-
# interpreter a decoded hash) and in the Rust kernel's dispatch loop
|
|
182
|
-
# (generated `from_json` still decodes and gates in one pass) — declared
|
|
183
|
-
# now so the Rust kernel's step enum has a place for a generated decoder
|
|
184
|
-
# to move into, rather than the order being implied by generated code.
|
|
126
|
+
# decode_arguments is a no-op today in both runtimes but is declared here
|
|
127
|
+
# so a future generated decoder has a step to occupy.
|
|
185
128
|
value_object "AggregateDispatchOrder" do
|
|
186
129
|
attribute :step, String,
|
|
187
130
|
one_of: ["decode_arguments", "refuse_unknown_arguments", "refuse_absent_arguments", "normalize_args",
|
|
@@ -191,21 +134,12 @@ Hecks.bluebook "Bluebook" do
|
|
|
191
134
|
"save", "emit"]
|
|
192
135
|
end
|
|
193
136
|
|
|
194
|
-
# EntityInterpreter#call — the same shape
|
|
195
|
-
#
|
|
196
|
-
#
|
|
197
|
-
#
|
|
198
|
-
#
|
|
199
|
-
#
|
|
200
|
-
# its aggregate's own gate" — nothing on this path ever ran one, and a
|
|
201
|
-
# bogus argument or a silently-nil'd absent one both went straight
|
|
202
|
-
# through. The only real difference from AggregateDispatchOrder now is
|
|
203
|
-
# that an entity is never CREATED through this path (no
|
|
204
|
-
# assign_creation_attributes) — hydrating the parent and locating the
|
|
205
|
-
# element replace a single hydrate. resolve_references stayed, though —
|
|
206
|
-
# an entity command can declare a reference-typed attribute the same way
|
|
207
|
-
# an aggregate command can (CommandRules#resolve_references is shared by
|
|
208
|
-
# both interpreters), even though nothing in the real corpus does yet.
|
|
137
|
+
# EntityInterpreter#call — the same shape as AggregateDispatchOrder, one
|
|
138
|
+
# level down on an entity. Differs in that an entity is never created
|
|
139
|
+
# through this path (hydrate_parent + locate_element replace hydrate;
|
|
140
|
+
# no assign_creation_attributes). resolve_references stays: an entity
|
|
141
|
+
# command can declare a reference-typed attribute too, shared via
|
|
142
|
+
# CommandRules#resolve_references.
|
|
209
143
|
value_object "EntityDispatchOrder" do
|
|
210
144
|
attribute :step, String,
|
|
211
145
|
one_of: ["decode_arguments", "refuse_unknown_arguments", "refuse_absent_arguments", "normalize_args",
|
|
@@ -224,23 +158,15 @@ Hecks.bluebook "Bluebook" do
|
|
|
224
158
|
"RemoteRefusal", "TypeMismatch", "Unauthorized", "UnknownArgument", "UnknownVerb"]
|
|
225
159
|
end
|
|
226
160
|
|
|
227
|
-
#
|
|
228
|
-
#
|
|
229
|
-
#
|
|
230
|
-
#
|
|
231
|
-
#
|
|
232
|
-
# closer to Comparison/SignTest beside it than to a given. So it follows
|
|
233
|
-
# THEIR pattern, not given's: declared here, and projected into the
|
|
234
|
-
# generated tables a dispatch actually reads (Runtime::RefusalWording in
|
|
235
|
-
# Ruby, kernel::vocab::RefusalSite in Rust) rather than read live off
|
|
236
|
-
# this very chapter at every call.
|
|
161
|
+
# The wording for every DomainRefusal site not already carried by data
|
|
162
|
+
# (given/ensures/invariant already describe themselves). Language-level
|
|
163
|
+
# and the same for every domain, so it is declared here and projected
|
|
164
|
+
# into Runtime::RefusalWording (Ruby) / kernel::vocab::RefusalSite (Rust)
|
|
165
|
+
# rather than read live off this chapter at every call.
|
|
237
166
|
#
|
|
238
|
-
# `{name}` markers are
|
|
239
|
-
#
|
|
240
|
-
#
|
|
241
|
-
# (entity_interpreter.rb and command_interpreter.rb's own "not found"
|
|
242
|
-
# messages, for instance) rather than being declared as two facts that
|
|
243
|
-
# would have to be kept identical by hand.
|
|
167
|
+
# `{name}` markers are plain text substitution, not expression syntax —
|
|
168
|
+
# a template is read, never evaluated. Two call sites that raise the
|
|
169
|
+
# same sentence share one `site` row instead of duplicating it.
|
|
244
170
|
value_object "RefusalTemplate" do
|
|
245
171
|
attribute :refusal, String, admits: "Vocabulary::DomainRefusal"
|
|
246
172
|
attribute :site, String
|
|
@@ -294,18 +220,8 @@ Hecks.bluebook "Bluebook" do
|
|
|
294
220
|
template: "{command} refused — {field} is {current}, and {command} moves it only from {allowed}"
|
|
295
221
|
member refusal: "TypeMismatch", site: "value_object_shape",
|
|
296
222
|
template: "{name} is a {type} — pass its fields as an object, not {offered}"
|
|
297
|
-
#
|
|
298
|
-
# a
|
|
299
|
-
# wrong shape, only the first one anyone noticed: a bare Boolean,
|
|
300
|
-
# Array, or `null` used to sail past this refusal entirely, get
|
|
301
|
-
# `.to_s`'d into a lookup key by `CommandRules::References#
|
|
302
|
-
# reference_key` ("true", "false", "[8, 8]"), and answer NotFound (or,
|
|
303
|
-
# for `null`, skip the lookup outright and answer whatever the
|
|
304
|
-
# command's own `given` said instead) — a shape error misreading as a
|
|
305
|
-
# missing record. `{offered}` now names what actually arrived; the
|
|
306
|
-
# Hash/Value case still renders "an object" (Value::Coercion's own
|
|
307
|
-
# `reference_shape_description`), so the wording already pinned byte
|
|
308
|
-
# for byte in spec/runtime/reference_shape_spec.rb is unchanged.
|
|
223
|
+
# A bare Boolean, Array, or null reference argument is a shape error,
|
|
224
|
+
# not a missing record — {offered} names what arrived.
|
|
309
225
|
member refusal: "TypeMismatch", site: "reference_wrong_shape",
|
|
310
226
|
template: "{command} refused — a reference is an id, and {attribute} arrived as {offered}{known_by}"
|
|
311
227
|
member refusal: "TypeMismatch", site: "multi_field_scalar",
|
|
@@ -367,33 +283,17 @@ Hecks.bluebook "Bluebook" do
|
|
|
367
283
|
"or read {reference}.{remote_field} directly if this rule cannot wait"
|
|
368
284
|
end
|
|
369
285
|
|
|
370
|
-
#
|
|
371
|
-
#
|
|
372
|
-
#
|
|
373
|
-
#
|
|
374
|
-
#
|
|
375
|
-
# BUG#134 was exactly the hand-formatted kind: Ruby's `declared_reading`
|
|
376
|
-
# fell back to "none" for an empty list, the Rust generators joined
|
|
377
|
-
# the list themselves and never did.
|
|
378
|
-
#
|
|
379
|
-
# Read by Runtime::RefusalWording.render_site (a missing or extra
|
|
380
|
-
# argument refuses to render at all) and projected into
|
|
381
|
-
# rust/src/kernel/vocab/refusal_template.rs as one typed args struct
|
|
382
|
-
# per site (`render_args` — a missing argument does not compile).
|
|
286
|
+
# Which values a RefusalTemplate site takes (in placeholder order) and how
|
|
287
|
+
# each renders, so a caller hands over a raw value rather than a
|
|
288
|
+
# pre-formatted string. Read by Runtime::RefusalWording.render_site and
|
|
289
|
+
# projected into rust/src/kernel/vocab/refusal_template.rs as one typed
|
|
290
|
+
# args struct per site.
|
|
383
291
|
#
|
|
384
|
-
# shape — "scalar"
|
|
385
|
-
# quoting — "none" (
|
|
386
|
-
#
|
|
387
|
-
#
|
|
388
|
-
# sorted — "true" sorts a list's items first (before quoting)
|
|
292
|
+
# shape — "scalar" or "list"
|
|
293
|
+
# quoting — "none" (raw text) or "inspect" (Ruby #inspect / Rust {:?})
|
|
294
|
+
# separator — what joins a list's items
|
|
295
|
+
# sorted — "true" sorts a list's items before quoting
|
|
389
296
|
# when_empty — what an empty list renders as
|
|
390
|
-
#
|
|
391
|
-
# Recorded from what the Ruby call sites did when this table was
|
|
392
|
-
# introduced; no wording changed. A value whose rendering depends on
|
|
393
|
-
# its runtime type (`Rendering.describe`, `offered.inspect` of an
|
|
394
|
-
# arbitrary value) stays a caller-rendered "none" scalar, as do the
|
|
395
|
-
# identity readings (`identity`, `heads`, `wants`) the Rust side already
|
|
396
|
-
# joins once at codegen time or inside `extract_wants`.
|
|
397
297
|
value_object "RefusalSiteArgument" do
|
|
398
298
|
attribute :refusal, String, admits: "Vocabulary::DomainRefusal"
|
|
399
299
|
attribute :site, String
|
|
@@ -674,36 +574,23 @@ Hecks.bluebook "Bluebook" do
|
|
|
674
574
|
shape: "scalar", quoting: "none", separator: "", sorted: "false", when_empty: ""
|
|
675
575
|
end
|
|
676
576
|
|
|
677
|
-
#
|
|
678
|
-
#
|
|
679
|
-
#
|
|
680
|
-
# which are not events at all: no aggregate announces that a leg the procedure
|
|
681
|
-
# dispatched was declined. `on :refused` is the compensating leg, and without
|
|
682
|
-
# this declaration the word lived only as a magic string in the interpreter,
|
|
683
|
-
# and a reader of the language could not discover the
|
|
684
|
-
# trigger existed.
|
|
577
|
+
# A leg answers an event (`on "AccountDebited"`) or one of these non-event
|
|
578
|
+
# outcomes — `on :refused` is the compensating leg for a dispatch the
|
|
579
|
+
# procedure declined (SagaInterpreter::REFUSED).
|
|
685
580
|
value_object "Trigger" do
|
|
686
581
|
attribute :name, String, one_of: ["refused"]
|
|
687
582
|
end
|
|
688
583
|
|
|
689
|
-
#
|
|
690
|
-
#
|
|
691
|
-
#
|
|
692
|
-
#
|
|
693
|
-
#
|
|
694
|
-
#
|
|
695
|
-
# here for the same reason RefusalTemplate is: a LANGUAGE-LEVEL
|
|
696
|
-
# rendering convention, the same guess for every domain, not
|
|
697
|
-
# authored per-bluebook — closer to Comparison/SignTest than to a
|
|
698
|
-
# given. `pattern` is the regex SOURCE, no delimiters or flags
|
|
699
|
-
# (Ruby's own `Regexp#source`) — FieldShape builds its four constants
|
|
700
|
-
# off these rows, and bin/project_field_hints writes the Rust host's
|
|
701
|
-
# copy from them, so neither side is typed by hand.
|
|
584
|
+
# Regexes `text_field` matches a text attribute's name against
|
|
585
|
+
# (case-insensitively) to guess an HTML input type or textarea kind, when
|
|
586
|
+
# nothing more specific already answered (Hecks::Forms::FieldShape's
|
|
587
|
+
# EMAIL_HINT/URL_HINT/TEL_HINT/TEXTAREA_HINT). `pattern` is the regex
|
|
588
|
+
# source, no delimiters or flags. hecks project_field_hints writes the Rust
|
|
589
|
+
# host's copy from these rows, so neither side is typed by hand.
|
|
702
590
|
#
|
|
703
|
-
# `resolves_to` names
|
|
704
|
-
#
|
|
705
|
-
#
|
|
706
|
-
# html_type has already fallen through to "text").
|
|
591
|
+
# `resolves_to` names which Field attribute a match sets: html_type for
|
|
592
|
+
# email/url/tel (checked in that order, first match wins), kind for
|
|
593
|
+
# textarea (checked once html_type has fallen through to "text").
|
|
707
594
|
value_object "FieldHint" do
|
|
708
595
|
attribute :name, String
|
|
709
596
|
attribute :pattern, String
|
|
@@ -715,13 +602,11 @@ Hecks.bluebook "Bluebook" do
|
|
|
715
602
|
member name: "textarea", pattern: '\b(text|body|note|notes|description|message|comment)\b', resolves_to: "kind"
|
|
716
603
|
end
|
|
717
604
|
|
|
718
|
-
#
|
|
719
|
-
# collide with
|
|
720
|
-
#
|
|
721
|
-
# rust/codegen/src/reserved_names.rs, so
|
|
722
|
-
#
|
|
723
|
-
# Declared once here because the two hand-typed copies were held equal
|
|
724
|
-
# by nothing but a comment.
|
|
605
|
+
# Rust keywords (strict + reserved) a generated identifier must not
|
|
606
|
+
# collide with. RustProjection::Projector::RUST_KEYWORDS reads this;
|
|
607
|
+
# hecks project_reserved_names projects it into
|
|
608
|
+
# rust/codegen/src/reserved_names.rs, so Ruby and Rust escape or refuse
|
|
609
|
+
# the same words from one declaration instead of two hand-typed copies.
|
|
725
610
|
value_object "RustReservedWord" do
|
|
726
611
|
attribute :word, String,
|
|
727
612
|
one_of: ["as", "break", "const", "continue", "crate", "dyn", "else", "enum", "extern", "false",
|
|
@@ -736,7 +621,7 @@ Hecks.bluebook "Bluebook" do
|
|
|
736
621
|
# outside `[features]` (`[package]`, `[lib]`, `[[bin]]`) plus `default`,
|
|
737
622
|
# which Cargo reserves for the auto-enabled feature set. Read by
|
|
738
623
|
# RustProjection::Projector::CARGO_RESERVED_DOMAIN_NAMES and projected by
|
|
739
|
-
#
|
|
624
|
+
# hecks project_reserved_names, same as RustReservedWord above.
|
|
740
625
|
value_object "CargoReservedName" do
|
|
741
626
|
attribute :name, String,
|
|
742
627
|
one_of: ["name", "version", "edition", "path", "authors", "license", "description", "default",
|
|
@@ -2,15 +2,10 @@ Hecks.bluebook "Hecksagon" do
|
|
|
2
2
|
aggregate "AdapterBinding" do
|
|
3
3
|
description "One aggregate-to-adapter binding inside a hecksagon — the verb it answers, the adapter it names. Its own root because a hecksagon's binds are an open set of verbs (one per declared port), which no value object can hold — the same reasoning Wiring carries for a world's settings."
|
|
4
4
|
|
|
5
|
-
# The
|
|
6
|
-
# separately the text component of this binding's own compound identity,
|
|
7
|
-
# so the relationship keeps the same explicit `_ref` distinction World::
|
|
8
|
-
# Wiring uses for its parent edge.
|
|
5
|
+
# The parent edge is `hecksagon_ref`; `hecksagon` below is the text part of the identity.
|
|
9
6
|
belongs_to Hecksagon, as: :hecksagon_ref
|
|
10
7
|
|
|
11
|
-
#
|
|
12
|
-
# One hecksagon binds one adapter per (aggregate, verb) pair — that is
|
|
13
|
-
# what a binding IS — so the triple identifies it.
|
|
8
|
+
# One adapter per (aggregate, verb) pair within a hecksagon, so the triple identifies it.
|
|
14
9
|
identified_by :hecksagon, :aggregate, :verb
|
|
15
10
|
|
|
16
11
|
attribute :hecksagon, BindingText
|
|
@@ -27,9 +22,7 @@ Hecks.bluebook "Hecksagon" do
|
|
|
27
22
|
role "Deployment"
|
|
28
23
|
goal "Name the adapter one aggregate answers one verb through"
|
|
29
24
|
|
|
30
|
-
#
|
|
31
|
-
# value fact. It does not declare a behavioral relationship or use the
|
|
32
|
-
# parent as a hidden receiver.
|
|
25
|
+
# The parent's identity arrives as an ordinary value, not as a receiver.
|
|
33
26
|
attribute :hecksagon_ref, HecksagonName
|
|
34
27
|
attribute :aggregate, BindingText
|
|
35
28
|
attribute :verb, BindingText
|
|
@@ -7,6 +7,7 @@ Hecks.bluebook "Hecksagon" do
|
|
|
7
7
|
attribute :verb, PortVerb, optional: true
|
|
8
8
|
attribute :signal, PortSignal, optional: true
|
|
9
9
|
attribute :answers, list_of(PortAnswer)
|
|
10
|
+
attribute :answered_queries, list_of(QueryBinding)
|
|
10
11
|
|
|
11
12
|
value_object "PortName" do
|
|
12
13
|
attribute :value, String
|
|
@@ -18,27 +19,25 @@ Hecks.bluebook "Hecksagon" do
|
|
|
18
19
|
invariant("a verb is named") { !value.to_s.empty? }
|
|
19
20
|
end
|
|
20
21
|
|
|
21
|
-
#
|
|
22
|
-
# kept as its own local value object rather than shared cross-
|
|
23
|
-
# chapter, the same way PortVerb already is here.
|
|
22
|
+
# Same closed set as port.bluebook's Port, kept local rather than shared across chapters.
|
|
24
23
|
value_object "PortSignal" do
|
|
25
24
|
attribute :value, String, one_of: ["reply", "effect"]
|
|
26
25
|
end
|
|
27
26
|
|
|
28
|
-
#
|
|
29
|
-
# (port.bluebook's "Port" aggregate, same shape), added once a real
|
|
30
|
-
# `.port` file migrated to parse through this builder (the repoint
|
|
31
|
-
# `lib/hecks.rb#port`'s own comment describes) used the word
|
|
32
|
-
# (`extraction.port`'s own `answers :canonical`). Local, not shared
|
|
33
|
-
# cross-chapter, same reasoning as PortSignal just above.
|
|
27
|
+
# Twin of port.bluebook's PortAnswer, kept local for the same reason as PortSignal.
|
|
34
28
|
value_object "PortAnswer" do
|
|
35
29
|
attribute :value, String
|
|
36
30
|
invariant("an answer names a real method") { !value.to_s.empty? }
|
|
37
31
|
end
|
|
38
32
|
|
|
39
|
-
#
|
|
40
|
-
#
|
|
41
|
-
|
|
33
|
+
# A query this port's adapter answers. The shape of the answer is the query's own `returns`,
|
|
34
|
+
# declared in the bluebook; the hecksagon only says who answers.
|
|
35
|
+
value_object "QueryBinding" do
|
|
36
|
+
attribute :name, String
|
|
37
|
+
invariant("a bound query is named") { !name.to_s.empty? }
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Keyword rows for DomainPort; SyntaxBoot discovers every aggregate-local seed table.
|
|
42
41
|
value_object "KeywordSeed" do
|
|
43
42
|
attribute :word, String
|
|
44
43
|
attribute :context, String, admits: "Syntax::Context"
|
|
@@ -57,6 +56,7 @@ Hecks.bluebook "Hecksagon" do
|
|
|
57
56
|
member word: "verb", context: "DomainPort", body: "none", inner: "", opens: "", fills: "verb"
|
|
58
57
|
member word: "signal", context: "DomainPort", body: "none", inner: "", opens: "", fills: "signal"
|
|
59
58
|
member word: "answers", context: "DomainPort", body: "none", inner: "", opens: "", fills: "answers"
|
|
59
|
+
member word: "answers_query", context: "DomainPort", body: "none", inner: "", opens: "", fills: "answered_queries", calls: "answers_query_impl"
|
|
60
60
|
|
|
61
61
|
end
|
|
62
62
|
|
|
@@ -83,14 +83,9 @@ Hecks.bluebook "Hecksagon" do
|
|
|
83
83
|
member keyword: "verb", context: "DomainPort", at: "1", named: "", kind: "text", required: "true", fills: "verb"
|
|
84
84
|
member keyword: "signal", context: "DomainPort", at: "1", named: "", kind: "symbol", required: "true", fills: "signal"
|
|
85
85
|
member keyword: "answers", context: "DomainPort", at: "1", named: "", kind: "symbol", required: "true", fills: "answers"
|
|
86
|
+
member keyword: "answers_query", context: "DomainPort", at: "1", named: "", kind: "text", required: "true", fills: "name"
|
|
86
87
|
|
|
87
|
-
#
|
|
88
|
-
# (inside the block) is refused (#335); this is the sanctioned
|
|
89
|
-
# replacement, named directly on the word that opens the block
|
|
90
|
-
# rather than a statement inside it. `kind: "constant"`, matching
|
|
91
|
-
# `reference_to`'s own first positional argument
|
|
92
|
-
# (port_operation.bluebook) — same bareword-constant resolution,
|
|
93
|
-
# just moved.
|
|
88
|
+
# The receiving aggregate is named on the opening word (`to:`), not by `reference_to` inside.
|
|
94
89
|
member keyword: "operation", context: "DomainPort", at: "", named: "to", kind: "constant", required: "false", fills: "to"
|
|
95
90
|
member keyword: "tells", context: "DomainPort", at: "", named: "to", kind: "constant", required: "false", fills: "to"
|
|
96
91
|
member keyword: "asks", context: "DomainPort", at: "", named: "to", kind: "constant", required: "false", fills: "to"
|
|
@@ -7,6 +7,7 @@ Hecks.bluebook "Hecksagon" do
|
|
|
7
7
|
attribute :subscriptions, list_of(Subscription)
|
|
8
8
|
attribute :framework_members, list_of(FrameworkMember)
|
|
9
9
|
attribute :vendored_bluebooks, list_of(VendoredBluebook)
|
|
10
|
+
attribute :attached_chapters, list_of(AttachedChapter)
|
|
10
11
|
|
|
11
12
|
value_object "HecksagonName" do
|
|
12
13
|
attribute :value, String
|
|
@@ -18,24 +19,24 @@ Hecks.bluebook "Hecksagon" do
|
|
|
18
19
|
invariant("a subscription names an event") { !value.to_s.empty? }
|
|
19
20
|
end
|
|
20
21
|
|
|
21
|
-
# A `framework/bluebook/` member this hecksagon attaches
|
|
22
|
-
# Identity, whatever else lands beside them. Same shape as
|
|
23
|
-
# `Subscription` beside it, one word over.
|
|
22
|
+
# A `framework/bluebook/` member this hecksagon attaches, such as Governance or Identity.
|
|
24
23
|
value_object "FrameworkMember" do
|
|
25
24
|
attribute :value, String
|
|
26
25
|
invariant("a framework member is named") { !value.to_s.empty? }
|
|
27
26
|
end
|
|
28
27
|
|
|
29
|
-
# A vendored
|
|
30
|
-
# further out than `FrameworkMember`: not a member shipped inside
|
|
31
|
-
# hecks's own lib/, but a separate package vendored into the
|
|
32
|
-
# consuming project's own checkout. Same shape as `FrameworkMember`
|
|
33
|
-
# beside it, one word over — see EmbryonautBluebook's own header.
|
|
28
|
+
# A separate bluebook package vendored into the consuming project, not shipped in hecks's lib/.
|
|
34
29
|
value_object "VendoredBluebook" do
|
|
35
30
|
attribute :value, String
|
|
36
31
|
invariant("a vendored bluebook is named") { !value.to_s.empty? }
|
|
37
32
|
end
|
|
38
33
|
|
|
34
|
+
# A chapter the gem carries (the language, Expression, Tenancy, Deploy) this hecksagon attaches.
|
|
35
|
+
value_object "AttachedChapter" do
|
|
36
|
+
attribute :value, String
|
|
37
|
+
invariant("an attached chapter is named") { !value.to_s.empty? }
|
|
38
|
+
end
|
|
39
|
+
|
|
39
40
|
command "Declare" do
|
|
40
41
|
role "Deployment"
|
|
41
42
|
goal "Open a hecksagon for a domain"
|
|
@@ -80,9 +81,18 @@ Hecks.bluebook "Hecksagon" do
|
|
|
80
81
|
emits "VendoredBluebookAttached"
|
|
81
82
|
end
|
|
82
83
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
command "Attaches" do
|
|
85
|
+
role "Deployment"
|
|
86
|
+
goal "Attach a chapter the gem carries to this hecksagon, by name"
|
|
87
|
+
|
|
88
|
+
attribute :chapter, AttachedChapter
|
|
89
|
+
|
|
90
|
+
sets :attached_chapters, append: { value: :chapter }
|
|
91
|
+
|
|
92
|
+
emits "ChapterAttached"
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# Keyword rows for File and Hecksagon; SyntaxBoot discovers every aggregate-local seed table.
|
|
86
96
|
value_object "KeywordSeed" do
|
|
87
97
|
attribute :word, String
|
|
88
98
|
attribute :context, String, admits: "Syntax::Context"
|
|
@@ -99,22 +109,12 @@ Hecks.bluebook "Hecksagon" do
|
|
|
99
109
|
member word: "subscribe", context: "Hecksagon", body: "none", inner: "", opens: "", fills: "subscriptions"
|
|
100
110
|
member word: "uses_framework", context: "Hecksagon", body: "none", inner: "", opens: "", fills: "framework_members"
|
|
101
111
|
member word: "uses_embryonaut_bluebook", context: "Hecksagon", body: "none", inner: "", opens: "", fills: "vendored_bluebooks"
|
|
112
|
+
member word: "attaches", context: "Hecksagon", body: "none", inner: "", opens: "", fills: "attached_chapters"
|
|
102
113
|
member word: "port", context: "Hecksagon", body: "keywords", inner: "DomainPort", opens: "DomainPort", fills: "", calls: "port_impl"
|
|
103
|
-
# A
|
|
104
|
-
#
|
|
105
|
-
# (`inner`/`opens: "Policy"` reuses that context's own `on`/`trigger`
|
|
106
|
-
# wholesale, zero new inner vocabulary), but declared as a wiring
|
|
107
|
-
# decision (which FOREIGN domain's event this chapter conforms to),
|
|
108
|
-
# the same kind of decision `port`/`uses_framework` already are.
|
|
109
|
-
# No `calls:` — `HecksagonBuilder#translates` is an ordinary method,
|
|
110
|
-
# the same shape `subscribe`/`uses_framework` already are, reached
|
|
111
|
-
# by Ruby's own method lookup before `word_gate` ever runs.
|
|
114
|
+
# A cross-domain reaction wired here rather than in the bluebook; reuses the Policy context.
|
|
115
|
+
# No `calls:` — HecksagonBuilder#translates is an ordinary method, found before `word_gate`.
|
|
112
116
|
member word: "translates", context: "Hecksagon", body: "keywords", inner: "Policy", opens: "Policy", fills: ""
|
|
113
|
-
#
|
|
114
|
-
# get this mark automatically from uses_framework /
|
|
115
|
-
# uses_embryonaut_bluebook and never write it in their own files.
|
|
116
|
-
# No `calls:` — `HecksagonBuilder#bounded` is an ordinary method,
|
|
117
|
-
# same shape `subscribe` already is.
|
|
117
|
+
# Marks a consumer-owned bounded context; framework and vendored packages get it implicitly.
|
|
118
118
|
member word: "bounded", context: "Hecksagon", body: "none", inner: "", opens: "", fills: ""
|
|
119
119
|
|
|
120
120
|
end
|
|
@@ -140,6 +140,7 @@ Hecks.bluebook "Hecksagon" do
|
|
|
140
140
|
member keyword: "subscribe", context: "Hecksagon", at: "1", named: "", kind: "text", required: "true", fills: "subscriptions"
|
|
141
141
|
member keyword: "uses_framework", context: "Hecksagon", at: "1", named: "", kind: "text", required: "true", fills: "framework_members"
|
|
142
142
|
member keyword: "uses_embryonaut_bluebook", context: "Hecksagon", at: "1", named: "", kind: "text", required: "true", fills: "vendored_bluebooks"
|
|
143
|
+
member keyword: "attaches", context: "Hecksagon", at: "1", named: "", kind: "text", required: "true", fills: "attached_chapters"
|
|
143
144
|
member keyword: "port", context: "Hecksagon", at: "1", named: "", kind: "text", required: "true", fills: "name"
|
|
144
145
|
member keyword: "translates", context: "Hecksagon", at: "1", named: "", kind: "text", required: "true", fills: "name"
|
|
145
146
|
|