Skip to content

feat(operations): separate liveness and readiness probes - #295

Open
seonghobae wants to merge 4 commits into
fix/pii-logging-16240128950440010639from
feat/liveness-readiness-probes
Open

feat(operations): separate liveness and readiness probes#295
seonghobae wants to merge 4 commits into
fix/pii-logging-16240128950440010639from
feat/liveness-readiness-probes

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

Buyer-visible operational gap

Separate process liveness from traffic readiness so an orchestrator does not route requests to a live-but-unready instance.

Exact current stack

Availability contract

  • GET /healthz maps process liveness to controlled 200 {"status":"ok"} or 503 {"status":"broken"} responses without coupling restart eligibility to shared-service health.
  • GET /readyz returns 200 {"status":"ready"} only while the instance accepts traffic, otherwise 503 {"status":"not_ready"}.
  • Both routes use Cache-Control: no-store and expose no tenant, secret, topology, dependency, build, queue, credential, or exception detail.
  • Controller construction fails without ApplicationAvailability rather than inventing healthy state.
  • Deterministic tests and operations documentation cover startup, failure, recovery, Kubernetes probe intent, security boundaries, rollback, and liveness/readiness terminology.
  • Future readiness contributors remain instance-local routing conditions with deterministic failure and recovery tests; liveness must not create dependency restart cascades.

Exact-head evidence

For 05b3f2c23ed4fc2c64e66e99016f73a0cb29e2e9:

  • CI 31150168874: success.
    • exact-head Maven verification: success;
    • synthetic-merge compatibility: success;
    • buyer-readiness scripts: success;
    • zero missed production lines and branches, warning-free public Javadocs, and mandatory zero-skip test evidence: success.
  • fuzz 31150168889: success across all configured targets.
  • current-head CodeRabbit advisory review inspected the exact 11-file parent-relative slice and found no actionable path-specific defect; it withheld approval because required exact-head security/Strix evidence and counted independent approval remain absent.
  • CodeRabbit exact-head commit status: success, but status-only or comment-only evidence is not a formal review or counted approval.
  • actionable unresolved inline review threads: zero.
  • formal exact-current-head GitHub review submissions: zero.
  • exact-head Security Scan, SAST Semgrep, Strix, and counted independent repository-write-authorized approval: absent or base-dependent and not inferred.

Queued, pending, cancelled, skipped-required, absent-required, stale-head, predecessor-head, advisory-only, local-only, or synthetic-only evidence is not passing approval evidence.

Merge gate

Parent #270 must integrate first. Then reconcile this unchanged 11-file availability slice to protected main, confirm effective diff and ancestry, rerun every exact-head and base-sensitive CI, security, coverage, documentation, review, merge-compatibility, and branch-protection gate, require a qualifying independent approval, and merge only without bypass. Do not couple liveness to shared dependencies, expose diagnostic internals, weaken controlled response labels, or reuse #265 evidence.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 29ff932b-7f67-454f-a90b-7a2e40804676

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@opencode-agent @cwl-noema-review Independently review exact current head c4aaab9275073927f642c2bcf3596f7efa5da1ee only against authoritative parent #270 head ed3863209109cd24a3cf1f1d6bdcd51db16fbef1. This PR supersedes closed-unmerged #265 only as a review container; no prior review/check evidence transfers. Verify liveness/readiness separation, controlled 200/503 JSON, Cache-Control: no-store, absence of tenant/secret/topology leakage, Kubernetes probe semantics and recovery behavior, beginner-readable public Javadocs, 100% production line/branch coverage, and exact-head/synthetic-merge CI/security/fuzz gates. Submit formal approval only if this exact head and repository policy permit it.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

@seonghobae I will review #295 against the specified exact head and parent head. I will verify the API contract, operational documentation, test coverage, and exact-head CI and security gates. I will approve only if the review and repository-policy requirements pass.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

Retry exact-head review for c4aaab9275073927f642c2bcf3596f7efa5da1ee against parent ed3863209109cd24a3cf1f1d6bdcd51db16fbef1. No #265 review/check evidence transfers. Report actionable current findings or a formal current-head disposition only.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

@seonghobae I will review #295 at exact head c4aaab9275073927f642c2bcf3596f7efa5da1ee against ed3863209109cd24a3cf1f1d6bdcd51db16fbef1. I will not use review or check evidence from #265.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@opencode-agent @cwl-noema-review Re-run an exact-head review for c4aaab9275073927f642c2bcf3596f7efa5da1ee against authoritative parent #270 head ed3863209109cd24a3cf1f1d6bdcd51db16fbef1. The earlier CodeRabbit attempt was rate-limited and produced no formal review. Verify only the current 11-file availability slice: liveness/readiness separation; controlled 200/503 JSON; Cache-Control: no-store; no tenant, credential, dependency-topology, exception, or document leakage; Kubernetes restart-vs-routing semantics; recovery behavior; beginner-readable public Javadocs; 100% production line/branch coverage; and exact-head/synthetic-merge CI, Security Scan, SAST, and fuzz evidence. Do not transfer any #265 or predecessor result. Report actionable path-specific findings or formal review only; do not infer counted independent approval.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

@seonghobae I will review pull request #295 at exact head c4aaab9275073927f642c2bcf3596f7efa5da1ee against ed3863209109cd24a3cf1f1d6bdcd51db16fbef1.

I will assess only the current availability slice. I will report path-specific findings or the current-head disposition. I will not transfer evidence from #265 or any predecessor head.

⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@opencode-agent @cwl-noema-review Retry independent review of exact current head c4aaab9275073927f642c2bcf3596f7efa5da1ee only against authoritative parent #270 head ed3863209109cd24a3cf1f1d6bdcd51db16fbef1. The prior CodeRabbit attempt was rate-limited and produced no review. No predecessor evidence transfers. Verify liveness/readiness separation, controlled 200/503 JSON, Cache-Control: no-store, no tenant/secret/topology leakage, Kubernetes probe and recovery semantics, beginner-readable public Javadocs, 100% production line/branch coverage, and exact-head/synthetic-merge CI/security/fuzz gates. Submit actionable findings or a formal review for this exact head only; do not infer approval from absent checks.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

HEAD_SHA='c4aaab9275073927f642c2bcf3596f7efa5da1ee'
BASE_SHA='ed3863209109cd24a3cf1f1d6bdcd51db16fbef1'
REPO='ContextualWisdomLab/clearfolio'

echo '== Local commit identity and changed paths =='
git rev-parse HEAD
git cat-file -t "$HEAD_SHA"
git cat-file -t "$BASE_SHA"
git diff --name-status "$BASE_SHA" "$HEAD_SHA"
echo '== Diff stat =='
git diff --stat "$BASE_SHA" "$HEAD_SHA"
echo '== Exact diff =='
git diff --find-renames --find-copies --unified=80 "$BASE_SHA" "$HEAD_SHA"

echo '== GitHub PR identity, mergeability, and check rollup =='
gh pr view 295 --repo "$REPO" --json number,state,headRefOid,baseRefOid,mergeStateStatus,mergeable,statusCheckRollup,url
echo '== Exact-head check suites =='
gh api "repos/$REPO/commits/$HEAD_SHA/check-suites?per_page=100" --paginate
echo '== Exact-head legacy statuses =='
gh api "repos/$REPO/commits/$HEAD_SHA/status"
echo '== Repository branch protection / rulesets summary =='
gh api "repos/$REPO/branches/main/protection" 2>&1 || true
gh api "repos/$REPO/rulesets?includes_parents=true" 2>&1 || true

Length of output: 117319


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '== Candidate files =='
fd -HI '^(pom\.xml|AGENTS\.md|.*\.ya?ml|.*\.java|.*\.py)$' .github src scripts . 2>/dev/null | \
  rg '(^|/)(pom\.xml|AGENTS\.md|.*(?:Security|Filter|HealthController|Application)\.java|.*(?:HealthController|Security|Filter).*Test\.java|.*\.ya?ml|.*\.py)$' || true

echo '== Java route/security/filter declarations and availability usage =='
rg -n -C 5 --glob '*.java' \
  '(SecurityWebFilterChain|WebFilter|HandlerFilterFunction|`@RequestMapping`|`@GetMapping`|/healthz|/readyz|ApplicationAvailability|LivenessState|ReadinessState)' \
  src/main/java src/test/java

echo '== Build lifecycle, coverage, Javadoc, and script-test configuration =='
rg -n -C 6 \
  '(jacoco|maven-javadoc-plugin|maven-surefire-plugin|exec-maven-plugin|verify_maven_test_reports|scripts|<phase>verify</phase>|<includes>|<excludes>)' \
  pom.xml AGENTS.md 2>/dev/null || true

echo '== Workflow inventory and triggers =='
fd -HI -e yml -e yaml .github 2>/dev/null | while IFS= read -r file; do
  echo "--- $file"
  sed -n '1,260p' "$file"
done

echo '== Full active rulesets =='
gh api 'repos/ContextualWisdomLab/clearfolio/rulesets/18156473?includes_parents=true'
gh api 'repos/ContextualWisdomLab/clearfolio/rulesets/13042993?includes_parents=true'

echo '== Required check contexts reported by GitHub for PR `#295` =='
gh pr checks 295 --repo ContextualWisdomLab/clearfolio --required --json name,state,workflow,link 2>&1 || true

Length of output: 69522


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '== Health controller and only applicable WebFilter =='
cat -n src/main/java/com/clearfolio/viewer/controller/HealthController.java
cat -n src/main/java/com/clearfolio/viewer/config/ViewerSecurityHeadersWebFilter.java

echo '== Maven gate definitions =='
sed -n '175,275p' pom.xml
echo '== Repository gate instructions =='
sed -n '1,115p' AGENTS.md

echo '== CI workflow =='
cat -n .github/workflows/ci.yml
echo '== Fuzz workflow =='
cat -n .github/workflows/fuzz.yml

echo '== Pull request merge commit and review state =='
gh pr view 295 --repo ContextualWisdomLab/clearfolio \
  --json headRefOid,baseRefName,baseRefOid,mergeCommit,reviews,reviewDecision,statusCheckRollup

echo '== Check runs for the PR merge commit, if GitHub has created one =='
merge_sha="$(gh pr view 295 --repo ContextualWisdomLab/clearfolio --json mergeCommit --jq '.mergeCommit.oid // empty')"
if [ -n "$merge_sha" ]; then
  printf 'merge_sha=%s\n' "$merge_sha"
  gh api "repos/ContextualWisdomLab/clearfolio/commits/$merge_sha/check-runs?per_page=100"
else
  echo 'No GitHub synthetic merge commit is available.'
fi

Length of output: 29709


@seonghobae Formal exact-head review disposition: no approval.

I reviewed only c4aaab9275073927f642c2bcf3596f7efa5da1ee against ed3863209109cd24a3cf1f1d6bdcd51db16fbef1. I did not use #265 or predecessor evidence.

I found no actionable path-specific defect in the 11-file availability slice.

Static review confirms:

  • HealthController separates liveness and readiness.
  • GET /healthz returns controlled 200 {"status":"ok"} or 503 {"status":"broken"}.
  • GET /readyz returns controlled 200 {"status":"ready"} or 503 {"status":"not_ready"}.
  • Both paths set Cache-Control: no-store.
  • The controller reads only Spring ApplicationAvailability. It does not query a tenant, credential, document, queue, shared dependency, or exception detail.
  • The focused tests cover both success and failure states, exact bodies, and the cache-control header.
  • The Kubernetes documentation uses /healthz for startup and liveness, and /readyz for traffic readiness.
  • The Maven configuration enforces zero missed production lines and branches, plus warning-free public Javadocs, during verify.

Approval is blocked by current evidence:

  • GitHub has not created a synthetic merge commit.
  • Exact head c4aaab9275077f642c2bcf3596f7efa5da1ee has no CI, Security Scan, SAST, or fuzz runs.
  • The Codecov, Claude, and CodeRabbit suites are queued and have no runs.
  • The sole completed CodeRabbit status reports Review rate limited; it is not review evidence.
  • The PR targets the stack branch, and GitHub reports no required checks for that branch.

After #270 merges, reconcile this PR with main. Then obtain fresh exact-head and synthetic-merge CI, Security Scan, SAST, fuzz, and required-review evidence before approval.

You are interacting with an AI system.

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@opencode-agent @cwl-noema-review Re-run an independent review of exact current head c4aaab9275073927f642c2bcf3596f7efa5da1ee only against authoritative parent #270 head ed3863209109cd24a3cf1f1d6bdcd51db16fbef1. The earlier CodeRabbit attempt was rate-limited and produced no formal current-head review. No #265 or predecessor evidence transfers. Verify the liveness/readiness separation, controlled 200/503 JSON, Cache-Control: no-store, absence of tenant/secret/topology/dependency leakage, Kubernetes probe semantics and recovery behavior, beginner-readable public Javadocs, 100% production line/branch coverage, and exact-head/synthetic-merge CI/security/fuzz evidence. Submit formal approval only if this exact head and repository policy permit it; otherwise report path-specific actionable findings. Treat absent, queued, pending, cancelled, skipped-required, stale-head, and predecessor results as not passing.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/clearfolio'
pr='295'
head='c4aaab9275073927f642c2bcf3596f7efa5da1ee'
base='ed3863209109cd24a3cf1f1d6bdcd51db16fbef1'

echo '== Commit identity and exact changed paths =='
printf 'checked-out HEAD: '; git rev-parse HEAD
git cat-file -e "${head}^{commit}"
git cat-file -e "${base}^{commit}"
git diff --name-status "$base" "$head"
git diff --stat "$base" "$head"

echo '== Exact availability-slice diff =='
git diff --find-renames --unified=40 "$base" "$head"

echo '== Relevant source and test structure =='
fd -HI -t f . | rg '(^|/)(HealthController|ViewerSecurityHeadersWebFilter|.*Health.*Test|pom\.xml|AGENTS\.md|.*\.ya?ml|.*\.md)$' || true
for f in \
  src/main/java/com/clearfolio/viewer/controller/HealthController.java \
  src/main/java/com/clearfolio/viewer/config/ViewerSecurityHeadersWebFilter.java \
  pom.xml \
  AGENTS.md \
  .github/workflows/ci.yml \
  .github/workflows/fuzz.yml
do
  if [ -f "$f" ]; then
    echo "--- $f"
    cat -n "$f"
  fi
done

echo '== Route, availability, test assertion, documentation, coverage, and Javadoc references =='
rg -n -C 4 \
  --glob '*.java' --glob '*.xml' --glob '*.md' --glob '*.yml' --glob '*.yaml' \
  '(/healthz|/readyz|ApplicationAvailability|LivenessState|ReadinessState|Cache-Control|no-store|status"\s*:|status\(|assertThat|jacoco|javadoc|livenessProbe|readinessProbe|startupProbe)' \
  src pom.xml AGENTS.md .github 2>/dev/null || true

echo '== Pull request state and current check rollup =='
gh pr view "$pr" --repo "$repo" \
  --json number,state,headRefOid,baseRefName,baseRefOid,mergeable,mergeStateStatus,mergeCommit,reviewDecision,statusCheckRollup,url

echo '== Exact-head check runs, check suites, and legacy statuses =='
gh api "repos/$repo/commits/$head/check-runs?per_page=100"
gh api "repos/$repo/commits/$head/check-suites?per_page=100"
gh api "repos/$repo/commits/$head/status"

echo '== Synthetic-merge evidence, when GitHub has a merge commit =='
merge_sha="$(gh pr view "$pr" --repo "$repo" --json mergeCommit --jq '.mergeCommit.oid // empty')"
if [ -n "$merge_sha" ]; then
  printf 'synthetic_merge_sha=%s\n' "$merge_sha"
  gh api "repos/$repo/commits/$merge_sha/check-runs?per_page=100"
  gh api "repos/$repo/commits/$merge_sha/check-suites?per_page=100"
  gh api "repos/$repo/commits/$merge_sha/status"
else
  echo 'No synthetic merge commit is available.'
fi

echo '== Required check contexts and applicable repository rules =='
gh pr checks "$pr" --repo "$repo" --required --json name,state,workflow,link 2>&1 || true
gh api "repos/$repo/branches/main/protection" 2>&1 || true
gh api "repos/$repo/rulesets?includes_parents=true" 2>&1 || true

Length of output: 211776


@seonghobae Formal exact-head review disposition: no approval.

I reviewed only head c4aaab9275073927f642c2bcf3596f7efa5da1ee against parent ed3863209109cd24a3cf1f1d6bdcd51db16fbef1. I did not use #265 or predecessor evidence.

I found no actionable path-specific defect in the 11-file availability slice.

Static review confirms:

  • HealthController separates liveness from readiness.
  • GET /healthz returns only 200 {"status":"ok"} or 503 {"status":"broken"}.
  • GET /readyz returns only 200 {"status":"ready"} or 503 {"status":"not_ready"}.
  • Both routes set Cache-Control: no-store.
  • The controller uses only Spring Boot ApplicationAvailability. It does not access tenant, credential, document, queue, dependency, topology, build, or exception data.
  • The focused tests cover both success and failure states, exact JSON bodies, status codes, and cache-control behavior.
  • The operations ADR uses /healthz for startup and liveness probes. It uses /readyz for traffic readiness. It specifies failure and recovery semantics.
  • pom.xml configures zero missed production lines and branches and warning-free public Javadocs in the Maven verify lifecycle.

Approval is blocked by current evidence:

  • Exact head has zero GitHub check runs.
  • Codecov, Claude, and CodeRabbit check suites are queued with zero runs.
  • The sole completed CodeRabbit status says Review rate limited. It is not successful review evidence.
  • GitHub has no synthetic merge commit for this pull request.
  • GitHub reports no required checks for the current stacked target branch.
  • Therefore, exact-head CI, Security Scan, SAST, fuzz, coverage, Javadoc, and synthetic-merge evidence are absent. Configured gates do not prove executed gates.

After #270 merges, reconcile this pull request with main. Then obtain fresh successful exact-head and synthetic-merge evidence before approval.

You are interacting with an AI system.

@seonghobae seonghobae closed this Aug 7, 2026
@seonghobae seonghobae reopened this Aug 7, 2026

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@opencode-agent @cwl-noema-review Independently review exact current head 05b3f2c23ed4fc2c64e66e99016f73a0cb29e2e9 against exact parent ed3863209109cd24a3cf1f1d6bdcd51db16fbef1. Exact-head CI 31150168874 and fuzz 31150168889 are successful. Verify the 11-file availability slice: ApplicationAvailability construction, controlled liveness 200/503 mapping, readiness traffic-acceptance 200/503 mapping, Cache-Control: no-store, no sensitive diagnostic detail, liveness independence from shared services, fail-closed readiness, deterministic failure and recovery tests, Kubernetes/operator documentation, APA 7 references, terminology contracts, complete coverage/Javadocs, and preservation of parent security/dependency evidence. Treat #265 and all predecessor reviews as stale. Submit only formal current-head review evidence or path-specific actionable findings; counted independent repository-write approval remains separate and mandatory.

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@opencode-agent @cwl-noema-review Independently review exact current head 05b3f2c23ed4fc2c64e66e99016f73a0cb29e2e9 only against parent ed3863209109cd24a3cf1f1d6bdcd51db16fbef1. Treat #265 and every predecessor-head result as stale.

Verify the 11-file availability slice: Spring ApplicationAvailability construction; liveness versus readiness state mapping; exact controlled 200/503 bodies; Cache-Control: no-store; no tenant, dependency, credential, build, queue or exception detail; liveness independence from shared services; deterministic failure and recovery tests; unauthenticated probe policy; Kubernetes terminology contract; APA 7 references; and preservation of all parent authorization, privacy, dependency, SBOM, Maven-report, coverage and Javadoc gates.

Exact-head CI 31150168874 and fuzz 31150168889 are successful. Security/SAST/Strix and counted independent approval remain absent or base-dependent and are not inferred. Report exact-head actionable findings or a no-blocker conclusion; do not infer approval from comments or statuses.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/clearfolio'
pr='295'
head='05b3f2c23ed4fc2c64e66e99016f73a0cb29e2e9'
base='ed3863209109cd24a3cf1f1d6bdcd51db16fbef1'

echo '== Exact commit identity and bounded change list =='
printf 'checked_out_head='; git rev-parse HEAD
git cat-file -e "${head}^{commit}"
git cat-file -e "${base}^{commit}"
git diff --name-status "$base" "$head"
git diff --stat "$base" "$head"

echo '== Exact availability-slice diff =='
git diff --find-renames --find-copies --unified=60 "$base" "$head"

echo '== Candidate source structure =='
fd -HI -t f . | rg '(^|/)(HealthController|ViewerSecurityHeadersWebFilter|.*Health.*Test|pom\.xml|AGENTS\.md|.*\.ya?ml|.*\.md)$' || true

echo '== Health controller outline =='
health_file="$(fd -HI -t f '^HealthController\.java$' src 2>/dev/null | head -n1 || true)"
if [ -n "$health_file" ]; then
  ast-grep outline "$health_file" --items all --view expanded
  echo "--- $health_file"
  cat -n "$health_file"
fi

echo '== Availability routes, tests, documentation, coverage, and Javadoc configuration =='
rg -n -C 5 \
  --glob '*.java' --glob '*.xml' --glob '*.md' --glob '*.yml' --glob '*.yaml' \
  '(/healthz|/readyz|ApplicationAvailability|LivenessState|ReadinessState|Cache-Control|no-store|status"\s*:|assertThat|jacoco|javadoc|livenessProbe|readinessProbe|startupProbe|APA)' \
  src pom.xml AGENTS.md .github 2>/dev/null || true

echo '== Exact-head PR state, reviews, and checks =='
gh pr view "$pr" --repo "$repo" \
  --json number,state,headRefOid,baseRefName,baseRefOid,mergeable,mergeStateStatus,mergeCommit,reviewDecision,reviews,statusCheckRollup,url

echo '== Named exact-head workflow runs =='
gh run view 31150168874 --repo "$repo" --json databaseId,headSha,event,status,conclusion,name,workflowName,url,jobs
gh run view 31150168889 --repo "$repo" --json databaseId,headSha,event,status,conclusion,name,workflowName,url,jobs

echo '== Exact-head check runs and status =='
gh api "repos/$repo/commits/$head/check-runs?per_page=100"
gh api "repos/$repo/commits/$head/status"

echo '== Synthetic-merge evidence when available =='
merge_sha="$(gh pr view "$pr" --repo "$repo" --json mergeCommit --jq '.mergeCommit.oid // empty')"
if [ -n "$merge_sha" ]; then
  printf 'synthetic_merge_sha=%s\n' "$merge_sha"
  gh api "repos/$repo/commits/$merge_sha/check-runs?per_page=100"
  gh api "repos/$repo/commits/$merge_sha/status"
else
  echo 'No synthetic merge commit is available.'
fi

echo '== Required checks for the current target =='
gh pr checks "$pr" --repo "$repo" --required --json name,state,workflow,link 2>&1 || true

Length of output: 176591


🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/clearfolio'
pr='295'
head='05b3f2c23ed4fc2c64e66e99016f73a0cb29e2e9'
parent_pr='270'

echo '== Repository workflow definitions =='
fd -HI -t f -e yml -e yaml .github/workflows 2>/dev/null | sort | while IFS= read -r file; do
  echo "--- $file"
  cat -n "$file"
done

echo '== All workflow runs associated with the exact head =='
gh run list --repo "$repo" --commit "$head" --limit 100 \
  --json databaseId,workflowName,headSha,event,status,conclusion,url,createdAt,updatedAt

echo '== Exact-head check suites by workflow application =='
gh api "repos/$repo/commits/$head/check-suites?per_page=100"

echo '== Current repository rulesets and main protection =='
gh api "repos/$repo/rulesets?includes_parents=true" 2>&1 || true
gh api "repos/$repo/branches/main/protection" 2>&1 || true

echo '== Parent PR current identity and check evidence (context only) =='
gh pr view "$parent_pr" --repo "$repo" \
  --json number,state,headRefOid,baseRefName,baseRefOid,mergeable,mergeStateStatus,statusCheckRollup,reviewDecision,url
parent_head="$(gh pr view "$parent_pr" --repo "$repo" --json headRefOid --jq .headRefOid)"
printf 'parent_head=%s\n' "$parent_head"
gh run list --repo "$repo" --commit "$parent_head" --limit 100 \
  --json databaseId,workflowName,headSha,event,status,conclusion,url

Length of output: 1689


🏁 Script executed:

#!/bin/bash
set -u

repo='ContextualWisdomLab/clearfolio'
head='05b3f2c23ed4fc2c64e66e99016f73a0cb29e2e9'
parent_pr='270'

run() {
  echo "== $1 =="
  shift
  "$@" || echo "[command failed: $*]"
}

run 'GitHub workflow inventory' \
  gh workflow list --repo "$repo"

run 'All exact-head workflow runs' \
  gh run list --repo "$repo" --commit "$head" --limit 100 \
  --json databaseId,workflowName,headSha,event,status,conclusion,url,createdAt,updatedAt

run 'Exact-head check suites' \
  gh api "repos/$repo/commits/$head/check-suites?per_page=100"

run 'Repository rulesets' \
  gh api "repos/$repo/rulesets?includes_parents=true"

run 'Main branch protection' \
  gh api "repos/$repo/branches/main/protection"

run 'Parent PR state and checks' \
  gh pr view "$parent_pr" --repo "$repo" \
  --json number,state,headRefOid,baseRefName,baseRefOid,mergeable,mergeStateStatus,statusCheckRollup,reviewDecision,url

parent_head="$(gh pr view "$parent_pr" --repo "$repo" --json headRefOid --jq .headRefOid 2>/dev/null || true)"
if [ -n "$parent_head" ]; then
  run 'Parent exact-head workflow runs' \
    gh run list --repo "$repo" --commit "$parent_head" --limit 100 \
    --json databaseId,workflowName,headSha,event,status,conclusion,url
fi

Length of output: 75052


@seonghobae Formal exact-head review disposition: no approval.

I reviewed only 05b3f2c23ed4fc2c64e66e99016f73a0cb29e2e9 against ed3863209109cd24a3cf1f1d6bdcd51db16fbef1. I did not use #265 or predecessor review evidence.

I found no actionable path-specific defect in the 11-file availability slice.

Static review confirms the following:

  • HealthController requires ApplicationAvailability and rejects a null provider.
  • GET /healthz maps LivenessState.CORRECT to 200 {"status":"ok"}.
  • GET /healthz maps a non-CORRECT liveness state to 503 {"status":"broken"}.
  • GET /readyz maps ReadinessState.ACCEPTING_TRAFFIC to 200 {"status":"ready"}.
  • GET /readyz maps a non-accepting readiness state to 503 {"status":"not_ready"}.
  • Both routes set Cache-Control: no-store.
  • The response body contains only a controlled status label.
  • The controller does not access tenant, document, queue, credential, dependency, topology, build, or exception data.
  • Liveness has no shared-service dependency.
  • The focused tests cover both success and failure mappings, response bodies, status codes, cache behavior, and required controller construction.
  • The operations ADR documents Kubernetes startup, liveness, and readiness probes, recovery intent, rollback, security boundaries, and terminology.
  • The documentation includes Spring and Kubernetes references.
  • Exact-head CI run 31150168874 succeeded. It includes Maven verification, buyer-readiness tests, and synthetic merge-compatibility verification.
  • Exact-head fuzz run 31150168889 succeeded for all configured targets.

Approval is blocked by current integration and security evidence:

  • The exact head has no Security Scan, SAST Semgrep, or CodeQL run.
  • Codecov, Claude, and CodeRabbit check suites are queued and have no check runs.
  • The CodeRabbit status says the review was skipped for the base branch. It is not formal review evidence.
  • GitHub has not created a synthetic merge commit for #295.
  • Parent #270 is open and blocked. Its current rollup requires review and includes a failed CodeQL Analyze (actions) result.
  • The stacked target branch reports no required checks. Its state does not establish the protected main merge gate.

After #270 integrates, reconcile this unchanged slice with main. Then run fresh exact-head and synthetic-merge CI, Security Scan, SAST, CodeQL, fuzz, coverage, Javadoc, and required-review gates. A qualifying independent repository-write-authorized approval remains separate and mandatory.

You are interacting with an AI system.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

repo='ContextualWisdomLab/clearfolio'
pr='295'
head='05b3f2c23ed4fc2c64e66e99016f73a0cb29e2e9'
base='ed3863209109cd24a3cf1f1d6bdcd51db16fbef1'

echo '== Commit identity and changed files =='
printf 'checked_out_head='; git rev-parse HEAD
git cat-file -e "${head}^{commit}"
git cat-file -e "${base}^{commit}"
git diff --name-status "$base" "$head"
echo '-- changed file count --'
git diff --name-only "$base" "$head" | wc -l
echo '== Diff stat =='
git diff --stat "$base" "$head"

echo '== Exact availability diff =='
git diff --find-renames --find-copies --unified=60 "$base" "$head"

echo '== Relevant file map =='
fd -HI -t f . | rg '(^|/)(HealthController|.*Health.*Test|.*Security.*|.*Filter.*|pom\.xml|AGENTS\.md|.*\.ya?ml|.*\.md)$' || true

echo '== Route and availability declarations =='
rg -n -C 5 --glob '*.java' \
  '(@(?:Rest)?Controller|`@GetMapping`|/healthz|/readyz|ApplicationAvailability|LivenessState|ReadinessState|Cache-Control|no-store)' \
  src/main/java src/test/java 2>/dev/null || true

echo '== Security and unauthenticated route policy =='
rg -n -C 6 --glob '*.java' \
  '(SecurityWebFilterChain|authorizeExchange|pathMatchers|permitAll|authenticated|WebFilter|/healthz|/readyz)' \
  src/main/java src/test/java 2>/dev/null || true

echo '== Operations documentation and APA-style reference candidates =='
rg -n -C 4 --glob '*.md' \
  '(/healthz|/readyz|liveness|readiness|startupProbe|livenessProbe|readinessProbe|recovery|rollback|References|APA|Kubernetes|Spring Boot)' \
  . 2>/dev/null || true

echo '== Maven coverage, Javadoc, report, SBOM/dependency configuration =='
rg -n -C 6 \
  '(jacoco|javadoc|maven-javadoc-plugin|dependency-check|cyclonedx|SBOM|surefire|failsafe|verify|missed)' \
  pom.xml AGENTS.md 2>/dev/null || true

echo '== Exact-head GitHub evidence =='
gh run view 31150168874 --repo "$repo" --json databaseId,headSha,headBranch,event,status,conclusion,name,url,jobs
gh run view 31150168889 --repo "$repo" --json databaseId,headSha,headBranch,event,status,conclusion,name,url,jobs
gh pr view "$pr" --repo "$repo" \
  --json headRefOid,baseRefOid,baseRefName,mergeable,mergeStateStatus,reviewDecision,statusCheckRollup,reviews,url

echo '== Exact-head check runs and legacy statuses =='
gh api "repos/$repo/commits/$head/check-runs?per_page=100"
gh api "repos/$repo/commits/$head/status"

Length of output: 202365


🏁 Script executed:

#!/bin/bash
set -euo pipefail

head='05b3f2c23ed4fc2c64e66e99016f73a0cb29e2e9'
base='ed3863209109cd24a3cf1f1d6bdcd51db16fbef1'
repo='ContextualWisdomLab/clearfolio'

echo '== Exact changed paths =='
git diff --name-status "$base" "$head"

echo '== Changed Java source and test files =='
git diff --name-only "$base" "$head" -- 'src/main/java/**/*.java' 'src/test/java/**/*.java'

echo '== HealthController changed implementation =='
git diff --unified=120 "$base" "$head" -- \
  'src/main/java/com/clearfolio/viewer/controller/HealthController.java'

echo '== HealthController changed tests =='
git diff --unified=160 "$base" "$head" -- \
  'src/test/java/com/clearfolio/viewer/controller/HealthControllerTest.java'

echo '== Current HealthController and its test =='
cat -n src/main/java/com/clearfolio/viewer/controller/HealthController.java
cat -n src/test/java/com/clearfolio/viewer/controller/HealthControllerTest.java

echo '== Route security configuration =='
security_files="$(fd -HI -t f -e java . src/main/java | rg '(Security|Filter|WebFlux).*\.java$' || true)"
if [ -n "$security_files" ]; then
  while IFS= read -r file; do
    echo "--- $file"
    cat -n "$file"
  done <<< "$security_files"
fi

echo '== Operations ADR and changed availability documentation =='
cat -n docs/operations/2026-08-05-availability-probes.md
git diff --unified=80 "$base" "$head" -- \
  'docs/operations/2026-08-05-availability-probes.md' \
  'docs/engineering/acceptance-criteria.md' \
  'ARCHITECTURE.md' \
  'docs/architecture.md'

echo '== Exact coverage rule and dependency/SBOM plugins =='
sed -n '203,290p' pom.xml
rg -n -C 5 '(cyclonedx|dependency-check|trivy|semgrep|scorecard|OSV|Security Scan|SAST)' \
  .github AGENTS.md pom.xml 2>/dev/null || true

echo '== Current exact-head security check state =='
gh pr checks 295 --repo "$repo" --json name,state,workflow,link
gh api "repos/$repo/commits/$head/check-suites?per_page=100" --jq \
  '.check_suites[] | {app: .app.slug, status, conclusion, head_sha: .head_commit.id}'

Length of output: 71739


@seonghobae Exact-head review result: no code blocker found.

I reviewed 05b3f2c23ed4fc2c64e66e99016f73a0cb29e2e9 against ed3863209109cd24a3cf1f1d6bdcd51db16fbef1. I did not use #265 or predecessor-head evidence.

The 11-file slice meets the requested availability contract:

  • HealthController requires a non-null ApplicationAvailability.
  • GET /healthz maps CORRECT to 200 {"status":"ok"}.
  • GET /healthz maps non-CORRECT liveness to 503 {"status":"broken"}.
  • GET /readyz maps ACCEPTING_TRAFFIC to 200 {"status":"ready"}.
  • GET /readyz maps non-accepting readiness to 503 {"status":"not_ready"}.
  • Both responses set Cache-Control: no-store.
  • Both responses contain only the controlled status label.
  • The controller has no shared-service call. It does not expose tenant, document, dependency, credential, queue, build, topology, or exception data.
  • Tests cover controlled success and failure states, exact bodies, status codes, cache policy, and missing-provider failure.
  • The operations ADR defines unauthenticated probe policy, Kubernetes startup/liveness/readiness routing, recovery guidance, rollback rules, and APA-style references.
  • Exact-head CI run 31150168874 succeeded. It includes Maven verification, buyer-readiness scripts, and merge compatibility.
  • Exact-head fuzz run 31150168889 succeeded for all configured targets.
  • The Maven configuration enforces zero missed production lines and branches. It also enforces warning-free public Javadocs during verify.

This is a no-blocker code-review conclusion, not an approval.

Exact-head Codecov, Claude, and CodeRabbit suites remain queued. The successful CodeRabbit status says that review is disabled for the current base branch. It is not formal review evidence. Security Scan, SAST, Strix, protected-main reconciliation, and a counted independent approval remain separate merge requirements after #270 integrates.

You are interacting with an AI system.

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@opencode-agent @cwl-noema-review Please independently review exact current head 05b3f2c23ed4fc2c64e66e99016f73a0cb29e2e9 only against parent ed3863209109cd24a3cf1f1d6bdcd51db16fbef1. Fresh exact-head CI 31150168874 and fuzz 31150168889 are successful. Focus on liveness/readiness state mapping, controlled 200/503 payloads, Cache-Control: no-store, unauthenticated probe safety, construction fail-closed behavior, independence of liveness from shared dependencies, deterministic recovery tests, Kubernetes semantics, and documentation terminology. Do not transfer #265 or predecessor evidence. Exact-head security/SAST/Strix and a separate counted repository-write-authorized independent approval remain mandatory.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Rate Limit Exceeded

@seonghobae have exceeded the limit for the number of chat messages per hour. Please wait 2 minutes and 28 seconds before sending another message.

Copy link
Copy Markdown
Collaborator Author

@coderabbitai review

@opencode-agent @cwl-noema-review Independently review exact current head 05b3f2c23ed4fc2c64e66e99016f73a0cb29e2e9 only against exact parent ed3863209109cd24a3cf1f1d6bdcd51db16fbef1. This is the replacement review container for closed-unmerged #265; no predecessor evidence transfers.

Verify the exact 11-file availability slice: process liveness versus traffic readiness; controlled 200/503 JSON; Cache-Control: no-store; fail-fast ApplicationAvailability construction; no tenant, secret, dependency, topology, build, queue, credential, or exception leakage; Kubernetes startup/liveness/readiness semantics; deterministic failure and recovery tests; beginner-readable public Javadocs; zero missed production lines and branches; documentation contracts; and preservation of the parent security, dependency, SBOM, tenant, and audit boundaries.

Exact-head CI 31150168874 and fuzz 31150168889 are successful. Exact-head Security Scan, SAST Semgrep, Strix, formal current-head review submissions, and counted independent repository-write-authorized approval are absent or base-dependent and are not inferred. Report path-specific actionable findings or a no-blocker current-head disposition only; do not approve or merge around the parent dependency or repository protections.

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown

Rate Limit Exceeded

@seonghobae have exceeded the limit for the number of chat messages per hour. Please wait 2 minutes and 41 seconds before sending another message.

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