test_governance_large_roadmap.py python
63 lines 1.9 KB
Raw
sha256:a78e7e5a8740e03315f325d19edeb3aa1b306b3337d04abbaa9a9e0f3bbeb7a1 docs: MuseHub-first before ISR #74 — staging solidify NEXT Human 12 hours ago
1 """Stress tests for governance-sync (§8 stress tier)."""
2
3 from __future__ import annotations
4
5 import json
6 from pathlib import Path
7
8 from tools.governance_hygiene.drift import detect_drift
9 from tools.governance_hygiene.patch import build_roadmap_patches
10 from tools.governance_hygiene.types import DriftReport, MergedPullRequest, VerifiedReads
11
12
13 def _big_roadmap(rows: int) -> str:
14 lines = [
15 "# Stress — Roadmap",
16 "",
17 "## Build queue",
18 "",
19 "| Phase | Model | Status | Deliverable |",
20 "| --- | --- | --- | --- |",
21 ]
22 for index in range(rows):
23 lines.append(f"| **P{index:03d}** | Auto | **TODO** | item {index} |")
24 return "\n".join(lines) + "\n"
25
26
27 def _many_merged(count: int) -> tuple[MergedPullRequest, ...]:
28 return tuple(
29 MergedPullRequest(
30 number=1000 + index,
31 title=f"P{index:03d} delivery",
32 merge_commit_sha=f"{index:040x}",
33 merged_at="2026-07-01T00:00:00Z",
34 )
35 for index in range(count)
36 )
37
38
39 def test_large_roadmap_reconciles_quickly() -> None:
40 reads = VerifiedReads(
41 regime="git-only",
42 r1_github_main_sha="a" * 40,
43 r1_command="git rev-parse origin/main",
44 r2_anchor_sha="a" * 40,
45 r2_source="origin/main",
46 r3_canonical_main_sha="a" * 40,
47 r3_command=None,
48 r4_merged_prs=_many_merged(40),
49 r5_branch="main",
50 r5_dirty=False,
51 r5_regime="git-only",
52 )
53 drift = DriftReport(
54 d1_handover_vs_git="aligned",
55 d2_anchor_vs_canonical="aligned",
56 d3_queue_vs_merged="drifted",
57 )
58 roadmap = _big_roadmap(200)
59 patched, sections = build_roadmap_patches(roadmap, reads, drift)
60 assert "build-queue" in sections
61 assert len(patched) > len(roadmap) // 2
62 redrift = detect_drift(reads, "| **main HEAD** | `" + "a" * 40 + "` |", patched)
63 assert redrift.d3_queue_vs_merged in {"aligned", "drifted"}
File History 2 commits
sha256:a78e7e5a8740e03315f325d19edeb3aa1b306b3337d04abbaa9a9e0f3bbeb7a1 docs: MuseHub-first before ISR #74 — staging solidify NEXT Human 12 hours ago
sha256:4671b7f787ddbe63ced31c895b688c77ab495653b65a730b423329f26b3c1439 feat: K1-P1 complete — agent provenance, build-verification… Sonnet 4.6 patch 52 days ago