docs: establish canonical product documentation authority - #93
docs: establish canonical product documentation authority#93seonghobae wants to merge 318 commits into
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthrough제품, 아키텍처, 운영, 보안, 릴리스 및 문서 거버넌스 문서를 추가했다. 보호된 main과 ACTIVE-PR 상태를 구분했다. 필수 문서, 공개 색인, 시크릿 처리 및 라이선스 계약을 검증하는 테스트도 추가했다. Changes정식 문서 권위 체계
Estimated code review effort: 4 (Complex) | ~60 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 6
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/adr/README.md`:
- Around line 26-30: Reconcile the checkpoint replacement chain across all
authority documents using the verified live PR graph: update docs/adr/README.md
lines 26-30 with the canonical current implementation owner, replacement, and
stale predecessor; update ARCHITECTURE.md lines 173-180 to show only current
owners in the ACTIVE-PR overlay and separate superseded PRs; update
docs/product/PRD.md lines 138-144 so PRD-T5 and PRD-T6 reference the confirmed
replacement chain; and update docs/product/TRD.md lines 150-156 so TRD-REL4
points to the confirmed audit, pagination, and manifest owners.
In `@docs/architecture/ERD.md`:
- Around line 76-96: Update the llm_remote_batch_jobs entity definition to
include input_file_id, batch_endpoint, output_file_id, error_file_id,
total_requests, completed_requests, failed_requests, first_seen_at,
last_observed_at, terminal_at, and updated_at, matching
persist_remote_batch_state(). Also document the composite unique key
(endpoint_alias, remote_batch_id) in the ERD legend or schema description so the
provider identity and idempotency contract are explicit.
In `@docs/architecture/UML.md`:
- Around line 32-38: 배치 준비 순서를 구현과 일치하도록
PostgresBatchOrchestrator.prepare_batches 및 관련 canonical 문서와 contract test를
수정하십시오. 요청 데이터 읽기 후 token counting과 partitioning을 수행하고, _persist_payloads()에서
payload 파일을 먼저 저장한 뒤 requests와 JSONL lines를 저장하는 순서를 docs/OPERABILITY.md와 UML에
반영하십시오. 각 단계 실패 시 이미 영속화된 durable state 설명도 이 순서에 맞게 갱신하십시오.
In `@docs/OPERABILITY.md`:
- Line 90: Update the checkpoint migration status statement in OPERABILITY.md to
mark PR `#80` as SUPERSEDED and reference the current ACTIVE-PR `#95` replacement,
keeping the documentation consistent with DOCUMENTATION_FITNESS.md and
TRACEABILITY.md.
In `@docs/superpowers/plans/2026-08-09-canonical-documentation-authority.md`:
- Around line 33-37: Update the checklist in the canonical documentation plan to
mark only completed deliverables as [x], including the added documentation and
contract test when their creation is confirmed. Keep steps requiring RED/GREEN
execution evidence, exact-head validation, or still-missing documents as [ ].
In `@tests/test_documentation_fitness_contract.py`:
- Around line 60-117: Strengthen
test_architecture_graphs_are_machine_readable_and_status_aware and
test_api_contract_separates_current_surface_from_active_targets beyond substring
checks: parse structured protected-main and active-PR sections and assert each
ERD entity is classified in the correct section. Compare documented package-root
exports and CLI commands against the source or a source-generated manifest,
failing on missing, extra, or mismatched public surfaces.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 75048b9f-ca43-4a36-8fe3-9c67a79fd82c
📒 Files selected for processing (17)
ARCHITECTURE.mddocs/DOCUMENTATION_FITNESS.mddocs/OPERABILITY.mddocs/RELEASE_ACCEPTANCE.mddocs/TEST_STRATEGY.mddocs/THREAT_MODEL.mddocs/TRACEABILITY.mddocs/adr/README.mddocs/architecture/ERD.mddocs/architecture/UML.mddocs/automation/ADR-0001-work-conserving-maintenance.mddocs/automation/ADR-0002-evidence-identity-and-writer-lease.mddocs/product/API_CONTRACT.mddocs/product/PRD.mddocs/product/TRD.mddocs/superpowers/plans/2026-08-09-canonical-documentation-authority.mdtests/test_documentation_fitness_contract.py
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
docs/architecture/UML.md (2)
119-127: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick winUML의 merge readiness 흐름을 실제 merge/protected-main 계약과 맞추십시오.
GATE --> MAIN화살표는 모든 정책 게이트 충족 후 바로 protectedmain에 도달하는 것처럼 보입니다. 실제 merge에는 merge 작업, open PR queue 재검증, finding 해결 확인, 보호 브랜치/라이브 graph 재검증이 필요합니다.GATE뒤에 명시적인 merge 단계와 protected-main post-check 단계를 추가하거나docs/RELEASE_ACCEPTANCE.md계약과 직접 연결하십시오. Synthetic merge ref의 비권위 표기는 유지하십시오.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/architecture/UML.md` around lines 119 - 127, Update the UML merge-readiness flow around GATE and MAIN to show explicit merge execution and protected-main post-check/revalidation steps, including open-PR queue, finding resolution, branch protection, and live-graph checks, or link these steps directly to the docs/RELEASE_ACCEPTANCE.md contract. Preserve the existing Synthetic merge ref/status-only evidence annotation as non-authoritative for source identity.
95-98: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick winUML 체크포인트 교체 체인에
#92–#97 전체 순서를 넣으십시오.현재
docs/architecture/UML.md는#92/#94 successors만 표기하지만, 문서 체계는 현재 교체 체인을#92→#94→#95→#96→#97로정의합니다.CP를#92#94#95#96#97``의 현재 선형 교체 순서로 명시하고, 기존 구현이SUPERSEDED상태를 받는지 DRAFT/#97의 snapshot-manifest successor 역할을 명확히 표시하십시오.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/architecture/UML.md` around lines 95 - 98, Update the UML checkpoint replacement chain around CP in docs/architecture/UML.md to show the complete ordered sequence `#92` → `#94` → `#95` → `#96` → `#97` instead of only `#92/`#94 successors. Clarify that the existing implementation accepts the SUPERSEDED state, and identify the DRAFT/#97 snapshot-manifest successor role in the diagram.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@tests/test_documentation_fitness_contract.py`:
- Around line 237-238: Update the UML assertion around `_assert_text_order` to
first extract the `sequenceDiagram` Mermaid code-block body from `uml` using a
DOTALL regex, assert the sequence diagram exists, and apply the expected-order
check only to `sequence_match.group("body").lower()` rather than the entire UML
section; keep the operability assertion unchanged.
---
Outside diff comments:
In `@docs/architecture/UML.md`:
- Around line 119-127: Update the UML merge-readiness flow around GATE and MAIN
to show explicit merge execution and protected-main post-check/revalidation
steps, including open-PR queue, finding resolution, branch protection, and
live-graph checks, or link these steps directly to the
docs/RELEASE_ACCEPTANCE.md contract. Preserve the existing Synthetic merge
ref/status-only evidence annotation as non-authoritative for source identity.
- Around line 95-98: Update the UML checkpoint replacement chain around CP in
docs/architecture/UML.md to show the complete ordered sequence `#92` → `#94` → `#95` →
`#96` → `#97` instead of only `#92/`#94 successors. Clarify that the existing
implementation accepts the SUPERSEDED state, and identify the DRAFT/#97
snapshot-manifest successor role in the diagram.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 6da38763-debf-4b21-9e46-08d16234ec91
📒 Files selected for processing (9)
ARCHITECTURE.mddocs/OPERABILITY.mddocs/adr/README.mddocs/architecture/ERD.mddocs/architecture/UML.mddocs/product/PRD.mddocs/product/TRD.mddocs/superpowers/plans/2026-08-09-canonical-documentation-authority.mdtests/test_documentation_fitness_contract.py
🚧 Files skipped from review as they are similar to previous changes (7)
- docs/adr/README.md
- docs/product/PRD.md
- ARCHITECTURE.md
- docs/superpowers/plans/2026-08-09-canonical-documentation-authority.md
- docs/OPERABILITY.md
- docs/product/TRD.md
- docs/architecture/ERD.md
There was a problem hiding this comment.
Actionable comments posted: 6
🧹 Nitpick comments (1)
tests/test_bootstrap_secret_documentation_contract.py (1)
14-19: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win보안 계약을 문자열 존재 검사보다 강하게 고정하세요.
현재 검사는
fernet key와sensitive bootstrap가 문서의 어느 위치에든 있으면 통과합니다.PG_LLM_BATCH_SECRET_KEY가 제거되거나, Fernet key가 provider credential과 구분되지 않아도 테스트가 통과할 수 있습니다. 실제 문구 관계를 같은 섹션 또는 정규식으로 검증하세요.근거:
README.mdLines 17-21과docs/THREAT_MODEL.mdLines 26-30의 보안 구분입니다.검증 범위를 강화하는 예
assert "provider credentials stay out of the environment" in readme - assert "fernet key" in readme - assert "sensitive bootstrap" in readme + assert "pg_llm_batch_secret_key" in readme + assert "fernet key is sensitive bootstrap secret material" in readme assert "bootstrap fernet key" in threat_model - assert "secret material" in threat_model + assert "distinct from database-backed provider credentials" in threat_model🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@tests/test_bootstrap_secret_documentation_contract.py` around lines 14 - 19, 테스트의 단순 문자열 존재 검사를 README와 위협 모델의 보안 문구 관계를 검증하도록 강화하세요. `test_bootstrap_secret_documentation_contract`에서 `PG_LLM_BATCH_SECRET_KEY`가 문서에서 제거되었는지 확인하고, Fernet key가 provider credential과 구분되어 같은 섹션 또는 정규식으로 함께 명시되는지 검증하세요. 기존의 무관한 위치에서의 `fernet key` 및 `sensitive bootstrap` 단독 검사는 해당 관계 검증으로 대체하세요.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/TRACEABILITY.md`:
- Around line 23-27: Update the checkpoint replacement status rows in
TRACEABILITY.md so they match the current exact head
1d503703b8a7eff9249521f2317af8aa67313bab: record CI, SAST, and security checks
as pending/required until fresh exact-head gates complete, and attribute
existing successful results only to the specific staged replacement or revision
that produced them. Ensure the table does not claim exact-head CI or Release
Acceptance success without current exact-head evidence.
- Line 68: Update the line beginning with `#84` in the traceability documentation
by wrapping the PR reference in inline code formatting, while preserving the
rest of the statement unchanged.
In `@README.md`:
- Around line 91-96: Replace the provider API key examples in README.md around
config set-secret with a protected-main-supported stdin, prompt, or
secret-manager input path that avoids exposing the key through argv, shell
history, or process inspection. Document that safe input method as the canonical
production procedure, and do not present the command as canonical until such a
path is available; keep the existing com_secrets storage guidance intact.
- Around line 234-241: Update the README index section around “Canonical product
and acquisition-readiness authority” to distinguish ACTIVE-PR documentation from
protected-main/shipped authority. Add a clear status notice stating that
ACTIVE-PR documents are proposals and must not be treated as shipped behavior,
and explicitly designate docs/DOCUMENTATION_FITNESS.md as the reference for
documentation maturity.
- Around line 17-22: Update the provider-credentials statement in the README’s
configuration overview to scope it explicitly to the standalone/default setup,
rather than presenting it as universal. Preserve the existing Postgres KV, DSN,
and Fernet-key details while acknowledging that host applications may supply
credentials through the documented Callable[[str], GatewayCredentials]
integration.
In `@tests/test_documentation_authority_adr_contract.py`:
- Around line 15-16: Update the ADR index assertion in the documentation
authority test to verify the actual Markdown link target, specifically the
relative target ../automation/ADR-0003-canonical-documentation-authority.md,
rather than only checking ADR_PATH text appears in the index. Preserve the
existing file-loading setup and assert that this target is present as a link
destination in the README content.
---
Nitpick comments:
In `@tests/test_bootstrap_secret_documentation_contract.py`:
- Around line 14-19: 테스트의 단순 문자열 존재 검사를 README와 위협 모델의 보안 문구 관계를 검증하도록 강화하세요.
`test_bootstrap_secret_documentation_contract`에서 `PG_LLM_BATCH_SECRET_KEY`가 문서에서
제거되었는지 확인하고, Fernet key가 provider credential과 구분되어 같은 섹션 또는 정규식으로 함께 명시되는지
검증하세요. 기존의 무관한 위치에서의 `fernet key` 및 `sensitive bootstrap` 단독 검사는 해당 관계 검증으로
대체하세요.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 9b3eea5e-ba62-41d1-9592-ef95c8c067c1
📒 Files selected for processing (12)
ARCHITECTURE.mdREADME.mddocs/DOCUMENTATION_FITNESS.mddocs/THREAT_MODEL.mddocs/TRACEABILITY.mddocs/adr/README.mddocs/architecture/UML.mddocs/automation/ADR-0003-canonical-documentation-authority.mdtests/test_bootstrap_secret_documentation_contract.pytests/test_documentation_authority_adr_contract.pytests/test_documentation_fitness_contract.pytests/test_readme_documentation_index.py
🚧 Files skipped from review as they are similar to previous changes (6)
- docs/DOCUMENTATION_FITNESS.md
- ARCHITECTURE.md
- docs/THREAT_MODEL.md
- docs/adr/README.md
- docs/architecture/UML.md
- tests/test_documentation_fitness_contract.py
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@README.md`:
- Around line 119-124: README.md의 prompt 기반 SecretStore 절차보다 먼저
PG_LLM_BATCH_SECRET_KEY Fernet 키 설정 블록을 배치하세요. export 방식을 유지하는 경우 절차 완료 후 환경 변수를
해제하는 unset 단계도 추가하고, SecretStore 생성 이후에 키가 설정되는 실행 순서는 제거하세요.
- Around line 85-109: Update the README’s getpass-based credential example so
terminal echo failures fail closed: promote getpass.GetPassWarning to an
exception and stop secret input when echo cannot be disabled. Emit the exact
message “cannot disable terminal echo; refusing secret input” instead of
allowing the stdin fallback, while preserving normal prompt behavior when echo
protection succeeds.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: dacc856f-1778-4ffd-a199-f6fe43f37992
📒 Files selected for processing (4)
README.mddocs/TRACEABILITY.mdtests/test_bootstrap_secret_documentation_contract.pytests/test_documentation_authority_adr_contract.py
🚧 Files skipped from review as they are similar to previous changes (3)
- tests/test_documentation_authority_adr_contract.py
- tests/test_bootstrap_secret_documentation_contract.py
- docs/TRACEABILITY.md
|
@coderabbitai review |
|
|
@coderabbitai review |
|
|
@coderabbitai review |
|
There was a problem hiding this comment.
Pull request overview
OpenCode cannot approve yet because required coverage evidence did not pass.
Review outcome
1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence
-
Problem: The required coverage-evidence job result was
failure, so OpenCode cannot establish approval sufficiency for this head. -
Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.
-
Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports
successwith required evidence or explicit no-source not-applicable evidence. -
Regression test: Keep the approval branch checking
needs.coverage-evidence.result == successbefore posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present. -
Result: REQUEST_CHANGES
-
Reason: coverage-evidence result was
failure, so required test/docstring evidence was not proven for current headcfcb149cb8e2018e78e310ae07127c14744df9b8. -
Head SHA:
cfcb149cb8e2018e78e310ae07127c14744df9b8 -
Workflow run: 31327573966
-
Workflow attempt: 1
Coverage evidence
Coverage evidence job did not run or did not publish coverage evidence.
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (2 files)"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file (2 files)"]
R1 --> V1["required checks"]
Evidence --> S2["Docs (20 files)"]
S2 --> I2["operator or user guidance"]
I2 --> R2["Review risk: Docs (20 files)"]
R2 --> V2["docs review"]
Evidence --> S3["Test (6 files)"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test (6 files)"]
R3 --> V3["targeted test run"]
OpenCode Review Overview
Pull request overviewOpenCode cannot approve yet because required coverage evidence did not pass. Review outcome1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence
Coverage evidenceCoverage evidence job did not run or did not publish coverage evidence. Changed-File Evidence Mapflowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (4 files)"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file (4 files)"]
R1 --> V1["required checks"]
Evidence --> S2["Docs (25 files)"]
S2 --> I2["operator or user guidance"]
I2 --> R2["Review risk: Docs (25 files)"]
R2 --> V2["docs review"]
Evidence --> S3["Test (12 files)"]
S3 --> I3["regression suite"]
I3 --> R3["Review risk: Test (12 files)"]
R3 --> V3["targeted test run"]
|
|
This historical documentation graph is being retired rather than merged. Its current ancestry is materially diverged from protected main, and transferring its broad factual overlays would reintroduce superseded product and PR state. Canonical documentation ownership is released here so the live feature queue can add narrowly scoped operator truth on exact current main; a later canonical documentation reconstruction must be built from protected-main source evidence rather than this branch history. |
Purpose
Establish the canonical repository documentation authority for pg-llm-batch: PRD/TRD, root architecture, UML/ERD, threat/data-governance/test/operability/release/licensing contracts, traceability, ADRs, and machine-checkable documentation fitness. Canonical files own durable product/architecture truth; this PR body records transient integration evidence only.
Fresh topology — 2026-08-14
main:d0a4b30be1f46536e352443309f3a35533156767;04be89420673e3f499301ba54f4613813d6323feondocs/canonical-documentation-authority;bf2cc2e140dc3ff4a56c3203f80f41bb9fed5d10;docs/product/PRD.md,docs/product/TRD.md,docs/DOCUMENTATION_FITNESS.md, ordocs/TRACEABILITY.md, so the canonical documentation gap remains real;Protected-main status correction
The next documentation reconstruction must classify shipped behavior from the exact protected tree rather than preserving old PR overlays:
/healthzredaction is IMPLEMENTED-ON-PROTECTED-MAIN through merged fix(privacy): keep public healthz detail-free #186;d0a4b30be1f46536e352443309f3a35533156767;39645eff826347ad410151ea6a04f87e02d9abcdand is not shipped;e415fc1c797f9476b7f7752c35b56cf61ac30921and is not shipped;The merged checkpoint store provides durable checkpoint/CAS and optional same-PostgreSQL-transaction coupling; the docs must not turn that into a distributed exactly-once claim. The merged #189 primitive provides bounded host-selected reconciliation only. Durable candidate discovery and transient single-flight are active review surfaces, while package-owned scheduling, durable result application/checkpoint coupling, terminal retirement, and complete crash/restart worker semantics remain residual capabilities until integrated.
#190 has two current exact-head
CHANGES_REQUESTEDreviews from the same authenticated central OpenCode dispatch after attempts 1 and 2 failed in read-only.githubcoverage-evidence while materializing the trusted uv archive (HTTPError). Its repository-owned exact-head quality/security/release checks are not a substitute for that formal review state. #191 has terminal-success exact-head repository quality/security/release evidence after promotion to Ready, but currently has no formal review submission or review thread. The live organization ruleset requires one approving review on the unchanged last push and review-thread resolution. Neither active PR is protected-main product truth merely because its source checks are green.Current documentation writer boundary
This PR remains the explicit broad canonical-documentation owner. Retained
docs/canonical-documentation-current-main*refs remain on the same broad surfaces and are active-writer evidence under the repository contract, so a competing broad documentation branch must not be created or treated as authoritative without ownership reconciliation.Do not merge this historical source merely to make documents appear on main, and do not directly update protected-main documentation outside a current-main-compatible PR.
Reconstruction requirement
Rebuild the canonical graph non-destructively from an exact freshly read protected-main commit after the active product/security queue is sufficiently stable. Preserve only current durable semantics and classify every target as
IMPLEMENTED-ON-PROTECTED-MAIN,ACTIVE-PR,PLANNED,PARTIAL, orSUPERSEDED.The reconstruction must reconcile current protected-main resumable/provider lifecycle behavior, observability boundaries,
/healthzprivacy, durable checkpoint storage, integrated bounded reconciliation, active durable candidate discovery, active single-flight, legacy-extension retirement, packaging work, provider-file lifecycle/retention, tenant/privacy boundaries, PostgreSQL transport/timeout policy, and current release evidence. Do not transfer stale PR numbers, SHAs, checks, reviews, approvals, synthetic merge evidence, or release-readiness claims.Integration boundary
Keep Draft. Do not merge the diverged historical graph wholesale. Promote only a current-main-compatible unchanged final documentation source after exact-head CI/security/coverage/docstring/package/provenance/release evidence, live ruleset verification, zero valid unresolved findings, and every approval requirement actually imposed by policy.