Prompt-file lifecycle: draft/ active/ complete/ — structure + rewire (PR-A, #71) - #72
Merged
Merged
Conversation
scripts/lifecycle.py — stdlib-only engine for the draft/ active/ complete/ state split (issue #71). Subcommands: move (active->complete/YYYY/MM by the complete.md completed: date), split-complete (explode complete.md into per-task records), migrate (classify legacy files, ledger-backed only), check (drift guard, mirrors repos_sync --check). Validated against live complete.md: 554 entries parse (542 dated), filenames sanitised (safe_name) so slugs with spaces/slashes round-trip; check OK on current ledgers. Structural moves + skill/script rewire deferred pending the docs/ conflation decision (see #71). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ewire (#71) Advance the prompt-FILE lifecycle in lockstep with the task ledger: draft/<work-type>/<target>/ not started (was the bare work-type dirs) active/ issued, in flight (was issued/) complete/<YYYY>/<MM>/ shipped (rich records; see complete/AGENTS.md) Structural (git mv, history preserved): - issued/ -> active/ (440 files; the intelligent sort into complete/ is PR-B) - work-type dirs (feature/ bug/ refactor/ docs/ test/ maintenance/ research/ triage/) -> draft/; docs/ split — Type:-headed prompts -> draft/docs/, the reference material (docs/pyautobrain/spawn_spec.md etc.) stays in docs/ - new complete/ + complete/AGENTS.md (archive schema) Rewire: - scripts/spawn.py rules: draft/* SKELETON, active/*+complete/* DROP, complete/AGENTS.md KEEP (first-match); docs/pyautobrain/spawn_spec.md spec table updated to match. spawn dry-run: unmatched none. - scripts/status.sh: draft/ inventory, LIFECYCLE_DIRS active/complete, complete_count from complete/ records (falls back to complete.md). - scripts/prompt_sync.sh: idea-sweep excludes active/ + complete/. - docs: AGENTS.md, README.md, REFERENCE.md, ROUTING.md. lifecycle.py check OK; draft->active->complete round-trip smoke passed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This was referenced Jul 13, 2026
Merged
Jammy2211
pushed a commit
that referenced
this pull request
Jul 14, 2026
…as env drift, parked at env fork
Jammy2211
pushed a commit
that referenced
this pull request
Jul 14, 2026
Jammy2211
pushed a commit
that referenced
this pull request
Jul 14, 2026
… (Heart RED→YELLOW on fresh mode=release v66001)
Jammy2211
added a commit
that referenced
this pull request
Jul 27, 2026
Three separate defects, all surfaced by the nightly Spawn Drift job: 1. issued/remove_pulse_compat.md — the sole survivor of the retired flat issued/ pile. The lifecycle split (#71/#72) repointed spawn.py's ('issued/*', 'DROP') rule to 'active/*', leaving this one file with no matching rule -> UNMATCHED -> exit 1. The work it describes is done (PyAutoPulse gone, no pulse refs in PyAutoHeart) and already recorded at complete/2026/07/remove-pulse-compat.md, so it is a pure orphan. Deleted. 2. AI_POLICY.md — added org-wide today, with no spec rule, so it became the next UNMATCHED the moment (1) was cleared. It names the owning org twice, so it takes KEEP_SUB (PyAutoLabs -> YOURORG), not a verbatim KEEP. 3. CONTRIBUTING.md — was KEEP verbatim. Today's centralisation rewrote it to 'Contributing to PyAutoLabs', so a republish would have stamped PyAutoLabs branding into a fresh-slate template spawned for another org. Same defect class as (2); moved to KEEP_SUB in both rule sets. Also repoints planned.md's jax-point-source-point-smoke-sentinel entry, which pointed at issued/jax_point_source_point_smoke_sentinel.md — a 130-line diagnostic prompt dropped as 'legacy' by the lifecycle migration while the task stayed planned and unfixed. Restored verbatim to draft/bug/autolens/. spawn.py and spawn_spec.md are changed together (the spec is the source of record and the code mirrors it). After this, --check reports 'unmatched: none' + 'canary scan: clean' for both templates; the remaining drift is content staleness that a republish clears. Co-authored-by: Jammy2211 <JNightingale2211@gmail.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Jammy2211
pushed a commit
that referenced
this pull request
Aug 24, 2026
Both PRs open: - PyAutoReduce#72 (library) — distribution renamed to `pyautoreduce` - autoreduce_workspace#1 (workspace) — merges behind #72 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V19RfJbExKP4hsT5c6LttV
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.
PR-A: draft/ active/ complete/ prompt-file lifecycle — structure + engine + rewire
Part of #71 (PR-A of 2). Advances the prompt file through three top-level
states that mirror the
active.md → complete.mdledger, soissued/stopsbeing an append-only 444-file pile of done + in-flight prompts.
Structure (git mv — history preserved; ~535 of the changed files are pure renames)
issued/ → active/(440 files, wholesale rename; the intelligent sort ofthese into
complete/is PR-B).feature/ bug/ refactor/ docs/ test/ maintenance/ research/ triage/) →draft/.docs/was split: onlyType:-headed prompts moved todraft/docs/; reference material (docs/pyautobrain/spawn_spec.mdetc.)stays in
docs/.complete/+complete/AGENTS.md(archive schema).Engine
scripts/lifecycle.py(stdlib-only):move(active→complete/YYYY/MM by thecomplete.mdcompleted:date),split-complete,migrate,check(driftguard, mirrors
repos_sync --check).safe_name()sanitises slugs sospaces/
/round-trip.Rewire
spawn.pyrules (draft/* SKELETON, active/+complete/ DROP,complete/AGENTS.md KEEP first-match) +
docs/pyautobrain/spawn_spec.mdtable.status.sh(draft inventory, active/complete lifecycle dirs),prompt_sync.sh(idea-sweep excludes active/ + complete/).
AGENTS.md,README.md,REFERENCE.md,ROUTING.md.Validation
lifecycle.py checkOK;spawn.pydry-run unmatched: none (exit 0);status.shclean;draft→active→complete/2026/07round-trip smoke passed.Coupled + follow-ups
main, not this branch) —spawn --check/spawn_driftis expected reduntil then.
lifecycle.py migrate/split-completeto sortactive/intocomplete/YYYY/MM/+ splitcomplete.md, behind a review manifest.🤖 Generated with Claude Code