Harden V1.1 API-stable contracts#175
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
typeandkeyparts stay colon-free, matching the existingtype:keyvalidation contract.Refs #174
Independent Risk Review
This PR follows an API-stable hardening review of the V1.1 release candidate. The review focused on storage contract/result receipt semantics, diagnostic/value immutability, bounded recovery and mutation safety, runner/storage adapter compatibility, effect identity docs, and V1.1 release-gate documentation.
Risk Findings
:insidetypeandkey.API Compatibility
DAG::VERSIONremains1.1.0.lib/dag.rb,lib/ruby-dag.rb, orlib/dag/version.rb.origin/mainmatched exactly:DAG::VERSION=1.1.0, 89DAGmodules/classes.DAG::Effects.validate_ref_part!behavior; this is a correction of examples, not a new schema requirement.Implementation Notes
DAG::RuntimeProfilenow frozen-copiesevent_bus_kindso YAML-compatible string values cannot be mutated after profile construction.DAG::Eventnow frozen-copiesworkflow_id,node_id, andattempt_id.create_workflow,append_revision, andbegin_attemptbefore using them as durable state coordinates.Verification
git diff --check origin/main...HEAD— passed.TMPDIR=/home/hermes/.tmp/ruby-dag bundle exec rake— passed: 585 runs, 40553 assertions, 0 failures, 0 errors; RuboCop inspected 149 files with no offenses; YARD reported 99.15% documented.Targeted tests — passed:
TMPDIR=/home/hermes/.tmp/ruby-dag bundle exec rake test TEST=spec/r0/types_are_deep_frozen_test.rb— 6 runs, 16 assertions.TMPDIR=/home/hermes/.tmp/ruby-dag bundle exec rake test TEST=spec/r0/v1_1_release_gate_test.rb— 9 runs, 115 assertions.TMPDIR=/home/hermes/.tmp/ruby-dag bundle exec rake test TEST=spec/r1/types_validation_test.rb— 32 runs, 57 assertions.TMPDIR=/home/hermes/.tmp/ruby-dag bundle exec rake test TEST=spec/r2/memory_storage_contract_test.rb— 43 runs, 223 assertions.TMPDIR=/home/hermes/.tmp/ruby-dag bundle exec rake test TEST=spec/r3/mutation_active_run_guard_test.rb— 3 runs, 14 assertions.API surface snapshot vs
origin/main— passed: exact match,DAG::VERSION=1.1.0, 89 modules/classes.Static scan of the diff found no hardcoded secrets, shell injection, eval/exec, unsafe deserialization, SQL injection, or forbidden public wording.
Final independent review returned pass with no security concerns, logic errors, or API compatibility issues.
GitHub Actions on PR Harden V1.1 API-stable contracts #175 — passed:
test (3.4),test (4.0), andtest (head)across the configured CI/Ruby workflows.