diff --git a/docs/agent/EVIDENCE_AUDIT_CAMPAIGN_BOARD.md b/docs/agent/EVIDENCE_AUDIT_CAMPAIGN_BOARD.md index a671dd3d..a86995a5 100644 --- a/docs/agent/EVIDENCE_AUDIT_CAMPAIGN_BOARD.md +++ b/docs/agent/EVIDENCE_AUDIT_CAMPAIGN_BOARD.md @@ -8,15 +8,16 @@ Use this board with [`EVIDENCE_AUDIT_CAMPAIGN_CONTRACT.md`](EVIDENCE_AUDIT_CAMPA - Campaign name: LoadBalancerPro 20-PR Evidence Audit and Closeout Repair Campaign. - Total target: 20 merged PRs. -- Completed campaign PRs: 0 / 20. -- Current PR slot: 1. -- Current branch: `codex/evidence-audit-closeout-repair`. -- Current PR: [#316](https://github.com/RicheyWorks/LoadBalancerPro/pull/316). +- Completed campaign PRs: 1 / 20. +- Current PR slot: 2. +- Current branch: `codex/evidence-audit-open-pr-hygiene`. +- Current PR: [#317](https://github.com/RicheyWorks/LoadBalancerPro/pull/317). - Starting main HEAD: `c27dc5a8da365f9b64ab13e671d9dad07f0f2f01`. - Prior campaign fact: PR #315 is merged. - Prior campaign merge commit: `c27dc5a8da365f9b64ab13e671d9dad07f0f2f01`. - Prior campaign result before this audit: 10 / 10 PRs merged. -- Slot 1 purpose: repair stale 10-PR closeout state and initialize the 20-slot evidence audit campaign controls. +- Slot 1 result: PR #316 merged as `4622d788569fc68de1fab212cdad388d2cf10dc8`; post-merge main CI and CodeQL were green. +- Slot 2 purpose: audit open PR hygiene without closing, rebasing, editing, or otherwise modifying unrelated PRs. ## Board Rules @@ -33,8 +34,8 @@ Use this board with [`EVIDENCE_AUDIT_CAMPAIGN_CONTRACT.md`](EVIDENCE_AUDIT_CAMPA | Slot | Scope | Branch | PR | Status | Head SHA | Merge SHA | Checkpoint | | --- | --- | --- | --- | --- | --- | --- | --- | -| 1 | Prior 10-PR closeout repair | codex/evidence-audit-closeout-repair | [#316](https://github.com/RicheyWorks/LoadBalancerPro/pull/316) | PR opened | `001bc2056c348fba26b8cad38b9855bf92e33866` at PR creation | pending | PR #315 facts verified; local verification passed; PR opened | -| 2 | Open PR hygiene audit | pending | pending | planned | pending | pending | Audit #291 and other open PRs without closing or modifying them | +| 1 | Prior 10-PR closeout repair | codex/evidence-audit-closeout-repair | [#316](https://github.com/RicheyWorks/LoadBalancerPro/pull/316) | merged | `cfa138b923a14c46b07c40a6c80fd6f1c568c8f2` | `4622d788569fc68de1fab212cdad388d2cf10dc8` | PR #315 facts repaired; post-merge main CI and CodeQL green | +| 2 | Open PR hygiene audit | codex/evidence-audit-open-pr-hygiene | [#317](https://github.com/RicheyWorks/LoadBalancerPro/pull/317) | PR opened | `c53ad0a799fb8d14ebe92df2f6b40fb2bcd1d71c` at PR creation | pending | PR #291 and other open PRs audited without closing or modifying them | | 3 | Repository evidence map | pending | pending | planned | pending | pending | Map README, trust, CI, CodeQL, Docker, Compose, smoke, config, and campaign evidence | | 4 | CI workflow audit | pending | pending | planned | pending | pending | Audit workflow posture without editing workflow files | | 5 | CodeQL and dependency-review audit | pending | pending | planned | pending | pending | Audit CodeQL/dependency review posture and limits | diff --git a/docs/agent/EVIDENCE_AUDIT_OPEN_PR_HYGIENE.md b/docs/agent/EVIDENCE_AUDIT_OPEN_PR_HYGIENE.md new file mode 100644 index 00000000..629e6e8a --- /dev/null +++ b/docs/agent/EVIDENCE_AUDIT_OPEN_PR_HYGIENE.md @@ -0,0 +1,56 @@ +# Evidence Audit Open PR Hygiene + +This note is slot 2 of the **LoadBalancerPro 20-PR Evidence Audit and Closeout Repair Campaign**. It is documentation/test-only. It audits open pull requests for reviewer hygiene only. It does not close, rebase, edit, merge, or otherwise modify any unrelated pull request. + +## Audit Timestamp + +- Audit timestamp: 2026-05-24T23:56-07:00. +- Audited repository: `RicheyWorks/LoadBalancerPro`. +- Audited base branch: `main`. +- Slot 2 branch: `codex/evidence-audit-open-pr-hygiene`. +- Starting main HEAD: `4622d788569fc68de1fab212cdad388d2cf10dc8`. + +## Open PR Inventory + +The open PR list was gathered with `gh pr list --state open --json number,title,headRefName,headRefOid,baseRefName,isDraft,mergeable,mergeStateStatus,updatedAt,url,author`. + +| PR | Title | Branch | Head SHA | Merge state | Draft | Last updated | Hygiene note | +| --- | --- | --- | --- | --- | --- | --- | --- | +| [#291](https://github.com/RicheyWorks/LoadBalancerPro/pull/291) | Update README.md | `RicheyWorks-patch-2` | `8342f39dedeb29f97b55be7874e3ee5e3ca9a057` | `DIRTY` / `CONFLICTING` | false | 2026-05-24T11:58:46Z | Stale or superseded by current main. Do not close or modify without explicit human direction. Recommended action: human review whether to close as superseded or create a fresh scoped README wording PR from current main. | +| [#271](https://github.com/RicheyWorks/LoadBalancerPro/pull/271) | Bump the maven-low-risk-minor-patch group across 1 directory with 4 updates | `dependabot/maven/maven-low-risk-minor-patch-e19c36b69b` | `721bacb57f346f50562dca1884629525620cb9c7` | `BLOCKED` / `MERGEABLE` | false | 2026-05-23T19:03:13Z | Dependency PR. Keep separate from this docs/test-only audit campaign; requires dependency-review and dependency-upgrade policy review before action. | +| [#238](https://github.com/RicheyWorks/LoadBalancerPro/pull/238) | Add source-name guard allowlist exit criteria plan | `codex/source-name-guard-allowlist-exit-criteria-plan` | `4dd444f943bcd8a0289547a9537f4f2c85782d8d` | `CLEAN` / `MERGEABLE` | false | 2026-05-22T01:13:13Z | Older planning PR. Requires human review for current relevance before merge or closure. | +| [#216](https://github.com/RicheyWorks/LoadBalancerPro/pull/216) | Add decision replay evidence closure packet | `codex/decision-replay-evidence-closure-packet` | `1cb8f7b1c67ccbe3a067daa991055c5cfda9b501` | `CLEAN` / `MERGEABLE` | false | 2026-05-20T23:50:01Z | Older evidence/replay-related PR. Keep separate from this campaign; do not treat it as replay execution or storage/export proof. | +| [#182](https://github.com/RicheyWorks/LoadBalancerPro/pull/182) | Validate Enterprise Lab decision replay contract fixtures | `feature/decision-replay-contract-reader` | `62aaddf3ee4151983fcb3ea50d9a09dd976d8734` | `CLEAN` / `MERGEABLE` | false | 2026-05-16T23:35:01Z | Older feature PR. Requires dedicated scope review before any merge decision. | +| [#179](https://github.com/RicheyWorks/LoadBalancerPro/pull/179) | Bump github/codeql-action from 4.35.4 to 4.36.0 in the github-actions-minor-patch group across 1 directory | `dependabot/github_actions/github-actions-minor-patch-bcb0c4251a` | `f6153150adfe56cdbd38c018caa0af2d96017200` | `CLEAN` / `MERGEABLE` | false | 2026-05-23T19:03:18Z | Dependency PR touching workflow action versions. Keep outside docs/test-only campaign; requires CI/workflow dependency review. | +| [#178](https://github.com/RicheyWorks/LoadBalancerPro/pull/178) | build(deps): bump maven from `1fc9415` to `029a8e2` | `dependabot/docker/maven-029a8e2` | `c9e2aa80aacd6ad167498675f31743a5de3c9eb5` | `CLEAN` / `MERGEABLE` | false | 2026-05-16T19:03:04Z | Dependency PR touching Docker base image digest. Keep outside docs/test-only campaign; requires Docker/dependency policy review. | +| [#168](https://github.com/RicheyWorks/LoadBalancerPro/pull/168) | Polish strict Enterprise Lab cockpit monitoring | `feature/strict-enterprise-lab-cockpit-how-monitoring` | `b0b696ff39734f467f222a4de33572e26e3d302a` | `DIRTY` / `CONFLICTING` | false | 2026-05-16T03:51:04Z | Older cockpit polish PR with conflicts. Requires human decision to close, rebase, or re-scope. | +| [#167](https://github.com/RicheyWorks/LoadBalancerPro/pull/167) | Polish cockpit how-question guidance | `feature/cockpit-how-questions-polish-pack` | `2de778705f30e09986396a9aa083bbbedbef998c` | `DIRTY` / `CONFLICTING` | false | 2026-05-16T03:17:27Z | Older cockpit polish PR with conflicts. Requires human decision to close, rebase, or re-scope. | + +## PR #291 Finding + +PR #291 is open, non-draft, and based on `main`, but GitHub reports `mergeStateStatus=DIRTY` and `mergeable=CONFLICTING` for head `8342f39dedeb29f97b55be7874e3ee5e3ca9a057`. Its diff against current main changes: + +- `README.md`; +- `src/test/java/com/richmond423/loadbalancerpro/api/EnterpriseLabCockpitFramingDocumentationTest.java`; +- `src/test/java/com/richmond423/loadbalancerpro/api/ReadmeVisibilityDocumentationTest.java`. + +The README intent from PR #291 appears to be cleaner cockpit wording while preserving boundary language. Current main already contains later Advanced README and trust-contract work, so PR #291 should be treated as stale or superseded until a human reviewer decides otherwise. + +Recommended action for #291: + +- do not merge while it is conflicting; +- do not close or modify it in this audit campaign; +- prefer a fresh, separately scoped README wording PR from current main if the wording still needs adjustment; +- if no longer useful, close only with explicit human approval. + +## Hygiene Rules For Open PRs + +- Do not merge an open PR with pending, failed, cancelled, stale, duplicate-only, missing, or ambiguous required checks. +- Do not treat an old green check as current evidence after the branch is conflicting, stale, or behind current main. +- Do not combine dependency updates, workflow updates, Docker image changes, replay/evidence behavior, cockpit polish, and audit documentation into the same PR. +- Do not close, delete branches, rebase, or force-push unrelated branches without explicit human instruction. +- Preserve README, AGENTS.md, BUILD_CONTRACT.md, Reviewer Trust Map, and not-proven boundary language. + +## Not-Proven Boundaries + +This open PR hygiene audit does not prove production readiness, production certification, live-cloud validation, real-tenant validation, runtime enforcement, load/stress/benchmarking, throughput/p95/p99 evidence, replay/evidence/report/storage/export proof, or broader automation. diff --git a/docs/agent/FAILURE_LOG.md b/docs/agent/FAILURE_LOG.md index 03cc68a6..1a41d7e6 100644 --- a/docs/agent/FAILURE_LOG.md +++ b/docs/agent/FAILURE_LOG.md @@ -400,6 +400,60 @@ Result: focused rerun passed. Follow-up action: continue PR 5 full local verification. +## Entry + +Date/time: 2026-05-24T23:58-07:00 + +Branch/PR: codex/evidence-audit-open-pr-hygiene / pending + +Failure type: focused documentation guard wording failure + +Failing check: `mvn test "-Dtest=AgentEvidenceAuditOpenPrHygieneDocumentationTest"` + +Suspected cause: `docs/agent/EVIDENCE_AUDIT_OPEN_PR_HYGIENE.md` preserved the docs/test-only scope by meaning but did not include the exact durable phrase `documentation/test-only` required by the new guard. + +Fix attempted: add exact documentation/test-only wording to the slot 2 open PR hygiene note. + +Result: focused rerun passed. + +Follow-up action: continue with the relevant campaign selector bundle and full local verification. + +## Entry + +Date/time: 2026-05-24T23:59-07:00 + +Branch/PR: codex/evidence-audit-open-pr-hygiene / pending + +Failure type: focused selector bundle guard fragility + +Failing check: `mvn test "-Dtest=AgentEvidenceAuditOpenPrHygieneDocumentationTest,AgentEvidenceAuditCampaignCloseoutRepairDocumentationTest,AgentGoalCampaignFinalHandoffReportDocumentationTest,AgentGoalCampaignBoardInitializationDocumentationTest,AgentGoalCampaignTemplateArchitectureDocumentationTest,AgentGoalModeLongRunProtocolDocumentationTest,AgentWorkflowQuickstartDocumentationTest,AdvancedReadmeAgentContractDocumentationTest"` + +Suspected cause: `AgentEvidenceAuditCampaignCloseoutRepairDocumentationTest` froze the evidence audit board to slot 1 and `0 / 20` even though slot 2 correctly advances the active campaign board after PR #316 merged and main checks were green. + +Fix attempted: make the slot 1 closeout guard verify durable architecture and repaired PR #315 facts without requiring the active board to remain on slot 1. + +Result: selector bundle rerun passed. + +Follow-up action: continue slot 2 full local verification. + +## Entry + +Date/time: 2026-05-25T00:05-07:00 + +Branch/PR: codex/evidence-audit-open-pr-hygiene / pending + +Failure type: focused documentation guard wording drift + +Failing check: `mvn test "-Dtest=AgentEvidenceAuditOpenPrHygieneDocumentationTest,AgentEvidenceAuditCampaignCloseoutRepairDocumentationTest"` + +Suspected cause: the slot 2 session checkpoint advanced from branch creation to local verification passed and no longer contained the exact phrase `slot 2 branch created` expected by the new guard. + +Fix attempted: preserve exact `Slot 2 branch created` wording inside the session checkpoint history while keeping the active checkpoint factual. + +Result: focused rerun passed. + +Follow-up action: continue final verification. + ## Notes - Keep entries factual. diff --git a/docs/agent/SESSION_MANAGER.md b/docs/agent/SESSION_MANAGER.md index 1ed8de31..7229d2c1 100644 --- a/docs/agent/SESSION_MANAGER.md +++ b/docs/agent/SESSION_MANAGER.md @@ -8,121 +8,107 @@ Historical 10-PR trial references remain available through [`GOAL_CAMPAIGN_CONTR ## Active Campaign Checkpoint -Timestamp: 2026-05-24T23:18-07:00 +Timestamp: 2026-05-25T00:10-07:00 Goal name: LoadBalancerPro 20-PR Evidence Audit and Closeout Repair Campaign -Current PR slot: 1 +Current PR slot: 2 -Checkpoint: Slot 1 PR opened; final-head verification pending +Checkpoint: Slot 2 PR opened; final-head verification pending -Started from main SHA: `c27dc5a8da365f9b64ab13e671d9dad07f0f2f01` +Started from main SHA: `4622d788569fc68de1fab212cdad388d2cf10dc8` -Current branch: codex/evidence-audit-closeout-repair +Current branch: codex/evidence-audit-open-pr-hygiene -PR URL: https://github.com/RicheyWorks/LoadBalancerPro/pull/316 +PR URL: https://github.com/RicheyWorks/LoadBalancerPro/pull/317 -Head SHA: `001bc2056c348fba26b8cad38b9855bf92e33866` at PR creation; final checkpoint head pending verification +Head SHA: `c53ad0a799fb8d14ebe92df2f6b40fb2bcd1d71c` at PR creation; final checkpoint head pending verification Changed files: -- README.md -- docs/agent/EVIDENCE_AUDIT_CAMPAIGN_CONTRACT.md +- docs/agent/EVIDENCE_AUDIT_OPEN_PR_HYGIENE.md - docs/agent/EVIDENCE_AUDIT_CAMPAIGN_BOARD.md -- docs/agent/EVIDENCE_AUDIT_CAMPAIGN_CHECKPOINT_TEMPLATE.md -- docs/agent/EVIDENCE_AUDIT_CAMPAIGN_FINAL_REPORT_TEMPLATE.md -- docs/agent/GOAL_CAMPAIGN_BOARD.md -- docs/agent/GOAL_CAMPAIGN_FINAL_HANDOFF_REPORT.md - docs/agent/SESSION_MANAGER.md -- src/test/java/com/richmond423/loadbalancerpro/docs/AgentEvidenceAuditCampaignCloseoutRepairDocumentationTest.java -- src/test/java/com/richmond423/loadbalancerpro/docs/AgentGoalCampaignFinalHandoffReportDocumentationTest.java +- src/test/java/com/richmond423/loadbalancerpro/docs/AgentEvidenceAuditOpenPrHygieneDocumentationTest.java Checks run: -- Read README.md, AGENTS.md, BUILD_CONTRACT.md, AGENT_WORKFLOW_QUICKSTART.md, GOAL_MODE_LONG_RUN_PROTOCOL.md, VERIFICATION_PROTOCOL.md, SESSION_MANAGER.md, and FAILURE_LOG.md. -- Fetched origin and confirmed local main was clean. -- Verified PR #315 is merged. -- Verified PR #315 title is "Add goal campaign final handoff report." -- Verified PR #315 final head SHA is `99934cd6f511f535cc70e316a5c8f306fd643745`. -- Verified PR #315 merge commit is `c27dc5a8da365f9b64ab13e671d9dad07f0f2f01`. -- Verified main CI and CodeQL were green for `c27dc5a8da365f9b64ab13e671d9dad07f0f2f01`. -- Verified PR #291 is open, conflicting, and unrelated to slot 1; no changes were made to it. -- Created slot 1 branch from clean main. -- Completed slot 1 documentation/test repair batch. -- `mvn test "-Dtest=AgentEvidenceAuditCampaignCloseoutRepairDocumentationTest"` passed. -- Focused campaign/agent selector bundle passed after logged wording-drift repairs. +- Slot 1 PR #316 merged as `4622d788569fc68de1fab212cdad388d2cf10dc8`. +- Post-merge main verification for slot 1 passed locally. +- Main CI and CodeQL were green for `4622d788569fc68de1fab212cdad388d2cf10dc8`. +- Slot 2 branch created from clean main. +- Created slot 2 branch from clean main. +- Audited open PRs with `gh pr list --state open --json number,title,headRefName,headRefOid,baseRefName,isDraft,mergeable,mergeStateStatus,updatedAt,url,author`. +- Verified PR #291 is open, non-draft, `DIRTY` / `CONFLICTING`, and unchanged by this audit. +- Completed slot 2 documentation/test audit batch. +- `mvn test "-Dtest=AgentEvidenceAuditOpenPrHygieneDocumentationTest"` failed once for missing exact `documentation/test-only` wording, was logged in FAILURE_LOG.md, and passed after the wording fix. +- Relevant campaign/agent selector bundle failed once because a slot 1 guard froze the active board to slot 1, was logged in FAILURE_LOG.md, and passed after the guard was made durable. +- `mvn test "-Dtest=AgentEvidenceAuditOpenPrHygieneDocumentationTest,AgentEvidenceAuditCampaignCloseoutRepairDocumentationTest,AgentGoalCampaignFinalHandoffReportDocumentationTest,AgentGoalCampaignBoardInitializationDocumentationTest,AgentGoalCampaignTemplateArchitectureDocumentationTest,AgentGoalModeLongRunProtocolDocumentationTest,AgentWorkflowQuickstartDocumentationTest,AdvancedReadmeAgentContractDocumentationTest"` passed. - `mvn -B dependency:tree "-Dincludes=org.apache.tomcat.embed"` passed. -- `mvn -q test` passed with 2,387 tests. +- `mvn -q test` passed with 2,392 tests. - `mvn -q "-DskipTests" package` passed. -- `mvn -B package` passed with 2,387 tests. +- `mvn -B package` passed with 2,392 tests. - `git diff --check` passed with line-ending warnings only. - `git diff --check origin/main...HEAD` passed. - `git diff --cached --check` passed. - `.\scripts\smoke\enterprise-lab-workflow.ps1 -Package` passed. -- Slot 1 commit `001bc2056c348fba26b8cad38b9855bf92e33866` pushed. -- PR #316 opened. +- Slot 2 commit `c53ad0a799fb8d14ebe92df2f6b40fb2bcd1d71c` pushed. +- PR #317 opened. -Remote status: PR #316 checks pending or not yet audited; main CI and CodeQL were green for the starting main SHA. +Remote status: PR #317 checks pending or not yet audited; main CI and CodeQL were green for the starting main SHA. Blocker: none. -Next action: run final-head verification for the PR-created checkpoint, push the checkpoint commit, then audit PR #316 current-head remote checks. +Next action: run final-head verification for the PR-created checkpoint, push the checkpoint commit, then audit PR #317 current-head remote checks. Decision: continue ## Current Branch -Name: codex/evidence-audit-closeout-repair +Name: codex/evidence-audit-open-pr-hygiene ## Current PR -URL: https://github.com/RicheyWorks/LoadBalancerPro/pull/316 +URL: https://github.com/RicheyWorks/LoadBalancerPro/pull/317 ## Current Goal -Short goal: Repair stale post-merge state for the completed 10-PR trial and initialize the 20-PR evidence audit campaign controls. +Short goal: Audit open PR hygiene, especially PR #291, without closing or modifying unrelated PRs. ## Current Head SHA -SHA: `001bc2056c348fba26b8cad38b9855bf92e33866` at PR creation; final checkpoint head pending verification +SHA: `c53ad0a799fb8d14ebe92df2f6b40fb2bcd1d71c` at PR creation; final checkpoint head pending verification ## What Changed - Files changed: -- README.md -- docs/agent/EVIDENCE_AUDIT_CAMPAIGN_CONTRACT.md +- docs/agent/EVIDENCE_AUDIT_OPEN_PR_HYGIENE.md - docs/agent/EVIDENCE_AUDIT_CAMPAIGN_BOARD.md -- docs/agent/EVIDENCE_AUDIT_CAMPAIGN_CHECKPOINT_TEMPLATE.md -- docs/agent/EVIDENCE_AUDIT_CAMPAIGN_FINAL_REPORT_TEMPLATE.md -- docs/agent/FAILURE_LOG.md -- docs/agent/GOAL_CAMPAIGN_BOARD.md -- docs/agent/GOAL_CAMPAIGN_FINAL_HANDOFF_REPORT.md - docs/agent/SESSION_MANAGER.md -- src/test/java/com/richmond423/loadbalancerpro/docs/AgentEvidenceAuditCampaignCloseoutRepairDocumentationTest.java -- src/test/java/com/richmond423/loadbalancerpro/docs/AgentGoalCampaignFinalHandoffReportDocumentationTest.java +- src/test/java/com/richmond423/loadbalancerpro/docs/AgentEvidenceAuditOpenPrHygieneDocumentationTest.java - Behavioral surface: none; docs/test-only. -- Documentation surface: repairs the completed 10-PR campaign state and starts the new 20-slot audit campaign. +- Documentation surface: documents open PR hygiene findings and records slot 1 as merged/main green. ## Checks Run - Focused checks: -- `mvn test "-Dtest=AgentEvidenceAuditCampaignCloseoutRepairDocumentationTest"` passed. +- `mvn test "-Dtest=AgentEvidenceAuditOpenPrHygieneDocumentationTest"` passed after one logged wording repair. - Focused selector bundle: -- Campaign/agent selector bundle passed after logged wording-drift repairs. +- Relevant campaign/agent selector bundle passed after one logged guard durability repair. - Dependency checks: - `mvn -B dependency:tree "-Dincludes=org.apache.tomcat.embed"` passed. - Full checks: -- `mvn -q test` passed with 2,387 tests. +- `mvn -q test` passed with 2,392 tests. - Package checks: - `mvn -q "-DskipTests" package` passed. -- `mvn -B package` passed with 2,387 tests. +- `mvn -B package` passed with 2,392 tests. - Diff checks: - `git diff --check` passed with line-ending warnings only. - `git diff --check origin/main...HEAD` passed. - `git diff --cached --check` passed. - Smoke checks: - `.\scripts\smoke\enterprise-lab-workflow.ps1 -Package` passed. -- Remote checks: PR #316 checks pending or not yet audited. +- Remote checks: PR #317 checks pending or not yet audited. ## Blockers @@ -135,16 +121,17 @@ One concrete next step: rerun final-head verification for the PR-created checkpo ## Recovery Notes -- How to resume: confirm branch `codex/evidence-audit-closeout-repair`, inspect `git status`, then run the slot 1 focused guard and final-head verification. -- Commands already run: read required source files, `git fetch origin`, `gh pr view 315`, `gh pr view 291`, `gh run list --branch main`, `git checkout main`, `git pull --ff-only origin main`, and `git checkout -b codex/evidence-audit-closeout-repair`. +- How to resume: confirm branch `codex/evidence-audit-open-pr-hygiene`, inspect `git status`, then run the slot 2 focused guard and final-head verification. +- Commands already run for slot 2: `git status`, `git rev-parse HEAD`, `gh run list --branch main`, `git checkout -b codex/evidence-audit-open-pr-hygiene`, `gh pr list --state open`, `gh pr view 291`, PR #291 diff inspection, `git push origin codex/evidence-audit-open-pr-hygiene`, and `gh pr create`. - Safety boundaries to re-check: docs/test-only, no production code, no Maven config, no CI/workflow, no Dockerfile, no Compose behavior, no runtime behavior, no endpoints, no k6/Bruno/Toxiproxy behavior, no scripts, no secrets, no external/cloud/tenant targets, no automation, no unsupported claims. -- Remote checks that must be refreshed: PR current-head checks after PR creation; main CI/CodeQL after merge. +- Remote checks that must be refreshed: slot 2 PR current-head checks after PR creation; main CI/CodeQL after merge. ## Historical Closeout: LoadBalancerPro Goal Mode 10-PR Trial - Goal name: LoadBalancerPro Goal Mode 10-PR Trial. - Current PR slot: completed. - Result: 10 / 10 PRs merged. +- PR #315 is merged. - Final PR: [#315](https://github.com/RicheyWorks/LoadBalancerPro/pull/315). - Final branch: `codex/goal-campaign-final-handoff-report`. - Final head SHA: `99934cd6f511f535cc70e316a5c8f306fd643745`. diff --git a/src/test/java/com/richmond423/loadbalancerpro/docs/AgentEvidenceAuditCampaignCloseoutRepairDocumentationTest.java b/src/test/java/com/richmond423/loadbalancerpro/docs/AgentEvidenceAuditCampaignCloseoutRepairDocumentationTest.java index 6e9873ff..ced54ec5 100644 --- a/src/test/java/com/richmond423/loadbalancerpro/docs/AgentEvidenceAuditCampaignCloseoutRepairDocumentationTest.java +++ b/src/test/java/com/richmond423/loadbalancerpro/docs/AgentEvidenceAuditCampaignCloseoutRepairDocumentationTest.java @@ -52,9 +52,11 @@ void auditCampaignArchitectureExistsAndDefinesTwentySlots() throws IOException { || finalTemplate.contains(expected), "Missing audit campaign wording: " + expected); } - assertTrue(board.contains("completed campaign prs: 0 / 20")); - assertTrue(board.contains("current pr slot: 1")); + assertTrue(board.contains("completed campaign prs:")); + assertTrue(board.contains("current pr slot:")); assertTrue(board.contains("codex/evidence-audit-closeout-repair")); + assertTrue(board.contains("prior 10-pr closeout repair")); + assertTrue(board.contains("open pr hygiene audit")); } @Test diff --git a/src/test/java/com/richmond423/loadbalancerpro/docs/AgentEvidenceAuditOpenPrHygieneDocumentationTest.java b/src/test/java/com/richmond423/loadbalancerpro/docs/AgentEvidenceAuditOpenPrHygieneDocumentationTest.java new file mode 100644 index 00000000..f5e3d85d --- /dev/null +++ b/src/test/java/com/richmond423/loadbalancerpro/docs/AgentEvidenceAuditOpenPrHygieneDocumentationTest.java @@ -0,0 +1,128 @@ +package com.richmond423.loadbalancerpro.docs; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; +import java.util.Locale; + +import org.junit.jupiter.api.Test; + +class AgentEvidenceAuditOpenPrHygieneDocumentationTest { + private static final Path HYGIENE = Path.of("docs/agent/EVIDENCE_AUDIT_OPEN_PR_HYGIENE.md"); + private static final Path BOARD = Path.of("docs/agent/EVIDENCE_AUDIT_CAMPAIGN_BOARD.md"); + private static final Path SESSION = Path.of("docs/agent/SESSION_MANAGER.md"); + private static final Path SOURCE = Path.of( + "src/test/java/com/richmond423/loadbalancerpro/docs/" + + "AgentEvidenceAuditOpenPrHygieneDocumentationTest.java"); + + @Test + void openPrHygieneDocRecordsPr291WithoutTakingAction() throws IOException { + String hygiene = read(HYGIENE).toLowerCase(Locale.ROOT); + + for (String expected : List.of( + "slot 2", + "open pr hygiene", + "#291", + "richeyworks-patch-2", + "8342f39dedeb29f97b55be7874e3ee5e3ca9a057", + "dirty", + "conflicting", + "stale or superseded", + "do not close or modify", + "human review", + "fresh, separately scoped readme wording pr")) { + assertTrue(hygiene.contains(expected), "Missing PR #291 hygiene finding: " + expected); + } + } + + @Test + void openPrInventoryCoversEveryAuditedOpenPr() throws IOException { + String hygiene = read(HYGIENE).toLowerCase(Locale.ROOT); + + for (String expected : List.of( + "#291", + "#271", + "#238", + "#216", + "#182", + "#179", + "#178", + "#168", + "#167", + "dependabot", + "dependency pr", + "workflow action versions", + "docker base image digest", + "older cockpit polish pr")) { + assertTrue(hygiene.contains(expected), "Missing open PR inventory detail: " + expected); + } + } + + @Test + void slotBoardAndSessionAdvanceFromSlotOneToSlotTwo() throws IOException { + String board = read(BOARD).toLowerCase(Locale.ROOT); + String session = read(SESSION).toLowerCase(Locale.ROOT); + + for (String expected : List.of( + "completed campaign prs: 1 / 20", + "current pr slot: 2", + "codex/evidence-audit-open-pr-hygiene", + "pr #316 merged", + "4622d788569fc68de1fab212cdad388d2cf10dc8", + "main ci and codeql were green", + "slot 2 branch created")) { + assertTrue(board.contains(expected) || session.contains(expected), + "Missing slot 2 campaign state: " + expected); + } + } + + @Test + void hygieneDocPreservesScopeAndNotProvenBoundaries() throws IOException { + String hygiene = read(HYGIENE).toLowerCase(Locale.ROOT); + + for (String expected : List.of( + "documentation/test-only", + "does not close", + "do not merge", + "pending, failed, cancelled, stale, duplicate-only, missing, or ambiguous required checks", + "production readiness", + "production certification", + "live-cloud validation", + "real-tenant validation", + "runtime enforcement", + "load/stress/benchmarking", + "throughput/p95/p99 evidence", + "replay/evidence/report/storage/export proof", + "broader automation")) { + assertTrue(hygiene.contains(expected), "Missing hygiene boundary: " + expected); + } + } + + @Test + void guardTestOnlyReadsTrackedFiles() throws IOException { + String source = read(SOURCE); + + for (String forbidden : List.of( + "Files." + "write", + "Files." + "create", + "Files." + "delete", + "Process" + "Builder", + "Runtime." + "getRuntime", + ".ex" + "ec(", + "Http" + "Client", + "URL" + "Connection", + "Socket" + "(")) { + assertFalse(source.contains(forbidden), "guard test must not use " + forbidden); + } + } + + private static String read(Path path) throws IOException { + assertTrue(Files.exists(path), path + " should exist"); + return Files.readString(path, StandardCharsets.UTF_8); + } +}