master
8
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
81c6d1f9c6 |
fix(hardening): operation-identity authority — explicit sha end-to-end, paginated runs fetch, model-sha-as-hint
CI Pipeline / best-practices (push) Successful in 8s
CI Pipeline / documentation (push) Successful in 4s
CI Pipeline / canary (push) Successful in 32s
CI Pipeline / lint (push) Successful in 42s
CI Pipeline / type-check (push) Successful in 30s
deploy / deploy (push) Skipped
CI Pipeline / gitea-offline (push) Successful in 21s
Auto-label / auto-label (pull_request) Successful in 23s
Auto-label / priority-gate (pull_request) Skipped
CI Pipeline / documentation (pull_request) Successful in 6s
CI Pipeline / canary (pull_request) Successful in 36s
CI Pipeline / type-check (pull_request) Successful in 27s
CI Pipeline / gitea-offline (pull_request) Successful in 22s
Spec gate (headless) / spec-gate (pull_request) Successful in 18s
CI Pipeline / best-practices (pull_request) Successful in 7s
CI Pipeline / lint (pull_request) Successful in 40s
CI Pipeline / unit-tests (push) Successful in 3m22s
CI Pipeline / required-checks (push) Successful in 1s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 5s
CI Pipeline / unit-tests (pull_request) Successful in 3m22s
CI Pipeline / required-checks (pull_request) Successful in 1s
CI Pipeline / CI Pipeline / notify-event-bridge (pull_request) Successful in 5s
Auto-version and Release / release (pull_request) Successful in 39s
Defect A root cause: Gitea runs-list page flood (scheduled merge-robot runs push relevant SHAs past the limit=50 first page) + collect-only- first-page pagination -> terminal commit read as pending -> parked until deadline. FIX: _fetch_runs paginates up to 4 pages collecting all matches before verdict. Defect B root cause: authority_verdict spawned deploy_qualify reading DEPLOY_SHA from ambient env. FIX: explicit --sha arg (env masked when sha is explicit); _ci_runs_verdict/op_ci_alive take sha as parameter only; no env read remains in the authority path. Defect C root cause: model sha treated as lookup key — a typo derived a ghost operation. FIX: model sha is a HINT; unresolved sha + single pending op -> stored target used with model_sha_mismatch logged; bound op always wins over hints. deploy_qualify gained --sha flag (env kept for workflow backward-compat only). Tests: H-matrix (identity, prefix collision, env staleness, monotonicity, aggregator lag, operation-id-first) + full 2179 suite. |
||
|
|
00013f8c0b |
fix(deploy_qualify): canonical-default Gitea server/repo fallback — out-of-CI consumers got silent pending verdicts
Auto-label / auto-label (pull_request) Successful in 5s
Auto-label / priority-gate (pull_request) Skipped
CI Pipeline / documentation (pull_request) Successful in 7s
CI Pipeline / canary (pull_request) Successful in 38s
CI Pipeline / gitea-offline (pull_request) Successful in 16s
CI Pipeline / best-practices (pull_request) Successful in 13s
CI Pipeline / lint (pull_request) Successful in 41s
CI Pipeline / type-check (pull_request) Successful in 27s
CI Pipeline / unit-tests (pull_request) Successful in 2m51s
CI Pipeline / required-checks (pull_request) Successful in 1s
CI Pipeline / CI Pipeline / notify-event-bridge (pull_request) Successful in 7s
deploy / deploy (push) Skipped
CI Pipeline / best-practices (push) Successful in 3s
CI Pipeline / documentation (push) Successful in 3s
CI Pipeline / lint (push) Failing after 37s
CI Pipeline / gitea-offline (push) Successful in 18s
CI Pipeline / canary (push) Failing after 49s
CI Pipeline / type-check (push) Successful in 41s
CI Pipeline / unit-tests (push) Failing after 4m3s
CI Pipeline / required-checks (push) Failing after 8s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Successful in 6s
The await_operation first-class tool (and any local deploy_qualify.py caller) never exported GITEA_SERVER/GITEA_REPO, so main() printed 'pending' unconditionally — the first-class wait could never resolve success even against a green, converged deployment. CI behavior is unchanged (env always exported there); the fallback only fires when the caller omitted the vars. Root-caused live in T21.4 G10 dogfood. |
||
|
|
36ee604646 |
fix(release): required-checks verdict evaluates needs results — fail-closed deploy
CI Pipeline / documentation (push) Successful in 6s
CI Pipeline / canary (push) Successful in 32s
CI Pipeline / lint (push) Successful in 46s
Auto-version and Release / release (push) Successful in 47s
CI Pipeline / type-check (push) Successful in 29s
CI Pipeline / best-practices (push) Successful in 5s
CI Pipeline / gitea-offline (push) Successful in 17s
CI Pipeline / unit-tests (push) Successful in 1m9s
CI Pipeline / required-checks (push) Successful in 2s
deploy / deploy (push) Successful in 2m59s
ROOT CAUSE (red-CI promotions 0.66.28/29): the required-checks 'Publish protected-branch gate' step read /tmp/need_* files that no step ever wrote and echoed 'All required CI checks passed' UNCONDITIONALLY. With if: always() the needs gate is overridden, so the job ran on red needs and published success — deploy_qualify correctly trusted it and promoted red commits ( |
||
|
|
4eefc15837 |
fix(lifecycle+auth): canonical gitea auth path, terminalization helper, fault-injection gaps (T15 Parts A-E)
CI Pipeline / best-practices (push) Successful in 8s
Auto-version and Release / release (push) Failing after 13s
CI Pipeline / documentation (push) Successful in 5s
CI Pipeline / canary (push) Successful in 33s
CI Pipeline / lint (push) Failing after 41s
CI Pipeline / type-check (push) Successful in 27s
CI Pipeline / gitea-offline (push) Successful in 14s
CI Pipeline / unit-tests (push) Successful in 59s
CI Pipeline / required-checks (push) Successful in 1s
deploy / deploy (push) Successful in 37s
- scripts/gitea_auth.py: single credential ladder (env -> 0600 token file -> git credential fill); 6 consumers migrated off direct os.environ reads - rune_operator: consolidate 5 duplicated failure blocks into _terminalize_execution_failure; fix 3 fault-injection gaps: (1) dual-module PreparedTool identity split crashed approval-path saves, (2) fallback-model failure escaped send_task (created/pending orphan), (3) running-transition save uncaught (running-with-no-owner) - envelope task.status now agrees with canonical ledger (awaiting_approval) - orphan task_ac35f4e287c8 terminalized failed with durable evidence - tests: gitea auth ladder (6), lifecycle fault matrix (9 boundaries + restart/reload + helper contract); 1280 green in ci-venv; ratchet 352/80 |
||
|
|
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. |
||
|
|
97c604d0c5 |
fix(deploy): prefix-match required-checks context (Gitea appends ' (push)' to job contexts)
CI Pipeline / best-practices (push) Successful in 8s
CI Pipeline / documentation (push) Successful in 5s
CI Pipeline / canary (push) Successful in 36s
CI Pipeline / lint (push) Successful in 43s
CI Pipeline / type-check (push) Successful in 31s
CI Pipeline / gitea-offline (push) Successful in 16s
CI Pipeline / unit-tests (push) Successful in 1m1s
CI Pipeline / required-checks (push) Successful in 1s
deploy / deploy (push) Failing after 37s
|
||
|
|
ece67c6c73 |
fix(lint): narrow deploy_qualify status-probe except (ratchet back to baseline)
CI Pipeline / canary (push) Successful in 35s
CI Pipeline / best-practices (push) Successful in 5s
CI Pipeline / lint (push) Successful in 43s
CI Pipeline / documentation (push) Successful in 6s
CI Pipeline / unit-tests (push) Successful in 59s
CI Pipeline / gitea-offline (push) Successful in 16s
CI Pipeline / type-check (push) Successful in 31s
CI Pipeline / required-checks (push) Successful in 1s
deploy / deploy (push) Failing after 15m18s
|
||
|
|
9e9ddfc10f |
fix(deploy): move pipeline logic into scripts (YAML block-scalar parse failure)
CI Pipeline / best-practices (push) Successful in 8s
CI Pipeline / documentation (push) Successful in 4s
CI Pipeline / lint (push) Failing after 30s
CI Pipeline / canary (push) Successful in 35s
CI Pipeline / gitea-offline (push) Successful in 16s
CI Pipeline / type-check (push) Successful in 32s
CI Pipeline / unit-tests (push) Failing after 55s
CI Pipeline / required-checks (push) Successful in 1s
deploy / deploy (push) Failing after 15m18s
The embedded multi-line python in the workflow run blocks terminated the YAML literal scalars — Gitea could not parse deploy.yml at all (dispatch 500: 'could not find expected :'), which is why no deploy runs appeared. Logic now lives in scripts/deploy_qualify.py + deploy_stage.py; the workflow is pure shell + script calls. |