feat: phases + tasks — per-task execution with phase directories
- A phase is now a directory: 00_phase.md (overview + task index) plus small, quick NN_task.md task files; complete/ mirrors todo/ - Task is the unit of execution: run-task.sh (one unit), run-phase.sh (phase to completion incl. 00_phase.md final pass), auto-phase.sh (all units in order); validate.sh gate runs after every task - PHASE_COMMIT commits at phase boundaries (00_phase.md / legacy file moves) - Legacy flat todo/NN_name.md files still execute as a single unit; new migrate-phases-to-tasks.sh converts them to the directory layout - phase-status.sh reports per-task state and the next unit - New task-template.md; phase templates now carry a Tasks index
This commit is contained in:
@@ -95,37 +95,41 @@ for d in workflows features user_stories; do
|
||||
done
|
||||
todo_dir="$root/.agent/phases/todo"
|
||||
complete_dir="$root/.agent/phases/complete"
|
||||
if [[ -d "$todo_dir" ]]; then
|
||||
echo " .agent/phases/todo:"
|
||||
any=0
|
||||
for f in "$todo_dir"/*.md; do
|
||||
if [[ -e "$f" ]]; then
|
||||
echo " $(basename "$f")"
|
||||
list_phases() {
|
||||
local dir="$1" entry n t any=0
|
||||
for entry in "$dir"/*; do
|
||||
if [[ ! -e "$entry" ]]; then continue; fi
|
||||
n="$(basename "$entry")"
|
||||
if [[ "$n" =~ ^[0-9] ]]; then
|
||||
if [[ -d "$entry" ]]; then
|
||||
t="$(ls -1 "$entry" 2>/dev/null | grep -cE '\.md$' || true)"
|
||||
echo " $n/ ($t file(s): 00_phase.md + tasks)"
|
||||
else
|
||||
echo " $n (legacy single-file phase)"
|
||||
fi
|
||||
any=1
|
||||
fi
|
||||
done
|
||||
if (( ! any )); then echo " (empty)"; fi
|
||||
}
|
||||
if [[ -d "$todo_dir" ]]; then
|
||||
echo " .agent/phases/todo:"
|
||||
list_phases "$todo_dir"
|
||||
a=1
|
||||
fi
|
||||
if [[ -d "$complete_dir" ]]; then
|
||||
echo " .agent/phases/complete:"
|
||||
any=0
|
||||
for f in "$complete_dir"/*.md; do
|
||||
if [[ -e "$f" ]]; then
|
||||
echo " $(basename "$f")"
|
||||
any=1
|
||||
fi
|
||||
done
|
||||
if (( ! any )); then echo " (empty)"; fi
|
||||
list_phases "$complete_dir"
|
||||
a=1
|
||||
fi
|
||||
if (( ! a )); then echo " (no .agent/ artifacts — full conversion needed)"; fi
|
||||
|
||||
max=0
|
||||
for d in "$todo_dir" "$complete_dir"; do
|
||||
for f in "$d"/*.md; do
|
||||
if [[ ! -e "$f" ]]; then continue; fi
|
||||
n="$(basename "$f" .md)"
|
||||
[[ -d "$d" ]] || continue
|
||||
for entry in "$d"/*; do
|
||||
if [[ ! -e "$entry" ]]; then continue; fi
|
||||
n="$(basename "$entry" .md)"
|
||||
if [[ "$n" =~ ^([0-9]+) ]]; then
|
||||
n=$((10#${BASH_REMATCH[1]}))
|
||||
if (( n > max )); then max=$n; fi
|
||||
|
||||
Reference in New Issue
Block a user