fix(F6.1): validate planned context without snapshot ownership

This commit is contained in:
github-actions[bot]
2026-09-10 18:49:35 +00:00
parent ed4a3d5a44
commit 736d09b849
2 changed files with 9 additions and 113 deletions
@@ -1,68 +0,0 @@
name: F6.1 finish inspection scope fix
on:
push:
branches:
- 'hotfix/f6-1-inspection-planning-hierarchy'
paths:
- '.github/workflows/f6-1-finish-scope-fix.yml'
permissions:
contents: write
jobs:
apply:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: hotfix/f6-1-inspection-planning-hierarchy
fetch-depth: 0
- name: Remove final legacy ownership gate
run: |
python - <<'PY'
from pathlib import Path
p = Path('api-v3/src/inspection-visits/inspection-visits.service.ts')
text = p.read_text()
before = ''' await this.validatePlanningContext(manager, visit.operationalAreaId, visit.operatorCompanyId);'''
after = ''' await this.validatePlanningContext(\n manager,\n visit.operationalAreaId,\n visit.operatorCompanyId,\n visit.plannedStartAt,\n );'''
if text.count(before) != 1:
raise SystemExit(f'validatePlan current-time gate: expected 1, got {text.count(before)}')
text = text.replace(before, after)
before = ''' await this.assertCurrentAssetsInScope(manager, visit.id, visit.scopeAssetId);\n await this.assertCurrentAssetsMatchContext(\n manager,\n visit.id,\n visit.operationalAreaId,\n visit.operatorCompanyId,\n );'''
after = ''' // F6.1: Inventory membership is physical (Yacimiento scope).\n // Company is temporal Area context and must never be reconstructed from\n // assets.operator_company_id, which is only a creation/historical snapshot.\n await this.assertCurrentAssetsInScope(manager, visit.id, visit.scopeAssetId);'''
if text.count(before) != 1:
raise SystemExit(f'validatePlan snapshot ownership gate: expected 1, got {text.count(before)}')
text = text.replace(before, after)
# Remove now-dead helpers so future code cannot accidentally reuse snapshot ownership.
start = text.find(' private async assertAssetsMatchContext(')
end = text.find(' private async appendAssetEvent(', start)
if start < 0 or end < 0:
raise SystemExit('legacy snapshot helper block not found')
text = text[:start] + text[end:]
p.write_text(text)
Path('.github/workflows/f6-1-finish-scope-fix.yml').unlink()
PY
- name: Sanity checks
run: |
set -Eeuo pipefail
grep -Fq 'visit.plannedStartAt,' api-v3/src/inspection-visits/inspection-visits.service.ts
! grep -Fq 'assertAssetsMatchContext' api-v3/src/inspection-visits/inspection-visits.service.ts
! grep -Fq 'assertCurrentAssetsMatchContext' api-v3/src/inspection-visits/inspection-visits.service.ts
# No runtime ownership filter by the historical Inventory snapshot remains in this service.
! grep -Fq 'asset.operator_company_id IS DISTINCT FROM' api-v3/src/inspection-visits/inspection-visits.service.ts
- name: Commit final scope fix
run: |
set -Eeuo pipefail
git config user.name 'github-actions[bot]'
git config user.email '41898282+github-actions[bot]@users.noreply.github.com'
git add api-v3/src/inspection-visits/inspection-visits.service.ts .github/workflows/f6-1-finish-scope-fix.yml
git diff --cached --check
git commit -m 'fix(F6.1): validate planned context without snapshot ownership'
git push origin HEAD:hotfix/f6-1-inspection-planning-hierarchy