Skip to content

Commit a0e5cbf

Browse files
authored
Merge pull request #129 from ActiveMemory/feat/skill-updates
add /ctx-task-out — close the spec→implement gap in the canonical chain
2 parents 511a609 + dd55265 commit a0e5cbf

247 files changed

Lines changed: 43804 additions & 16231 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/skills/ctx-experimental-handoff/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ allowed-tools: Bash(specify:*), Read, Glob
77
# Hand off an intent spec to spec-kit — experimental
88

99
> **Experimental / discardable.** ctx-native port of an external
10-
> `anchor-handoff` skill. It is the delegation seam canonical ctx does
10+
> spec-handoff skill. It is the delegation seam canonical ctx does
1111
> not have: ctx's chain terminates at `/ctx-implement`, whereas this one
1212
> hands the intent spec to spec-kit. Trial it; if the seam is worth
1313
> keeping, promote it to a real `/ctx-handoff`.

.claude/skills/ctx-experimental-plan/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ allowed-tools: Read, Write, Glob, Grep, Bash(date:*)
77
# Plan scrutiny (adversarial interview) — experimental
88

99
> **Experimental / discardable.** This is a ctx-native port of an
10-
> external `anchor-plan` skill, kept as a project-level skill so it can
10+
> external plan-scrutiny skill, kept as a project-level skill so it can
1111
> be trialed and deleted without touching ctx's canonical
1212
> `/ctx-plan`. It feeds the experimental spec-kit delegation chain
1313
> `/ctx-experimental-plan → /ctx-experimental-spec →

.claude/skills/ctx-experimental-spec/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ allowed-tools: Read, Edit, Write, Glob, Grep
77
# Write an intent spec from a debrief — experimental
88

99
> **Experimental / discardable.** ctx-native port of an external
10-
> `anchor-spec` skill. It deliberately writes a **loose intent spec** in
10+
> intent-spec skill. It deliberately writes a **loose intent spec** in
1111
> a ctx-namespaced location (`.context/specs/`), separate from
1212
> spec-kit's repo-root `specs/<NNN-slug>/`, so the two trees never
1313
> collide. This differs from canonical `/ctx-spec`, which walks the full

.context/DECISIONS.md

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<!-- INDEX:START -->
44
| Date | Decision |
55
|----|--------|
6+
| 2026-07-04 | Statusline informs, never gates |
67
| 2026-07-03 | Keep sonnet-4-6 at the 200k default despite the API catalog listing 1M |
78
| 2026-06-07 | ctx-dream executor is a documented contract, not a hardcoded cron/claude assumption |
89
| 2026-06-07 | Output belongs in write/ — taxonomy and emission style (consolidated) |
@@ -110,6 +111,20 @@ For significant decisions:
110111
111112
-->
112113

114+
## [2026-07-04-152957] Statusline informs, never gates
115+
116+
**Status**: Accepted
117+
118+
**Context**: Porting a cost-aware status line whose reference design escalates to a spend alarm with a model-switch suggestion when an expensive model family is detected
119+
120+
**Decision**: Statusline informs, never gates
121+
122+
**Rationale**: A family-substring rule carries no task context: the expensive model is often the cheaper choice per outcome, and a statusline cannot see outcomes, so it must not prescribe. Alarms also only reach operators who are present and already see the dollar figure; unattended overspend belongs to loop/cron notifications
123+
124+
**Consequence**: ctx system statusline renders model, ctx%, and plain cost only; show_cost exists for screen-sharing; any future budget enforcement must be a separate, deliberate feature, not statusline creep
125+
126+
---
127+
113128
## [2026-07-03-182236] Keep sonnet-4-6 at the 200k default despite the API catalog listing 1M
114129

115130
**Status**: Accepted
@@ -656,7 +671,7 @@ that risk materializes.
656671
**Status**: Accepted
657672

658673
**Context**: Per-session, operator-specific artifacts that grow without bound
659-
and can leak host/internal identifiers (ari, asgard, broadcom-class) into public
674+
and can leak host/internal identifiers into public
660675
mirrors when the project's .context/ is committed.
661676

662677
**Decision**: Gitignore .context/handovers/; track only .gitkeep
@@ -686,8 +701,8 @@ already handles cross-machine knowledge persistence.
686701
**Decision**: Deprecate and remove ctx backup
687702

688703
**Rationale**: Hub handles persistence, backup is env-specific, wrong layer for
689-
ctx to own. No external users depend on it. Broadcom mirror issue and GVFS
690-
Linux-only dependency add maintenance burden.
704+
ctx to own. No external users depend on it. An internal mirror issue and the
705+
GVFS Linux-only dependency add maintenance burden.
691706

692707
**Consequence**: Need backup-strategy runbook before removal. Maintainer must
693708
set up replacement cron job. About 60 files to remove across CLI, config, hooks,

.context/LEARNINGS.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ DO NOT UPDATE FOR:
1717
<!-- INDEX:START -->
1818
| Date | Learning |
1919
|----|--------|
20+
| 2026-07-04 | Typed JSON round-trips silently drop user-owned keys |
2021
| 2026-07-03 | New Claude model families silently fall to the 200k default in ModelContextWindow |
2122
| 2026-06-07 | Pin an on-disk contract before splitting work across parallel agents |
2223
| 2026-06-07 | site/ is tracked build output — rebuild and bundle it with doc commits |
@@ -108,6 +109,16 @@ DO NOT UPDATE FOR:
108109

109110
---
110111

112+
## [2026-07-04-152957] Typed JSON round-trips silently drop user-owned keys
113+
114+
**Context**: The init permissions merge read settings.local.json into a typed struct and re-marshaled it, so every key ctx does not model (env, a user's statusLine) vanished on re-init
115+
116+
**Lesson**: A typed read-modify-write of a file users also edit by hand is silent data loss; unknown fields do not survive encoding/json round-trips
117+
118+
**Application**: Mutate shared JSON via raw-map surgery (map[string]json.RawMessage), rewriting only the keys ctx owns; see internal/cli/initialize/core/merge/settings.go
119+
120+
---
121+
111122
## [2026-07-03-182238] New Claude model families silently fall to the 200k default in ModelContextWindow
112123

113124
**Context**: claude-fable-5 sessions warned '104 percent full' while the 1M window was 79 percent free; ModelContextWindow only recognized the [1m] suffix and the opus substring

.context/TASKS.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2429,7 +2429,7 @@ first
24292429
the
24302430
> serendipity nag. The `dream-guard` consolidation is the second open item.
24312431
> Baseline is intentionally being frozen here for a controlled snapshot-VM
2432-
> experiment (anchor SDD / spec-kit alignment); do not assume this phase is
2432+
> experiment (SDD / spec-kit alignment); do not assume this phase is
24332433
shipped.
24342434

24352435
- [ ] Close the end-user dream UX loop: invoking /ctx-dream interactively is a
@@ -2497,6 +2497,16 @@ shipped.
24972497

24982498
### Misc
24992499

2500+
- [x] Implement ctx system statusline per specs/statusline.md: stdin-JSON render (model, ctx%, cost), .ctxrc statusline block, setup merge with backup/restore. Informational only; no gating (spec records why) #priority:medium #session:a31b3e67 #branch:main #commit:687bbd59 #added:2026-07-04-140249
2501+
2502+
- [x] Companion-tool feature-delta analysis; borrow/skip verdicts recorded in gitignored inbox/ notes (local only) #session:a31b3e67 #branch:main #commit:687bbd59 #added:2026-07-04-135227
2503+
2504+
- [x] Add ctx-humanize plugin skill (SKILL.md + references/pattern-catalog.md, docs entry) with progressive disclosure and voice guardrails. Spec: specs/ctx-humanize.md #session:a31b3e67 #branch:main #commit:687bbd59 #added:2026-07-04-134612
2505+
2506+
- [x] Add hack/check-tools.sh tooling dependency checker (manifest: hack/tool-versions.txt, make check-tools) — spec: specs/check-tools.md #session:a31b3e67 #branch:main #commit:687bbd59 #added:2026-07-04-132852
2507+
2508+
- [ ] Recipe: the full design-to-implementation pipeline from the operator's seat (new 'spec-driven-development.md' or a major fold into design-before-coding.md). Must cover, for a newcomer with zero tribal knowledge: (1) the 5-step chain INCLUDING /ctx-plan — design-before-coding.md's TL;DR currently omits the debated-brief step entirely; (2) altitude: the bet is debated once and the spec covers ALL milestones — briefs are per-bet, never per-milestone; (3) plans are just-in-time per milestone behind the rolling-wave gate (tasking distant milestones produces fiction); (4) blocking-TBD gates as the replacement for per-milestone debates — each task-out run forces exactly the decisions that milestone embeds, into DECISIONS.md; (5) two surfaces, one truth: plan = execution ledger (st column), TASKS.md epics = one-way projections over disjoint id ranges; DoD is measurement/Board-confirmed, never derived; (6) when a NEW brief happens: new bet (e.g. deferred machinery returning) or evidence falsifying the committed bet — never relitigating from below; (7) a worked multi-milestone example, not a one-session feature. Origin: zhc/os session a63353a3 (2026-07-03) — the operator had to reverse-engineer all seven from skill texts and agent explanations #priority:high #session:a63353a3 #branch:main #commit:511a609a #added:2026-07-03-232251
2509+
25002510
- [ ] Tighten /ctx-spec (and /ctx-implement) skills to bake in spec-kit's one
25012511
good discipline without adopting spec-kit: every /ctx-spec must end with (a)
25022512
explicit, testable acceptance criteria and (b) a derived, dependency-ordered
@@ -2507,3 +2517,11 @@ shipped.
25072517
memory + adversarial /ctx-plan; avoid two-constitutions double-bookkeeping).
25082518
#priority:medium #session:210b77dd #branch:main #commit:6b0d0107
25092519
#added:2026-06-27-222130
2520+
2521+
### Future
2522+
2523+
- [ ] Hub curation: immutable promotion ledger (who accepted what, when, why) + mechanical validate floor for shared knowledge; revisit when ctx hub grows team-curation workflows #priority:low #session:a31b3e67 #branch:main #commit:d800734c #added:2026-07-04-153004
2524+
2525+
- [ ] ctx-spec-views skill: manager-facing read-models (execution plan, spec briefs, task breakdowns) generated FROM specs/, never source of truth; spec it when someone actually needs the leadership view #priority:low #session:a31b3e67 #branch:main #commit:d800734c #added:2026-07-04-153004
2526+
2527+
- [ ] KB convention: pinned upstream corpus for grounding — document a snapshot mode (dated local copy of high-churn upstream docs as the citable byte-stream) in KB rules; no code needed #priority:low #session:a31b3e67 #branch:main #commit:d800734c #added:2026-07-04-153004

Makefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
.PHONY: build ctxctl test vet fmt fmt-context lint lint-style lint-drift lint-shellcheck lint-powershell \
66
clean all release build-all help \
77
test-coverage smoke site site-feed site-serve site-serve-lan site-setup audit check plugin-reload \
8-
journal journal-serve journal-serve-lan gpg-fix gpg-test register-mcp reinstall \
8+
journal journal-serve journal-serve-lan gpg-fix gpg-test register-mcp reinstall check-tools \
99
sync-version check-version-sync sync-why check-why sync-copilot-skills check-copilot-skills sync-steering check-steering gemini-search \
1010
gitnexus-version gitnexus-update install-ctxctl reinstall-ctxctl
1111

@@ -276,6 +276,10 @@ gpg-fix:
276276
gpg-test:
277277
./hack/gpg-fix.sh --test
278278

279+
## check-tools: Verify tooling dependency versions (Go, Node, GitNexus, MCP servers, ...)
280+
check-tools:
281+
@./hack/check-tools.sh
282+
279283
## register-mcp: Register all MCP servers (gemini-search, gitnexus) with Claude Code
280284
register-mcp:
281285
@./hack/register-gemini-search.sh

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ vendor lock-in.
1919
`ctx` is infrastructure for preserving intent under scale. Without durable
2020
context, intelligence resets. With `ctx`, creation compounds.
2121

22-
Read the full **[Manifesto](MANIFESTO.md)** | **[ctx.ist/manifesto](https://ctx.ist/manifesto/)**
22+
Read the full **[Manifesto](MANIFESTO.md)** | **[ctx.ist](https://ctx.ist/)**
2323

2424
## The Thesis
2525

@@ -36,7 +36,7 @@ Read the full **[Thesis](https://ctx.ist/thesis/)**
3636

3737
| Document | Context |
3838
|-------------------------------------------------------------------|-----------------------------------------------------|
39-
| [Manifesto](https://ctx.ist/manifesto/) | Philosophy: creation, context, verification |
39+
| [Manifesto](https://ctx.ist/) | Philosophy: creation, context, verification |
4040
| [The Thesis](https://ctx.ist/thesis/) | Whitepaper: context as deterministic state |
4141
| [Design Invariants](https://ctx.ist/reference/design-invariants/) | System properties that must always hold |
4242
| [Tool Comparison](https://ctx.ist/reference/comparison/) | How `ctx` differs from .cursorrules, Aider, Copilot |
@@ -165,9 +165,9 @@ recipes are the right next stop.
165165
|-------------------------------------------------|----------------------------------------|
166166
| [Getting Started](https://ctx.ist) | Installation, quick start, first steps |
167167
| [Recipes](https://ctx.ist/recipes/) | Practical workflow guides |
168-
| [CLI Reference](https://ctx.ist/cli-reference/) | All commands and options |
169-
| [Context Files](https://ctx.ist/context-files/) | File formats and structure |
170-
| [Integrations](https://ctx.ist/integrations/) | Claude Code, Cursor, Aider setup |
168+
| [CLI Reference](https://ctx.ist/cli/) | All commands and options |
169+
| [Context Files](https://ctx.ist/home/context-files/) | File formats and structure |
170+
| [Integrations](https://ctx.ist/operations/integrations/) | Claude Code, Cursor, Aider setup |
171171
| [Operations](https://ctx.ist/operations/) | Runbooks, day-to-day, hub deployment |
172172
| [Security](https://ctx.ist/security/) | Trust model, audit trail, permissions |
173173

docs/blog/2026-01-27-building-ctx-using-ctx.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ The core idea was simple:
8282
[**Ralph Loop**][ralph] (*An iterative AI development workflow*)
8383
had produced a working CLI:
8484

85-
[ralph]: https://ctx.ist/autonomous-loop/ "Autonomous Loop"
85+
[ralph]: https://ctx.ist/operations/autonomous-loop/ "Autonomous Loop"
8686

8787
```
8888
feat(cli): implement amem init command

docs/blog/2026-02-01-ctx-v0.2.0-the-archaeology-release.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ The same structure serves two very different readers.
264264
## The Configuration: `.contextrc`
265265

266266
[Projects can now customize `ctx` behavior
267-
via `.contextrc`](../cli/system.md#contextrc).
267+
via `.contextrc`](../home/configuration.md).
268268

269269
This makes `ctx` usable in real teams, not just personal projects.
270270

0 commit comments

Comments
 (0)