Repository navigation
Releases
Releases · heckslabs/hecks
host-arm64-abcc8bbedecaa4989337bc7d
host-abcc8bbedecaa4989337bc7d
host-arm64-7e8a15ba37dab203c6d13f21
host-arm64-0dfc38017519058b568fca86
host-7e8a15ba37dab203c6d13f21
host-0dfc38017519058b568fca86
host-arm64-4bc94a28385029ae7076bbf6
host-4bc94a28385029ae7076bbf6
hecks 7.1.0
Added
hecks narratetells each goal in a domain's.examplesfiles as a use case (ADR 0173). The narration ends with a "Use cases" section: the goal, its main scenario, then its extensions, every line quoted from the file.NarrateProjectortakes the files asoptions[:examples].- A
Goal:in an.examplesfile gathers its examples into a use case (ADR 0173). It names a goal aBackground:person pursues; the first example under it is the main scenario and the rest its extensions.hecks-parse examplesrefuses a main scenario that ends in a refusal (goal_without_success) and an extension that calls a command the main scenario never does (extension_off_path); the compiled.behaviorstext is unchanged. examples/order_deadlineshows a deadline reaching a saga as an ordinary command (ADR 0169). An order holds the instant it falls due (needs :now,sets :due_at, to: now + 259200);Expirerefuses until then; theFulfilmentprocess manager frees the held stock whenOrderExpiredarrives, dispatching from the handler because an expiry is not a refusal. It has behaviors, a corpus script and Ruby/Rust parser parity.- An adapter may say
stays_inside, and a behaviors suite then loads adapters by it (ADR 0171). The word, in theAdaptergrammar andhecks-parse adapteralike, says the adapter reaches no network, model or host; the exported adapter JSON carries"stays_inside": true. A suite whose project opts in (abehavior_adapters/directory beside it, or any project adapter saying the word) loads the project adapters that stay inside plus its stand-ins, a stand-in taking its port, and never runs the code of one that does not say it: the declaration is read with itsrequirelines left out. Other suites boot as before.Hecks.boot_filestakesadapters:to load exactly the files given.spec/behaviors/adapter_selection_spec.rbpins it. - A bluebook's classification keys two model_check findings (ADR 0172).
generic_depends_on_core(error) reports a context classifiedgenericthat depends on one classifiedcore, read fromProjections::ContextRelationshipsand run without a.contextmap;core_conforms(warning) reports a relationship a.contextmapdeclaresconformistwhose downstream context iscore, never the conformist ADR 0155 implies for anattaches, and a relationship may acknowledge it. Each booted system is judged with its own classifications.core,supportingandgenericnow mean the subdomain kind; Hecks's own bluebooks raise neither finding.spec/classification_checks_spec.rbpins both. - After a push, the worktrees that landings left behind are listed, and nothing is removed. A new policy
ListLeftoversWhenPushedasks theLeftoversport (adapterGitLeftovers) onSendTrain.BranchPushed. The adapter names each worktree whose branchLandingrecorded as landed and that is still there, withTidy's own verdict:<branch>: would retire it, orwould keep it: <why>. A worktree that was merely opened has no landing row and is never named. Nothing is removed because a clean worktree looks the same whether its session is finished or still working in it;retire!ordiscard!does the removal. The answer event isLeftoversListed(LeftoversRefusedwhen the checkout cannot be read). - Behavior change: boot refuses a saga less durable than the aggregates it moves (ADR 0170).
verify!reads every declared bluebook and refuses, as aWiringErrornaming the process manager, the aggregate and its adapter, a process manager whose checkpoints resolve to the null saga store while one of the aggregates its legs or compensations dispatch to is kept by an adapter other than Memory (aRemoteRuntimebind is exempt). An all-Memory domain is unchanged and keeps its boot warning. A domain with no hecksagon now resolves its saga store throughBindingPolicy, so a worlddefault_adapterthat keeps its records keeps its sagas too, where before it fell to the null store silently.spec/runtime/registry/forgetful_saga_refusal_spec.rbpins both. Landing.discard!removes a worktree and its branch althoughmainlacks the branch's commits. It needsreason.value=…(free text, kept on the record) and--confirm, and refuses by name whatretire!refuses:main,stable,edgeand the target, the main checkout, the worktree the process stands in, a locked worktree, a branch another worktree holds, a branch that moved after it was checked, and any uncommitted or untracked file. Its report names the tip the branch was at and how many commitsmainlacked (it was at <sha> with N commit(s) not on main; reason: …), so the commits stay findable by sha until git prunes them. Events areDiscardRequested,WorktreeDiscardedandDiscardDeclined.retire!is unchanged, and an agent runsdiscard!only on a branch the owner has asked it to discard.
Changed
Landing.retire!and the tidy after a landing count a branch as merged whenmaincarries every commit it adds under another id. The check was commit ids only, so a branch rebuilt after a conflict, cherry-picked or rebased ontomainwas kept for ever. It now asksgit cherryand counts only the commits that have no patch-equivalent onmain, so the refusal names the number that are really missing. An ignored or untracked file in the worktree still keeps it, as before.- The rspec and Postgres io shards are balanced from the last successful
mainrun's timings, with no committed baseline. Ashard_planjob runs the CiSpeedShardPlanaggregate (Request,RecordTimings; eventsShardPlanRequested,TimingsFetched,TimingsUnavailable,ShardPlanned,TimingsRecorded), splits the files once with the sharedHecks::Tools::ShardPlannerand every leg reads that plan; timings that cannot be read fall back to file size through a policy and never fail the run. Removed:runtime-baseline-refresh.yml,test_suite_run.refresh_runtime_baseline!(theRefreshRuntimeBaselinecommand and itsrefresh_rspec_runtime_baselinetool) and the committed.github/rspec_runtime_baseline.logand.github/postgres_io_runtime_baseline.log. The fuzz shards keepspec/fuzzing/fuzz_runtime_baseline.logand now deal with the same planner.