Skip to content

Status skills on three axes + planners that close open decisions per batch (0.2.0) - #10

Merged
elmayii merged 13 commits into
mainfrom
feat/8-status-and-gap-closing-planners
Sep 20, 2026
Merged

elmayii merged 13 commits into
mainfrom
feat/8-status-and-gap-closing-planners

Conversation

@elmayii

@elmayii elmayii commented Sep 19, 2026 •

Copy link
Copy Markdown
Owner

What

Two things the maintainer had been doing by hand for three months, moved into the package (Sprint 10, issue #8):

  1. Planners close each batch's open decisions with the human before writing it. cdev-planner shows the batch grouping, then goes batch by batch — questions with suggested answers and one recommended → answers recorded → that batch written → next. No open decision, no question; the prompt is never handed back for confirmation. With no human present, a batch with open decisions is written BLOCKED, never READY. cdev-monorepo-planner applies the rule by path reference, per SYSTEM_BATCH.
  2. cdev-status and cdev-monorepo-status — read-only readings of where a sprint stands on three axes (functional requirements, non-functional requirements, user stories), engineered at read time from the raw chain sprint → batch → handoff. The plan's format does not change: there is no requirement list to keep current.

Plus: field evidence and the RFC, live docs, version 0.2.0, and the sprint report (docs/develop/reports/s10.md — including what was deliberately not built and why).

Draft on purpose. The merge waits on two things:

  • the maintainer's "accepted" summary on the RFC — [RFC] Planners close each batch's open decisions with the human before writing it #9
  • S10-B06 closed. The field exercise was run on 2026-09-20 — by the agent, at the maintainer's request, on local clones of a real workspace (never the real trees) — and is recorded in AGENT_PROGRESS.md. What remains are the two judgments only the maintainer can make: is every requirement and story in the produced status one they recognise (B7), and is it the status they used to ask for by hand (B9)

Merge by merge commit, not squash: the branch carries one commit per batch by design.

Layer

Core (the planner rule — RFC: Discussion #9, field evidence: docs/develop/reports/s10-field-evidence.md) + skill (the two status skills: read-only, the loop is untouched, so no RFC; recorded in DECISIONS 2026-09-19) + docs.

Evidence

Everything below is recorded per check in docs/develop/AGENT_PROGRESS.md, newest-first.

  • Planner rule — sandbox, fresh subagents, hand-conditioned fixture. Attended: fixture state captured at six stops — nothing written at the first, then sprint header, then one batch after each round of answers, across five batches; lettered options with one recommended; a permission question; a free-text answer taken; an overruled recommendation honoured; a fully specified batch written with no question. Unattended: the undecided batch BLOCKED with two named decisions and a suggested answer each. Baseline (main's planner, same scenario): one up-front round, then four batches at once and five assumptions its own report says "the human has NOT seen".

  • cdev-status — sandbox, cold, fresh subagents: cold start (twice), since, not-derivable, unconditioned repo; every fixture left with a clean tree. The first round found three defects in the skill's own text (the repo's working rules counted as non-functional requirements; two figures per axis; length) — fixed and re-exercised. The not-derivable clause took four attempts; three are on record as the fixtures' fault, one of them discounted because the fixture's commit message leaked the answer.

  • cdev-monorepo-planner pointer and cdev-monorepo-status: sandbox not-run, declared (scripts/sandbox.ps1 builds single repositories only) — field-exercised instead, headless with --plugin-dir, on clones of a real workspace. Planner, launched bare: pointer followed, grouping first, questions per SYSTEM_BATCH before each write (clone untouched after the first turn), system-level and permission decisions raised, an answer pushed back on where it collided with a repository's local protocol. Status: the first run fanned out to three subagents and died on the usage limit with nothing delivered; "read narrowly" brought it to ~4 USD and a delivered status that led with local truth — and over-corrected (it skipped contracts, decisions and local handoffs, and its own method note said so); now "slices, never fewer sources", regression-checked on a fixture, not yet re-run on a real workspace.

  • claude plugin validate . passes

  • Changed skills/profiles exercised in a sandbox fixture — single-repo skills yes; multi-repo skills not-run, covered by the pending field exercise (protocol §4, local line)

  • CHANGELOG.md updated if behavior changed — ## [0.2.0]

Closes #8

🤖 Generated with Claude Code

elmayii and others added 13 commits September 19, 2026 16:09
…DONE

PR #5 was merged on 2026-08-16 (ec82495) and the handoff entry recorded the
close, but SPRINTS.md still read Sprint 09 ACTIVE / B01 IN_PROGRESS. Reported
as a planning bug by the planner and corrected with human approval.

Refs #8

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…s (PROPOSAL)

Seven batches, each written after its own question round with the human.
Planner change is core (RFC + field evidence, B01); cdev-status and
cdev-monorepo-status are new read-only skills. The plan's format does not
change: progress is engineered at read time from sprint -> batch -> handoff,
not from a maintained requirement list (human decision, recorded in DECISIONS).

Refs #8

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The planner drafted it as PROPOSAL and never activates a sprint; the state
change is written on the human's explicit ratification of 2026-09-19.

Refs #8

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Anonymized record mined from the maintainer's prompt history and surviving
transcripts: 16 planner launches (10 with a hand-written gap-closing line,
5 per-batch), the 2026-08-16 incident and rollback, two further failure
shapes, the reference run; the three-axis status as accepted in the field and
how it was actually produced; an explicit "not evidenced" section.
rfc-process.md gains the interim rule: no RFC category yet, so RFCs open in
Ideas with an [RFC] prefix.

Refs #8

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Second commit of B01 by necessity: the RFC links the evidence by commit
permalink, so the evidence had to land and be pushed first.

Refs #8

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ing it

Core change (RFC: Discussion #9). cdev-planner gains the rule's single home:
show the grouping, then batch by batch - questions with suggested answers and
one recommended, answers recorded, that batch written, next. No open decision,
no question; the human's prompt is never handed back for confirmation. With no
human present a batch with open decisions is written BLOCKED, never READY.
cdev-monorepo-planner applies it by path reference, per SYSTEM_BATCH.

Exercised in sandbox: attended (ask -> write interleaved across five batches,
state captured at every stop), unattended (BLOCKED with named decisions), and
a baseline against main's planner (one up-front round, then four batches and
five assumptions the human never saw). Monorepo planner: sandbox not-run, no
workspace fixture - protocol section 4 now says a recorded human field
exercise stands in (B06).

Refs #8

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ad time

New read-only skill. Functional requirements, non-functional requirements and
user stories are derived when asked, from the raw chain sprint -> batch ->
handoff (plus decisions and git); the plan holds no requirement list to keep
current. Every item cites its source, percentages are estimates and say so,
`since` derives a delta from git history, an unsupported axis reads "not
derivable". It edits nothing and marks nothing.

Exercised cold in sandbox by fresh subagents: cold start (twice), since,
not-derivable, unconditioned repo. The first round found three defects in the
skill's own text (process rules counted as NFRs, two figures per axis,
length) - fixed and re-exercised. The not-derivable clause took four attempts;
the first three are recorded in the handoff, one of them discounted because
the fixture's commit message leaked the answer.

Refs #8

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
New read-only skill for a conditioned workspace. Applies cdev-status by path
reference (the method has one home) and adds only what is system-level:
contracts as a source, local truth - each repository's own plan and handoff,
read in the repository, divergence flagged and the repository's state
reported, the state snapshot never deciding - and one compact per-repository
table.

Static checks, plugin validation and a live load pass. Sandbox: not-run,
declared - no workspace fixture exists. Its evidence is the human field
exercise of B06; the sprint does not close without it.

Refs #8

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
README, doc 08, CONTRIBUTING and doc 09 list cdev-status and
cdev-monorepo-status and count nine skills. plugin.json goes to 0.2.0 and the
CHANGELOG's Unreleased section becomes 0.2.0 in the same commit (semver per
CONTRIBUTING: compatible capabilities). Tag, release and marketplace pin
happen after the merge, from main, by the human - commands in the handoff.

Refs #8

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ked on the human

No workspace fixture exists, so cdev-monorepo-planner's pointer and the whole
of cdev-monorepo-status cannot be exercised in sandbox. The script has the
human load the branch with --plugin-dir (and prove it is the branch), run the
planner bare on a throwaway objective and discard the output, then run the
status cold in a fresh session on their real SYSTEM sprint. B06 stays BLOCKED
until they report back; the sprint does not close and the PR is not merged
without that entry.

Refs #8

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ocked on B06

Full protocol sequence green over nine skills. Report covers what was added,
what was deliberately not built and why, what the exercises taught, and the
verification debt that remains - above all that cdev-monorepo-status has
never been seen running. B07 cannot close before B06: it waits on the human's
field exercise, and the merge additionally on the RFC's summary (#9).

Refs #8

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Refs #8

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
At the human's request the agent ran the field exercise itself, on local
clones of a real workspace (never the real trees: clones outside this repo,
origin removed). The planner held on A1-A3, A5, A6, A8. The first status run
fanned out to three subagents and died on the usage limit with nothing
delivered; "read narrowly" brought it to ~4 USD and a delivered status that
led with local truth - and over-corrected, skipping contracts, decisions and
local handoffs, which its own method note admitted. Now: slices, never fewer
sources, and name whatever was not opened. Regression on a fixture passes;
that last wording is unexercised on a real workspace.

Protocol section 4 and DECISIONS record the agent-run variant. B06 stays
BLOCKED on the two judgments only the human can make (B7, B9).

Refs #8

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@elmayii
elmayii marked this pull request as ready for review September 20, 2026 07:42
@elmayii
elmayii merged commit 3e63e79 into main Sep 20, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Status skills on three axes + planners that close gaps per batch before writing

1 participant