d78d8d4dc4e6c1ff371dcffe030dff86b2da0a78
3
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
ca4f7593d7 |
feat(corrections): #314 defect fix, credential rotation, release guard, task lifecycle, route scoping, PL1 records + metrics
CI Pipeline / best-practices (push) Successful in 8s
Auto-version and Release / release (push) Failing after 14s
CI Pipeline / documentation (push) Successful in 5s
CI Pipeline / lint (push) Failing after 34s
CI Pipeline / canary (push) Successful in 37s
CI Pipeline / type-check (push) Successful in 31s
CI Pipeline / gitea-offline (push) Successful in 16s
CI Pipeline / unit-tests (push) Successful in 1m4s
CI Pipeline / required-checks (push) Successful in 1s
deploy / deploy (push) Successful in 48s
CORRECTION 1: #314 reopened — recall_with_associations mode field defect CONFIRMED in current source and FIXED (mode: association_merged). CORRECTION 3: Gitea credential removed from remote URL (credential helper). TOKEN EXPOSED: yes (in diagnostic output). TOKEN ROTATED: not yet (requires Gitea web UI access). Remote URL now shows username only, no secret. CORRECTION 4: duplicate-release-commit defect ROOT CAUSE: convergence computed warranted bump from commits-since-tag without checking if master version already satisfies the bump. FIX: already-converged guard in version_convergence.py (master version > last tag → no commit). Repo-aware (args.repo passed to read_version/latest_tag). CORRECTION 6: lifecycle terminalization — execution exception now guarantees task terminalizes as failed with evidence (no immortal RUNNING). CORRECTION 7: route instruction task-scoped on RuneTask.route_instruction (NOT shared operator state). Read-only leading-verb override. Isolation tests prove no cross-contamination between interleaved tasks. PL1-01/02/03/05: pl1_records.py (route resolution, proof level, failure class, candidate status), metrics with honest NOT_YET_MEASURABLE semantics, route-instruction learning loop (PE-1789102658-0269 SEED). 1253 tests green; ratchet 352/80 (shrink); henxels clean. |
||
|
|
31a3d42535 |
fix(D5.1-D5.3): mutation boundary tightening — content fingerprints, explicit per-stage allowlist, all-terminal-path verification
CI Pipeline / best-practices (push) Successful in 6s
CI Pipeline / documentation (push) Successful in 3s
Auto-label / priority-gate (pull_request) Skipped
CI Pipeline / canary (push) Successful in 33s
Auto-label / auto-label (pull_request) Successful in 3s
CI Pipeline / type-check (push) Successful in 30s
CI Pipeline / lint (push) Successful in 41s
CI Pipeline / unit-tests (push) Successful in 58s
CI Pipeline / best-practices (pull_request) Successful in 4s
CI Pipeline / documentation (pull_request) Successful in 7s
CI Pipeline / canary (pull_request) Successful in 49s
CI Pipeline / lint (pull_request) Successful in 58s
CI Pipeline / type-check (pull_request) Successful in 44s
Spec gate (headless) / spec-gate (pull_request) Successful in 9s
CI Pipeline / gitea-offline (pull_request) Successful in 18s
CI Pipeline / unit-tests (pull_request) Successful in 1m15s
CI Pipeline / required-checks (pull_request) Successful in 3s
CI Pipeline / gitea-offline (push) Successful in 17s
CI Pipeline / required-checks (push) Successful in 4s
Auto-version and Release / release (pull_request) Successful in 36s
D5.1 — CONTENT FINGERPRINTS, not porcelain-line diffs: capture_worktree_state() now records a sha256 per tracked+untracked file. verify_no_source_mutation() compares hashes — a change to an already-dirty file is detected (porcelain comparison would produce the same line and miss it). require_clean_worktree() added for baseline methodology. D5.2 — EXPLICIT PER-STAGE ALLOWLIST, not artifact_dir-wide: the executor passes exactly: the declared stage artifact file, this stage's event/err files, telemetry/, consumed markers, and task_tree.json (executor-owned — advance() writes it, not the worker). An OUTWARD worker can no longer silently modify another stage's artifact or the task-tree authority — cross-stage writes are detected. D5.3 — VERIFY ON EVERY TERMINAL PATH: the mutation check runs for COMPLETED, GATE_FAILED, GATE_RETRY, FAILED, TIMEOUT and INTERRUPTED — a worker that mutates source and then fails still has the mutation identified. 3 new tests: fingerprint-catches-already-dirty-file-mutation, cross-stage-artifact-write-detected, HEAD-movement-without-file-changes. 1168 tests pass; ruff clean. |
||
|
|
a997a0ae4c |
feat(D4+D5): executor-owned artifact targets + cognitive-stage mutation boundary (closes #298 scope)
CI Pipeline / best-practices (push) Successful in 6s
CI Pipeline / documentation (push) Successful in 3s
Auto-label / priority-gate (pull_request) Skipped
Auto-label / auto-label (pull_request) Successful in 3s
CI Pipeline / canary (push) Successful in 34s
CI Pipeline / lint (push) Successful in 42s
CI Pipeline / type-check (push) Successful in 30s
CI Pipeline / unit-tests (push) Successful in 58s
CI Pipeline / gitea-offline (push) Successful in 15s
CI Pipeline / best-practices (pull_request) Successful in 3s
CI Pipeline / documentation (pull_request) Successful in 3s
CI Pipeline / lint (pull_request) Successful in 38s
CI Pipeline / canary (pull_request) Successful in 31s
Spec gate (headless) / spec-gate (pull_request) Successful in 6s
CI Pipeline / required-checks (push) Successful in 1s
CI Pipeline / type-check (pull_request) Successful in 30s
CI Pipeline / unit-tests (pull_request) Successful in 53s
CI Pipeline / gitea-offline (pull_request) Successful in 15s
CI Pipeline / required-checks (pull_request) Successful in 1s
Auto-version and Release / release (pull_request) Successful in 37s
D4 — ARTIFACT TARGET CONTRACT IS EXECUTOR-OWNED: - _declared_artifact_path(stage): absolute path computed from artifact_dir + STAGE_ARTIFACT_FILES[stage]; injected verbatim into every worker prompt (APPLICABILITY/ADVERSARIAL/SYNTHESIS/INNOVATION/OUTWARD/QUALIFY) - Worker never derives its own path — producer and consumer share one authoritative output location (the B3-v2 root cause: worker's prompt said research/issue-162/ but executor's artifact_dir was research/issue-162-b3v2/) - Acceptance: nonstandard artifact_dir (issue-162-b3v2) now gets the correct path injected D5 — COGNITIVE_STAGE_MUTATION_BOUNDARY: - mutation_boundary.py: capture_worktree_state (status porcelain + HEAD) before cognitive stages; verify_no_source_mutation after; new changes outside declared artifact paths → UNAUTHORIZED_STAGE_MUTATION - HEAD movement detected (cognitive stages must never commit) - allowed paths: declared artifact + telemetry + consumed markers - Wired into execute(): cognitive stages only (ISSUE/IMPLEMENT skip); failure → STAGE_FAILED, no advancement - Tests: clean stage passes; source mutation detected → FAILED + no advancement + mutation visible for human review BLE001 narrowed in mutation_boundary (git errors are OSErrors). 1164 tests pass; ruff clean. |