hecks 6.0.0 → 7.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 +19 -12
- data/lib/hecks/adapters/driven/claude_code.rb +2 -2
- data/lib/hecks/adapters/driven/folder.rb +10 -1
- data/lib/hecks/adapters/driven/folder_overlay.rb +15 -0
- data/lib/hecks/adapters/driven/heki.rb +1 -1
- data/lib/hecks/adapters/driven/in_process_key_vault.rb +1 -1
- data/lib/hecks/adapters/driven/memory/outbox_rows.rb +2 -2
- data/lib/hecks/adapters/driven/postgres/name_guard.rb +25 -0
- data/lib/hecks/adapters/driven/postgres/outbox.rb +3 -3
- data/lib/hecks/adapters/driven/postgres/repository.rb +1 -1
- data/lib/hecks/adapters/driven/postgres/shared_connection.rb +1 -1
- data/lib/hecks/adapters/driven/postgres.rb +3 -0
- data/lib/hecks/adapters/driven/postgres_era/boot.rb +28 -16
- data/lib/hecks/adapters/driven/postgres_era/class_methods.rb +27 -7
- data/lib/hecks/adapters/driven/postgres_era/dialect.rb +10 -5
- data/lib/hecks/adapters/driven/postgres_era/field_cache_provisioner.rb +39 -0
- data/lib/hecks/adapters/driven/postgres_era/journal.rb +52 -13
- data/lib/hecks/adapters/driven/postgres_era/lineage/chain_sql.rb +29 -49
- data/lib/hecks/adapters/driven/postgres_era/lineage/direct_sql.rb +73 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage/direct_verified.json +10 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage/direct_verified.rb +65 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage/domain_rename.rb +77 -25
- data/lib/hecks/adapters/driven/postgres_era/lineage/domain_rename_state.rb +108 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage/era_integrity.rb +11 -6
- data/lib/hecks/adapters/driven/postgres_era/lineage/era_store.rb +63 -5
- data/lib/hecks/adapters/driven/postgres_era/lineage/layered_sql.rb +64 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage/ledger_reset.rb +150 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage/mint_provisioning.rb +85 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage/mint_transaction.rb +11 -7
- data/lib/hecks/adapters/driven/postgres_era/lineage/provisioning.rb +11 -5
- data/lib/hecks/adapters/driven/postgres_era/lineage/split_sql.rb +76 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage/sql_templates.rb +9 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage.rb +10 -2
- data/lib/hecks/adapters/driven/postgres_era/lineage_manager/context.rb +23 -3
- data/lib/hecks/adapters/driven/postgres_era/lineage_manager/coverage_check.rb +3 -1
- data/lib/hecks/adapters/driven/postgres_era/lineage_manager/disposable_ledger.rb +119 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage_manager/era_resolution.rb +219 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage_manager/era_resolver.rb +68 -71
- data/lib/hecks/adapters/driven/postgres_era/lineage_manager/held_era.rb +68 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage_manager/ledger_change.rb +63 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage_manager/merge_coordinator.rb +1 -1
- data/lib/hecks/adapters/driven/postgres_era/lineage_manager/mint_decision.rb +163 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage_manager/mint_request.rb +24 -0
- data/lib/hecks/adapters/driven/postgres_era/lineage_manager/minter.rb +59 -21
- data/lib/hecks/adapters/driven/postgres_era/lineage_manager/refusals.rb +24 -11
- data/lib/hecks/adapters/driven/postgres_era/lineage_manager.rb +40 -6
- data/lib/hecks/adapters/driven/postgres_era/shared_tables.rb +32 -0
- data/lib/hecks/adapters/driven/postgres_era.adapter +12 -0
- data/lib/hecks/adapters/driven/postgres_era.rb +25 -10
- data/lib/hecks/adapters/driven/prism.rb +0 -1
- data/lib/hecks/adapters/driven/sql_query_builder.rb +1 -0
- data/lib/hecks/adapters/driven/sqlite/dispatch_claims.rb +1 -1
- data/lib/hecks/adapters/driven/sqlite/name_guard.rb +25 -0
- data/lib/hecks/adapters/driven/sqlite/outbox.rb +2 -2
- data/lib/hecks/adapters/driven/sqlite/repository.rb +1 -1
- data/lib/hecks/adapters/driven/sqlite/schema_builder.rb +20 -0
- data/lib/hecks/adapters/driven/sqlite.rb +9 -1
- data/lib/hecks/adapters/driven/tenant_provisioner.rb +1 -1
- data/lib/hecks/adapters/driven/worktree_overlay.rb +117 -0
- data/lib/hecks/adapters/driving/cli/shorthand.rb +5 -1
- data/lib/hecks/adapters/driving/cli.rb +1 -1
- data/lib/hecks/adapters/driving/cli_runner/answers.rb +77 -22
- data/lib/hecks/adapters/driving/cli_runner/bang_rule.rb +35 -0
- data/lib/hecks/adapters/driving/cli_runner/completion_words.rb +36 -0
- data/lib/hecks/adapters/driving/cli_runner/json_words.rb +55 -0
- data/lib/hecks/adapters/driving/cli_runner/name_index.rb +63 -0
- data/lib/hecks/adapters/driving/cli_runner/read_context.rb +32 -0
- data/lib/hecks/adapters/driving/cli_runner/renamed_names.rb +49 -0
- data/lib/hecks/adapters/driving/cli_runner/resolution.rb +43 -17
- data/lib/hecks/adapters/driving/cli_runner/resume_words.rb +63 -0
- data/lib/hecks/adapters/driving/cli_runner/run_reference.rb +66 -0
- data/lib/hecks/adapters/driving/cli_runner/run_replay.rb +118 -0
- data/lib/hecks/adapters/driving/cli_runner/search_words.rb +35 -0
- data/lib/hecks/adapters/driving/cli_runner/settling.rb +6 -5
- data/lib/hecks/adapters/driving/cli_runner/streaming.rb +11 -10
- data/lib/hecks/adapters/driving/cli_runner/suggestions.rb +1 -1
- data/lib/hecks/adapters/driving/cli_runner/tour_words.rb +77 -0
- data/lib/hecks/adapters/driving/cli_runner/verb_names.rb +36 -4
- data/lib/hecks/adapters/driving/cli_runner/verbosity.rb +75 -0
- data/lib/hecks/adapters/driving/cli_runner.rb +106 -7
- data/lib/hecks/adapters/driving/context_line.rb +85 -0
- data/lib/hecks/adapters/driving/exit_status.rb +31 -0
- data/lib/hecks/adapters/driving/launcher_options.rb +7 -5
- data/lib/hecks/adapters/driving/mcp/progress_sink.rb +45 -0
- data/lib/hecks/adapters/driving/mcp/tool_calls.rb +7 -5
- data/lib/hecks/adapters/driving/mcp.rb +25 -5
- data/lib/hecks/adapters/driving/mcp_scope/argument_policy.rb +40 -7
- data/lib/hecks/adapters/driving/mcp_scope.rb +8 -7
- data/lib/hecks/adapters/driving/ruby/aggregate_module/hooks.rb +154 -0
- data/lib/hecks/adapters/driving/ruby/aggregate_module.rb +64 -93
- data/lib/hecks/adapters/driving/usage_log.rb +146 -0
- data/lib/hecks/adapters/driving/write_guard.rb +55 -0
- data/lib/hecks/adapters/driving.rb +0 -1
- data/lib/hecks/behaviors/dsl.rb +5 -1
- data/lib/hecks/behaviors/expectations/boot.rb +0 -1
- data/lib/hecks/bluebook/acknowledgements.rb +1 -1
- data/lib/hecks/bluebook/aggregate.rb +21 -18
- data/lib/hecks/bluebook/assembly/contracts/sagas.rb +2 -0
- data/lib/hecks/bluebook/assembly/contracts/structure.rb +18 -13
- data/lib/hecks/bluebook/behaviour/aggregate.rb +27 -3
- data/lib/hecks/bluebook/command.rb +16 -5
- data/lib/hecks/bluebook/declaration.rb +32 -4
- data/lib/hecks/bluebook/domain_port.rb +7 -3
- data/lib/hecks/bluebook/dsl/aggregate_builder/relationships.rb +0 -2
- data/lib/hecks/bluebook/dsl/aggregate_builder/renaming.rb +25 -0
- data/lib/hecks/bluebook/dsl/aggregate_builder.rb +3 -0
- data/lib/hecks/bluebook/dsl/attribute_collector.rb +0 -1
- data/lib/hecks/bluebook/dsl/audience_word.rb +40 -0
- data/lib/hecks/bluebook/dsl/bluebook_builder/metadata.rb +56 -0
- data/lib/hecks/bluebook/dsl/bluebook_builder/modules.rb +80 -0
- data/lib/hecks/bluebook/dsl/bluebook_builder/validation/correlation_keys.rb +51 -0
- data/lib/hecks/bluebook/dsl/bluebook_builder/validation.rb +1 -0
- data/lib/hecks/bluebook/dsl/bluebook_builder.rb +17 -34
- data/lib/hecks/bluebook/dsl/bootstrap_table.rb +8 -0
- data/lib/hecks/bluebook/dsl/command_builder.rb +13 -3
- data/lib/hecks/bluebook/dsl/entity_builder.rb +0 -2
- data/lib/hecks/bluebook/dsl/generic_dispatch.rb +6 -4
- data/lib/hecks/bluebook/dsl/kinds.rb +53 -0
- data/lib/hecks/bluebook/dsl/port_operation_builder.rb +9 -2
- data/lib/hecks/bluebook/dsl/process_manager_builder.rb +25 -15
- data/lib/hecks/bluebook/dsl/translation_builder.rb +16 -1
- data/lib/hecks/bluebook/dsl/word_gate.rb +1 -1
- data/lib/hecks/bluebook/dsl.rb +1 -0
- data/lib/hecks/bluebook/meta_validator/judge/identity.rb +9 -4
- data/lib/hecks/bluebook/meta_validator/plan/category.rb +10 -2
- data/lib/hecks/bluebook/meta_validator/plan/verbs.rb +9 -0
- data/lib/hecks/bluebook/meta_validator/plan.rb +2 -1
- data/lib/hecks/bluebook/meta_validator/reconstruction/heads.rb +3 -1
- data/lib/hecks/bluebook/meta_validator/reconstruction/reading.rb +7 -0
- data/lib/hecks/bluebook/meta_validator/reconstruction.rb +7 -2
- data/lib/hecks/bluebook/meta_validator/shapes.rb +3 -0
- data/lib/hecks/bluebook/meta_validator/syntax_boot/disk_cache.rb +1 -1
- data/lib/hecks/bluebook/model_check/aggregate_checks.rb +27 -0
- data/lib/hecks/bluebook/model_check/ask_checks.rb +25 -0
- data/lib/hecks/bluebook/model_check/reaction_chains.rb +114 -0
- data/lib/hecks/bluebook/model_check/reaction_cycles.rb +53 -0
- data/lib/hecks/bluebook/model_check/reaction_depth_checks.rb +58 -0
- data/lib/hecks/bluebook/model_check/reaction_walk.rb +62 -0
- data/lib/hecks/bluebook/model_check.rb +5 -27
- data/lib/hecks/bluebook/process_manager.rb +20 -3
- data/lib/hecks/bluebook/translation.rb +5 -3
- data/lib/hecks/bluebook/translation_plan.rb +9 -2
- data/lib/hecks/ci_pipeline/adapters/ci_cache.adapter +7 -0
- data/lib/hecks/ci_pipeline/adapters/ci_cache.rb +39 -0
- data/lib/hecks/ci_pipeline/adapters/ci_runner.adapter +7 -0
- data/lib/hecks/ci_pipeline/adapters/ci_runner.rb +55 -0
- data/lib/hecks/ci_pipeline/ci_pipeline.behaviors +322 -0
- data/lib/hecks/ci_pipeline/ci_pipeline.bluebook +938 -0
- data/lib/hecks/ci_pipeline/ci_pipeline.hecksagon +12 -0
- data/lib/hecks/ci_pipeline/ci_pipeline.ports.hecksagon +16 -0
- data/lib/hecks/ci_speed/adapters/ci_reader.adapter +7 -0
- data/lib/hecks/ci_speed/adapters/ci_reader.rb +141 -0
- data/lib/hecks/ci_speed/adapters/local_runner/answer.rb +41 -0
- data/lib/hecks/ci_speed/adapters/local_runner/catalog.rb +89 -0
- data/lib/hecks/ci_speed/adapters/local_runner/checkouts.rb +89 -0
- data/lib/hecks/ci_speed/adapters/local_runner/launcher.rb +69 -0
- data/lib/hecks/ci_speed/adapters/local_runner/load_average.rb +38 -0
- data/lib/hecks/ci_speed/adapters/local_runner/refs.rb +39 -0
- data/lib/hecks/ci_speed/adapters/local_runner/refused.rb +11 -0
- data/lib/hecks/ci_speed/adapters/local_runner/verdict.rb +71 -0
- data/lib/hecks/ci_speed/adapters/local_runner.adapter +7 -0
- data/lib/hecks/ci_speed/adapters/local_runner.rb +168 -0
- data/lib/hecks/ci_speed/adapters/replayed_runner.rb +39 -0
- data/lib/hecks/ci_speed/ci_speed.behaviors +341 -0
- data/lib/hecks/ci_speed/ci_speed.bluebook +1073 -0
- data/lib/hecks/ci_speed/ci_speed.hecksagon +11 -0
- data/lib/hecks/ci_speed/ci_speed.ports.hecksagon +21 -0
- data/lib/hecks/ci_workflows/ci_workflows.behaviors +13 -0
- data/lib/hecks/ci_workflows/ci_workflows.bluebook +173 -0
- data/lib/hecks/ci_workflows/ci_workflows.hecksagon +15 -0
- data/lib/hecks/coder/coder.bluebook +385 -0
- data/lib/hecks/coder/coder.hecksagon +12 -0
- data/lib/hecks/command_names/check.rb +39 -0
- data/lib/hecks/command_names/extractor.rb +67 -0
- data/lib/hecks/command_names/index.rb +40 -0
- data/lib/hecks/command_names/resolution.rb +81 -0
- data/lib/hecks/command_names/scan.rb +54 -0
- data/lib/hecks/command_names/sources.rb +73 -0
- data/lib/hecks/command_names.rb +26 -0
- data/lib/hecks/composer/jobs.rb +1 -1
- data/lib/hecks/composer/toolbox.rb +8 -1
- data/lib/hecks/corpus/generated_key.rb +205 -0
- data/lib/hecks/corpus/listing.rb +34 -0
- data/lib/hecks/corpus/rust.rb +27 -11
- data/lib/hecks/corpus/sources.rb +2 -1
- data/lib/hecks/corpus.rb +37 -42
- data/lib/hecks/deprecation.rb +23 -0
- data/lib/hecks/doc/reference/readme.rb +1 -1
- data/lib/hecks/doc/reference/rendering.rb +2 -2
- data/lib/hecks/doc/reference.rb +1 -1
- data/lib/hecks/embryonaut_bluebook/manifest.rb +1 -1
- data/lib/hecks/fixer/fixer.bluebook +240 -0
- data/lib/hecks/fixer/fixer.hecksagon +17 -0
- data/lib/hecks/framework_bluebooks.rb +32 -7
- data/lib/hecks/fuzzing/concurrent_dispatch/world_copy.rb +1 -0
- data/lib/hecks/fuzzing/isolated_boot/postgres_scratch.rb +11 -12
- data/lib/hecks/fuzzing/isolated_boot/worlds.rb +23 -5
- data/lib/hecks/fuzzing/isolated_boot.rb +1 -1
- data/lib/hecks/fuzzing/mutation/checks.rb +3 -3
- data/lib/hecks/grammar/translation.bluebook +1 -1
- data/lib/hecks/grammar/translation_rules.json +64 -0
- data/lib/hecks/hecks/adapter_words.json +7 -0
- data/lib/hecks/hecks/adapters/area_overlap.rb +156 -0
- data/lib/hecks/hecks/adapters/claude_agents.rb +8 -3
- data/lib/hecks/hecks/adapters/codebase/batch_runs.rb +60 -0
- data/lib/hecks/hecks/adapters/codebase/changed_specs.rb +52 -0
- data/lib/hecks/hecks/adapters/codebase/codemods.rb +3 -2
- data/lib/hecks/hecks/adapters/codebase/conformance.rb +14 -1
- data/lib/hecks/hecks/adapters/codebase/corpus_queries.rb +53 -0
- data/lib/hecks/hecks/adapters/codebase/generated_keys.rb +31 -0
- data/lib/hecks/hecks/adapters/codebase/impacted_specs.rb +110 -0
- data/lib/hecks/hecks/adapters/codebase/language.rb +2 -2
- data/lib/hecks/hecks/adapters/codebase/launcher_text.rb +39 -0
- data/lib/hecks/hecks/adapters/codebase/minitest_runs.rb +52 -0
- data/lib/hecks/hecks/adapters/codebase/regeneration.rb +51 -8
- data/lib/hecks/hecks/adapters/codebase/run_options.rb +35 -0
- data/lib/hecks/hecks/adapters/codebase/scripting.rb +39 -0
- data/lib/hecks/hecks/adapters/codebase/search.rb +1 -1
- data/lib/hecks/hecks/adapters/codebase/source_tree.rb +79 -51
- data/lib/hecks/hecks/adapters/codebase/spec_files/report.rb +71 -0
- data/lib/hecks/hecks/adapters/codebase/spec_files/shared_run.rb +73 -0
- data/lib/hecks/hecks/adapters/codebase/spec_files.rb +95 -0
- data/lib/hecks/hecks/adapters/codebase/test_runner.rb +53 -4
- data/lib/hecks/hecks/adapters/codebase/test_scope.rb +105 -0
- data/lib/hecks/hecks/adapters/codebase/test_suite.rb +48 -34
- data/lib/hecks/hecks/adapters/console_capture.rb +1 -1
- data/lib/hecks/hecks/adapters/cost_explorer.rb +9 -1
- data/lib/hecks/hecks/adapters/dispatching/brief_text.rb +51 -0
- data/lib/hecks/hecks/adapters/dispatching/launcher.rb +97 -0
- data/lib/hecks/hecks/adapters/dispatching/plan.rb +82 -0
- data/lib/hecks/hecks/adapters/dispatching/rows.rb +66 -0
- data/lib/hecks/hecks/adapters/dispatching/settings.rb +81 -0
- data/lib/hecks/hecks/adapters/dispatching/settler.rb +40 -0
- data/lib/hecks/hecks/adapters/dispatching.adapter +7 -0
- data/lib/hecks/hecks/adapters/dispatching.rb +93 -0
- data/lib/hecks/hecks/adapters/doctor_reading/report.rb +27 -0
- data/lib/hecks/hecks/adapters/doctor_reading.adapter +7 -0
- data/lib/hecks/hecks/adapters/doctor_reading.rb +161 -0
- data/lib/hecks/hecks/adapters/git_checkout.rb +1 -1
- data/lib/hecks/hecks/adapters/git_commit.adapter +7 -0
- data/lib/hecks/hecks/adapters/git_commit.rb +61 -0
- data/lib/hecks/hecks/adapters/git_landing/finisher.rb +82 -0
- data/lib/hecks/hecks/adapters/git_landing/foreign_hold.rb +111 -0
- data/lib/hecks/hecks/adapters/git_landing/line.rb +171 -0
- data/lib/hecks/hecks/adapters/git_landing/lineup.rb +98 -0
- data/lib/hecks/hecks/adapters/git_landing/merger.rb +1 -1
- data/lib/hecks/hecks/adapters/git_landing/numbering.rb +54 -0
- data/lib/hecks/hecks/adapters/git_landing/rivals.rb +59 -0
- data/lib/hecks/hecks/adapters/git_landing/ticket.rb +156 -0
- data/lib/hecks/hecks/adapters/git_landing/tidy.rb +147 -0
- data/lib/hecks/hecks/adapters/git_landing/train.rb +104 -0
- data/lib/hecks/hecks/adapters/git_landing/verdict.rb +64 -0
- data/lib/hecks/hecks/adapters/git_landing/waiting.rb +120 -0
- data/lib/hecks/hecks/adapters/git_landing.rb +106 -20
- data/lib/hecks/hecks/adapters/git_main_pull.rb +99 -0
- data/lib/hecks/hecks/adapters/git_rehearsal/bench.rb +82 -0
- data/lib/hecks/hecks/adapters/git_rehearsal/due.rb +84 -0
- data/lib/hecks/hecks/adapters/git_rehearsal/impacted/skips.rb +47 -0
- data/lib/hecks/hecks/adapters/git_rehearsal/impacted/spec_run.rb +75 -0
- data/lib/hecks/hecks/adapters/git_rehearsal/impacted.rb +181 -0
- data/lib/hecks/hecks/adapters/git_rehearsal/line.rb +76 -0
- data/lib/hecks/hecks/adapters/git_rehearsal/reading.rb +24 -0
- data/lib/hecks/hecks/adapters/git_rehearsal/record.rb +146 -0
- data/lib/hecks/hecks/adapters/git_rehearsal/spec_map/corpus.rb +25 -0
- data/lib/hecks/hecks/adapters/git_rehearsal/spec_map/needles.rb +61 -0
- data/lib/hecks/hecks/adapters/git_rehearsal/spec_map.rb +105 -0
- data/lib/hecks/hecks/adapters/git_rehearsal/stages.rb +118 -0
- data/lib/hecks/hecks/adapters/git_rehearsal.adapter +7 -0
- data/lib/hecks/hecks/adapters/git_rehearsal.rb +141 -0
- data/lib/hecks/hecks/adapters/git_train/bench.rb +15 -15
- data/lib/hecks/hecks/adapters/git_train/branch_guard.rb +62 -0
- data/lib/hecks/hecks/adapters/git_train/carriage.rb +27 -28
- data/lib/hecks/hecks/adapters/git_train/launcher_shape.rb +75 -0
- data/lib/hecks/hecks/adapters/git_train/mint_step.rb +47 -0
- data/lib/hecks/hecks/adapters/git_train/settlement.rb +167 -0
- data/lib/hecks/hecks/adapters/git_train.rb +73 -15
- data/lib/hecks/hecks/adapters/git_worktree_add.adapter +7 -0
- data/lib/hecks/hecks/adapters/git_worktree_add.rb +68 -0
- data/lib/hecks/hecks/adapters/github_pull_requests.adapter +7 -0
- data/lib/hecks/hecks/adapters/github_pull_requests.rb +109 -0
- data/lib/hecks/hecks/adapters/host_http.rb +6 -6
- data/lib/hecks/hecks/adapters/in_process_boot.rb +10 -8
- data/lib/hecks/hecks/adapters/in_process_operations.rb +11 -17
- data/lib/hecks/hecks/adapters/in_process_undo.rb +17 -0
- data/lib/hecks/hecks/adapters/journal_store/changes.rb +13 -4
- data/lib/hecks/hecks/adapters/journal_store/edge_audit.rb +28 -15
- data/lib/hecks/hecks/adapters/journal_store/examination.rb +17 -1
- data/lib/hecks/hecks/adapters/journal_store/held_domain/renaming.rb +45 -0
- data/lib/hecks/hecks/adapters/journal_store/held_domain.rb +31 -5
- data/lib/hecks/hecks/adapters/journal_store/held_mint.rb +128 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/attestation.rb +1 -1
- data/lib/hecks/hecks/adapters/journal_store/readings/boot_status.rb +58 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/composition.rb +39 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/event_trace/outcomes.rb +76 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/event_trace/postgres_reader.rb +44 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/event_trace/reader.rb +64 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/event_trace/report.rb +102 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/event_trace/sqlite_reader.rb +43 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/event_trace/stores.rb +80 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/event_trace/subscribers.rb +72 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/event_trace/summary.rb +39 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/event_trace.rb +39 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/mint_plan/command_line.rb +57 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/mint_plan/edge_guards.rb +107 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/mint_plan/inspection.rb +94 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/mint_plan/plan.rb +66 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/mint_plan/report.rb +72 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/mint_plan/store.rb +34 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/mint_plan/watermark_guards.rb +86 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/mint_plan/world.rb +66 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/mint_plan.rb +36 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/projection_audit.rb +64 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/scaffolding.rb +3 -3
- data/lib/hecks/hecks/adapters/journal_store/readings/sqlite_status/database_reading.rb +113 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/sqlite_status/read_only.rb +33 -0
- data/lib/hecks/hecks/adapters/journal_store/readings/sqlite_status.rb +32 -0
- data/lib/hecks/hecks/adapters/journal_store/readings.rb +13 -1
- data/lib/hecks/hecks/adapters/journal_store/reconcile_report.rb +60 -0
- data/lib/hecks/hecks/adapters/journal_store/reconciliation.rb +121 -0
- data/lib/hecks/hecks/adapters/journal_store/translation_write/shape_edge.rb +59 -0
- data/lib/hecks/hecks/adapters/journal_store/translation_write.rb +123 -0
- data/lib/hecks/hecks/adapters/journal_store.rb +16 -0
- data/lib/hecks/hecks/adapters/landed_work.adapter +7 -0
- data/lib/hecks/hecks/adapters/landed_work.rb +52 -0
- data/lib/hecks/hecks/adapters/local_files.rb +6 -6
- data/lib/hecks/hecks/adapters/process_pool.rb +3 -2
- data/lib/hecks/hecks/adapters/push_size.rb +57 -0
- data/lib/hecks/hecks/adapters/qa_quiescing.adapter +7 -0
- data/lib/hecks/hecks/adapters/qa_quiescing.rb +57 -0
- data/lib/hecks/hecks/adapters/rehearsal/inquiry.rb +30 -3
- data/lib/hecks/hecks/adapters/rehearsal/memory_store.rb +63 -3
- data/lib/hecks/hecks/adapters/rehearsal/postgres_reading.rb +29 -6
- data/lib/hecks/hecks/adapters/rehearsal/subject.rb +11 -5
- data/lib/hecks/hecks/adapters/rust_toolchain.rb +10 -1
- data/lib/hecks/hecks/adapters/rust_workspace.rb +1 -1
- data/lib/hecks/hecks/adapters/settings_reading/disposable_ledger.rb +32 -0
- data/lib/hecks/hecks/adapters/settings_reading/push_nudge.rb +26 -0
- data/lib/hecks/hecks/adapters/settings_reading/stores.rb +76 -0
- data/lib/hecks/hecks/adapters/settings_reading/test_scope.rb +28 -0
- data/lib/hecks/hecks/adapters/settings_reading.rb +28 -2
- data/lib/hecks/hecks/adapters/started_work.rb +42 -0
- data/lib/hecks/hecks/adapters/terminal.rb +12 -10
- data/lib/hecks/hecks/adapters/where_reading.adapter +7 -0
- data/lib/hecks/hecks/adapters/where_reading.rb +64 -0
- data/lib/hecks/hecks/adapters/work_areas.rb +57 -0
- data/lib/hecks/hecks/adapters/work_limits.rb +57 -0
- data/lib/hecks/hecks/build/build.bluebook +576 -0
- data/lib/hecks/hecks/check/check.bluebook +966 -0
- data/lib/hecks/hecks/codebase.behaviors +61 -5
- data/lib/hecks/hecks/composer.behaviors +1 -1
- data/lib/hecks/hecks/context_map.hecksagon +1 -1
- data/lib/hecks/hecks/custodian.behaviors +33 -7
- data/lib/hecks/hecks/delegate/delegate.bluebook +355 -0
- data/lib/hecks/hecks/deliver/deliver.bluebook +945 -0
- data/lib/hecks/hecks/deploy.behaviors +1 -1
- data/lib/hecks/hecks/evolve/evolve.bluebook +788 -0
- data/lib/hecks/hecks/find/find.bluebook +81 -0
- data/lib/hecks/hecks/hecks.behaviors +1 -1
- data/lib/hecks/hecks/hecks.bluebook +0 -133
- data/lib/hecks/hecks/hecks.contextmap +2 -0
- data/lib/hecks/hecks/hecks.hecksagon +185 -29
- data/lib/hecks/hecks/hecks.world +35 -9
- data/lib/hecks/hecks/implicit_moves.json +24 -0
- data/lib/hecks/hecks/migrate/migrate.bluebook +1066 -0
- data/lib/hecks/hecks/operate/operate.bluebook +695 -0
- data/lib/hecks/hecks/quiesce/quiesce.bluebook +117 -0
- data/lib/hecks/hecks/rehearse/rehearse.bluebook +133 -0
- data/lib/hecks/hecks/release/release.bluebook +916 -0
- data/lib/hecks/hecks/serve/serve.bluebook +134 -0
- data/lib/hecks/hecks/shapes.json +1 -15
- data/lib/hecks/hecks/site.behaviors +1 -1
- data/lib/hecks/hecks/start/start.bluebook +194 -0
- data/lib/hecks/hecks/test/test.bluebook +638 -0
- data/lib/hecks/hecks/tickets.world +14 -0
- data/lib/hecks/language/bluebook/aggregate.bluebook +22 -0
- data/lib/hecks/language/bluebook/bluebook.bluebook +34 -0
- data/lib/hecks/language/bluebook/command.bluebook +35 -0
- data/lib/hecks/language/bluebook/process_manager.bluebook +14 -1
- data/lib/hecks/language/bluebook/vocabulary.bluebook +174 -54
- data/lib/hecks/language/hecksagon/domain_port.bluebook +1 -0
- data/lib/hecks/language/hecksagon/port_operation.bluebook +14 -0
- data/lib/hecks/language/kinds/run.kind +120 -0
- data/lib/hecks/language/oidc.json +10 -0
- data/lib/hecks/language/translation/translation_aggregate.bluebook +24 -0
- data/lib/hecks/module_folders.rb +31 -0
- data/lib/hecks/ports/key_vault.rb +1 -1
- data/lib/hecks/ports/persistence/append_only.rb +26 -8
- data/lib/hecks/ports/persistence/binding_policy.rb +3 -1
- data/lib/hecks/ports/persistence/codec_boundary.rb +1 -1
- data/lib/hecks/ports/persistence/mint_door.rb +74 -0
- data/lib/hecks/ports/persistence/plugins/era/era_check.rb +6 -5
- data/lib/hecks/ports/persistence/plugins/era/era_guard/shape_diff.rb +5 -1
- data/lib/hecks/ports/persistence/plugins/era/era_status.rb +48 -0
- data/lib/hecks/ports/persistence/plugins/era/projected_bluebook.rb +127 -0
- data/lib/hecks/ports/persistence/plugins/era/translation/additive_shape.rb +107 -0
- data/lib/hecks/ports/persistence/plugins/era/translation/compose.rb +155 -0
- data/lib/hecks/ports/persistence/plugins/era/translation/compose_render.rb +79 -0
- data/lib/hecks/ports/persistence/plugins/era/translation/edge_files.rb +49 -0
- data/lib/hecks/ports/persistence/plugins/era/translation/edge_route.rb +61 -0
- data/lib/hecks/ports/persistence/plugins/era/translation/implicit_edge.rb +67 -0
- data/lib/hecks/ports/persistence/plugins/era/translation/reconcile.rb +130 -0
- data/lib/hecks/ports/persistence/plugins/era/translation/reconcile_files.rb +35 -0
- data/lib/hecks/ports/persistence/plugins/era/translation/scaffold/differ.rb +13 -5
- data/lib/hecks/ports/persistence/plugins/era/translation.rb +5 -0
- data/lib/hecks/ports/persistence/plugins/era.rb +1 -0
- data/lib/hecks/ports/persistence/repository_factory.rb +11 -3
- data/lib/hecks/ports/persistence/stored_name_guard.rb +36 -0
- data/lib/hecks/ports/persistence.rb +2 -0
- data/lib/hecks/projections/ci_pipeline/table/checks.rb +137 -0
- data/lib/hecks/projections/ci_pipeline/table/lookup.rb +59 -0
- data/lib/hecks/projections/ci_pipeline/table/refusals.rb +58 -0
- data/lib/hecks/projections/ci_pipeline/table/rows.rb +119 -0
- data/lib/hecks/projections/ci_pipeline/table/tree.rb +30 -0
- data/lib/hecks/projections/ci_pipeline/table/typing.rb +92 -0
- data/lib/hecks/projections/ci_pipeline/table.rb +112 -0
- data/lib/hecks/projections/ci_pipeline/workflows.rb +162 -0
- data/lib/hecks/projections/ci_pipeline/yaml_text.rb +104 -0
- data/lib/hecks/projections/deploy/box/hosting.rb +1 -1
- data/lib/hecks/projections/deploy/box/roll_recipe.rb +1 -1
- data/lib/hecks/projections/deploy/box/roll_scripts.rb +1 -1
- data/lib/hecks/projections/deploy/box.rb +1 -1
- data/lib/hecks/projections/deploy/templates/fargate/Makefile.tmpl +1 -1
- data/lib/hecks/projections/deploy/templates/lambda/Makefile.tmpl +3 -3
- data/lib/hecks/projections/undo.rb +46 -0
- data/lib/hecks/projections.rb +2 -0
- data/lib/hecks/projector/cli_projector/claims.rb +11 -0
- data/lib/hecks/projector/cli_projector/command_help.rb +6 -1
- data/lib/hecks/projector/cli_projector/command_specs.rb +11 -1
- data/lib/hecks/projector/cli_projector/completion.rb +87 -0
- data/lib/hecks/projector/cli_projector/everyday.rb +40 -0
- data/lib/hecks/projector/cli_projector/json_listing.rb +77 -0
- data/lib/hecks/projector/cli_projector/listing.rb +1 -1
- data/lib/hecks/projector/cli_projector/modules.rb +39 -0
- data/lib/hecks/projector/cli_projector/query_specs.rb +1 -0
- data/lib/hecks/projector/cli_projector/renames.rb +58 -0
- data/lib/hecks/projector/cli_projector/search.rb +74 -0
- data/lib/hecks/projector/cli_projector/usage.rb +23 -6
- data/lib/hecks/projector/cli_projector.rb +24 -1
- data/lib/hecks/quality_control/adapters/ci_head.adapter +8 -0
- data/lib/hecks/quality_control/adapters/image_roll.adapter +9 -0
- data/lib/hecks/quality_control/adapters/image_roll.rb +158 -0
- data/lib/hecks/quality_control/adapters/main_maintenance.adapter +8 -0
- data/lib/hecks/quality_control/adapters/main_maintenance.rb +275 -0
- data/lib/hecks/quality_control/adapters/pump_tools.adapter +7 -0
- data/lib/hecks/quality_control/adapters/pump_tools.rb +18 -0
- data/lib/hecks/quality_control/adapters/push_due_reader.adapter +8 -0
- data/lib/hecks/quality_control/adapters/push_due_reader.rb +99 -0
- data/lib/hecks/quality_control/adapters/qa_auto_mint.rb +183 -0
- data/lib/hecks/quality_control/adapters/qa_era_mint.rb +94 -0
- data/lib/hecks/quality_control/adapters/qa_quiesce_marker.rb +126 -0
- data/lib/hecks/quality_control/adapters/run_keys.rb +36 -0
- data/lib/hecks/quality_control/adapters/run_reader.adapter +7 -0
- data/lib/hecks/quality_control/adapters/run_reader.rb +188 -0
- data/lib/hecks/quality_control/cli/child.rb +1 -0
- data/lib/hecks/quality_control/cli/qa_discover_external_domains/scanning.rb +1 -1
- data/lib/hecks/quality_control/cli/qa_domain_novelty.rb +3 -3
- data/lib/hecks/quality_control/cli/qa_event_pump/attached.rb +67 -0
- data/lib/hecks/quality_control/cli/qa_event_pump/consumer.rb +103 -0
- data/lib/hecks/quality_control/cli/qa_event_pump/cursors.rb +60 -0
- data/lib/hecks/quality_control/cli/qa_event_pump/reactions.rb +46 -0
- data/lib/hecks/quality_control/cli/qa_event_pump/reader.rb +30 -0
- data/lib/hecks/quality_control/cli/qa_event_pump.rb +76 -0
- data/lib/hecks/quality_control/cli/qa_fix_main_bug/publishing.rb +79 -0
- data/lib/hecks/quality_control/cli/qa_fix_main_bug.rb +167 -0
- data/lib/hecks/quality_control/cli/qa_generated_domains/evaluation.rb +1 -1
- data/lib/hecks/quality_control/cli/qa_generated_domains/promotion.rb +3 -3
- data/lib/hecks/quality_control/cli/qa_main_gate/gate_run.rb +52 -0
- data/lib/hecks/quality_control/cli/qa_main_gate/logging.rb +70 -0
- data/lib/hecks/quality_control/cli/qa_main_gate/shell.rb +47 -0
- data/lib/hecks/quality_control/cli/qa_main_gate/sweeping.rb +59 -0
- data/lib/hecks/quality_control/cli/qa_main_gate/worktree.rb +62 -0
- data/lib/hecks/quality_control/cli/qa_main_gate.rb +135 -0
- data/lib/hecks/quality_control/cli/qa_postgres_role.rb +1 -1
- data/lib/hecks/quality_control/cli/qa_pr_check/checking.rb +2 -3
- data/lib/hecks/quality_control/cli/qa_push_nudge.rb +48 -0
- data/lib/hecks/quality_control/cli/qa_seed_angles/seed.rb +1 -1
- data/lib/hecks/quality_control/cli/qa_sweep/seat.rb +1 -1
- data/lib/hecks/quality_control/cli/qa_tick/event_pump_step.rb +34 -0
- data/lib/hecks/quality_control/cli/qa_tick/output.rb +16 -1
- data/lib/hecks/quality_control/cli/qa_tick/push_nudge_step.rb +28 -0
- data/lib/hecks/quality_control/cli/qa_tick/quiesce_guard.rb +51 -0
- data/lib/hecks/quality_control/cli/qa_tick.rb +36 -8
- data/lib/hecks/quality_control/quality_control.behaviors +65 -0
- data/lib/hecks/quality_control/quality_control.bluebook +1131 -11
- data/lib/hecks/quality_control/quality_control.hecksagon +11 -0
- data/lib/hecks/quality_control/quality_control.ports.hecksagon +138 -0
- data/lib/hecks/query_ir/touchpoints.rb +5 -7
- data/lib/hecks/refused.rb +21 -0
- data/lib/hecks/release/approval.rb +6 -3
- data/lib/hecks/release/conditions.rb +46 -0
- data/lib/hecks/release/runner/gem_publisher.rb +4 -4
- data/lib/hecks/release/version_commit.rb +48 -0
- data/lib/hecks/runtime/command_interpreter/hydration.rb +5 -4
- data/lib/hecks/runtime/command_interpreter/persisting.rb +11 -3
- data/lib/hecks/runtime/command_interpreter.rb +2 -2
- data/lib/hecks/runtime/command_rules/admissibility.rb +0 -2
- data/lib/hecks/runtime/command_rules/emission.rb +0 -1
- data/lib/hecks/runtime/dependency_planning/expression_reads.rb +0 -1
- data/lib/hecks/runtime/dispatcher/planning.rb +24 -0
- data/lib/hecks/runtime/dispatcher/routing.rb +6 -0
- data/lib/hecks/runtime/dispatcher/value_routing.rb +54 -0
- data/lib/hecks/runtime/dispatcher.rb +7 -1
- data/lib/hecks/runtime/dry_run_plan.rb +60 -0
- data/lib/hecks/runtime/entity_element/location.rb +0 -1
- data/lib/hecks/runtime/entity_element/mutations.rb +0 -1
- data/lib/hecks/runtime/entity_interpreter/locating.rb +5 -0
- data/lib/hecks/runtime/entity_interpreter.rb +0 -1
- data/lib/hecks/runtime/errors.rb +26 -0
- data/lib/hecks/runtime/instance.rb +0 -1
- data/lib/hecks/runtime/invocation_builder.rb +0 -1
- data/lib/hecks/runtime/outbox/consumer_runner.rb +9 -1
- data/lib/hecks/runtime/outbox/relay.rb +25 -4
- data/lib/hecks/runtime/outbox/runnable.rb +3 -1
- data/lib/hecks/runtime/outbox.rb +6 -2
- data/lib/hecks/runtime/policy_interpreter/fan_out.rb +18 -2
- data/lib/hecks/runtime/policy_interpreter.rb +17 -9
- data/lib/hecks/runtime/port_operation_interpreter.rb +21 -7
- data/lib/hecks/runtime/query_interpreter/arguments.rb +6 -5
- data/lib/hecks/runtime/reaction_invocation.rb +0 -1
- data/lib/hecks/runtime/refusal_wording.rb +12 -1
- data/lib/hecks/runtime/registry/context_maps.rb +1 -5
- data/lib/hecks/runtime/registry/declarations.rb +34 -4
- data/lib/hecks/runtime/registry/hecksagon_rules.rb +15 -1
- data/lib/hecks/runtime/registry/runtime_state.rb +10 -0
- data/lib/hecks/runtime/registry/world_defaults.rb +24 -2
- data/lib/hecks/runtime/registry/world_names.rb +99 -0
- data/lib/hecks/runtime/registry.rb +33 -27
- data/lib/hecks/runtime/saga_interpreter/compensation.rb +10 -0
- data/lib/hecks/runtime/saga_interpreter/correlation.rb +29 -3
- data/lib/hecks/runtime/saga_interpreter/delivery.rb +0 -1
- data/lib/hecks/runtime/saga_interpreter/lifecycle.rb +1 -1
- data/lib/hecks/runtime/saga_interpreter.rb +46 -2
- data/lib/hecks/runtime/value/coercion.rb +36 -8
- data/lib/hecks/rust_build/conformance.rb +16 -5
- data/lib/hecks/rust_build/parser.rb +25 -0
- data/lib/hecks/rust_build/project_rust/codegen_run.rb +45 -12
- data/lib/hecks/rust_build/project_rust/declared.rb +80 -0
- data/lib/hecks/rust_build/project_rust/features_header.rb +22 -0
- data/lib/hecks/rust_build/project_rust/manifest.rb +96 -0
- data/lib/hecks/rust_build/project_rust/meta.rb +36 -0
- data/lib/hecks/rust_build/project_rust.rb +28 -90
- data/lib/hecks/rust_build/write_if_changed.rb +19 -4
- data/lib/hecks/rust_build.rb +2 -1
- data/lib/hecks/rust_format.rb +32 -2
- data/lib/hecks/secrets.rb +111 -0
- data/lib/hecks/shape_ledger/edge_hygiene.rb +170 -0
- data/lib/hecks/shape_ledger/scope.rb +51 -0
- data/lib/hecks/shape_ledger/status.rb +89 -0
- data/lib/hecks/shape_ledger.rb +78 -33
- data/lib/hecks/site/bluebook/site.bluebook +1 -0
- data/lib/hecks/storehouse/audit.rb +34 -4
- data/lib/hecks/storehouse/callers.rb +8 -0
- data/lib/hecks/storehouse/dispatching.rb +14 -3
- data/lib/hecks/storehouse/identity.rb +41 -0
- data/lib/hecks/storehouse/querying.rb +7 -7
- data/lib/hecks/storehouse.rb +28 -10
- data/lib/hecks/tickets/bluebook/adapters/work_areas.adapter +7 -0
- data/lib/hecks/tickets/bluebook/adapters/work_limits.adapter +7 -0
- data/lib/hecks/tickets/bluebook/tickets.behaviors +70 -0
- data/lib/hecks/tickets/bluebook/tickets.bluebook +323 -28
- data/lib/hecks/tickets/bluebook/tickets.hecksagon +7 -0
- data/lib/hecks/tickets/bluebook/tickets.ports.hecksagon +17 -0
- data/lib/hecks/{cli → tools}/behaviors.rb +1 -1
- data/lib/hecks/{cli → tools}/canonicalise.rb +1 -1
- data/lib/hecks/{cli → tools}/check_engine_agreement.rb +1 -1
- data/lib/hecks/{cli → tools}/check_era.rb +6 -6
- data/lib/hecks/tools/ci_gates.rb +8 -2
- data/lib/hecks/tools/ci_workflows.rb +98 -0
- data/lib/hecks/{cli → tools}/console.rb +1 -1
- data/lib/hecks/{cli → tools}/deploy_template_diff.rb +1 -1
- data/lib/hecks/{cli → tools}/doc_coverage.rb +2 -2
- data/lib/hecks/{cli → tools}/document.rb +1 -1
- data/lib/hecks/{cli → tools}/domain_stub.rb +1 -1
- data/lib/hecks/{cli → tools}/domain_writer.rb +1 -1
- data/lib/hecks/tools/downstream_model_check.rb +122 -0
- data/lib/hecks/tools/evolve_run.rb +2 -2
- data/lib/hecks/{cli → tools}/expected_era.rb +1 -1
- data/lib/hecks/{cli → tools}/expression_projection.rb +1 -1
- data/lib/hecks/{cli → tools}/follow.rb +1 -1
- data/lib/hecks/tools/fuzz_sweep/options.rb +40 -5
- data/lib/hecks/tools/fuzz_sweep/pool.rb +12 -1
- data/lib/hecks/tools/fuzz_sweep/shards.rb +155 -0
- data/lib/hecks/tools/fuzz_sweep.rb +11 -5
- data/lib/hecks/tools/gate.rb +38 -29
- data/lib/hecks/tools/gate_memo/local_files.rb +33 -0
- data/lib/hecks/tools/gate_memo/rehearsal.rb +54 -0
- data/lib/hecks/tools/gate_memo/ruby_files.rb +152 -0
- data/lib/hecks/tools/gate_memo/session.rb +114 -0
- data/lib/hecks/tools/gate_memo/standalone.rb +67 -0
- data/lib/hecks/tools/gate_memo.rb +196 -0
- data/lib/hecks/tools/gate_report.rb +56 -0
- data/lib/hecks/{cli → tools}/history.rb +1 -1
- data/lib/hecks/{cli → tools}/interview_agent.rb +1 -1
- data/lib/hecks/{cli → tools}/interview_aggregate.rb +1 -1
- data/lib/hecks/{cli → tools}/interview_draft.rb +1 -1
- data/lib/hecks/{cli → tools}/interview_record.rb +1 -1
- data/lib/hecks/{cli → tools}/interview_run.rb +2 -2
- data/lib/hecks/{cli → tools}/interview_session/agent_state.rb +1 -1
- data/lib/hecks/{cli → tools}/interview_session/catalog.rb +1 -1
- data/lib/hecks/{cli → tools}/interview_session/manual_findings.rb +1 -1
- data/lib/hecks/{cli → tools}/interview_session/proposals.rb +1 -1
- data/lib/hecks/{cli → tools}/interview_session.rb +2 -2
- data/lib/hecks/{cli → tools}/interview_shape/lifecycle.rb +1 -1
- data/lib/hecks/{cli → tools}/interview_shape.rb +1 -1
- data/lib/hecks/{cli → tools}/ir.rb +1 -1
- data/lib/hecks/tools/lanes/files.rb +1 -1
- data/lib/hecks/tools/lanes/watch_workflow.rb +6 -8
- data/lib/hecks/tools/lanes/workflow.rb +1 -1
- data/lib/hecks/tools/lanes.rb +1 -1
- data/lib/hecks/{cli → tools}/mcp.rb +1 -1
- data/lib/hecks/{cli → tools}/model_check/examination.rb +1 -1
- data/lib/hecks/{cli → tools}/model_check/sources.rb +1 -1
- data/lib/hecks/{cli → tools}/model_check.rb +1 -1
- data/lib/hecks/tools/move_disables/reasons.rb +35 -0
- data/lib/hecks/tools/move_disables.rb +211 -0
- data/lib/hecks/tools/move_former_name.rb +105 -0
- data/lib/hecks/{cli → tools}/pattern_cases.rb +1 -1
- data/lib/hecks/{cli → tools}/persistence_notice.rb +1 -1
- data/lib/hecks/{cli → tools}/present.rb +1 -1
- data/lib/hecks/{cli → tools}/project_cli/launcher_source.rb +32 -22
- data/lib/hecks/{cli → tools}/project_cli/templates.rb +22 -15
- data/lib/hecks/{cli → tools}/project_cli.rb +11 -7
- data/lib/hecks/{cli → tools}/project_diagrams.rb +3 -3
- data/lib/hecks/{cli → tools}/project_glossary.rb +2 -2
- data/lib/hecks/{cli → tools}/reference.rb +2 -2
- data/lib/hecks/{cli → tools}/refresh_projections.rb +1 -1
- data/lib/hecks/{cli → tools}/refresh_rspec_runtime_baseline.rb +1 -1
- data/lib/hecks/tools/regeneration_run/pool.rb +148 -0
- data/lib/hecks/tools/regeneration_run/scratch.rb +76 -0
- data/lib/hecks/tools/regeneration_run.rb +125 -103
- data/lib/hecks/{cli → tools}/release.rb +1 -1
- data/lib/hecks/{cli → tools}/release_gem.rb +1 -1
- data/lib/hecks/{cli → tools}/rspec_io_parallel_files.rb +1 -1
- data/lib/hecks/{cli → tools}/rspec_shard_files.rb +1 -1
- data/lib/hecks/{cli → tools}/run.rb +9 -2
- data/lib/hecks/{cli → tools}/run_expectations.rb +1 -1
- data/lib/hecks/{cli → tools}/seed_semantics_corpus.rb +4 -4
- data/lib/hecks/{cli → tools}/serve_query_ir_mcp.rb +1 -1
- data/lib/hecks/{cli → tools}/shape.rb +3 -2
- data/lib/hecks/{cli → tools}/smoke_http/checks.rb +1 -1
- data/lib/hecks/{cli → tools}/smoke_http/settings.rb +1 -1
- data/lib/hecks/{cli → tools}/smoke_http/transport.rb +1 -1
- data/lib/hecks/{cli → tools}/smoke_http.rb +1 -1
- data/lib/hecks/{cli → tools}/smoke_test.rb +1 -1
- data/lib/hecks/{cli → tools}/spec_example.rb +1 -1
- data/lib/hecks/tools/stage_progress.rb +54 -0
- data/lib/hecks/{cli → tools}/statements.rb +1 -1
- data/lib/hecks/{cli → tools}/stores.rb +1 -1
- data/lib/hecks/{cli → tools}/stress_concurrency_specs/reporting.rb +1 -1
- data/lib/hecks/{cli → tools}/stress_concurrency_specs/usage.rb +4 -4
- data/lib/hecks/{cli → tools}/stress_concurrency_specs.rb +3 -3
- data/lib/hecks/tools/tenant_provisioning.rb +23 -0
- data/lib/hecks/tools/tools_doc.rb +10 -8
- data/lib/hecks/tools/translation_audit/edges.rb +21 -16
- data/lib/hecks/tools/translation_audit/verdicts.rb +1 -1
- data/lib/hecks/tools/translation_audit.rb +1 -1
- data/lib/hecks/tools/translation_scaffold.rb +1 -1
- data/lib/hecks/tools.rb +4 -1
- data/lib/hecks/version.rb +1 -1
- data/lib/hecks/vocabulary.rb +61 -31
- data/lib/hecks/workflow_pagination/judge.rb +48 -0
- data/lib/hecks/workflow_pagination/statement.rb +50 -0
- data/lib/hecks/workflow_pagination.rb +58 -0
- data/lib/hecks.rb +2 -0
- data/lib/rubocop/cop/hecks/bare_event_and_query_names.rb +58 -0
- data/lib/rubocop/cop/hecks/correlates_by_aggregate.rb +39 -0
- data/lib/rubocop/cop/hecks/creating_command_sets.rb +75 -0
- data/lib/rubocop/cop/hecks/invariant_expression_language.rb +47 -0
- data/lib/rubocop/cop/hecks/lifecycle_needs_attribute.rb +58 -0
- data/lib/rubocop/cop/hecks/no_id_string_attribute.rb +49 -0
- data/lib/rubocop/cop/hecks/one_terminal_mark_per_lifecycle.rb +47 -0
- data/lib/rubocop/cop/hecks/value_object_shorthand.rb +56 -0
- data/prebuilt/13c04bdc5970295b310f0a980d397ba722232c8da99cc1a0cdb383249921e871.marshal +0 -0
- data/prebuilt/e3857b77f47d9ecc1787b2e1f5136364f3cb3444ef4aea5479f3b98167affea2.marshal +0 -0
- data/qa/settings.yml +23 -0
- data/rust/.gitignore +0 -6
- data/rust/Cargo.toml +2 -1
- data/rust/build/Cargo.toml +1 -1
- data/rust/build/src/binding_pass.rs +57 -4
- data/rust/build/src/pipeline.rs +6 -4
- data/rust/build/src/resolve.rs +1 -0
- data/rust/codegen/Cargo.toml +1 -1
- data/rust/codegen/src/domain_generator.rs +3 -0
- data/rust/codegen/src/json_codec.rs +182 -23
- data/rust/codegen/src/one_of_references.rs +1 -0
- data/rust/codegen/src/queries.rs +20 -2
- data/rust/codegen/src/registry.rs +21 -5
- data/rust/expr/Cargo.toml +1 -1
- data/rust/host/Cargo.toml +1 -1
- data/rust/host/HECKS_RELEASE +1 -1
- data/rust/host/core/Cargo.toml +1 -1
- data/rust/host/src/bin/mint_harness.rs +1 -0
- data/rust/host/src/boot.rs +1 -0
- data/rust/host/src/store/mint.rs +40 -6
- data/rust/lsp/Cargo.toml +1 -1
- data/rust/parser/Cargo.toml +1 -1
- data/rust/parser/src/build/correlation_keys.rs +125 -0
- data/rust/parser/src/build/mod.rs +1 -0
- data/rust/parser/src/emit.rs +55 -3
- data/rust/parser/src/ir.rs +33 -1
- data/rust/parser/src/keywords.rs +289 -1
- data/rust/parser/src/main.rs +2 -0
- data/rust/parser/src/parse/aggregate.rs +10 -1
- data/rust/parser/src/parse/audience.rs +65 -0
- data/rust/parser/src/parse/command.rs +14 -0
- data/rust/parser/src/parse/declaration.rs +97 -0
- data/rust/parser/src/parse/domain_port.rs +6 -0
- data/rust/parser/src/parse/mod.rs +1 -0
- data/rust/parser/src/parse/process_manager.rs +17 -10
- data/rust/parser/src/parse/world.rs +12 -8
- data/rust/parser/src/render_ruby.rs +9 -0
- data/rust/parser/src/sentence/format.rs +3 -0
- data/rust/parser/src/sentence/process.rs +6 -2
- data/rust/src/exemplar/json.rs +17 -0
- data/rust/src/kernel/cli.rs +27 -3
- data/rust/src/kernel/dispatch.rs +4 -2
- data/rust/src/kernel/json.rs +62 -0
- data/rust/src/kernel/orchestrate.rs +28 -3
- data/rust/src/kernel/orchestrate_guard_tests.rs +12 -12
- data/rust/web/Cargo.toml +1 -1
- metadata +389 -96
- data/lib/hecks/cli/command_table.rb +0 -72
- data/lib/hecks/cli/launcher_words.rb +0 -168
- data/lib/hecks/cli.rb +0 -133
- data/lib/hecks/hecks/agents.bluebook +0 -246
- data/lib/hecks/hecks/codebase.bluebook +0 -3209
- data/lib/hecks/hecks/custodian.bluebook +0 -1300
- data/lib/hecks/hecks/ledger.bluebook +0 -190
- data/lib/hecks/hecks/rehearsal.bluebook +0 -437
- data/lib/hecks/hecks/tooling.bluebook +0 -1234
- data/lib/hecks/hecks/translations/2-148748.bluebook +0 -2
- data/lib/hecks/hecks/translations/2-15a2e4.bluebook +0 -2
- data/lib/hecks/hecks/translations/2-1b447c.bluebook +0 -5
- data/lib/hecks/hecks/translations/2-240474.bluebook +0 -2
- data/lib/hecks/hecks/translations/2-44446d.bluebook +0 -2
- data/lib/hecks/hecks/translations/2-46ca26.bluebook +0 -2
- data/lib/hecks/hecks/translations/2-473eab.bluebook +0 -2
- data/lib/hecks/hecks/translations/2-75cc28.bluebook +0 -2
- data/lib/hecks/hecks/translations/2-781c07.bluebook +0 -2
- data/lib/hecks/hecks/translations/2-84c18b.bluebook +0 -2
- data/lib/hecks/hecks/translations/2-aa5fff.bluebook +0 -2
- data/lib/hecks/hecks/translations/2-bfdb48.bluebook +0 -2
- data/lib/hecks/hecks/translations/2-cd96d8.bluebook +0 -10
- data/lib/hecks/hecks/translations/2-d43f71.bluebook +0 -2
- data/lib/hecks/hecks/translations/2-eea577.bluebook +0 -2
- data/lib/hecks/hecks/translations/2-f53248.bluebook +0 -2
- data/lib/hecks/hecks/translations/2-fbb677.bluebook +0 -2
- data/lib/hecks/hecks/translations/2-ffdf12.bluebook +0 -6
- data/lib/hecks/quality_control/adapters/clearance_recorder.rb +0 -36
- data/lib/hecks/quality_control/adapters/github_ci_webhook.rb +0 -56
- data/prebuilt/31cf81e12f16236ad26249be590cfea3799c9db67432e6a4ef54b801c355b6ae.marshal +0 -0
- data/prebuilt/68ecb2bd3abb1a221007db4f2b0375834c13aaccac8f2b99778e8517f11aa113.marshal +0 -0
- data/prebuilt/verdicts-0328c2403383837d780ad5ed81d1da351c56436b894cf9015b5d56b8f1f1bf10.json +0 -1
|
@@ -0,0 +1,788 @@
|
|
|
1
|
+
Hecks.bluebook "Hecks" do
|
|
2
|
+
domain_module "Evolve" do
|
|
3
|
+
vision "Change the language and rewrite to match."
|
|
4
|
+
|
|
5
|
+
# Codebase: working on this repository. Each aggregate here is a concern only a maintainer of
|
|
6
|
+
# Hecks runs, and every one of them needs a hecks checkout (ADR 0080, section 2). A request
|
|
7
|
+
# follows the journaled-command shape of Custodian: it is recorded, the SourceTree port is asked
|
|
8
|
+
# to examine the tree, `Accept` holds the one rule every Codebase change shares (the working tree
|
|
9
|
+
# is a hecks checkout, hecks.gemspec beside lib/), and only an accepted request is carried out.
|
|
10
|
+
# A command that rewrites tracked files reports drift and writes only when it is confirmed.
|
|
11
|
+
#
|
|
12
|
+
# The records are named for the run, as ModelCheckRun is, because several of the table's
|
|
13
|
+
# concerns share a name with a module the gem already owns.
|
|
14
|
+
|
|
15
|
+
# The language: the tables the Bluebook bluebook declares and everything projected from them. A
|
|
16
|
+
# projection reports drift from the committed files and writes only when it is confirmed; an
|
|
17
|
+
# evolution edits the syntax tables, regenerates the golden and holds the gates, and only when
|
|
18
|
+
# confirmed (without it, the edit is rehearsed in memory and nothing is written).
|
|
19
|
+
aggregate "LanguageRun", kind: "Run" do
|
|
20
|
+
description "One change to the language's own tables, or one reading of where its words stand."
|
|
21
|
+
|
|
22
|
+
attribute :confirm, Switch, optional: true
|
|
23
|
+
attribute :stdout, Switch, optional: true
|
|
24
|
+
attribute :word, Word, optional: true
|
|
25
|
+
attribute :context, Context, optional: true
|
|
26
|
+
attribute :body, Body, optional: true
|
|
27
|
+
attribute :inner, Fill, optional: true
|
|
28
|
+
attribute :opens, Fill, optional: true
|
|
29
|
+
attribute :fills, Fill, optional: true
|
|
30
|
+
attribute :new_name, Word, optional: true
|
|
31
|
+
attribute :kind, Kind, optional: true
|
|
32
|
+
attribute :required, Flag, optional: true
|
|
33
|
+
attribute :at, Position, optional: true
|
|
34
|
+
attribute :named, Fill, optional: true
|
|
35
|
+
attribute :pairs_shape, Shape, optional: true
|
|
36
|
+
|
|
37
|
+
# A keyword of the language, or the keyword an argument belongs to.
|
|
38
|
+
value_object "Word" do
|
|
39
|
+
attribute :value, String, matches: :present
|
|
40
|
+
|
|
41
|
+
invariant("a word is named") { !value.to_s.empty? }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# The part of the language a word is a word in.
|
|
45
|
+
value_object "Context" do
|
|
46
|
+
attribute :value, String, matches: :identifier
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# What a word's block holds.
|
|
50
|
+
value_object "Body" do
|
|
51
|
+
attribute :value, String, pattern: '^(none|keywords|source|rows)$'
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# A cell of a table row; empty when the row leaves it blank.
|
|
55
|
+
value_object "Fill" do
|
|
56
|
+
attribute :value, String, pattern: '^[^\t\n\r]*$'
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# What an argument is.
|
|
60
|
+
value_object "Kind" do
|
|
61
|
+
attribute :value, String, pattern: '^(text|symbol|number|flag|literal|constant|pairs|list)$'
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Whether an argument is required.
|
|
65
|
+
value_object "Flag" do
|
|
66
|
+
attribute :value, String, pattern: '^(true|false)$'
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# An argument's place, counted from zero.
|
|
70
|
+
value_object "Position" do
|
|
71
|
+
attribute :value, String, pattern: '^[0-9]*$'
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# How a pairs argument is read, such as verbatim.
|
|
75
|
+
value_object "Shape" do
|
|
76
|
+
attribute :value, String, matches: :present
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
command "ProjectModel" do
|
|
80
|
+
role "Maintainer"
|
|
81
|
+
goal "Project the model's holding half from the language that declares it"
|
|
82
|
+
|
|
83
|
+
attribute :run, RunKey, sets: true
|
|
84
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
85
|
+
|
|
86
|
+
sets :operation, to: "project_model"
|
|
87
|
+
|
|
88
|
+
emits ProjectModelRequested
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
command "ProjectVocabulary" do
|
|
92
|
+
role "Maintainer"
|
|
93
|
+
goal "Project the language's closed sets into the vocabulary"
|
|
94
|
+
|
|
95
|
+
attribute :run, RunKey, sets: true
|
|
96
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
97
|
+
|
|
98
|
+
sets :operation, to: "project_vocabulary"
|
|
99
|
+
|
|
100
|
+
emits ProjectVocabularyRequested
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
command "ProjectRustVocabulary" do
|
|
104
|
+
role "Maintainer"
|
|
105
|
+
goal "Project the vocabulary tables into the Rust kernel, one enum a table"
|
|
106
|
+
|
|
107
|
+
attribute :run, RunKey, sets: true
|
|
108
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
109
|
+
|
|
110
|
+
sets :operation, to: "project_rust_vocabulary"
|
|
111
|
+
|
|
112
|
+
emits ProjectRustVocabularyRequested
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
command "ProjectRefusalWording" do
|
|
116
|
+
role "Maintainer"
|
|
117
|
+
goal "Project the refusal template table, a second name of ProjectRustVocabulary"
|
|
118
|
+
|
|
119
|
+
attribute :run, RunKey, sets: true
|
|
120
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
121
|
+
|
|
122
|
+
sets :operation, to: "project_rust_vocabulary"
|
|
123
|
+
|
|
124
|
+
emits ProjectRefusalWordingRequested
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
command "ProjectReservedNames" do
|
|
128
|
+
role "Maintainer"
|
|
129
|
+
goal "Project the Rust and Cargo reserved words into the codegen and build crates"
|
|
130
|
+
|
|
131
|
+
attribute :run, RunKey, sets: true
|
|
132
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
133
|
+
|
|
134
|
+
sets :operation, to: "project_reserved_names"
|
|
135
|
+
|
|
136
|
+
emits ProjectReservedNamesRequested
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
command "ProjectParserTable" do
|
|
140
|
+
role "Maintainer"
|
|
141
|
+
goal "Project the Rust parser's keyword table"
|
|
142
|
+
|
|
143
|
+
attribute :run, RunKey, sets: true
|
|
144
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
145
|
+
|
|
146
|
+
sets :operation, to: "project_parser_table"
|
|
147
|
+
|
|
148
|
+
emits ProjectParserTableRequested
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
command "ProjectPhraseTable" do
|
|
152
|
+
role "Maintainer"
|
|
153
|
+
goal "Project the Rust parser's sentence table from the Sentence bluebook's phrase rows"
|
|
154
|
+
|
|
155
|
+
attribute :run, RunKey, sets: true
|
|
156
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
157
|
+
|
|
158
|
+
sets :operation, to: "project_phrase_table"
|
|
159
|
+
|
|
160
|
+
emits ProjectPhraseTableRequested
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
command "ProjectBootstrapTable" do
|
|
164
|
+
role "Maintainer"
|
|
165
|
+
goal "Project the DSL's bootstrap-window fallbacks from the keyword rows"
|
|
166
|
+
|
|
167
|
+
attribute :run, RunKey, sets: true
|
|
168
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
169
|
+
|
|
170
|
+
sets :operation, to: "project_bootstrap_table"
|
|
171
|
+
|
|
172
|
+
emits ProjectBootstrapTableRequested
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
command "ProjectFieldHints" do
|
|
176
|
+
role "Maintainer"
|
|
177
|
+
goal "Project the host's form-field hints"
|
|
178
|
+
|
|
179
|
+
attribute :run, RunKey, sets: true
|
|
180
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
181
|
+
|
|
182
|
+
sets :operation, to: "project_field_hints"
|
|
183
|
+
|
|
184
|
+
emits ProjectFieldHintsRequested
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
command "ProjectExpressionTables" do
|
|
188
|
+
role "Maintainer"
|
|
189
|
+
goal "Project the expression machinery's operator and normalisation tables"
|
|
190
|
+
|
|
191
|
+
attribute :stdout, Switch, optional: true, sets: true
|
|
192
|
+
attribute :run, RunKey, sets: true
|
|
193
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
194
|
+
|
|
195
|
+
sets :operation, to: "project_expression_tables"
|
|
196
|
+
|
|
197
|
+
emits ProjectExpressionTablesRequested
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
command "ProjectReference" do
|
|
201
|
+
role "Maintainer"
|
|
202
|
+
goal "Regenerate the DSL reference from the Syntax bluebook, keeping the committed prose"
|
|
203
|
+
|
|
204
|
+
attribute :run, RunKey, sets: true
|
|
205
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
206
|
+
|
|
207
|
+
sets :operation, to: "project_reference"
|
|
208
|
+
|
|
209
|
+
emits ProjectReferenceRequested
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
command "Propose" do
|
|
213
|
+
role "Maintainer"
|
|
214
|
+
goal "Enter a keyword row, proposed: it reaches no projection until admitted"
|
|
215
|
+
|
|
216
|
+
attribute :word, Word, sets: true
|
|
217
|
+
attribute :context, Context, sets: true
|
|
218
|
+
attribute :body, Body, optional: true, sets: true
|
|
219
|
+
attribute :inner, Fill, optional: true, sets: true
|
|
220
|
+
attribute :opens, Fill, optional: true, sets: true
|
|
221
|
+
attribute :fills, Fill, optional: true, sets: true
|
|
222
|
+
attribute :run, RunKey, sets: true
|
|
223
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
224
|
+
|
|
225
|
+
sets :operation, to: "propose"
|
|
226
|
+
|
|
227
|
+
emits ProposeRequested
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
command "Admit" do
|
|
231
|
+
role "Maintainer"
|
|
232
|
+
goal "Move a proposed keyword row to admitted"
|
|
233
|
+
|
|
234
|
+
attribute :word, Word, sets: true
|
|
235
|
+
attribute :context, Context, sets: true
|
|
236
|
+
attribute :run, RunKey, sets: true
|
|
237
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
238
|
+
|
|
239
|
+
sets :operation, to: "admit"
|
|
240
|
+
|
|
241
|
+
emits AdmitRequested
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
command "Deprecate" do
|
|
245
|
+
role "Maintainer"
|
|
246
|
+
goal "Move an admitted keyword row to deprecated"
|
|
247
|
+
|
|
248
|
+
attribute :word, Word, sets: true
|
|
249
|
+
attribute :context, Context, sets: true
|
|
250
|
+
attribute :run, RunKey, sets: true
|
|
251
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
252
|
+
|
|
253
|
+
sets :operation, to: "deprecate"
|
|
254
|
+
|
|
255
|
+
emits DeprecateRequested
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
command "Retire" do
|
|
259
|
+
role "Maintainer"
|
|
260
|
+
goal "Move a deprecated or admitted keyword row to retired"
|
|
261
|
+
|
|
262
|
+
attribute :word, Word, sets: true
|
|
263
|
+
attribute :context, Context, sets: true
|
|
264
|
+
attribute :run, RunKey, sets: true
|
|
265
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
266
|
+
|
|
267
|
+
sets :operation, to: "retire"
|
|
268
|
+
|
|
269
|
+
emits RetireRequested
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
command "Rename" do
|
|
273
|
+
role "Maintainer"
|
|
274
|
+
goal "Respell a keyword row; the old spelling keeps parsing"
|
|
275
|
+
|
|
276
|
+
attribute :word, Word, sets: true
|
|
277
|
+
attribute :context, Context, sets: true
|
|
278
|
+
attribute :new_name, Word, sets: true
|
|
279
|
+
attribute :run, RunKey, sets: true
|
|
280
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
281
|
+
|
|
282
|
+
sets :operation, to: "rename"
|
|
283
|
+
|
|
284
|
+
emits RenameRequested
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
command "ProposeArgument" do
|
|
288
|
+
role "Maintainer"
|
|
289
|
+
goal "Enter an argument row of a keyword, proposed"
|
|
290
|
+
|
|
291
|
+
attribute :word, Word, sets: true
|
|
292
|
+
attribute :context, Context, sets: true
|
|
293
|
+
attribute :kind, Kind, sets: true
|
|
294
|
+
attribute :required, Flag, optional: true, sets: true
|
|
295
|
+
attribute :at, Position, optional: true, sets: true
|
|
296
|
+
attribute :named, Fill, optional: true, sets: true
|
|
297
|
+
attribute :fills, Fill, optional: true, sets: true
|
|
298
|
+
attribute :pairs_shape, Shape, optional: true, sets: true
|
|
299
|
+
attribute :run, RunKey, sets: true
|
|
300
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
301
|
+
|
|
302
|
+
sets :operation, to: "propose_argument"
|
|
303
|
+
|
|
304
|
+
emits ProposeArgumentRequested
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
command "AdmitArgument" do
|
|
308
|
+
role "Maintainer"
|
|
309
|
+
goal "Move a proposed argument row to admitted"
|
|
310
|
+
|
|
311
|
+
attribute :word, Word, sets: true
|
|
312
|
+
attribute :context, Context, sets: true
|
|
313
|
+
attribute :at, Position, optional: true, sets: true
|
|
314
|
+
attribute :named, Fill, optional: true, sets: true
|
|
315
|
+
attribute :run, RunKey, sets: true
|
|
316
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
317
|
+
|
|
318
|
+
sets :operation, to: "admit_argument"
|
|
319
|
+
|
|
320
|
+
emits AdmitArgumentRequested
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
command "DeprecateArgument" do
|
|
324
|
+
role "Maintainer"
|
|
325
|
+
goal "Move an admitted argument row to deprecated"
|
|
326
|
+
|
|
327
|
+
attribute :word, Word, sets: true
|
|
328
|
+
attribute :context, Context, sets: true
|
|
329
|
+
attribute :at, Position, optional: true, sets: true
|
|
330
|
+
attribute :named, Fill, optional: true, sets: true
|
|
331
|
+
attribute :run, RunKey, sets: true
|
|
332
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
333
|
+
|
|
334
|
+
sets :operation, to: "deprecate_argument"
|
|
335
|
+
|
|
336
|
+
emits DeprecateArgumentRequested
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
command "RetireArgument" do
|
|
340
|
+
role "Maintainer"
|
|
341
|
+
goal "Move a deprecated or admitted argument row to retired"
|
|
342
|
+
|
|
343
|
+
attribute :word, Word, sets: true
|
|
344
|
+
attribute :context, Context, sets: true
|
|
345
|
+
attribute :at, Position, optional: true, sets: true
|
|
346
|
+
attribute :named, Fill, optional: true, sets: true
|
|
347
|
+
attribute :run, RunKey, sets: true
|
|
348
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
349
|
+
|
|
350
|
+
sets :operation, to: "retire_argument"
|
|
351
|
+
|
|
352
|
+
emits RetireArgumentRequested
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
# An answer that is one document of text, exactly as the tool that produced it wrote it.
|
|
356
|
+
value_object "Document" do
|
|
357
|
+
attribute :text, String
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
query "WordStatus" do
|
|
361
|
+
description "Where every word of the language stands: the ones not simply admitted, and the renamed."
|
|
362
|
+
returns Document
|
|
363
|
+
end
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
policy "ExamineWhenProjectModelRequested" do
|
|
367
|
+
on "LanguageRun.ProjectModelRequested"
|
|
368
|
+
ask :examine, with: { run: :run }
|
|
369
|
+
end
|
|
370
|
+
|
|
371
|
+
policy "ExamineWhenProjectVocabularyRequested" do
|
|
372
|
+
on "LanguageRun.ProjectVocabularyRequested"
|
|
373
|
+
ask :examine, with: { run: :run }
|
|
374
|
+
end
|
|
375
|
+
|
|
376
|
+
policy "ExamineWhenProjectRustVocabularyRequested" do
|
|
377
|
+
on "LanguageRun.ProjectRustVocabularyRequested"
|
|
378
|
+
ask :examine, with: { run: :run }
|
|
379
|
+
end
|
|
380
|
+
|
|
381
|
+
policy "ExamineWhenProjectRefusalWordingRequested" do
|
|
382
|
+
on "LanguageRun.ProjectRefusalWordingRequested"
|
|
383
|
+
ask :examine, with: { run: :run }
|
|
384
|
+
end
|
|
385
|
+
|
|
386
|
+
policy "ExamineWhenProjectReservedNamesRequested" do
|
|
387
|
+
on "LanguageRun.ProjectReservedNamesRequested"
|
|
388
|
+
ask :examine, with: { run: :run }
|
|
389
|
+
end
|
|
390
|
+
|
|
391
|
+
policy "ExamineWhenProjectParserTableRequested" do
|
|
392
|
+
on "LanguageRun.ProjectParserTableRequested"
|
|
393
|
+
ask :examine, with: { run: :run }
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
policy "ExamineWhenProjectPhraseTableRequested" do
|
|
397
|
+
on "LanguageRun.ProjectPhraseTableRequested"
|
|
398
|
+
ask :examine, with: { run: :run }
|
|
399
|
+
end
|
|
400
|
+
|
|
401
|
+
policy "ExamineWhenProjectBootstrapTableRequested" do
|
|
402
|
+
on "LanguageRun.ProjectBootstrapTableRequested"
|
|
403
|
+
ask :examine, with: { run: :run }
|
|
404
|
+
end
|
|
405
|
+
|
|
406
|
+
policy "ExamineWhenProjectFieldHintsRequested" do
|
|
407
|
+
on "LanguageRun.ProjectFieldHintsRequested"
|
|
408
|
+
ask :examine, with: { run: :run }
|
|
409
|
+
end
|
|
410
|
+
|
|
411
|
+
policy "ExamineWhenProjectExpressionTablesRequested" do
|
|
412
|
+
on "LanguageRun.ProjectExpressionTablesRequested"
|
|
413
|
+
ask :examine, with: { run: :run }
|
|
414
|
+
end
|
|
415
|
+
|
|
416
|
+
policy "ExamineWhenProjectReferenceRequested" do
|
|
417
|
+
on "LanguageRun.ProjectReferenceRequested"
|
|
418
|
+
ask :examine, with: { run: :run }
|
|
419
|
+
end
|
|
420
|
+
|
|
421
|
+
policy "ExamineWhenProposeRequested" do
|
|
422
|
+
on "LanguageRun.ProposeRequested"
|
|
423
|
+
ask :examine, with: { run: :run }
|
|
424
|
+
end
|
|
425
|
+
|
|
426
|
+
policy "ExamineWhenAdmitRequested" do
|
|
427
|
+
on "LanguageRun.AdmitRequested"
|
|
428
|
+
ask :examine, with: { run: :run }
|
|
429
|
+
end
|
|
430
|
+
|
|
431
|
+
policy "ExamineWhenDeprecateRequested" do
|
|
432
|
+
on "LanguageRun.DeprecateRequested"
|
|
433
|
+
ask :examine, with: { run: :run }
|
|
434
|
+
end
|
|
435
|
+
|
|
436
|
+
policy "ExamineWhenRetireRequested" do
|
|
437
|
+
on "LanguageRun.RetireRequested"
|
|
438
|
+
ask :examine, with: { run: :run }
|
|
439
|
+
end
|
|
440
|
+
|
|
441
|
+
policy "ExamineWhenRenameRequested" do
|
|
442
|
+
on "LanguageRun.RenameRequested"
|
|
443
|
+
ask :examine, with: { run: :run }
|
|
444
|
+
end
|
|
445
|
+
|
|
446
|
+
policy "ExamineWhenProposeArgumentRequested" do
|
|
447
|
+
on "LanguageRun.ProposeArgumentRequested"
|
|
448
|
+
ask :examine, with: { run: :run }
|
|
449
|
+
end
|
|
450
|
+
|
|
451
|
+
policy "ExamineWhenAdmitArgumentRequested" do
|
|
452
|
+
on "LanguageRun.AdmitArgumentRequested"
|
|
453
|
+
ask :examine, with: { run: :run }
|
|
454
|
+
end
|
|
455
|
+
|
|
456
|
+
policy "ExamineWhenDeprecateArgumentRequested" do
|
|
457
|
+
on "LanguageRun.DeprecateArgumentRequested"
|
|
458
|
+
ask :examine, with: { run: :run }
|
|
459
|
+
end
|
|
460
|
+
|
|
461
|
+
policy "ExamineWhenRetireArgumentRequested" do
|
|
462
|
+
on "LanguageRun.RetireArgumentRequested"
|
|
463
|
+
ask :examine, with: { run: :run }
|
|
464
|
+
end
|
|
465
|
+
|
|
466
|
+
aggregate "SyntaxBootCache" do
|
|
467
|
+
description "The grammar bluebooks' on-disk boot cache, keyed by a digest of the bluebooks it was built from."
|
|
468
|
+
|
|
469
|
+
attribute :digest, Digest
|
|
470
|
+
|
|
471
|
+
identified_by :digest
|
|
472
|
+
|
|
473
|
+
value_object "Digest" do
|
|
474
|
+
attribute :value, String, matches: :present
|
|
475
|
+
|
|
476
|
+
invariant("a digest is present") { !value.to_s.empty? }
|
|
477
|
+
end
|
|
478
|
+
|
|
479
|
+
lifecycle :state, default: "fresh" do
|
|
480
|
+
transition "Invalidate" => "stale", from: "fresh"
|
|
481
|
+
transition "Rebuild" => "fresh", from: "stale"
|
|
482
|
+
end
|
|
483
|
+
|
|
484
|
+
command "Record" do
|
|
485
|
+
role "Maintainer"
|
|
486
|
+
goal "Record a boot cache as built from the grammar bluebooks that hash to this digest"
|
|
487
|
+
audience :record
|
|
488
|
+
|
|
489
|
+
attribute :digest, Digest, sets: true
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
emits CacheRecorded
|
|
493
|
+
end
|
|
494
|
+
|
|
495
|
+
command "Invalidate", from: "fresh" do
|
|
496
|
+
role "Maintainer"
|
|
497
|
+
goal "Record that the grammar changed under the cache"
|
|
498
|
+
audience :record
|
|
499
|
+
|
|
500
|
+
reference_to SyntaxBootCache
|
|
501
|
+
|
|
502
|
+
emits CacheInvalidated
|
|
503
|
+
end
|
|
504
|
+
|
|
505
|
+
command "Rebuild", from: "stale" do
|
|
506
|
+
role "Maintainer"
|
|
507
|
+
goal "Record that the cache was rebuilt from the current grammar"
|
|
508
|
+
audience :record
|
|
509
|
+
|
|
510
|
+
reference_to SyntaxBootCache
|
|
511
|
+
|
|
512
|
+
emits CacheRebuilt
|
|
513
|
+
end
|
|
514
|
+
|
|
515
|
+
query "Stale" do
|
|
516
|
+
description "Every cache whose grammar changed under it and is not yet rebuilt."
|
|
517
|
+
where(state: "stale")
|
|
518
|
+
order_by :digest
|
|
519
|
+
end
|
|
520
|
+
end
|
|
521
|
+
|
|
522
|
+
# Codemod: the mechanical rewrites of the example bluebooks. Each one edits tracked files, so
|
|
523
|
+
# unconfirmed it rehearses the edit (the script reboots every bluebook and puts the files back)
|
|
524
|
+
# and reports what it would change; the files stay changed only when it is confirmed.
|
|
525
|
+
aggregate "CodemodRun", kind: "Run" do
|
|
526
|
+
description "One rewrite of the example bluebooks by a codemod, or the rehearsal of it."
|
|
527
|
+
|
|
528
|
+
attribute :confirm, Switch, optional: true
|
|
529
|
+
|
|
530
|
+
command "HoistLocalGivens" do
|
|
531
|
+
role "Maintainer"
|
|
532
|
+
goal "Hoist a given that several commands of one owner repeat into one owner-level given"
|
|
533
|
+
|
|
534
|
+
attribute :run, RunKey, sets: true
|
|
535
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
536
|
+
|
|
537
|
+
sets :operation, to: "hoist_local_givens"
|
|
538
|
+
|
|
539
|
+
emits HoistLocalGivensRequested
|
|
540
|
+
end
|
|
541
|
+
|
|
542
|
+
command "DropImplicitAppendFields" do
|
|
543
|
+
role "Maintainer"
|
|
544
|
+
goal "Drop an attribute line that only repeats what an append target element declares"
|
|
545
|
+
|
|
546
|
+
attribute :run, RunKey, sets: true
|
|
547
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
548
|
+
|
|
549
|
+
sets :operation, to: "drop_implicit_append_fields"
|
|
550
|
+
|
|
551
|
+
emits DropImplicitAppendFieldsRequested
|
|
552
|
+
end
|
|
553
|
+
|
|
554
|
+
command "MoveFormerName" do
|
|
555
|
+
role "Maintainer"
|
|
556
|
+
goal "Move an aggregate's formerly_known_as out of the bluebook into the world's stored_as"
|
|
557
|
+
|
|
558
|
+
attribute :run, RunKey, sets: true
|
|
559
|
+
attribute :confirm, Switch, optional: true, sets: true
|
|
560
|
+
|
|
561
|
+
sets :operation, to: "move_former_name"
|
|
562
|
+
|
|
563
|
+
emits MoveFormerNameRequested
|
|
564
|
+
end
|
|
565
|
+
end
|
|
566
|
+
|
|
567
|
+
policy "ExamineWhenHoistLocalGivensRequested" do
|
|
568
|
+
on "CodemodRun.HoistLocalGivensRequested"
|
|
569
|
+
ask :examine, with: { run: :run }
|
|
570
|
+
end
|
|
571
|
+
|
|
572
|
+
policy "ExamineWhenDropImplicitAppendFieldsRequested" do
|
|
573
|
+
on "CodemodRun.DropImplicitAppendFieldsRequested"
|
|
574
|
+
ask :examine, with: { run: :run }
|
|
575
|
+
end
|
|
576
|
+
|
|
577
|
+
policy "ExamineWhenMoveFormerNameRequested" do
|
|
578
|
+
on "CodemodRun.MoveFormerNameRequested"
|
|
579
|
+
ask :examine, with: { run: :run }
|
|
580
|
+
end
|
|
581
|
+
|
|
582
|
+
# One named one-off script the checkout runs: planned, or applied once confirmed. Its body is a
|
|
583
|
+
# tool under lib/hecks/tools, named by `script`, so a migration is a record, not a shell session.
|
|
584
|
+
aggregate "ScriptRun" do
|
|
585
|
+
description "One named one-off script the checkout runs, planned or applied; the body is a tool."
|
|
586
|
+
|
|
587
|
+
attribute :run, RunKey
|
|
588
|
+
attribute :operation, Operation, optional: true
|
|
589
|
+
attribute :script, ScriptName, optional: true
|
|
590
|
+
attribute :confirm, Switch, optional: true
|
|
591
|
+
attribute :checkout, Switch, optional: true
|
|
592
|
+
attribute :report, Report, optional: true
|
|
593
|
+
attribute :refusal, Report, optional: true
|
|
594
|
+
identified_by :run
|
|
595
|
+
|
|
596
|
+
value_object "RunKey" do
|
|
597
|
+
attribute :value, String, matches: :present
|
|
598
|
+
|
|
599
|
+
invariant("a run is named") { !value.to_s.empty? }
|
|
600
|
+
end
|
|
601
|
+
|
|
602
|
+
value_object "Operation" do
|
|
603
|
+
attribute :value, String, matches: :present
|
|
604
|
+
end
|
|
605
|
+
|
|
606
|
+
value_object "Switch" do
|
|
607
|
+
attribute :value, Boolean
|
|
608
|
+
end
|
|
609
|
+
|
|
610
|
+
value_object "Report" do
|
|
611
|
+
attribute :value, String
|
|
612
|
+
end
|
|
613
|
+
|
|
614
|
+
# The name of a tool under lib/hecks/tools, such as move_disables.
|
|
615
|
+
value_object "ScriptName" do
|
|
616
|
+
attribute :value, String, pattern: '^[a-z_]+$'
|
|
617
|
+
|
|
618
|
+
invariant("a script is named") { !value.to_s.empty? }
|
|
619
|
+
end
|
|
620
|
+
|
|
621
|
+
lifecycle :status, default: "requested" do
|
|
622
|
+
mark :failure, "faulted"
|
|
623
|
+
transition "Accept" => "accepted", from: "requested"
|
|
624
|
+
transition "Complete" => "completed", from: "accepted"
|
|
625
|
+
transition "Fault" => "faulted", from: %w[requested accepted]
|
|
626
|
+
mark :terminal, "completed", "faulted"
|
|
627
|
+
end
|
|
628
|
+
|
|
629
|
+
command "PlanScript" do
|
|
630
|
+
role "Maintainer"
|
|
631
|
+
goal "Show what a named one-off script would change, writing nothing"
|
|
632
|
+
|
|
633
|
+
attribute :run, RunKey, sets: true
|
|
634
|
+
attribute :script, ScriptName, sets: true
|
|
635
|
+
|
|
636
|
+
sets :operation, to: "plan_script"
|
|
637
|
+
|
|
638
|
+
emits PlanScriptRequested
|
|
639
|
+
end
|
|
640
|
+
|
|
641
|
+
command "ApplyScript" do
|
|
642
|
+
role "Maintainer"
|
|
643
|
+
goal "Carry out a named one-off script's changes, only when confirmed"
|
|
644
|
+
|
|
645
|
+
attribute :run, RunKey, sets: true
|
|
646
|
+
attribute :script, ScriptName, sets: true
|
|
647
|
+
attribute :confirm, Switch, sets: true
|
|
648
|
+
|
|
649
|
+
given("the apply is confirmed") { confirm.value }
|
|
650
|
+
|
|
651
|
+
sets :operation, to: "apply_script"
|
|
652
|
+
|
|
653
|
+
emits ApplyScriptRequested
|
|
654
|
+
end
|
|
655
|
+
|
|
656
|
+
# What the tree reported about itself, held against every request: nothing here runs
|
|
657
|
+
# outside a hecks checkout (hecks.gemspec beside lib/).
|
|
658
|
+
command "Accept" do
|
|
659
|
+
role "System"
|
|
660
|
+
goal "Let a request through only when the working tree is a hecks checkout"
|
|
661
|
+
|
|
662
|
+
reference_to ScriptRun
|
|
663
|
+
attribute :checkout, Switch, sets: true
|
|
664
|
+
|
|
665
|
+
given("needs a hecks checkout: hecks.gemspec stands beside lib/") { checkout.value }
|
|
666
|
+
|
|
667
|
+
emits ScriptAccepted
|
|
668
|
+
end
|
|
669
|
+
|
|
670
|
+
command "Complete" do
|
|
671
|
+
role "System"
|
|
672
|
+
goal "Record that the request was carried out, and what it reported"
|
|
673
|
+
|
|
674
|
+
reference_to ScriptRun
|
|
675
|
+
attribute :report, Report, sets: true
|
|
676
|
+
|
|
677
|
+
emits ScriptCompleted
|
|
678
|
+
end
|
|
679
|
+
|
|
680
|
+
command "Fault" do
|
|
681
|
+
role "System"
|
|
682
|
+
goal "Record that the request was refused or could not be carried out, and why"
|
|
683
|
+
|
|
684
|
+
reference_to ScriptRun
|
|
685
|
+
attribute :refusal, Report, sets: true
|
|
686
|
+
|
|
687
|
+
emits ScriptFaulted
|
|
688
|
+
end
|
|
689
|
+
end
|
|
690
|
+
|
|
691
|
+
policy "ExamineWhenPlanScriptRequested" do
|
|
692
|
+
on "ScriptRun.PlanScriptRequested"
|
|
693
|
+
ask :examine, with: { run: :run }
|
|
694
|
+
end
|
|
695
|
+
|
|
696
|
+
policy "ExamineWhenApplyScriptRequested" do
|
|
697
|
+
on "ScriptRun.ApplyScriptRequested"
|
|
698
|
+
ask :examine, with: { run: :run }
|
|
699
|
+
end
|
|
700
|
+
|
|
701
|
+
policy "AcceptScriptWhenExamined" do
|
|
702
|
+
on "ScriptRun.ScriptExamined"
|
|
703
|
+
trigger ScriptRun::Accept, with: { checkout: :checkout }
|
|
704
|
+
end
|
|
705
|
+
|
|
706
|
+
policy "FaultScriptWhenNotAccepted" do
|
|
707
|
+
on "ScriptRun.ScriptExamined"
|
|
708
|
+
where { !checkout.value }
|
|
709
|
+
trigger ScriptRun::Fault, with: { refusal: "needs a hecks checkout: hecks.gemspec stands beside lib/" }
|
|
710
|
+
end
|
|
711
|
+
|
|
712
|
+
policy "PerformScriptWhenAccepted" do
|
|
713
|
+
on "ScriptRun.ScriptAccepted"
|
|
714
|
+
ask :perform, with: { run: :run }
|
|
715
|
+
end
|
|
716
|
+
|
|
717
|
+
policy "RecordScriptOutcome" do
|
|
718
|
+
on "ScriptRun.ScriptAnswered"
|
|
719
|
+
trigger ScriptRun::Complete, with: { report: :report }
|
|
720
|
+
end
|
|
721
|
+
|
|
722
|
+
policy "RecordScriptFault" do
|
|
723
|
+
on "ScriptRun.ScriptRefused"
|
|
724
|
+
trigger ScriptRun::Fault, with: { refusal: :refusal }
|
|
725
|
+
end
|
|
726
|
+
|
|
727
|
+
policy "ExamineWhenCheckCommentsRequested" do
|
|
728
|
+
on "StyleRun.CheckCommentsRequested"
|
|
729
|
+
ask :examine, with: { run: :run }
|
|
730
|
+
end
|
|
731
|
+
|
|
732
|
+
policy "ExamineWhenFixCommentsRequested" do
|
|
733
|
+
on "StyleRun.FixCommentsRequested"
|
|
734
|
+
ask :examine, with: { run: :run }
|
|
735
|
+
end
|
|
736
|
+
|
|
737
|
+
policy "ExamineWhenWriteCommentBaselineRequested" do
|
|
738
|
+
on "StyleRun.WriteCommentBaselineRequested"
|
|
739
|
+
ask :examine, with: { run: :run }
|
|
740
|
+
end
|
|
741
|
+
|
|
742
|
+
policy "ExamineWhenCheckCommentsUnchangedRequested" do
|
|
743
|
+
on "StyleRun.CheckCommentsUnchangedRequested"
|
|
744
|
+
ask :examine, with: { run: :run }
|
|
745
|
+
end
|
|
746
|
+
|
|
747
|
+
policy "ExamineWhenCheckRustCommentsRequested" do
|
|
748
|
+
on "StyleRun.CheckRustCommentsRequested"
|
|
749
|
+
ask :examine, with: { run: :run }
|
|
750
|
+
end
|
|
751
|
+
|
|
752
|
+
policy "ExamineWhenFixRustCommentsRequested" do
|
|
753
|
+
on "StyleRun.FixRustCommentsRequested"
|
|
754
|
+
ask :examine, with: { run: :run }
|
|
755
|
+
end
|
|
756
|
+
|
|
757
|
+
policy "ExamineWhenCanonicaliseRequested" do
|
|
758
|
+
on "StyleRun.CanonicaliseRequested"
|
|
759
|
+
ask :examine, with: { run: :run }
|
|
760
|
+
end
|
|
761
|
+
|
|
762
|
+
policy "AcceptStyleWhenExamined" do
|
|
763
|
+
on "StyleRun.StyleExamined"
|
|
764
|
+
trigger StyleRun::Accept, with: { checkout: :checkout }
|
|
765
|
+
end
|
|
766
|
+
|
|
767
|
+
policy "FaultStyleWhenNotAccepted" do
|
|
768
|
+
on "StyleRun.StyleExamined"
|
|
769
|
+
where { !checkout.value }
|
|
770
|
+
trigger StyleRun::Fault, with: { refusal: "needs a hecks checkout: hecks.gemspec stands beside lib/" }
|
|
771
|
+
end
|
|
772
|
+
|
|
773
|
+
policy "PerformStyleWhenAccepted" do
|
|
774
|
+
on "StyleRun.StyleAccepted"
|
|
775
|
+
ask :perform, with: { run: :run }
|
|
776
|
+
end
|
|
777
|
+
|
|
778
|
+
policy "RecordStyleOutcome" do
|
|
779
|
+
on "StyleRun.StyleAnswered"
|
|
780
|
+
trigger StyleRun::Complete, with: { run: :run, report: :report }
|
|
781
|
+
end
|
|
782
|
+
|
|
783
|
+
policy "RecordStyleFault" do
|
|
784
|
+
on "StyleRun.StyleRefused"
|
|
785
|
+
trigger StyleRun::Fault, with: { refusal: :refusal }
|
|
786
|
+
end
|
|
787
|
+
end
|
|
788
|
+
end
|