Skip to content

add /ctx-task-out — close the spec→implement gap in the canonical chain#129

Merged
josealekhine merged 8 commits into
mainfrom
feat/skill-updates
Jul 4, 2026
Merged

add /ctx-task-out — close the spec→implement gap in the canonical chain#129
josealekhine merged 8 commits into
mainfrom
feat/skill-updates

Conversation

@josealekhine

Copy link
Copy Markdown
Member

Summary

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" — which nothing in the chain produced. This PR adds the
missing fourth step:

/ctx-brainstorm → /ctx-plan → /ctx-spec → /ctx-task-out → /ctx-implement
    (vague)     (contested)  (committed)   (decomposed)     (execution)

/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.
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-5 sessions fell to the 200k default and the
check-context-size hook warned "104% full" on a 79%-free 1M session.

Commits

  1. 7c1eb0e3 — add /ctx-task-out (Spec: specs/ctx-task-out.md)
    • New skill, claude + copilot-cli parity (generated via
      hack/sync-copilot-skills.sh), registered in the permissions
      allowlist and ctx init workflow tips
    • 5-step chain across skills, playbook templates, and docs
    • /ctx-spec: tasking handoff in interactive and --brief flows
    • /ctx-implement: names specs/plans/<milestone>.md as canonical
      input, redirects bare multi-milestone specs, refuses
      Status: Blocked plans, owns plan checkbox updates
    • Project template specs-README lifecycle gains the task-out step
    • Docs: skills reference (including the previously missing
      /ctx-plan section and its dead anchor), common-workflows,
      integrations, three recipes
  2. 500c4a07 — fix context window detection
    (Spec: specs/model-context-window-fable.md)
    • ModelContextWindow maps the always-1M families: fable,
      mythos, sonnet-5 (alongside existing opus and [1m])
    • sonnet-4-6 deliberately unchanged (Claude Code gates its 1M
      behind the [1m] opt-in — see spec Non-Goals and DECISIONS.md)
  3. 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:

  1. Gate behavior — blocking-TBD refusal, rolling-wave refusal,
    Status: Blocked reachable only via amendment (fresh runs refuse
    and write nothing)
  2. Authority discipline — decompose, don't redesign the bet;
    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
  3. Execution ledger — plan owns task/DoD checkboxes,
    /ctx-implement updates them, rolling-wave gate reads DoD only
  4. Amendment mode — obsolete-and-append, ids never reused,
    acceptance criteria never edited in place once a task starts
  5. Chain-text consistency — grep for 4-step remnants returns none

Verification

  • Full gate green pre- and post-commit: build, 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 affected
    execution flows, risk LOW
  • Window fix verified by table test (fable/mythos/sonnet-5 → 1M;
    sonnet-4-6 → 200k pinned)
  • Blocking-TBD gate verified read-only against zhc/os
    specs/v1-substrate.md (D-001 open → refusal fires by construction)

Not in this PR / follow-ups

  • site/ regeneration (make site) — generated output, rebuilt
    separately
  • Reinstall (make build && sudo make install) so the live hook
    stops misreporting and the plugin picks up the skill
  • First real /ctx-task-out run: zhc/os v1-substrate.md m0a
    (expected: D-001 refusal; then the plan after D-001 resolves)
  • docs/reference/skills.md drift sweep: 7 skills still
    undocumented (ctx-architecture-enrich, ctx-code-review,
    ctx-config, ctx-dream, ctx-explain, ctx-refactor,
    ctx-serendipity) plus a stale ctx-prompt row
  • allow.txt / write.yaml omit /ctx-plan itself (pre-existing)

josealekhine and others added 8 commits July 3, 2026 23:27
First real consumption of the 5-step chain (zhc/os m0a) showed the
operator reverse-engineering the pipeline's mental model from skill
texts: /ctx-plan is absent from design-before-coding.md's TL;DR, and
nothing documents brief-per-bet vs plan-per-milestone altitude, the
rolling-wave and blocking-TBD gates from the operator's seat, the
ledger/projection two-surface rule, or when a new brief is warranted.
Seven-point recipe task added to Misc (priority high). Follow-up
surfaced by the ctx-task-out work order's first consumer; documenting
the chain it completed inherits its spec.

Spec: specs/ctx-task-out.md
Signed-off-by: Jose Alekhinne <jose@ctx.ist>
The machine-readiness question ("can this box build, lint, site-render,
and reach the MCP servers?") had no single answer; gaps surfaced
mid-task instead of up front — a doc-link session discovered zensical
and pipx missing only after the source edits were done, and this very
machine could not run make lint until today. One manifest
(hack/tool-versions.txt) pins minimums; one script probes PATH
binaries, npm drift, and claude-registered MCP servers and prints one
verdict table. Required failures (go, git, golangci-lint) exit
non-zero; optional ones warn; probes degrade to SKIP without network
or the claude CLI, never hang.

Spec: specs/check-tools.md
Signed-off-by: Jose Alekhinne <jose@ctx.ist>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A reported 404 on recipes/activating-context/ turned out to be one of
four breakage classes: two nav entries pointing at recipes deleted by
the cwd-anchored change, six absolute ctx.ist URLs stranded by old
restructures (README's manifesto/cli-reference/context-files/
integrations links, a blog autonomous-loop link, configuration.md's
self-reference), ten intra-doc anchors orphaned when commands were
re-homed to their own CLI pages, and a /ctx-prompt row surviving the
prompt-template removal. Every replacement URL was verified live
before the edit; zensical's build-time anchor checker now reports
zero issues.

Spec: specs/docs-link-integrity.md
Signed-off-by: Jose Alekhinne <jose@ctx.ist>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Prose shipped from AI-assisted sessions carries recognizable tells
(significance inflation, brochure language, forced triplets, em-dash
density, chatbot residue) and readers increasingly discount text that
pattern-matches to machine output; hack/detect-ai-typography.sh flags
the typography but nothing fixed the writing. The skill splits a
1,024-line first draft into a ~200-line rule sheet (invariants, modes,
protected content, cluster-based detection) and an on-demand
28-pattern before/after catalog under references/. Guardrails a live
test shaped: voice additions must trace to the author's material,
filler deletion is not coverage loss, removing fake attribution must
not silently strengthen a claim, and the em-dash ban is verified by
grep rather than eyeball.

Spec: specs/ctx-humanize.md
Signed-off-by: Jose Alekhinne <jose@ctx.ist>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A session's cost and context pressure were invisible while it runs;
ctx usage reports tokens only after the fact. ctx system statusline
renders the statusLine stdin payload as one sanitized line
(user@host dir | model | ctx: N% | $C.CC) and ctx init wires it into
settings.local.json, backing up any pre-existing statusLine to
.context/state/ and restoring it on statusline.enabled: false. The
line is deliberately informational: no spend alarms and no
model-switch nudges, because a family-substring rule has no task
context and cost-per-turn is the wrong unit (the spec's Decisions
section records the full rationale).

Also fixes a latent data-loss bug this feature would have tripped:
the permissions merge round-tripped settings.local.json through a
typed struct, silently dropping every key ctx does not model (env,
statusLine, ...) on re-init. Both merges now do raw-map surgery so
unmodeled keys survive byte-for-byte.

Includes the rebuilt site/ for this session's docs changes.

Spec: specs/statusline.md
Signed-off-by: Jose Alekhinne <jose@ctx.ist>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This repository is public but is developed alongside internal
tooling, and tracked files had accumulated identifiers that do not
belong in a public tree: internal hostnames and a mirror-repo name in
two archived specs and DECISIONS.md, and internal-lineage notes in a
task entry, a spec cross-reference, and the experimental-skill
headers. Redactions preserve each sentence's meaning and every
structure invariant (tasks edited in place, decisions keep their
rationale); designs stay described on their own merits, without
attribution. TASKS.md also carries this session's ledger entries
(check-tools, ctx-humanize, delta analysis, statusline: all closed).

Spec: specs/public-repo-hygiene.md
Signed-off-by: Jose Alekhinne <jose@ctx.ist>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The deployed CLAUDE.md and Copilot INSTRUCTIONS treated a missing ctx
binary as fatal ("CRITICAL, not optional": relay, STOP), which
punishes exactly the contributor the templates first meet: someone
who cloned a ctx-using project without installing ctx got an agent
that refused ordinary work. Both templates now distinguish not-found
(mention the setup once, then proceed with the task; the Claude
variant recommends installing the plugin from a local clone since
marketplace releases lag the repository) from installed-but-erroring
(unchanged: relay verbatim, STOP, recovery is the user's decision).

Spec: specs/optional-ctx-onboarding.md
Signed-off-by: Jose Alekhinne <jose@ctx.ist>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Jose Alekhinne <jose@ctx.ist>
@josealekhine josealekhine self-assigned this Jul 4, 2026
@josealekhine josealekhine requested a review from bilersan as a code owner July 4, 2026 22:44

@usirin usirin left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@josealekhine josealekhine merged commit a0e5cbf into main Jul 4, 2026
17 checks passed
@josealekhine josealekhine deleted the feat/skill-updates branch July 4, 2026 22:48
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.

2 participants