main · last commit
13 days ago ·
7g0stsfu
ah-gs7 Ultrapack designer/validator roles via config + skills (human-scheduled)
Past Stand
bd reopen ah-gs7
| Created by | Eugene Blikh |
| Owner | bigbes@gmail.com |
| Created | 2026-07-17T14:37:25Z |
| Started | 2026-07-17T19:24:42Z |
| Updated | 2026-07-17T19:49:23Z |
| Closed | 2026-07-17T19:49:23Z |
Ultrapack (github.com/bigbes/ultrapack) is an OpenCode pack, but its value is the skills (udesign/uplan/uexecute/uverify/ureview), and pi implements the Agent Skills standard — so the skills load unmodified via --skill with no porting. Stage 2 already delivers --skill materialization, task_types and per-task frontmatter roles, so multi-role work needs ZERO daemon code today: add designer/validator roles to config pointing at ultrapack skill packages under skills_dir, and let a human drag cards between them. State carries between runs in docs/tasks/<slug>.md on the task branch. Do this BEFORE automating the handoff (ah-0ge slice): it validates whether the roles are actually good while the orchestration is still free. Ultrapack agents/ do NOT get ported — see the delegation-loop beads; agents become roles, not subagents.
Roles are {model, prompt} today (internal/config/config.go:72). Fork ultrapack skills into skills_dir packages; rewrite @implementer/@explorer/@reviewer subagent references (uplan/SKILL.md:126-128, uexecute/SKILL.md:37, handsoff/SKILL.md:35) out of the skill bodies — pi has no @-mention dispatch. Designer role MUST use ultrapack's handsoff skill: udesign/SKILL.md says 'Nothing is planned or written until the user approves', which deadlocks a board-driven run until the watchdog kills it as stalled.
A task labeled for the designer role produces a docs/tasks/<slug>.md with a Design section and lands In Review without stalling; dragging it to Ready under the validator role produces a review against that same file on the same branch.
DELIVERED + COMMITTED (982694f) 2026-07-17. Artifacts: skills/design (adapted from ultrapack udesign — autonomous, no wait-for-approval, records ### Decisions), skills/validate (single-agent review distilled from ultrapack ureview's reviewer criteria — confidence>=80, severity-tiered, never edits code), prompts/designer.md + prompts/validator.md (autonomy framing verified to prevent headless stalls), config.example.yaml wiring (skills_dir=skills, designer/validator roles, type:design/type:review task_types), README Roles section. COMPONENT-VERIFIED headless on pi 0.73.1 (opencode/claude-haiku-4-5): both skills load under --no-skills via --skill; designer produced docs/tasks/multiply-and-divide.md with full ## Design + IV/PC/AS/UK + TDD + ### Decisions, clean stop, no stall; validator wrote ## Review with a changes-requested verdict and did NOT edit code. config.example loads (TestLoadExample green). NOT verified: the literal live daemon+board flow (label->task_type->role->run) — infra-gated. Tracked as a follow-up depending on ah-k23. Design notes: udesign/ureview were ADAPTED not vendored verbatim — udesign is collaborative and references ultrapack-only skills (uplan/handsoff/references), and ureview is built around a dispatcher+@reviewer split that doesn't fit a single agent. The @-subagent references live only in the executor skills (uexecute/uplan/handsoff/ureview), so designer+validator needed minimal @-rewrite.
No outgoing dependencies.
Nothing depends on this issue.
| id | ah-gs7 |
| content_hash | c0bcd671b99d03b8fb704cffc0b49ffe839b72cbf1a7a9bd61ccaf8166cc850e |
| title | Ultrapack designer/validator roles via config + skills (human-scheduled) |
| description | Ultrapack (github.com/bigbes/ultrapack) is an OpenCode pack, but its value is the skills (udesign/uplan/uexecute/uverify/ureview), and pi implements the Agent Skills standard — so the skills load unmodified via --skill with no porting. Stage 2 already delivers --skill materialization, task_types and per-task frontmatter roles, so multi-role work needs ZERO daemon code today: add designer/validator roles to config pointing at ultrapack skill packages under skills_dir, and let a human drag cards between them. State carries between runs in docs/tasks/<slug>.md on the task branch. Do this BEFORE automating the handoff (ah-0ge slice): it validates whether the roles are actually good while the orchestration is still free. Ultrapack agents/ do NOT get ported — see the delegation-loop beads; agents become roles, not subagents. |
| design | Roles are {model, prompt} today (internal/config/config.go:72). Fork ultrapack skills into skills_dir packages; rewrite @implementer/@explorer/@reviewer subagent references (uplan/SKILL.md:126-128, uexecute/SKILL.md:37, handsoff/SKILL.md:35) out of the skill bodies — pi has no @-mention dispatch. Designer role MUST use ultrapack's handsoff skill: udesign/SKILL.md says 'Nothing is planned or written until the user approves', which deadlocks a board-driven run until the watchdog kills it as stalled. |
| acceptance_criteria | A task labeled for the designer role produces a docs/tasks/<slug>.md with a Design section and lands In Review without stalling; dragging it to Ready under the validator role produces a review against that same file on the same branch. |
| notes | DELIVERED + COMMITTED (982694f) 2026-07-17. Artifacts: skills/design (adapted from ultrapack udesign — autonomous, no wait-for-approval, records ### Decisions), skills/validate (single-agent review distilled from ultrapack ureview's reviewer criteria — confidence>=80, severity-tiered, never edits code), prompts/designer.md + prompts/validator.md (autonomy framing verified to prevent headless stalls), config.example.yaml wiring (skills_dir=skills, designer/validator roles, type:design/type:review task_types), README Roles section. COMPONENT-VERIFIED headless on pi 0.73.1 (opencode/claude-haiku-4-5): both skills load under --no-skills via --skill; designer produced docs/tasks/multiply-and-divide.md with full ## Design + IV/PC/AS/UK + TDD + ### Decisions, clean stop, no stall; validator wrote ## Review with a changes-requested verdict and did NOT edit code. config.example loads (TestLoadExample green). NOT verified: the literal live daemon+board flow (label->task_type->role->run) — infra-gated. Tracked as a follow-up depending on ah-k23. Design notes: udesign/ureview were ADAPTED not vendored verbatim — udesign is collaborative and references ultrapack-only skills (uplan/handsoff/references), and ureview is built around a dispatcher+@reviewer split that doesn't fit a single agent. The @-subagent references live only in the executor skills (uexecute/uplan/handsoff/ureview), so designer+validator needed minimal @-rewrite. |
| status | closed |
| priority | 2 |
| issue_type | feature |
| assignee | Eugene Blikh |
| estimated_minutes | NULL |
| created_at | 2026-07-17T14:37:25Z |
| created_by | Eugene Blikh |
| owner | bigbes@gmail.com |
| updated_at | 2026-07-17T19:49:23Z |
| closed_at | 2026-07-17T19:49:23Z |
| closed_by_session | |
| external_ref | NULL |
| spec_id | |
| compaction_level | 0 |
| compacted_at | NULL |
| compacted_at_commit | NULL |
| original_size | NULL |
| sender | |
| ephemeral | 0 |
| wisp_type | |
| pinned | 0 |
| is_template | 0 |
| mol_type | |
| work_type | |
| source_system | |
| metadata | �{} |
| source_repo | |
| close_reason | Designer/validator roles delivered and component-verified (skills + prompts + config, committed 982694f); both roles produce the right artifacts headless on pi 0.73.1. Live daemon+board acceptance tracked as a follow-up gated on ah-k23 infra. |
| event_kind | |
| actor | |
| target | |
| payload | |
| await_type | |
| await_id | |
| timeout_ns | 0 |
| waiters | |
| hook_bead | |
| role_bead | |
| agent_state | |
| last_activity | NULL |
| role_type | |
| rig | |
| due_at | NULL |
| defer_until | NULL |
| no_history | 0 |
| started_at | 2026-07-17T19:24:42Z |
| is_blocked | 0 |
| id | 019f7082-c1b4-7157-ae07-dec21d7cbc28 |
| issue_id | ah-gs7 |
| event_type | created |
| actor | Eugene Blikh |
| old_value | |
| new_value | |
| comment | NULL |
| created_at | 2026-07-17T17:37:25Z |
| id | 019f70ba-faab-75e3-8d62-c8c196b6c5b0 |
| issue_id | ah-gs7 |
| event_type | updated |
| actor | Eugene Blikh |
| old_value | {"id":"ah-gs7","title":"Ultrapack designer/validator roles via config + skills (human-scheduled)","description":"Ultrapack (github.com/bigbes/ultrapack) is an OpenCode pack, but its value is the skills (udesign/uplan/uexecute/uverify/ureview), and pi implements the Agent Skills standard — so the skills load unmodified via --skill with no porting. Stage 2 already delivers --skill materialization, task_types and per-task frontmatter roles, so multi-role work needs ZERO daemon code today: add designer/validator roles to config pointing at ultrapack skill packages under skills_dir, and let a human drag cards between them. State carries between runs in docs/tasks/\u003cslug\u003e.md on the task branch. Do this BEFORE automating the handoff (ah-0ge slice): it validates whether the roles are actually good while the orchestration is still free.\nUltrapack agents/ do NOT get ported — see the delegation-loop beads; agents become roles, not subagents.","design":"Roles are {model, prompt} today (internal/config/config.go:72). Fork ultrapack skills into skills_dir packages; rewrite @implementer/@explorer/@reviewer subagent references (uplan/SKILL.md:126-128, uexecute/SKILL.md:37, handsoff/SKILL.md:35) out of the skill bodies — pi has no @-mention dispatch. Designer role MUST use ultrapack's handsoff skill: udesign/SKILL.md says 'Nothing is planned or written until the user approves', which deadlocks a board-driven run until the watchdog kills it as stalled.","acceptance_criteria":"A task labeled for the designer role produces a docs/tasks/\u003cslug\u003e.md with a Design section and lands In Review without stalling; dragging it to Ready under the validator role produces a review against that same file on the same branch.","status":"open","priority":2,"issue_type":"feature","owner":"bigbes@gmail.com","created_at":"2026-07-17T14:37:25Z","created_by":"Eugene Blikh","updated_at":"2026-07-17T14:37:25Z"} |
| new_value | {"notes":"VERIFIED 2026-07-17 on pi 0.73.1: ultrapack skills load unmodified via --skill. Clean test (neutral empty cwd, tools on): --no-skills alone -\u003e catalog NONE; --no-skills --skill skills/udesign --skill skills/uplan -\u003e catalog is EXACTLY {udesign, uplan}. Determinism property (SPEC §9: explicit --skill under --no-skills = intended set only) holds in practice. Probe gotchas for reruns: (1) run from a dir with no skills/ folder or the model just ls-es it and reports dir names; (2) do NOT use --no-tools — pi exposes skills THROUGH a tool, so --no-tools hides even loaded skills."} |
| comment | NULL |
| created_at | 2026-07-17T18:38:49Z |
| id | 019f70c7-3b74-73d8-ba87-59448902fd8e |
| issue_id | ah-gs7 |
| event_type | updated |
| actor | Eugene Blikh |
| old_value | {"id":"ah-gs7","title":"Ultrapack designer/validator roles via config + skills (human-scheduled)","description":"Ultrapack (github.com/bigbes/ultrapack) is an OpenCode pack, but its value is the skills (udesign/uplan/uexecute/uverify/ureview), and pi implements the Agent Skills standard — so the skills load unmodified via --skill with no porting. Stage 2 already delivers --skill materialization, task_types and per-task frontmatter roles, so multi-role work needs ZERO daemon code today: add designer/validator roles to config pointing at ultrapack skill packages under skills_dir, and let a human drag cards between them. State carries between runs in docs/tasks/\u003cslug\u003e.md on the task branch. Do this BEFORE automating the handoff (ah-0ge slice): it validates whether the roles are actually good while the orchestration is still free.\nUltrapack agents/ do NOT get ported — see the delegation-loop beads; agents become roles, not subagents.","design":"Roles are {model, prompt} today (internal/config/config.go:72). Fork ultrapack skills into skills_dir packages; rewrite @implementer/@explorer/@reviewer subagent references (uplan/SKILL.md:126-128, uexecute/SKILL.md:37, handsoff/SKILL.md:35) out of the skill bodies — pi has no @-mention dispatch. Designer role MUST use ultrapack's handsoff skill: udesign/SKILL.md says 'Nothing is planned or written until the user approves', which deadlocks a board-driven run until the watchdog kills it as stalled.","acceptance_criteria":"A task labeled for the designer role produces a docs/tasks/\u003cslug\u003e.md with a Design section and lands In Review without stalling; dragging it to Ready under the validator role produces a review against that same file on the same branch.","notes":"VERIFIED 2026-07-17 on pi 0.73.1: ultrapack skills load unmodified via --skill. Clean test (neutral empty cwd, tools on): --no-skills alone -\u003e catalog NONE; --no-skills --skill skills/udesign --skill skills/uplan -\u003e catalog is EXACTLY {udesign, uplan}. Determinism property (SPEC §9: explicit --skill under --no-skills = intended set only) holds in practice. Probe gotchas for reruns: (1) run from a dir with no skills/ folder or the model just ls-es it and reports dir names; (2) do NOT use --no-tools — pi exposes skills THROUGH a tool, so --no-tools hides even loaded skills.","status":"open","priority":2,"issue_type":"feature","owner":"bigbes@gmail.com","created_at":"2026-07-17T14:37:25Z","created_by":"Eugene Blikh","updated_at":"2026-07-17T15:38:50Z"} |
| new_value | {"notes":"HEADLESS BEHAVIOR VERIFIED 2026-07-17 (opencode/claude-haiku-4-5, pi -p --mode json, udesign loaded via --skill on a throwaway repo): the designer run did NOT deadlock. 9 turns, read/bash/write tools, stopReason=stop, and it WROTE docs/tasks/mul-div.md following udesign's structure (Invariants/Principles/Assumptions/Unknowns + TDD decision).\n\nCRITICAL REQUIREMENT for the designer role prompt: this only worked because the rendered PROMPT explicitly neutralized udesign's collaborative-approval framing — 'No human is available; you will not receive a reply; make reasonable assumptions and record them; do not end by asking a question; WRITE the result to \u003cpath\u003e'. A naive 'design X' prompt would likely trigger the skill's 'nothing until the user approves' path and land In Review with only a question and no artifact. So prompts/designer.md MUST carry the autonomy+write-artifact framing (a lighter alternative to loading the full handsoff skill; both work). Same pattern will apply to validator/ureview.\n\nAside: openai-codex provider on this box is a ChatGPT account and rejects some models (gpt-5.2 -\u003e 400 invalid_request). Use opencode/* or deepseek/* for local pi tests; daemon uses litellm anyway."} |
| comment | NULL |
| created_at | 2026-07-17T18:52:12Z |
| id | 019f7189-c38c-7724-8d90-f041fd5f9945 |
| issue_id | ah-gs7 |
| event_type | claimed |
| actor | Eugene Blikh |
| old_value | {"id":"ah-gs7","title":"Ultrapack designer/validator roles via config + skills (human-scheduled)","description":"Ultrapack (github.com/bigbes/ultrapack) is an OpenCode pack, but its value is the skills (udesign/uplan/uexecute/uverify/ureview), and pi implements the Agent Skills standard — so the skills load unmodified via --skill with no porting. Stage 2 already delivers --skill materialization, task_types and per-task frontmatter roles, so multi-role work needs ZERO daemon code today: add designer/validator roles to config pointing at ultrapack skill packages under skills_dir, and let a human drag cards between them. State carries between runs in docs/tasks/\u003cslug\u003e.md on the task branch. Do this BEFORE automating the handoff (ah-0ge slice): it validates whether the roles are actually good while the orchestration is still free.\nUltrapack agents/ do NOT get ported — see the delegation-loop beads; agents become roles, not subagents.","design":"Roles are {model, prompt} today (internal/config/config.go:72). Fork ultrapack skills into skills_dir packages; rewrite @implementer/@explorer/@reviewer subagent references (uplan/SKILL.md:126-128, uexecute/SKILL.md:37, handsoff/SKILL.md:35) out of the skill bodies — pi has no @-mention dispatch. Designer role MUST use ultrapack's handsoff skill: udesign/SKILL.md says 'Nothing is planned or written until the user approves', which deadlocks a board-driven run until the watchdog kills it as stalled.","acceptance_criteria":"A task labeled for the designer role produces a docs/tasks/\u003cslug\u003e.md with a Design section and lands In Review without stalling; dragging it to Ready under the validator role produces a review against that same file on the same branch.","notes":"HEADLESS BEHAVIOR VERIFIED 2026-07-17 (opencode/claude-haiku-4-5, pi -p --mode json, udesign loaded via --skill on a throwaway repo): the designer run did NOT deadlock. 9 turns, read/bash/write tools, stopReason=stop, and it WROTE docs/tasks/mul-div.md following udesign's structure (Invariants/Principles/Assumptions/Unknowns + TDD decision).\n\nCRITICAL REQUIREMENT for the designer role prompt: this only worked because the rendered PROMPT explicitly neutralized udesign's collaborative-approval framing — 'No human is available; you will not receive a reply; make reasonable assumptions and record them; do not end by asking a question; WRITE the result to \u003cpath\u003e'. A naive 'design X' prompt would likely trigger the skill's 'nothing until the user approves' path and land In Review with only a question and no artifact. So prompts/designer.md MUST carry the autonomy+write-artifact framing (a lighter alternative to loading the full handsoff skill; both work). Same pattern will apply to validator/ureview.\n\nAside: openai-codex provider on this box is a ChatGPT account and rejects some models (gpt-5.2 -\u003e 400 invalid_request). Use opencode/* or deepseek/* for local pi tests; daemon uses litellm anyway.","status":"open","priority":2,"issue_type":"feature","owner":"bigbes@gmail.com","created_at":"2026-07-17T14:37:25Z","created_by":"Eugene Blikh","updated_at":"2026-07-17T15:52:13Z"} |
| new_value | {"assignee":"Eugene Blikh","status":"in_progress"} |
| comment | NULL |
| created_at | 2026-07-17T22:24:41Z |
| id | 019f71a0-5836-775a-9670-45d171549cb0 |
| issue_id | ah-gs7 |
| event_type | updated |
| actor | Eugene Blikh |
| old_value | {"id":"ah-gs7","title":"Ultrapack designer/validator roles via config + skills (human-scheduled)","description":"Ultrapack (github.com/bigbes/ultrapack) is an OpenCode pack, but its value is the skills (udesign/uplan/uexecute/uverify/ureview), and pi implements the Agent Skills standard — so the skills load unmodified via --skill with no porting. Stage 2 already delivers --skill materialization, task_types and per-task frontmatter roles, so multi-role work needs ZERO daemon code today: add designer/validator roles to config pointing at ultrapack skill packages under skills_dir, and let a human drag cards between them. State carries between runs in docs/tasks/\u003cslug\u003e.md on the task branch. Do this BEFORE automating the handoff (ah-0ge slice): it validates whether the roles are actually good while the orchestration is still free.\nUltrapack agents/ do NOT get ported — see the delegation-loop beads; agents become roles, not subagents.","design":"Roles are {model, prompt} today (internal/config/config.go:72). Fork ultrapack skills into skills_dir packages; rewrite @implementer/@explorer/@reviewer subagent references (uplan/SKILL.md:126-128, uexecute/SKILL.md:37, handsoff/SKILL.md:35) out of the skill bodies — pi has no @-mention dispatch. Designer role MUST use ultrapack's handsoff skill: udesign/SKILL.md says 'Nothing is planned or written until the user approves', which deadlocks a board-driven run until the watchdog kills it as stalled.","acceptance_criteria":"A task labeled for the designer role produces a docs/tasks/\u003cslug\u003e.md with a Design section and lands In Review without stalling; dragging it to Ready under the validator role produces a review against that same file on the same branch.","notes":"HEADLESS BEHAVIOR VERIFIED 2026-07-17 (opencode/claude-haiku-4-5, pi -p --mode json, udesign loaded via --skill on a throwaway repo): the designer run did NOT deadlock. 9 turns, read/bash/write tools, stopReason=stop, and it WROTE docs/tasks/mul-div.md following udesign's structure (Invariants/Principles/Assumptions/Unknowns + TDD decision).\n\nCRITICAL REQUIREMENT for the designer role prompt: this only worked because the rendered PROMPT explicitly neutralized udesign's collaborative-approval framing — 'No human is available; you will not receive a reply; make reasonable assumptions and record them; do not end by asking a question; WRITE the result to \u003cpath\u003e'. A naive 'design X' prompt would likely trigger the skill's 'nothing until the user approves' path and land In Review with only a question and no artifact. So prompts/designer.md MUST carry the autonomy+write-artifact framing (a lighter alternative to loading the full handsoff skill; both work). Same pattern will apply to validator/ureview.\n\nAside: openai-codex provider on this box is a ChatGPT account and rejects some models (gpt-5.2 -\u003e 400 invalid_request). Use opencode/* or deepseek/* for local pi tests; daemon uses litellm anyway.","status":"in_progress","priority":2,"issue_type":"feature","assignee":"Eugene Blikh","owner":"bigbes@gmail.com","created_at":"2026-07-17T14:37:25Z","created_by":"Eugene Blikh","updated_at":"2026-07-17T19:24:42Z","started_at":"2026-07-17T19:24:42Z"} |
| new_value | {"notes":"DELIVERED + COMMITTED (982694f) 2026-07-17. Artifacts: skills/design (adapted from ultrapack udesign — autonomous, no wait-for-approval, records ### Decisions), skills/validate (single-agent review distilled from ultrapack ureview's reviewer criteria — confidence\u003e=80, severity-tiered, never edits code), prompts/designer.md + prompts/validator.md (autonomy framing verified to prevent headless stalls), config.example.yaml wiring (skills_dir=skills, designer/validator roles, type:design/type:review task_types), README Roles section.\n\nCOMPONENT-VERIFIED headless on pi 0.73.1 (opencode/claude-haiku-4-5): both skills load under --no-skills via --skill; designer produced docs/tasks/multiply-and-divide.md with full ## Design + IV/PC/AS/UK + TDD + ### Decisions, clean stop, no stall; validator wrote ## Review with a changes-requested verdict and did NOT edit code. config.example loads (TestLoadExample green).\n\nNOT verified: the literal live daemon+board flow (label-\u003etask_type-\u003erole-\u003erun) — infra-gated. Tracked as a follow-up depending on ah-k23.\n\nDesign notes: udesign/ureview were ADAPTED not vendored verbatim — udesign is collaborative and references ultrapack-only skills (uplan/handsoff/references), and ureview is built around a dispatcher+@reviewer split that doesn't fit a single agent. The @-subagent references live only in the executor skills (uexecute/uplan/handsoff/ureview), so designer+validator needed minimal @-rewrite."} |
| comment | NULL |
| created_at | 2026-07-17T22:49:21Z |
| id | 019f71a0-5c13-77f7-b936-8d446f050376 |
| issue_id | ah-gs7 |
| event_type | closed |
| actor | Eugene Blikh |
| old_value | |
| new_value | Designer/validator roles delivered and component-verified (skills + prompts + config, committed 982694f); both roles produce the right artifacts headless on pi 0.73.1. Live daemon+board acceptance tracked as a follow-up gated on ah-k23 infra. |
| comment | NULL |
| created_at | 2026-07-17T22:49:22Z |
No comments.
Close reason