Skip to content

Commit 018c042

Browse files
committed
chore: align manual governance lanes and truth docs
1 parent 2418e5a commit 018c042

10 files changed

Lines changed: 52 additions & 49 deletions

.github/workflows/mutation-weekly.yml

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
1-
name: mutation-weekly
1+
name: mutation-manual
22

33
on:
44
workflow_dispatch:
5-
schedule:
6-
- cron: "0 3 * * 1"
75

86
permissions:
97
contents: read
108
packages: read
119

1210
concurrency:
13-
group: mutation-weekly-${{ github.ref }}
11+
group: mutation-manual-${{ github.ref }}
1412
cancel-in-progress: true
1513

1614
jobs:
@@ -102,7 +100,7 @@ jobs:
102100
MATRIX_TESTS: ${{ matrix.tests }}
103101
run: |
104102
set -euo pipefail
105-
bash tooling/scripts/container_exec.sh --label mutation-weekly -- bash -lc '
103+
bash tooling/scripts/container_exec.sh --label mutation-manual -- bash -lc '
106104
set -euo pipefail
107105
$HOME/.cache/movi-organizer/venv/default/bin/mutmut run \
108106
--paths-to-mutate "${MATRIX_MUTATE_PATH}" \
@@ -114,7 +112,7 @@ jobs:
114112
MATRIX_MODULE: ${{ matrix.module }}
115113
run: |
116114
set -euo pipefail
117-
bash tooling/scripts/container_exec.sh --label mutation-weekly-report -- bash -lc '
115+
bash tooling/scripts/container_exec.sh --label mutation-manual-report -- bash -lc '
118116
set -euo pipefail
119117
$HOME/.cache/movi-organizer/venv/default/bin/mutmut results | tee ".runtime-cache/logs/mutmut-results-${MATRIX_MODULE}.txt"
120118
$HOME/.cache/movi-organizer/venv/default/bin/python tooling/scripts/check_mutation_report.py \
@@ -130,7 +128,7 @@ jobs:
130128
if: always()
131129
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
132130
with:
133-
name: mutation-weekly-diagnostics-${{ matrix.module }}
131+
name: mutation-manual-diagnostics-${{ matrix.module }}
134132
path: |
135133
.runtime-cache/logs/
136134
.runtime-cache/test/mutation/.mutmut-cache
@@ -218,7 +216,7 @@ jobs:
218216
- name: Run cargo-mutants
219217
if: steps.detect_rs.outputs.has_rs == 'true'
220218
env:
221-
XDG_CACHE_HOME: ${{ runner.temp }}/organizer-mutation-weekly-xdg-cache
219+
XDG_CACHE_HOME: ${{ runner.temp }}/organizer-mutation-manual-xdg-cache
222220
run: |
223221
set -euo pipefail
224222
cargo mutants --in-place

.github/workflows/upstream-governance-weekly.yml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
1-
name: upstream-governance-weekly
1+
name: upstream-governance-manual
22

33
on:
44
workflow_dispatch:
5-
merge_group:
6-
schedule:
7-
- cron: "30 5 * * 1"
85

96
permissions:
107
contents: read
118

129
concurrency:
13-
group: upstream-governance-weekly-${{ github.ref }}
10+
group: upstream-governance-manual-${{ github.ref }}
1411
cancel-in-progress: true
1512

1613
jobs:
@@ -60,6 +57,6 @@ jobs:
6057
if: always()
6158
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
6259
with:
63-
name: upstream-governance-weekly
60+
name: upstream-governance-manual
6461
path: .runtime-cache/logs/
6562
if-no-files-found: warn

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ Public readiness gates:
298298
- **Supplemental gates**: `webui-build-test` (frontend correctness), `functional-gate` (critical smoke), `test` (Python version parity)
299299
- **Dual failure-domain required jobs**: None
300300
- **Shared-pool-only required jobs**: None
301-
- **Side workflows**: `pre-commit` bootstraps directly on hosted runners, while `live-integration` and `mutation-weekly` reuse `reusable-build-runtime-image.yml`; runtime image build keeps provenance artifact wiring when the platform supports attestations.
301+
- **Side workflows**: `pre-commit` bootstraps directly on hosted runners, while `live-integration` and `mutation-manual` reuse `reusable-build-runtime-image.yml`; runtime image build keeps provenance artifact wiring when the platform supports attestations.
302302
- **Drift / evidence surfaces**: `nightly-drift-audit.yml`, `collect_ci_run_metrics.py`, `generate_ci_evidence_bundle.py`.
303303
- **Local auxiliary evidence**: `npm run ci:local` writes repo-local CI metrics, a repo-local evidence bundle, and governed upstream receipts under the repo-local runtime cache directory; these are local derived reports, not Branch Protection truth. Read `truth.truth_class`, `truth.remote_traceability`, and `truth.authoritative_terminal_receipt` before treating the bundle as anything stronger. Older pass receipts remain historical audit evidence only; current closeout wording must follow the latest canonical terminal receipt.
304304
- **Developer fallback**: use `bash tooling/gates/pre_push_gate.sh` (`standard/strict/full`) for fast local feedback before remote CI.

docs/_generated/render_state.json

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
".github/workflows/ci.yml": "145d243beb087cd6a976d45e4455e0747ace3ee3ad9c77160b57fb17f75c63fe",
6464
".github/workflows/pre-commit.yml": "ed0082256d36108f1bdb3d6c66f6f9805295a4f7f738465b0092d0b3fe0199ed",
6565
".github/workflows/live-integration.yml": "87a1d413bc8d92d2103b5d4a6e19cfcb85fdb30e9e753b88a3267607a41d2b92",
66-
".github/workflows/mutation-weekly.yml": "0dd231d0ef088f8e4d6bd8ceecfda142748a22849962eaca9c354e2550374962"
66+
".github/workflows/mutation-weekly.yml": "c892aa745b913f37a4662e51ecf0c2013dc32faecd1c97d4a59f2d1e808fb101"
6767
},
6868
"output_hash": "1e9db2c2bcd9dc853fd5772bd1edabf7b910d9014dc7bc2cc78f5a835f83e588"
6969
},
@@ -76,7 +76,7 @@
7676
"source_hashes": {
7777
"contracts/api/web_api.openapi.yaml": "c97830844b65fd8f76cd23688187ca8648835d787d1819045882dea01e1d7b64"
7878
},
79-
"output_hash": "560ad547242b0c1b25a236d2f2ad7028b0fb644bb243027844d8e1731d36a0da"
79+
"output_hash": "cb6345e4f376224c71bddab270ce33f2a043caf985668a63c5b18cdea159c44a"
8080
},
8181
{
8282
"id": "root-runtime-topology",
@@ -91,7 +91,7 @@
9191
"package.json": "19ed161b16378601fc42d4baa05b7225fc57a47cfdee28a64131fd57d3cd1efc",
9292
".env.example": "32a60792624cd36eb5992b34d9c67c6e6e2a0971a45f3a48370f3b0b720b0aa8"
9393
},
94-
"output_hash": "560ad547242b0c1b25a236d2f2ad7028b0fb644bb243027844d8e1731d36a0da"
94+
"output_hash": "cb6345e4f376224c71bddab270ce33f2a043caf985668a63c5b18cdea159c44a"
9595
},
9696
{
9797
"id": "root-ci-governance-summary",
@@ -106,7 +106,7 @@
106106
"contracts/governance/required_checks_policy.yaml": "51f9e8cb17df93c3912ae719a6ba95b74f2c666b6b11c79e1728f7002fb3e3b3",
107107
"package.json": "19ed161b16378601fc42d4baa05b7225fc57a47cfdee28a64131fd57d3cd1efc"
108108
},
109-
"output_hash": "560ad547242b0c1b25a236d2f2ad7028b0fb644bb243027844d8e1731d36a0da"
109+
"output_hash": "cb6345e4f376224c71bddab270ce33f2a043caf985668a63c5b18cdea159c44a"
110110
},
111111
{
112112
"id": "root-release-identity",
@@ -117,7 +117,7 @@
117117
"source_hashes": {
118118
"pyproject.toml": "d12c2c415c3900d81c888e91d3a8ec1af88af96a701c6de801c37a1e52b4a495"
119119
},
120-
"output_hash": "560ad547242b0c1b25a236d2f2ad7028b0fb644bb243027844d8e1731d36a0da"
120+
"output_hash": "cb6345e4f376224c71bddab270ce33f2a043caf985668a63c5b18cdea159c44a"
121121
},
122122
{
123123
"id": "script-readme-web-api-routes",
@@ -128,7 +128,7 @@
128128
"source_hashes": {
129129
"contracts/api/web_api.openapi.yaml": "c97830844b65fd8f76cd23688187ca8648835d787d1819045882dea01e1d7b64"
130130
},
131-
"output_hash": "b12f14d83eedfaf64a31d9b1d02339671513f2f1cef9e6773bbfdf4db5cc1356"
131+
"output_hash": "4203a15a1ce623a972a6ba31f6a28f55eaa4520db960e7529b165e1bb550e2b3"
132132
},
133133
{
134134
"id": "script-readme-runtime-topology",
@@ -143,7 +143,7 @@
143143
"package.json": "19ed161b16378601fc42d4baa05b7225fc57a47cfdee28a64131fd57d3cd1efc",
144144
".env.example": "32a60792624cd36eb5992b34d9c67c6e6e2a0971a45f3a48370f3b0b720b0aa8"
145145
},
146-
"output_hash": "b12f14d83eedfaf64a31d9b1d02339671513f2f1cef9e6773bbfdf4db5cc1356"
146+
"output_hash": "4203a15a1ce623a972a6ba31f6a28f55eaa4520db960e7529b165e1bb550e2b3"
147147
},
148148
{
149149
"id": "script-readme-ci-governance-summary",
@@ -158,7 +158,7 @@
158158
"contracts/governance/required_checks_policy.yaml": "51f9e8cb17df93c3912ae719a6ba95b74f2c666b6b11c79e1728f7002fb3e3b3",
159159
"package.json": "19ed161b16378601fc42d4baa05b7225fc57a47cfdee28a64131fd57d3cd1efc"
160160
},
161-
"output_hash": "b12f14d83eedfaf64a31d9b1d02339671513f2f1cef9e6773bbfdf4db5cc1356"
161+
"output_hash": "4203a15a1ce623a972a6ba31f6a28f55eaa4520db960e7529b165e1bb550e2b3"
162162
},
163163
{
164164
"id": "script-readme-release-identity",
@@ -169,7 +169,7 @@
169169
"source_hashes": {
170170
"pyproject.toml": "d12c2c415c3900d81c888e91d3a8ec1af88af96a701c6de801c37a1e52b4a495"
171171
},
172-
"output_hash": "b12f14d83eedfaf64a31d9b1d02339671513f2f1cef9e6773bbfdf4db5cc1356"
172+
"output_hash": "4203a15a1ce623a972a6ba31f6a28f55eaa4520db960e7529b165e1bb550e2b3"
173173
},
174174
{
175175
"id": "script-readme-governance-truth",
@@ -184,9 +184,9 @@
184184
".github/workflows/ci.yml": "145d243beb087cd6a976d45e4455e0747ace3ee3ad9c77160b57fb17f75c63fe",
185185
".github/workflows/pre-commit.yml": "ed0082256d36108f1bdb3d6c66f6f9805295a4f7f738465b0092d0b3fe0199ed",
186186
".github/workflows/live-integration.yml": "87a1d413bc8d92d2103b5d4a6e19cfcb85fdb30e9e753b88a3267607a41d2b92",
187-
".github/workflows/mutation-weekly.yml": "0dd231d0ef088f8e4d6bd8ceecfda142748a22849962eaca9c354e2550374962"
187+
".github/workflows/mutation-weekly.yml": "c892aa745b913f37a4662e51ecf0c2013dc32faecd1c97d4a59f2d1e808fb101"
188188
},
189-
"output_hash": "b12f14d83eedfaf64a31d9b1d02339671513f2f1cef9e6773bbfdf4db5cc1356"
189+
"output_hash": "4203a15a1ce623a972a6ba31f6a28f55eaa4520db960e7529b165e1bb550e2b3"
190190
},
191191
{
192192
"id": "architecture-web-api-summary",
@@ -227,7 +227,7 @@
227227
".github/workflows/ci.yml": "145d243beb087cd6a976d45e4455e0747ace3ee3ad9c77160b57fb17f75c63fe",
228228
".github/workflows/pre-commit.yml": "ed0082256d36108f1bdb3d6c66f6f9805295a4f7f738465b0092d0b3fe0199ed",
229229
".github/workflows/live-integration.yml": "87a1d413bc8d92d2103b5d4a6e19cfcb85fdb30e9e753b88a3267607a41d2b92",
230-
".github/workflows/mutation-weekly.yml": "0dd231d0ef088f8e4d6bd8ceecfda142748a22849962eaca9c354e2550374962"
230+
".github/workflows/mutation-weekly.yml": "c892aa745b913f37a4662e51ecf0c2013dc32faecd1c97d4a59f2d1e808fb101"
231231
},
232232
"output_hash": "c0cb776be4feeaa4d6517d934e2d4f541ae1a04d66350c7bd82da6b009f710b4"
233233
},
@@ -244,7 +244,7 @@
244244
".github/workflows/ci.yml": "145d243beb087cd6a976d45e4455e0747ace3ee3ad9c77160b57fb17f75c63fe",
245245
".github/workflows/pre-commit.yml": "ed0082256d36108f1bdb3d6c66f6f9805295a4f7f738465b0092d0b3fe0199ed",
246246
".github/workflows/live-integration.yml": "87a1d413bc8d92d2103b5d4a6e19cfcb85fdb30e9e753b88a3267607a41d2b92",
247-
".github/workflows/mutation-weekly.yml": "0dd231d0ef088f8e4d6bd8ceecfda142748a22849962eaca9c354e2550374962"
247+
".github/workflows/mutation-weekly.yml": "c892aa745b913f37a4662e51ecf0c2013dc32faecd1c97d4a59f2d1e808fb101"
248248
},
249249
"output_hash": "590a2ddf45c93e4e0639c4c4a077e725da6fb8c107a7567d7edb484e714a5b2b"
250250
},
@@ -259,7 +259,7 @@
259259
".github/workflows/ci.yml": "145d243beb087cd6a976d45e4455e0747ace3ee3ad9c77160b57fb17f75c63fe",
260260
".github/workflows/pre-commit.yml": "ed0082256d36108f1bdb3d6c66f6f9805295a4f7f738465b0092d0b3fe0199ed",
261261
".github/workflows/live-integration.yml": "87a1d413bc8d92d2103b5d4a6e19cfcb85fdb30e9e753b88a3267607a41d2b92",
262-
".github/workflows/mutation-weekly.yml": "0dd231d0ef088f8e4d6bd8ceecfda142748a22849962eaca9c354e2550374962"
262+
".github/workflows/mutation-weekly.yml": "c892aa745b913f37a4662e51ecf0c2013dc32faecd1c97d4a59f2d1e808fb101"
263263
},
264264
"output_hash": "6f81c9b2b0e6e733c3f9eaebc0a92d2c05d246683a14750e6cb42f7d4a359700"
265265
},

docs/usage.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ Repo-side governance scorecard, not delivery completion:
252252
- **Supplemental gates**: `webui-build-test` (frontend correctness), `functional-gate` (critical smoke), `test` (Python version parity)
253253
- **Dual failure-domain required jobs**: None
254254
- **Shared-pool-only required jobs**: None
255-
- **Side workflows**: `pre-commit` bootstraps directly on hosted runners, while `live-integration` and `mutation-weekly` reuse `reusable-build-runtime-image.yml`; runtime image build keeps provenance artifact wiring when the platform supports attestations.
255+
- **Side workflows**: `pre-commit` bootstraps directly on hosted runners, while `live-integration` and `mutation-manual` reuse `reusable-build-runtime-image.yml`; runtime image build keeps provenance artifact wiring when the platform supports attestations.
256256
- **Drift / evidence surfaces**: `nightly-drift-audit.yml`, `collect_ci_run_metrics.py`, `generate_ci_evidence_bundle.py`.
257257
- **Local auxiliary evidence**: `npm run ci:local` writes repo-local CI metrics, a repo-local evidence bundle, and governed upstream receipts under the repo-local runtime cache directory; these are local derived reports, not Branch Protection truth. Read `truth.truth_class`, `truth.remote_traceability`, and `truth.authoritative_terminal_receipt` before treating the bundle as anything stronger. Older pass receipts remain historical audit evidence only; current closeout wording must follow the latest canonical terminal receipt.
258258
- **Developer fallback**: use `bash tooling/gates/pre_push_gate.sh` (`standard/strict/full`) for fast local feedback before remote CI.

tests/unit/test_gatekeeper_scripts.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2262,9 +2262,9 @@ def test_ci_workflow_hardening_gate_blocks_unpinned_actions_in_mutation_weekly_w
22622262
mutation_workflow = repo / "mutation-weekly.yml"
22632263
mutation_workflow.write_text(
22642264
"""
2265-
name: mutation-weekly
2265+
name: mutation-manual
22662266
concurrency:
2267-
group: mutation-weekly-${{ github.ref }}
2267+
group: mutation-manual-${{ github.ref }}
22682268
cancel-in-progress: true
22692269
permissions:
22702270
contents: read
@@ -2367,7 +2367,7 @@ def test_ci_workflow_hardening_gate_blocks_unpinned_third_party_actions_in_mutat
23672367
mutation_workflow = repo / "mutation-weekly.yml"
23682368
mutation_workflow.write_text(
23692369
"""
2370-
name: mutation-weekly
2370+
name: mutation-manual
23712371
jobs:
23722372
rust-cargo-mutants:
23732373
runs-on: [self-hosted, shared-pool]
@@ -2397,7 +2397,7 @@ def test_ci_workflow_hardening_gate_allows_local_actions_in_mutation_weekly_work
23972397
mutation_workflow = repo / "mutation-weekly.yml"
23982398
mutation_workflow.write_text(
23992399
"""
2400-
name: mutation-weekly
2400+
name: mutation-manual
24012401
permissions:
24022402
contents: read
24032403
jobs:
@@ -2772,11 +2772,11 @@ def test_ci_workflow_hardening_gate_allows_runner_temp_hygiene_in_aux_workflows(
27722772
mutation_workflow = repo / "mutation-weekly.yml"
27732773
mutation_workflow.write_text(
27742774
"""
2775-
name: mutation-weekly
2775+
name: mutation-manual
27762776
permissions:
27772777
contents: read
27782778
concurrency:
2779-
group: mutation-weekly-${{ github.ref }}
2779+
group: mutation-manual-${{ github.ref }}
27802780
cancel-in-progress: true
27812781
jobs:
27822782
build-ci-image:
@@ -3191,11 +3191,11 @@ def test_ci_workflow_hardening_gate_requires_hygiene_script_in_live_and_mutation
31913191
mutation_workflow = repo / "mutation-weekly.yml"
31923192
mutation_workflow.write_text(
31933193
"""
3194-
name: mutation-weekly
3194+
name: mutation-manual
31953195
permissions:
31963196
contents: read
31973197
concurrency:
3198-
group: mutation-weekly-${{ github.ref }}
3198+
group: mutation-manual-${{ github.ref }}
31993199
cancel-in-progress: true
32003200
jobs:
32013201
build-ci-image:
@@ -3408,11 +3408,11 @@ def test_ci_workflow_hardening_gate_allows_runner_temp_cache_and_hygiene_script_
34083408
mutation_workflow = repo / "mutation-weekly.yml"
34093409
mutation_workflow.write_text(
34103410
"""
3411-
name: mutation-weekly
3411+
name: mutation-manual
34123412
permissions:
34133413
contents: read
34143414
concurrency:
3415-
group: mutation-weekly-${{ github.ref }}
3415+
group: mutation-manual-${{ github.ref }}
34163416
cancel-in-progress: true
34173417
jobs:
34183418
build-ci-image:

tests/unit/test_governance_dedicated_gates.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,12 +228,10 @@ def test_governance_wiring_includes_new_dedicated_gates() -> None:
228228

229229
for needle in (
230230
"check_root_public_surface.py",
231-
"check_upstream_receipts.py",
232231
"check_no_private_upstream_coupling.py",
233232
"check_done_signal_claims.py",
234233
"check_docs_fragment_completeness.py",
235234
"check_snapshot_scope_labels.py",
236-
"check_gate_log_correlation.py",
237235
"check_collaboration_surface.py",
238236
"check_local_only_tracking.py",
239237
"check_sensitive_surface.py",
@@ -245,3 +243,13 @@ def test_governance_wiring_includes_new_dedicated_gates() -> None:
245243
assert needle in local_quality
246244
assert needle in quality
247245
assert needle in score
246+
247+
assert "check_upstream_receipts.py" in verify
248+
assert "check_upstream_receipts.py" not in local_quality
249+
assert "check_upstream_receipts.py" in quality
250+
assert "check_upstream_receipts.py" in score
251+
252+
assert "check_gate_log_correlation.py" in verify
253+
assert "check_gate_log_correlation.py" not in local_quality
254+
assert "check_gate_log_correlation.py" in quality
255+
assert "check_gate_log_correlation.py" in score

tests/unit/test_test_system_round2_audit.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ def test_weekly_mutation_workflow_covers_core_python_modules() -> None:
126126
repo_root = _repo_root()
127127
weekly = (repo_root / ".github" / "workflows" / "mutation-weekly.yml").read_text(encoding="utf-8")
128128

129-
_assert_contains(weekly, "name: mutation-weekly", "weekly mutation workflow header")
129+
_assert_contains(weekly, "name: mutation-manual", "manual mutation workflow header")
130130
_assert_contains(weekly, "python-mutmut:", "weekly mutmut job")
131131
_assert_contains(weekly, "matrix:", "weekly mutmut matrix")
132132
_assert_contains(weekly, "max-parallel: 3", "weekly mutmut parallelism cap")
@@ -152,7 +152,7 @@ def test_weekly_mutation_workflow_covers_core_python_modules() -> None:
152152
_assert_contains(weekly, "--max-suspicious 0", "weekly mutmut suspicious threshold")
153153
_assert_contains(weekly, "--min-killed 1", "weekly mutmut min killed threshold")
154154
_assert_contains(weekly, "--require-non-empty-sample", "weekly mutmut non-empty sample threshold")
155-
_assert_contains(weekly, "mutation-weekly-diagnostics-${{ matrix.module }}", "weekly mutmut per-module artifacts")
155+
_assert_contains(weekly, "mutation-manual-diagnostics-${{ matrix.module }}", "manual mutmut per-module artifacts")
156156

157157
test_paths = _extract_weekly_mutation_test_paths(weekly)
158158
assert test_paths, "weekly mutation workflow must define at least one tests: path"
@@ -168,11 +168,11 @@ def test_weekly_mutation_workflow_uses_hash_locked_mutmut_install() -> None:
168168
_assert_contains(weekly, "name: mutation-image-contract", "weekly mutation image contract artifact")
169169
_assert_contains(weekly, "Load CI runtime image from contract", "weekly mutation image contract load step")
170170
_assert_contains(weekly, 'echo "MOVI_CI_IMAGE=$IMAGE_REF" >> "$GITHUB_ENV"', "weekly image env export")
171-
_assert_contains(weekly, "bash tooling/scripts/container_exec.sh --label mutation-weekly --", "weekly mutation run via container_exec")
171+
_assert_contains(weekly, "bash tooling/scripts/container_exec.sh --label mutation-manual --", "manual mutation run via container_exec")
172172
_assert_contains(
173173
weekly,
174-
"bash tooling/scripts/container_exec.sh --label mutation-weekly-report --",
175-
"weekly mutation report via container_exec",
174+
"bash tooling/scripts/container_exec.sh --label mutation-manual-report --",
175+
"manual mutation report via container_exec",
176176
)
177177
_assert_contains(dev_shell, "-r requirements-dev.lock.txt", "dev shell forwards to dev lock")
178178
_assert_contains(dev_lock, "mutmut==2.5.1", "dev lock includes mutmut pin")

tests/unit/test_truth_surface_boundaries.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def test_readme_keeps_terminal_truth_and_supporting_surfaces_separate() -> None:
99
readme = (REPO_ROOT / "README.md").read_text(encoding="utf-8")
1010

1111
assert "delivery-complete receipt" in readme
12-
assert "Treat repository docs as guidance, not as live platform state" in readme
12+
assert "treat repository docs as guidance rather than a live platform dashboard" in readme.lower()
1313

1414

1515
def test_open_source_runbook_keeps_public_boundary_separate_from_product_value_maturity() -> None:

0 commit comments

Comments
 (0)