2eb3227ad0ec57fb259d12f754a183dfafb94de2
2
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
3a22d99e9b |
feat(RP11): conservative retirement of superseded ResearchProcess paths (closes #274)
CI Pipeline / best-practices (push) Successful in 6s
Auto-label / priority-gate (pull_request) Skipped
CI Pipeline / canary (push) Successful in 34s
Auto-label / auto-label (pull_request) Successful in 3s
CI Pipeline / lint (push) Successful in 39s
CI Pipeline / documentation (push) Successful in 2s
CI Pipeline / gitea-offline (push) Successful in 15s
CI Pipeline / unit-tests (push) Failing after 54s
CI Pipeline / type-check (push) Successful in 29s
CI Pipeline / best-practices (pull_request) Successful in 3s
CI Pipeline / documentation (pull_request) Successful in 3s
CI Pipeline / gitea-offline (pull_request) Successful in 14s
CI Pipeline / lint (pull_request) Successful in 35s
CI Pipeline / required-checks (push) Successful in 1s
Spec gate (headless) / spec-gate (pull_request) Successful in 7s
CI Pipeline / type-check (pull_request) Successful in 27s
CI Pipeline / unit-tests (pull_request) Failing after 48s
CI Pipeline / canary (pull_request) Successful in 27s
CI Pipeline / required-checks (pull_request) Successful in 1s
RP10 proven (PR #279 merged, v0.56.0) — retirement per doctrine: REPLACEMENT PROVEN FIRST, RETIREMENT SECOND. Step 1 — consolidate: merged rp2-canonical-stage-model into master (zero conflicts). Master now carries the canonical stage model (ISSUE→INWARD→OUTWARD→APPLICABILITY→conditional INNOVATION→ADVERSARIAL (disposition)→SYNTHESIS→QUALIFY) plus the #161 harness. Step 2 — retire (each classified before removal): - scripts/research_backend.py: run_full_research() self-walking loop + --watch poll supervisor (SUPERSEDED, §26.6/26.7) - scripts/run_research_stage.py + scripts/run_agent_stage.py (+ its test): legacy single-stage runners (SUPERSEDED; no live imports — research_artifact references build_receipt in a docstring only) - .gitea/workflows/research-{dispatcher,stage-headless,backlog-sweep}.yml: legacy trigger paths (SUPERSEDED; trigger label stripped RP0) - prompts/research-stages/{define,outward_discovery,outward_reading}.md: split-stage templates (concepts survive as outward.md subsections) - repo-level research-pending trigger label deleted from Gitea (no issue carried it) KEPT (canonical reuse / compatibility): - research_artifact.py, research_event_relay.py, research_router.py, research_inward_context.py, research_prompt_compiler.py, research_define.py (ISSUE-gate compiler), research_task_tree.py + research_stage_executor.py (canonical authorities) - RETIRED_STAGES guard: retired names remain ONLY as the block that prevents them executing (they cannot authorize a live stage — regression-tested) - All historical evidence (research/issue-*, closed issues) preserved Docs updated: classification manifest (RETIRED entries), pipeline registry (retired-workflows section), lint-baseline shrunk 82→80 S110 / 356→352 BLE001 (deleted files carried lint debt). Regression: 1129 passed (was 1069 pre-merge — canonical pipeline tests joined), 0 henxel failures. |
||
|
|
26eef8e3d3 |
feat(research): RP2/#265 — runner-placement enforcement + code classification manifest
THE HEAVY RUNNER IS THE DESKTOP PC, NOT THE PI. - scripts/runner_evidence.py: runtime execution evidence capture (hostname, runner identity from env, labels, execution class, stage, process id, issue, research process id, timestamp) — identity captured at runtime, never inferred from configuration alone - Deterministic placement gate (validate_placement): desktop-heavy stage executed on Pi → PLACEMENT_REJECTED; hostname checked too (cannot hide the Pi behind a desktop runner name); missing evidence fields rejected; unverified runners rejected (no silent fallback); pi-lightweight forge operations (metadata, labels, eligibility) explicitly allowed - Placement gate wired into StageExecutor.execute(): every stage result embeds runner_evidence; Pi execution fails the tree and cannot count as acceptance - docs/RESEARCH_CODE_CLASSIFICATION.md: aggressive detection, conservative classification (CURRENT/SUPERSEDED/COMPATIBILITY/TEST_FIXTURE/ UNKNOWN_PURPOSE); NO deletion in #265 — retirement is RP11 after RP10 proof; run_full_research() self-walk + --watch poll classified SUPERSEDED; tui-restart-pending marked SUPERSEDED CANDIDATE (verify before removal) Acceptance: canonical order PASS; conditional INNOVATION PASS; ISSUE deterministic PASS; earliest-stage refinement PASS; heavy-runner requirement encoded PASS; Pi rejection PASS; runtime identity/hostname/labels captured PASS; stage/run/process identity PASS; Gitea stage authority preserved (one-stage executor unchanged) PASS; no self-walking production loop in the canonical path PASS; no premature retirement PASS. 125 tests pass, ruff clean. Pre-existing henxels digest env failure unchanged. |