Skip to content

examples: add lift-upstream and block-escalate proof bundles#95

Merged
monadic merged 1 commit intomainfrom
codex/springboot-block-escalate-clean
Mar 23, 2026
Merged

examples: add lift-upstream and block-escalate proof bundles#95
monadic merged 1 commit intomainfrom
codex/springboot-block-escalate-clean

Conversation

@monadic
Copy link
Copy Markdown
Contributor

@monadic monadic commented Mar 23, 2026

Summary

  • Adds the lift-upstream proof bundle (Redis caching request) with ./lift-upstream.sh, --explain, --render-diff, and ./lift-upstream-verify.sh
  • Adds the block-escalate boundary bundle (datasource override) with ./block-escalate.sh, --explain, --render-attempt, and ./block-escalate-verify.sh
  • Updates docs, contracts, and example-summary.json to reflect all six proof levels

This completes the three-outcome mutation model for springboot-platform-app:

  1. Apply here — proven (merged in earlier PRs)
  2. Lift upstream — read-only bundle proven (this PR)
  3. Block/escalate — read-only boundary proven (this PR)

Replaces #87 and #89 which had stacking issues after squash merges.

Verification

All pass:

  • ./scripts/verify.sh
  • ./verify.sh
  • ./lift-upstream-verify.sh
  • ./block-escalate-verify.sh
  • mvn test (3 tests, 0 failures)

Test plan

  • Repo-level verifier passes
  • Example verifier passes
  • Lift-upstream bundle verifier passes
  • Block-escalate boundary verifier passes
  • Spring Boot HTTP tests pass
  • No merge conflicts with current main

🤖 Generated with Claude Code

Add the remaining two routed-outcome proof bundles for the
springboot-platform-app example:

- lift-upstream: read-only Redis caching request bundle with
  render-diff, explain, and verify scripts
- block-escalate: read-only datasource override boundary bundle
  with render-attempt, explain, and verify scripts

Both bundles are deterministic and read-only. They prove the
three-outcome mutation model without requiring a live cluster
or real GitHub PR automation.

Replaces PRs #87 and #89 which were stacked on intermediate
branches that no longer exist after squash merges.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@monadic monadic merged commit d9f965a into main Mar 23, 2026
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5a1f6fc189

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +65 to +67
"durable_upstream_changes": [
"Add spring-boot-starter-data-redis dependency",
"Set spring.cache.type=redis in the upstream app config"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Include actual cache behavior in the lift-upstream bundle

When someone applies the advertised ./lift-upstream.sh --render-diff patch, the upstream side only adds the Redis starter and spring.cache.type=redis. None of the Java sources change, and the app still has no caching behavior wired in, so this bundle does not actually implement the request in show_explain_json (“Add Redis-backed caching to the service.”) — it only changes dependencies/config. The proof bundle should include the code changes that make requests hit Redis-backed caches, otherwise the “GitHub-ready” diff is materially incomplete.

Useful? React with 👍 / 👎.

for pair in "${PAIRS[@]}"; do
IFS='|' read -r target current lifted <<<"${pair}"
set +e
diff -u --label "a/${target}" --label "b/${target}" "${current}" "${lifted}"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Compare the rendered Redis patch against a frozen baseline

render_diff() is diffing each bundle snapshot against whatever currently exists in upstream/app/... and confighub/.... If any unrelated edit lands in those files later, ./lift-upstream.sh --render-diff will start emitting that drift too, even though the docs call this a deterministic Redis bundle. Without a frozen baseline (or at least a guard that the source files still match the expected starting point), reviewers can get a noisy patch that is no longer the Redis-only change this script is supposed to prove.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant