ulw-loop SDK: follow-ups from the #8345 review (evidenceRoot for v1 plans, driver.objectiveMatchesPlan in per_story, artifacts on re-record)
Author: code-yeongyuCreated Sep 16, 2026Updated Sep 16, 2026
Summary
Follow-ups from the code review of #8345 (merged as 2b05bdc73, closes #8332 #8333 #8334). None blocked the merge; each is small and self-contained.
Items
status().evidenceRootvs evidence-layout v1 plans —sdk/factory.tsemitsevidenceRootfor every session-scoped plan, whilestatus-next-actions.tsstill tells v1 plans "artifacts go under .omo/evidence/". MakeevidenceRootfollowplan.evidenceLayoutVersion(.omo/evidencefor v1) so one envelope gives one answer. New plans are v2, so this only affects pre-existing plans.status().result.driver.objectiveMatchesPlanin per_story mode with no active goal —driver-relation.tsderives the expected set from the active goal only, so it reportsfalsewhere the next checkpoint would accept. Derive it from the sameexpectedCodexObjective+compatibleCodexObjectivespath checkpoint uses (or omit the field when no goal is active).recordEvidencewithoutartifactsclears artifacts bound by an earlier record (evidence.ts, theelse delete criterion.artifactsbranch) whilenotesis preserved. Decide and test one rule: either the latest record replaces the whole capture (thennotesshould follow), orartifactsaccumulate until a criteria reset. The ledger keeps every record either way.- LOW:
evidence-artifacts.tstreats any relative path starting with..as outside the cwd (a directory literally named..fooinside the cwd is stored absolute);plan-goal-factory.tscarries an unused defaultgoalId;stringsFromapplies the 8-item nextActions cap to warnings too;steering-batch.tsstill seeds criteria without the surface;normalizeDriverObjectiveduplicates the privatenormalizeObjective. - Discoverability (#8334 item 4): senpi's tool_search catalog indexes tools only; indexing skills or env-published eval SDKs is a senpi-side decision still open.
Acceptance
- Items 1-3 each ship with a unit test in the component suite; item 4 is cleanup with no behavior change beyond the
..case. - Bundle regenerated on Linux with the node runner (
build-extension.mjs --checkgreen).
Related
#8332 #8333 #8334 #8345
Source: code-yeongyu/oh-my-openagent