Keep review and tests local and reconcile documentation - #275
Merged
Merged
Conversation
Summary: - Establish one current testing and merge guide; remove stale README counts and router-state claims. - Align contributor and agent completion rules with local testing and head-bound merge evidence. - Label historical reports and specification CI proposals, retaining original evidence. - Repair the documentation index with current entry points and explicit unavailable historical references. Changed files: - README, CONTRIBUTING, agent instructions and strategy: current operational guidance. - docs/TESTING.md and docs/DOCUMENTATION_STATUS.md: canonical policy and scoped audit record. - Historical docs and affected specifications: policy supersession notices. Validation: - make test-all: 1469 passed, 21 skipped across seven tiers including 33 Playwright tests. - 49 new relative links resolve; current guide/index/contributor/agent file links resolve. - Black, Ruff and staged whitespace checks pass. - Tracked Markdown searched for obsolete test counts, hosted-test claims, check names and router-state descriptions. Follow-ups: - Historical deployment/security/product reports remain historical, not newly certified. - Wait for current-head hosted checks and independent AI review before merge.
AI review (Ollama: glm-5.3-flash){
"verdict": "SAFE TO MERGE",
"summary": "Docs-only reconciliation (33 Markdown files; no code, test, or workflow changes) that establishes docs/TESTING.md as the current testing/merge guide, removes stale static test counts and outdated 'routers not registered' claims from README/AGENTS/CLAUDE/copilot docs, aligns CONTRIBUTING merge rules with agent guidance, and labels historical reports and spec CI proposals as superseded without rewriting original evidence. The content is consistent with the accepted repository policy (local test execution, hosted checks limited to static analysis, PostgreSQL migration validation, and AI review) and does not weaken or remove any test coverage. No security defects, secrets, tenant-isolation changes, or broken contracts found. Local results (1469 passed, 21 skipped; tier counts sum correctly to 1469) are author-reported evidence claims, not independently verified. The main residual risk is the flipped router-state claim (billing/notification registered under /api/v1, SMS at /api/sms), which cannot be confirmed from this docs-only diff; it is plausibly a stale-doc fix per the author's stated api/main.py check, so confirm registration at HEAD at merge time. Remaining findings are nonblocking documentation polish: contradictory 'Current' badges on unavailable historical index entries and unverifiable make targets/anchors referenced by the new guide.",
"findings": [
{
"priority": "P3",
"path": "docs/INDEX.md",
"line": 90,
"detail": "Rows for files marked '(historical file unavailable)' retain old status badges such as '✅ Current', '✅ Complete', '✅ Most current', and '✅ Verified'. The new 'Historical Catalog (2025-10-27)' header disclaims these labels, but the per-row badges still assert currency/verification for files that do not exist. Proposed fix: change those status cells to '📦 Historical/unavailable' so a reader who skips the header is not misled."
},
{
"priority": "P3",
"path": "README.md",
"line": 367,
"detail": "This PR flips four entry-point docs (README.md, AGENTS.md, CLAUDE.md, .github/copilot-instructions.md) from 'billing/email/SMS/notification routers not registered' to 'billing and notification registered under /api/v1, SMS mounted at /api/sms, email service-backed'. No code is in the diff, so this factual claim is unverifiable here; it is plausibly correcting stale docs, but before merge confirm the include_router registrations in api/main.py at HEAD so the docs do not assert live billing/SMS functionality that is actually disabled."
},
{
"priority": "P3",
"path": "docs/TESTING.md",
"line": 30,
"detail": "The new canonical guide references make targets (test-unit-fast, test-web, test-contract, test-e2e, test-mobile) and the distinction that legacy 'make test' runs tests/comprehensive_test_suite.py. These cannot be verified from a docs-only diff. Confirm each target exists in the Makefile (e.g., make -n <target>) so the guide does not document broken local test commands; also confirm the Playwright 1.60.0 pin matches the version actually used for the reported e2e tier."
},
{
"priority": "P3",
"path": "README.md",
"line": 390,
"detail": "The new tenant-isolation caveat links to docs/playbooks/README.md#known-boundaries-and-release-blockers; the anchor's existence is not verifiable from this diff. Confirm the heading matches so the link (which now carries the important 'coverage is not a claim of complete tenant isolation' caveat) does not resolve to a broken anchor."
}
]
}Diff-only advisory review; CI and GitHub mergeability remain mandatory. |
Summary: - Replace old Current/Complete/Verified badges in the historical index with explicit snapshot labels. Changed files: - docs/INDEX.md: clarify historical status without rewriting source reports. Validation: - Complete make test-all rerun passed, 1469 tests passed and 21 skipped. - Verified router registrations, documented Make targets, playbook anchor and installed Playwright 1.60.0 against current source/environment. - Diff whitespace check passed. Follow-ups: - Wait for current-head CI and AI review before merge.
AI review (Ollama: glm-5.3-flash){
"verdict": "SAFE TO MERGE",
"summary": "Documentation-only reconciliation across 33 Markdown files; no code, workflow, migration, or configuration changes, so there is no direct correctness, security, or tenant-isolation impact. The change strengthens rather than weakens expectations (CONTRIBUTING now requires 'make test-all' before every PR instead of only for cross-layer changes) and adds honesty hedges ('Coverage is not a claim of complete tenant isolation'). It correctly documents that Actions runs static checks/migration validation/AI review, not tests — consistent with the accepted repository policy; absence of hosted tests is not a blocker. Historical reports and superseded CI proposals are labeled without rewriting evidence, and dead index links are neutralized as text. Two nonblocking accuracy items remain: (1) the PR description records validation against SHA 8113031... while the pushed head is 88ea1bf..., and the 'committed tree is identical' assertion is self-reported — evidence should be re-confirmed against the actual head SHA per the PR's own merge checklist; (2) the flipped router-state claims (billing/notifications under /api/v1, SMS at /api/sms, email service-backed) cannot be verified in diff-only review since api/main.py is not in the diff — confirm include_router calls match before merge so the docs do not replace one false claim with another. Minor cosmetic inconsistencies in docs/INDEX.md status icons are nonblocking.",
"findings": [
{
"priority": "P2",
"path": "docs/TESTING.md",
"line": 69,
"detail": "The PR description reports validation for HEAD 8113031060e4e80c47b8a60c94c20d0e30d8f55f, but the pushed head is 88ea1bf8ee88f06b70068c77d11ab7305293e770. The claim that 'final committed documentation is identical to the source validated' is self-reported and not verifiable here, and the mismatch violates the PR's own step 2 ('Record ... the pushed head SHA'). Because the PR is docs-only the risk is low, but rerun or re-confirm make test-all against the actual head SHA and update the evidence record before merging."
},
{
"priority": "P2",
"path": "README.md",
"line": 367,
"detail": "The rewritten 'Disabled Features' text asserts billing/notification routers are registered under /api/v1, SMS is mounted at /api/sms, and email is service-backed (same claim repeated in AGENTS.md, CLAUDE.md, .github/copilot-instructions.md). api/main.py is not part of this diff, so diff-only review cannot confirm these statements. If registration is not actually present, this replaces stale docs with new misinformation about live attack surfaces. Fix: verify include_router calls and the SMS prefix in api/main.py match the documented paths before merge, or soften the wording to conditional."
},
{
"priority": "P3",
"path": "docs/INDEX.md",
"line": 117,
"detail": "Several entries marked 'historical file unavailable' retain affirmative status icons (e.g., RECAPTCHA_TEST_RESULTS '✅ Tested', ADMIN_TABS_STRUCTURE '✅ Reference', FEATURE_ROADMAP_ANALYSIS '✅ Planning doc', GAP_ANALYSIS_SUMMARY '✅ Most recent'). This is visually contradictory even though the section header disclaims old labels. Fix: normalize these status cells to 'Historical snapshot'."
},
{
"priority": "P3",
"path": "docs/TESTING.md",
"line": 64,
"detail": "The line 'The reviewer accepts local-only execution but still flags incorrect code, security defects...' embeds a description of the AI reviewer's decision posture in repository docs. It currently matches actual policy, but codifying reviewer behavior in-repo invites drift and could be mistaken for an attempt to define review outcomes. Fix: describe only what hosted checks run and defer review criteria to the workflow/review process."
},
{
"priority": "P3",
"path": "docs/TESTING.md",
"line": 10,
"detail": "Documenting 'poetry run pip install playwright==1.60.0' outside the Poetry lockfile institutionalizes a fragile setup that silently breaks after dependency syncs. Fix: add playwright to Poetry dev dependencies (or a dedicated extras group) so 'poetry install' yields a working browser tier, and keep the manual step only as a fallback."
}
]
}Diff-only advisory review; CI and GitHub mergeability remain mandatory. |
Summary: - Remove hosted AI review and align local review, testing, and merge instructions. - Replace provider-specific workflow tests with local policy regressions. Validation: - Local make test-all: 1430 passed, 21 skipped, including 33 Playwright tests. - Black, Ruff, actionlint, added relative links, and local diff review pass. - Local scoped mypy reports 90 errors in unchanged model/auth imports. Follow-ups: - Retain static CI and migration validation; no application or credential changes.
This was referenced Sep 13, 2026
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:
Changed files:
Validation for HEAD 422dc59, base e7b97e2:
Limitations: