Skip to content

Commit 00c7b06

Browse files
lukischclaude
andcommitted
certify: TASKPLAN #844/#850/#851 bounded-repair contract + Safe Start pin
Certification of foreign (uncommitted) work found in the OneDrive working copy, per the ecosystem rule that foreign changes are reviewed and committed separately rather than left lying around or silently folded into own work. Reviewed and found sound: - tests.yml now pins safe-start-for-codex to the same immutable commit (dcb369a) that pyproject.toml already used, replacing a floating @main. CI and release build are reproducible against one revision. - repair_workflow.py: module docstring only. The old text promised the engine runs "alle Stufen automatisch, auch die aggressiven (reset_package, remove_staged_version, reinstall_package)" - that was STALE: the in-function contract at the S1-S3 entrypoint already states S4/S6 are never started automatically. The change makes the module docstring match actual behaviour, i.e. it removes a false promise rather than adding an uncovered one. - test_taskplan_contracts.py: static guard for the pin, the bounded-repair wording and the 0.8.0 metadata. Note it asserts documentation text, not runtime behaviour - it prevents doc drift, it does not prove the bound. - CHANGELOG entry matches the above. Verified: full suite 326 passed in this working copy; no overlap with the maintenance.py / build_exe.bat changes on origin/main. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 5bc784d commit 00c7b06

4 files changed

Lines changed: 43 additions & 14 deletions

File tree

.github/workflows/tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
- name: Install package
3131
run: |
3232
python -m pip install --upgrade pip
33-
python -m pip install "git+https://github.com/dev-bricks/safe-start-for-codex.git@main"
33+
python -m pip install "safe-start-for-codex @ git+https://github.com/dev-bricks/safe-start-for-codex.git@dcb369a64f403f6551bcb3bac16565c56ec79474"
3434
python -m pip install -e ".[dev]"
3535
3636
- name: Compile sources

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
## Unreleased
44

5+
- TASKPLAN #844/#850/#851: Status- und Bounded-Reparaturvertrag aktualisiert;
6+
Safe Start ist in CI und Release-Build auf denselben Commit gepinnt.
7+
58
- Updated Last-checked timestamp in `llms.txt` to 2026-07-22 and verified full test suite (323/323 passed).
69
- Added an opt-in `store-materials --live-pages` gate that checks the configured
710
privacy and support URLs over HTTPS. GitHub Pages is now enabled for the

src/codex_logdatenbank_wartung/repair_workflow.py

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
1-
"""Voll ausschoepfende, aber hang-sichere Codex-Start-Reparatur-Engine.
2-
3-
Bewusst getrennt von der konservativen DB-Wartung (`maintenance.py`/`orchestrator.py`)
4-
und der gezielten Startblockaden-Reparatur (`health.py`). Dieses Modul adressiert den
5-
Fall "Codex (Store/Electron) startet nicht" als **automatische Eskalation durch alle
6-
Stufen**, bis ein Renderer-Fenster erscheint.
7-
8-
Philosophie (siehe CODEX-AUTO-DEBUG-DESIGN.md, justiert 2026-05-29):
9-
Die Gefahr ist NICHT das Reparieren an sich, sondern das **Haengen/Stapeln** von
10-
AppX-Deployment-Operationen. Wird die Reparatur ausgeloest, wird sie **voll
11-
ausgeschoepft** -- alle Stufen automatisch, auch die aggressiven (reset_package,
12-
remove_staged_version, reinstall_package). Diese stehen aber bewusst SPAET in der
13-
Reihenfolge (billig+sicher zuerst) und laufen timeboxed.
1+
"""Bounded, hang-safe Codex start-repair engine.
2+
3+
This is deliberately separate from conservative DB maintenance and targeted
4+
``health.py`` start-blocker repair. The binding automatic contract is **S1, S2,
5+
S3, then at most one ``reset_package`` fallback**. S4 removal and S6 reinstall
6+
are never started automatically; they require a separate, reviewed operator
7+
decision. The engine aborts on a deployment timeout, missing admin rights, or a
8+
confirmed absent package and never promises live AppX/PUI observation.
149
1510
EINZIGE HARTE REGEL: HAENGEN VERMEIDEN.
1611
* Jede Deploy-Op (complete_staged_update, remove_staged_version, reset_package,

tests/test_taskplan_contracts.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
"""Static contracts for TASKPLAN status, Safe Start pinning and bounded repair."""
2+
3+
from pathlib import Path
4+
5+
6+
ROOT = Path(__file__).resolve().parents[1]
7+
8+
9+
def test_ci_and_build_extra_use_the_same_immutable_safe_start_revision():
10+
pyproject = (ROOT / "pyproject.toml").read_text(encoding="utf-8")
11+
workflow = (ROOT / ".github" / "workflows" / "tests.yml").read_text(encoding="utf-8")
12+
pin = "dcb369a64f403f6551bcb3bac16565c56ec79474"
13+
14+
assert pin in pyproject
15+
assert pin in workflow
16+
assert "@main" not in workflow
17+
18+
19+
def test_repair_entrypoint_states_the_bounded_automatic_contract():
20+
source = (ROOT / "src" / "codex_logdatenbank_wartung" / "repair_workflow.py").read_text(encoding="utf-8")
21+
22+
assert "S1, S2,\nS3" in source
23+
assert "S4 removal and S6 reinstall\nare never started automatically" in source
24+
25+
26+
def test_current_metadata_marks_old_handoff_as_historical_via_current_state():
27+
state = (ROOT / "STATE.md").read_text(encoding="utf-8")
28+
claude = (ROOT / "CLAUDE.md").read_text(encoding="utf-8")
29+
30+
assert "Stand: 2026-07-22 · Version 0.8.0" in state
31+
assert "version: 0.8.0" in claude

0 commit comments

Comments
 (0)