add /ctx-task-out — close the spec→implement gap in the canonical chain#126
Merged
Conversation
…hain The design-to-implementation chain had an unowned artifact: /ctx-plan disclaims implementation planning, /ctx-spec commits the what/why at spec altitude, and /ctx-implement opens with "use when you have a plan document" that nothing in the chain produced. /ctx-task-out decomposes a committed spec into a per-milestone plan at specs/plans/<milestone>.md - data model, contracts, invariant test matrix, and commit-sized tasks with falsifiable acceptance criteria - and enforces refusal gates instead of degrading: blocking-TBD, rolling-wave, and milestone boundaries owned by the spec. The plan is the execution ledger; TASKS.md carries epic anchors only. Changes: - new skill (claude + copilot-cli parity), registered in the permissions allowlist and init workflow tips - chain diagrams updated to 5 steps across skills, playbook templates, and docs - /ctx-spec gains the tasking handoff in interactive and --brief flows; /ctx-implement names the plan artifact, redirects bare multi-milestone specs, refuses Status: Blocked plans, and owns plan checkbox updates - project template specs-README lifecycle gains the task-out step - docs: skills reference (including the missing /ctx-plan section and its dead anchor), common-workflows, integrations, recipes Spec: specs/ctx-task-out.md Signed-off-by: Jose Alekhinne <jose@ctx.ist>
ModelContextWindow recognized 1M windows only via the [1m] suffix or the opus substring, so claude-fable-5 sessions fell through to the 200k default and every consumer of EffectiveContextWindow - the check-context-size hook, heartbeat, nudges, provenance - computed against the wrong window (a 21%-used 1M session warned "104% full"). Map the always-1M families: fable, mythos, and sonnet-5 (1M as standard per the current model catalog; earlier Sonnets keep the [1m] opt-in path, deliberately unchanged). Spec: specs/model-context-window-fable.md Signed-off-by: Jose Alekhinne <jose@ctx.ist>
Lockfile hash additions picked up by the Go toolchain; no dependency changes in go.mod/go.work. Spec: specs/meta/chores.md Signed-off-by: Jose Alekhinne <jose@ctx.ist>
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.
Summary
The design-to-implementation chain had an unowned artifact:
/ctx-plandisclaims implementation planning,
/ctx-speccommits the what/why atspec altitude, and
/ctx-implementopens with "use when you have aplan document" — which nothing in the chain produced. This PR adds the
missing fourth step:
/ctx-task-outdecomposes a committed spec into a per-milestone planat
specs/plans/<milestone>.md— data model, contracts, invariant testmatrix, and commit-sized tasks with falsifiable acceptance criteria.
Its signature move matches the rest of the chain: it refuses to run
ahead of its inputs (blocking-TBD gate, rolling-wave gate, milestone
boundaries owned by the spec) rather than degrading. The plan is the
execution ledger; TASKS.md carries epic-level anchors only.
Also included: a fix for Claude 5 family context-window detection —
claude-fable-5sessions fell to the 200k default and thecheck-context-size hook warned "104% full" on a 79%-free 1M session.
Commits
7c1eb0e3— add /ctx-task-out (Spec: specs/ctx-task-out.md)hack/sync-copilot-skills.sh), registered in the permissionsallowlist and
ctx initworkflow tips/ctx-spec: tasking handoff in interactive and--briefflows/ctx-implement: namesspecs/plans/<milestone>.mdas canonicalinput, redirects bare multi-milestone specs, refuses
Status: Blockedplans, owns plan checkbox updatesspecs-READMElifecycle gains the task-out step/ctx-plansection and its dead anchor), common-workflows,integrations, three recipes
500c4a07— fix context window detection(
Spec: specs/model-context-window-fable.md)ModelContextWindowmaps the always-1M families:fable,mythos,sonnet-5(alongside existingopusand[1m])sonnet-4-6deliberately unchanged (Claude Code gates its 1Mbehind the
[1m]opt-in — see spec Non-Goals and DECISIONS.md)f37fd9fe— chore: refresh go.work.sum(
Spec: specs/meta/chores.md)Design notes for reviewers
The skill went through two external review rounds before landing.
Load-bearing pieces to scrutinize, in the order the work order's
Review section prescribes:
Status: Blockedreachable only via amendment (fresh runs refuseand write nothing)
invariants come from the spec (unstated invariant = spec gap, mark
TBD, never mint); TBD resolutions live in the spec or DECISIONS.md,
the plan only points at them
/ctx-implementupdates them, rolling-wave gate reads DoD onlyacceptance criteria never edited in place once a task starts
Verification
go vet,gofmt,lint-drift, style/version/why/copilot-sync checks,go test ./...zero failures (golangci-lint runs in CI; not installed locally)
gitnexus detect_changes: 66 symbols across 21 files, 0 affectedexecution flows, risk LOW
fable/mythos/sonnet-5→ 1M;sonnet-4-6→ 200k pinned)specs/v1-substrate.md(D-001 open → refusal fires by construction)Not in this PR / follow-ups
site/regeneration (make site) — generated output, rebuiltseparately
make build && sudo make install) so the live hookstops misreporting and the plugin picks up the skill
/ctx-task-outrun: zhc/osv1-substrate.mdm0a(expected: D-001 refusal; then the plan after D-001 resolves)
docs/reference/skills.mddrift sweep: 7 skills stillundocumented (
ctx-architecture-enrich,ctx-code-review,ctx-config,ctx-dream,ctx-explain,ctx-refactor,ctx-serendipity) plus a stalectx-promptrowallow.txt/write.yamlomit/ctx-planitself (pre-existing)