Compare commits
merge into: puter/zopu-code:slice-2/work-definition-primitive
puter/zopu-code:master
puter/zopu-code:ax
puter/zopu-code:t3code/extract-session-conversation-context
puter/zopu-code:t3code/audit-first-login-flow
puter/zopu-code:t3code/consolidate-backend-agents-convex
puter/zopu-code:zopu/issue-26-671d5529
puter/zopu-code:zopu/issue-22-91b8b35f
puter/zopu-code:zopu/attempt-0a183bde4b9ee3744ca2880e
puter/zopu-code:zopu/attempt-3070d88e4738f431ec3e1f77
puter/zopu-code:zopu/attempt-3b84fb0ea5e1b1abfe12a737
puter/zopu-code:zopu/attempt-3d291ab5def5fa52b63780a9
puter/zopu-code:zopu/attempt-404330bf359ee629062d7031
puter/zopu-code:zopu/attempt-470a35bcad5ceb4a39bc4e99
puter/zopu-code:zopu/attempt-4dc84d96c966e9278ed1107d
puter/zopu-code:zopu/attempt-52c23d1bc9ca4d52aa8b066e
puter/zopu-code:zopu/attempt-63fff2d027cdb775ee963c4f
puter/zopu-code:zopu/attempt-6d9cdfafd055bcb3390e5432
puter/zopu-code:zopu/attempt-811296d5d3eb2bec0ae282ec
puter/zopu-code:zopu/attempt-a9b0a348b8df2861cacc2302
puter/zopu-code:zopu/attempt-bfd51e85400d96fb43ff5d0c
puter/zopu-code:zopu/attempt-c60feb0ed5d5ff9a4b1c45a9
puter/zopu-code:zopu/attempt-c700fa34d2d3913f818d9318
puter/zopu-code:zopu/attempt-e3fa24e5687e66f01757c92d
puter/zopu-code:feat/slice5-complete
puter/zopu-code:feat/slice5-agentos-runner
puter/zopu-code:t3code/slice-5-implementation
puter/zopu-code:slice-2/work-definition-primitive
puter/zopu-code:t3code/review-slices-sandbox-next
puter/zopu-code:t3code/plan-slices-2-4
puter/zopu-code:t3code/scout-slices-2-4
puter/zopu-code:feat/auth-and-project-requests
puter/zopu-code:t3code/slice1-polish-research
puter/zopu-code:t3code/explore-primitives-package
puter/zopu-code:sai/changes
..
pull from: puter/zopu-code:t3code/review-slices-sandbox-next
puter/zopu-code:ax
puter/zopu-code:master
puter/zopu-code:t3code/extract-session-conversation-context
puter/zopu-code:t3code/audit-first-login-flow
puter/zopu-code:t3code/consolidate-backend-agents-convex
puter/zopu-code:zopu/issue-26-671d5529
puter/zopu-code:zopu/issue-22-91b8b35f
puter/zopu-code:zopu/attempt-0a183bde4b9ee3744ca2880e
puter/zopu-code:zopu/attempt-3070d88e4738f431ec3e1f77
puter/zopu-code:zopu/attempt-3b84fb0ea5e1b1abfe12a737
puter/zopu-code:zopu/attempt-3d291ab5def5fa52b63780a9
puter/zopu-code:zopu/attempt-404330bf359ee629062d7031
puter/zopu-code:zopu/attempt-470a35bcad5ceb4a39bc4e99
puter/zopu-code:zopu/attempt-4dc84d96c966e9278ed1107d
puter/zopu-code:zopu/attempt-52c23d1bc9ca4d52aa8b066e
puter/zopu-code:zopu/attempt-63fff2d027cdb775ee963c4f
puter/zopu-code:zopu/attempt-6d9cdfafd055bcb3390e5432
puter/zopu-code:zopu/attempt-811296d5d3eb2bec0ae282ec
puter/zopu-code:zopu/attempt-a9b0a348b8df2861cacc2302
puter/zopu-code:zopu/attempt-bfd51e85400d96fb43ff5d0c
puter/zopu-code:zopu/attempt-c60feb0ed5d5ff9a4b1c45a9
puter/zopu-code:zopu/attempt-c700fa34d2d3913f818d9318
puter/zopu-code:zopu/attempt-e3fa24e5687e66f01757c92d
puter/zopu-code:feat/slice5-complete
puter/zopu-code:feat/slice5-agentos-runner
puter/zopu-code:t3code/slice-5-implementation
puter/zopu-code:slice-2/work-definition-primitive
puter/zopu-code:t3code/review-slices-sandbox-next
puter/zopu-code:t3code/plan-slices-2-4
puter/zopu-code:t3code/scout-slices-2-4
puter/zopu-code:feat/auth-and-project-requests
puter/zopu-code:t3code/slice1-polish-research
puter/zopu-code:t3code/explore-primitives-package
puter/zopu-code:sai/changes
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
85633a5124 |
Slice 4 hardening: bounded resolver, terminal states, reconciliation
Addresses review findings before Slice 5 sandbox work. Resolver primitives: - resolveOutcome maps an attempt outcome to retry-or-terminal; removed the no-op isTerminalClassification. - WORK_STATUS_FOR_OUTCOME preserves real terminal Work status instead of collapsing everything back to ready. - Lifecycle: completed is terminal, cancelled reopens only to ready, and the invalid awaiting-design-approval -> awaiting-definition-approval reopening is gone. Execution (workExecution.ts): - finishAttempt replaces completeAttempt: auto-retries within the kit budget and settles Work at the real classification (Succeeded->completed, PermanentFailure/BudgetExhausted->failed, NeedsInput->needs-input, Blocked->blocked). No Work stays silently runnable after a failure. - startSimulatedExecution validates sliceId against the current approved Design (foreign ids rejected; defaults to the first slice) and advances slice status running -> completed/ready. - retrySimulatedExecution is now an explicit user restart with a retryable- state guard, not the automatic resolver path. - reconcileExpiredAttempts is bounded: a dead lease terminates as Blocked, resumes within budget or settles the Run/Work so nothing runs forever. - crons.ts runs the reconciler every 30s, string-referenced so it does not depend on the stale codegen. Planning (workPlanning.ts): - saveDefinition/saveDesign reject revision while a Run is executing. - submitQuestion validates and persists a durable workQuestions row instead of discarding planner questions. - Design revision invalidates active design approvals. Verification: primitives 69 tests (+4), backend 22 tests (+10) covering retry/cancel/failure/restart, slice validation, reconciliation, the revision guard, and question persistence. Root typecheck, web+agents build, and the configured Ultracite gate (53 files) all pass. package.json: the recurring check gate now covers workExecution, workPlanning, crons, resolver, and work-lifecycle. |