autoloop/20260425T063445Z/w4/4 4.d model pricing capability registry fixtures - #35
Closed
XelHaku wants to merge 27 commits into
Closed
Conversation
XelHaku
commented
Apr 25, 2026
Collaborator
- test(autoloop): cover health flush failure path
- feat(autoloop): selection honors row health
- test(autoloop): cover penalty population and selection-reason annotation
- feat(autoloop): report repair pass salvages noisy worker output
- feat(planner): consume row health and preserve across regen
- test(autoloop): end-to-end reactive lifecycle
- fix(goncho): guard streaming chat persistence
- fix(goncho): report honcho queue status
- fix(autoloop): commit run health after promotion
- docs(progress): refresh completed Goncho queue slices
- Add Goncho file import ingestion
- autoloop: record run health
- docs(progress): refresh Goncho file import status
- provider resilience status coverage
- feat: add bedrock converse payload mapping
- feat(hermes): add provider context resolver
- feat(skills): add preprocessing slash commands
- feat(cli): add pty bridge adapter
- feat: add native chat completions api server
- Add context engine status contract
- Add tool parity manifest harness
- autoloop: record run health
- fix(autoloop): integrate phase five worker results
- docs(specs): planner self-healing design
- docs(plans): planner self-healing implementation plan
- fix(autoloop): gate health on post-promotion suite
- feat(hermes): add model metadata registry fixtures
Adds TestRunOnce_HealthUpdateFailedEventOnFlushError to verify that a failed run-end Flush both emits the health_update_failed ledger event and propagates the error back to the caller. The failure is induced by chmod'ing the progress.json parent directory to read-only inside the runner callback, so atomicWrite fails after the initial Load. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds TryRepairReport infrastructure that reconstructs a FinalReport from secondary evidence (git commit + non-empty diff + PASS token + acceptance match) when ParseFinalReport fails on a worker's stdout. Also adds the RepairContext / RepairNote types and a writeRepairArtifact helper for forensic logging. Repair is conservative: it never accepts work without (1) a new commit on the worker branch vs base, (2) a non-empty diff, (3) a PASS token in stdout, and (4) every acceptance line present in stdout (or, if no acceptance set, PASS evidence alone is sufficient). Synthesized Acceptance strings satisfy the existing acceptanceEvidence() contract (RED with exit 1, GREEN with exit 0) so downstream gates see a valid shape. Scope adjustment vs the plan: the plan's Step 6.5 calls for wiring TryRepairReport into the production promotion flow as a fallback for ParseFinalReport. That call site does not exist in the current Go autoloop -- ParseFinalReport is only referenced from report.go and report_test.go. The promotion path in run.go promotes any worker that produces a commit without parsing the report; the report_validation_failed ledger events seen in production come from the legacy shell orchestrator, not the Go autoloop. So this commit ships the repair infrastructure with full unit-test coverage but does not touch run.go or promote.go and does not emit a report_repaired ledger event. The infrastructure is ready for whoever wires ParseFinalReport into production in a future task. Tests: 6 TryRepairReport scenarios (no commit, no PASS, missing acceptance line, empty acceptance accepts on PASS, all acceptance lines present accepts, empty diff fails) + 1 writeRepairArtifact JSON shape test. Existing strict ParseFinalReport tests untouched. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Brainstormed design for Phase C autoloop-planner feedback loop. Five-commit layered design that closes the loop in the autoloop→planner direction (Phase B closed it the other way). Six layers total (L6 folds into L1's commit): - L1: planner ledger (.codex/architecture-planner/state/runs.jsonl) with per-run records: trigger, before/after stats, rows changed, retry attempts - L2: event-driven trigger via .codex/architecture-planner/triggers.jsonl; autoloop emits on quarantine_added / quarantine_stale_cleared; systemd path unit fires planner within seconds (rate-limited to 1/60s); cursor tracks consumption - L3: retry-with-feedback when validateHealthPreservation rejects a regen; re-prompt LLM with "you dropped row X" up to N times in same run - L4: self-evaluation correlates planner ledger with autoloop ledger; per- row outcomes (unstuck / still_failing / no_attempts_yet) feed next prompt - L5: PlannerVerdict typed field on Item (planner owns; autoloop preserves structurally via Phase B round-trip); sticky NeedsHuman after N reshapes; autoloop selection skips NeedsHuman rows; status surface lists them with suggested actions - L6: keyword arguments for topical focus runs (`go run ./cmd/architecture- planner-loop run honcho memory`); mechanical context narrowing + LLM topical clause Symmetric ownership rule: autoloop owns Health (Phase B); planner owns PlannerVerdict (Phase C). Both blocks structurally preserved via Phase B's typed-struct round-trip. Out of Phase C scope (deferred): external notifications, adaptive cadence, preview-via-dry-run, auto-unset of NeedsHuman. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
13-task TDD plan for the spec at
docs/superpowers/specs/2026-04-24-planner-self-healing-design.md.
Tasks (each ends in one commit):
1. Add PlannerVerdict schema in internal/progress (typed field on Item)
2. Symmetric preservation regression test (both blocks survive both writers)
3. Planner ledger types + AppendLedgerEvent / LoadLedger / LoadLedgerWindow
4. Wire planner ledger into RunOnce (computeStats, diffRows, status)
5. Topical focus mode: matchKeywords + FilterContextByKeywords +
cmd positional args + topical prompt clause
6. Autoloop side: classifyForTrigger + FlushWithTriggers + emit to
triggers.jsonl from run loop
7. Planner side: AppendTriggerEvent + cursor + RunOnce wires reads +
trigger context section in prompt
8. systemd path unit alongside timer for event-driven cadence
9. Retry-with-feedback on validation rejection (RetryFeedback +
extractDroppedRows + RunOnce loop)
10. Self-evaluation: Evaluate correlates planner ledger ↔ autoloop ledger;
PreviousReshapes section + SELF-EVALUATION SOFT clause
11. StampVerdicts post-processing pass (deterministic; ReshapeCount
monotonic; sticky NeedsHuman after threshold)
12. Autoloop selection skips NeedsHuman; status surface lists rows with
suggested actions per failure category
13. End-to-end lifecycle test (7 simulated runs across all 6 layers)
Self-review notes:
- Tasks 4, 9, 12, 13 have deliberate t.Skip stubs because the existing
planner test fixtures use a fixture style the implementer must follow.
Required test names and scenarios are pinned; only the wiring is
implementer discretion.
- Cross-package import cycle risk flagged in Task 6: autoloop importing
architectureplanner.TriggerEvent. If circular, plan calls for a new
shared internal/plannertriggers package.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Collaborator
Author
|
Closed as superseded by rescue PR #42. Useful work was rescued into main; remaining differences are patch-id drift or unrelated branch-base noise. |
XelHaku
deleted the
autoloop/20260425T063445Z/w4/4-4.d-model-pricing-capability-registry-fixtures
branch
April 25, 2026 08:15
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.