Skip to content

Commit aa3b441

Browse files
committed
chore(release): bump to v0.21.0
Two-axis release: v0.19.2 retro action items + two pk-doctor silent-zero correctness fixes that surfaced when the owner ran /pk-doctor in an aibox-derived project and got falsely-clean results. Retro batch: - WildLake fix: mcp[cli] + jsonschema in pk_retro PEP 723 header - ToughAnt docs: Sub-agent delegation section in AGENTS.md - SwiftLynx feat: compliance-ack TTL auto-renew + dynamic version - BraveBird feat: reload_schemas MCP tool on 4 schema-active servers - MightyFjord fix: pk-doctor --fix=schema_filename for CalmAnt-class - KeenFern feat: 20 missing specialist+expert seed bindings - #11 fix: product/retrospective → product/sprint-retrospective pk-doctor portability fixes (added late per DEC-StoutCliff): - HappyReef fix: schema_filename schemas-dir fallback (silent zero) - DeepMoss fix: migrations layout fallback (silent zero) Cancelled / superseded: - SharpBrook → BraveBird + RapidSwan (deferred to v0.22+) - SnappyBird → MightyFjord (narrow only; general path not built) aibox.lock processkit pin v0.20.0 → v0.21.0; CHANGELOG finalised (Added / Changed / Fixed / Deferred); MCP-config manifest regenerated (aggregate unchanged at 92d6eedc...); src/PROVENANCE.toml stamped for v0.21.0; pk-doctor + drift green. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 32b523f commit aa3b441

25 files changed

Lines changed: 914 additions & 40 deletions

CHANGELOG.md

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,137 @@ Versions follow [Semantic Versioning](https://semver.org/).
55

66
---
77

8+
## [v0.21.0] — 2026-04-25
9+
10+
Five fixes spanning the v0.19.2 retro action items and two
11+
correctness bugs in pk-doctor that surfaced when the owner ran
12+
`/pk-doctor` inside an aibox-derived project and got a falsely-clean
13+
report. Both pk-doctor bugs were silent-zero failures: the checks
14+
silently no-op'd in derived projects and hid every entity-hygiene
15+
problem they were supposed to catch.
16+
17+
The two heavier retro items (SharpBrook MCP schema hot-reload,
18+
SnappyBird append-only LogEntry repair) were worked through design
19+
discussions (DISC-DaringBird, DISC-WiseLily) and split or narrowed
20+
per DEC-QuickPine and DEC-BrightHawk.
21+
22+
### Added
23+
24+
- **feat(_lib + 4 servers): `reload_schemas` MCP tool.** Each of
25+
the schema-active servers (workitem-management, decision-record,
26+
event-log, artifact-management) gains a thin tool that calls a
27+
shared helper in `_lib/processkit/schema.py::reload_caches()`,
28+
clearing the in-process `load_schema` and
29+
`state_machine.load` `lru_cache`es so a disk-level schema or
30+
state-machine edit becomes visible without a server restart.
31+
Returns `{ok, cleared: {schemas, state_machines}}`. PEP 723
32+
dep-header edits are NOT addressed (the `uv`-resolved venv is
33+
pinned at process start — tracked separately by
34+
`BACK-RapidSwan` for v0.22.0+). Closes
35+
`BACK-20260424_0128-BraveBird-reload-schemas-mcp-tool` per
36+
`DEC-20260424_0127-QuickPine`.
37+
- **feat(model-recommender): 20 specialist + expert seed bindings.**
38+
The v0.19.0 roster declared a 5-level seniority ladder
39+
(junior → specialist → expert → senior → principal), but the
40+
default-bindings pack seeded only 3 levels. As a result,
41+
`resolve_model(<role>, "specialist"|"expert")` returned
42+
`no viable model` across all 10 seeded roles — 20 missing
43+
combinations. KeenFern adds seeds inheriting from the nearest
44+
covered neighbour: `specialist` → junior's (model, effort band),
45+
`expert` → senior's (model, effort band). MANIFEST.yaml grew from
46+
30 → 50 seeds. New regression test
47+
`test_default_bindings_coverage.py` asserts every seeded role
48+
covers all 5 ladder levels and fires loudly on any future gap.
49+
Closes `BACK-20260424_0134-KeenFern-fill-model-assignment-seniority`.
50+
- **docs(AGENTS.md): "Sub-agent delegation" section.** Codifies
51+
the read-only / mutating split for harness `Agent`-tool sub-agents
52+
(delegate read-only; keep mutating writes on the main session).
53+
Closes `BACK-20260424_0038-ToughAnt-ephemeral-sub-agent-defaults`.
54+
- **docs(AGENTS.md): "LogEntry repair" Skill-guards entry.**
55+
Documents the narrow hand-edit escape hatch for schema-invalid
56+
LogEntries and points to `pk-doctor --fix=schema_filename` as
57+
the preferred path. Part of MightyFjord.
58+
59+
### Changed
60+
61+
- **feat(skill-gate): compliance-ack TTL is now an idle timeout.**
62+
`_any_valid_marker()` rewrites the matching marker's
63+
`acknowledged_at` to `now` on every successful gate check.
64+
Sessions actively making compliant writes never expire mid-flow
65+
(the v0.19.2 midnight-span pain pattern); idle sessions
66+
(> `_ACK_LIFETIME_HOURS`, default 12 h) still must re-acknowledge.
67+
Touch failures are non-fatal. Closes
68+
`BACK-20260424_0038-SwiftLynx-compliance-contract-acknowledgement-ttl`.
69+
70+
### Fixed
71+
72+
- **fix(pk-doctor): `schema_filename` schemas-dir fallback (HappyReef).**
73+
`schema_filename.py` resolved the schemas dir as
74+
`<repo_root>/src/context/schemas/` only — a path that exists
75+
exclusively in the processkit dogfood repo. In every derived
76+
project (aibox-installed) schemas live at `<repo_root>/context/
77+
schemas/`, so the check silently walked 0 entity files and
78+
reported 0 ERROR / 0 WARN regardless of how many malformed
79+
entities were on disk. The new `_resolve_schemas_dir()` tries
80+
the dogfood path first, then falls back to `context/schemas/`,
81+
and surfaces a single WARN when neither exists. Verified
82+
against an aibox checkout: the check now walks 186 entity files
83+
and reports the real findings (filename-date mismatches on
84+
`_0000` placeholder filenames, missing-`actor` ERRORs, etc.).
85+
Closes `BACK-20260425_1041-HappyReef-pk-doctor-schema-filename`.
86+
- **fix(pk-doctor): `migrations` layout fallback (DeepMoss).**
87+
Companion to HappyReef. The `migrations` check looked only in
88+
`context/migrations/pending/` (processkit dogfood convention).
89+
Derived projects (aibox) keep pending migrations at the top
90+
level of `context/migrations/` and only move *applied* ones into
91+
`applied/`. The new `_candidate_pending_paths()` probes
92+
`pending/` first; if absent, walks `context/migrations/*.md`
93+
minus `applied/`, `INDEX.md`, and aibox-CLI upgrade-doc
94+
filenames (`<YYYYMMDD>_<HHMM>_<from>-to-<to>.md`). `_list_pending`
95+
also filters by `kind: Migration` so non-Migration markdown
96+
alongside migrations is ignored. Closes
97+
`BACK-20260425_1041-DeepMoss-pk-doctor-migrations-detect`.
98+
- **fix(pk-doctor): `--fix=schema_filename` for the CalmAnt-class
99+
pattern (MightyFjord).** New `run_fix` on
100+
`schema_filename.py` patches LogEntries missing the required
101+
`actor` field by inserting `actor: system`, validates
102+
post-patch, and rolls back on failure. Behind `--fix=schema_filename
103+
--yes`, never default. Closes
104+
`BACK-20260424_0128-MightyFjord-pk-doctor-fix-schema` per
105+
`DEC-20260424_0128-BrightHawk`.
106+
- **fix(skill-gate): remediation text uses on-disk contract version.**
107+
`_remediation_msg()` parses the leading `<!-- pk-compliance vN -->`
108+
marker rather than hard-coding `v1`. Part of SwiftLynx.
109+
- **fix(retrospective): `/pk-retro --auto-workitems` no longer fails
110+
with `ModuleNotFoundError: No module named 'mcp'`.** Added
111+
`mcp[cli]>=1.0` and `jsonschema>=4.0` to `pk_retro.py`'s PEP 723
112+
header so `uv run --script pk_retro.py` resolves the in-process
113+
MCP loader's transitive imports automatically. Closes
114+
`BACK-20260424_0038-WildLake-pk-retro-auto-workitems`.
115+
- **fix(skills): resolve cross-category `retrospective` skill basename
116+
collision.** `product/retrospective` is renamed to
117+
`product/sprint-retrospective`; the processkit-category
118+
`retrospective` (release-scope, `/pk-retro`) keeps the bare name.
119+
Closes [#11].
120+
121+
### Deferred
122+
123+
- `BACK-20260424_0128-RapidSwan-pk-doctor-server-header` — pk-doctor
124+
`server_header_drift` check (PEP 723 dep drift detection,
125+
WARN-only). Targeted v0.22.0+.
126+
- `BACK-20260424_0037-SharpBrook-mcp-servers-cache-schemas`
127+
(cancelled; superseded by BraveBird + RapidSwan per
128+
`DEC-20260424_0127-QuickPine`).
129+
- `BACK-20260424_0038-SnappyBird-data-repair-path-for`
130+
(cancelled; replaced by the narrow MightyFjord run_fix per
131+
`DEC-20260424_0128-BrightHawk`; general data-fix migration kind
132+
not built — revisit only if >2 more recurrences in a calendar
133+
quarter).
134+
135+
[#11]: https://github.com/projectious-work/processkit/issues/11
136+
137+
---
138+
8139
## [v0.20.0] — 2026-04-24
9140

10141
Retro follow-up batch: fixes the three lightest action items from the

aibox.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ synced_at = "2026-04-19T08:03:58.481219+00:00"
44

55
[processkit]
66
source = "https://github.com/projectious-work/processkit.git"
7-
version = "v0.20.0"
7+
version = "v0.21.0"
88
src_path = "src"
99
release_asset_sha256 = "3c6bf672e3a4ac2bf8c0b807c2e5fe948ff27906b6a0aa0ff73d36a1b2f7c98c"
1010
installed_at = "2026-04-19T08:03:58.481219+00:00"

context/.processkit-mcp-manifest.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"aggregate_sha256": "92d6eedc1755a7ce9d69a1013393e36cc616e411d1daa4c9c5484cefe4536651",
3-
"generated_at": "2026-04-24T01:12:08Z",
3+
"generated_at": "2026-04-25T10:57:34Z",
44
"per_skill": [
55
{
66
"path": "context/skills/processkit/actor-profile/mcp/mcp-config.json",
@@ -75,6 +75,6 @@
7575
"sha256": "a4ae7e26a980aeebed953f3cc2e761cde6dd8692fb033c81c9e3c8927e8b5898"
7676
}
7777
],
78-
"processkit_version": "v0.20.0",
78+
"processkit_version": "v0.21.0",
7979
"version": 1
8080
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
apiVersion: processkit.projectious.work/v1
3+
kind: DecisionRecord
4+
metadata:
5+
id: DEC-20260425_1040-StoutCliff-expand-v0-21-0
6+
created: '2026-04-25T10:40:50+00:00'
7+
spec:
8+
title: 'Expand v0.21.0 scope: add two pk-doctor portability fixes for derived projects
9+
(silent-zero schema_filename + migrations layout fallback)'
10+
state: accepted
11+
decision: 'Add two new fixes to the v0.21.0 release before cutting: (1) `pk-doctor
12+
schema_filename` resolves the schemas dir with a fallback chain (`src/context/schemas/`
13+
→ `context/schemas/`) so it actually validates entities in derived projects instead
14+
of silently walking 0 files; (2) `pk-doctor migrations` accepts both layouts (processkit
15+
`context/migrations/pending/` AND top-level + `applied/`) so it actually counts
16+
pending migrations in derived projects. File two WIs against v0.21.0 to track
17+
each.'
18+
context: 'Owner ran `/pk-doctor` inside the aibox derived-project container and
19+
got 0 ERROR / 0 WARN despite obvious schema and migration issues. Investigation
20+
revealed both checks silently no-op on derived projects: schema_filename hard-codes
21+
`src/context/schemas/` (which only exists in the processkit dogfood repo), and
22+
migrations hard-codes `context/migrations/pending/` (which does not match aibox''s
23+
top-level + `applied/` convention). Together these two bugs make pk-doctor falsely
24+
reassuring on every derived install — the exact failure mode the user just hit.'
25+
rationale: These are silent-correctness bugs, not feature gaps. Shipping v0.21.0
26+
without them means every derived-project pk-doctor run is misleading. The fixes
27+
are small (path fallback chains in two places) and self-contained, so adding them
28+
to the release in flight is a much better trade than waiting for v0.21.1.
29+
consequences: v0.21.0 scope grows by two small tasks. Cut is delayed by maybe an
30+
hour. After release, derived projects on processkit ≥ v0.21.0 will get faithful
31+
pk-doctor results out of the box. Existing derived projects on v0.18.1–v0.20.0
32+
keep getting silent zeros until they bump.
33+
deciders:
34+
- TEAMMEMBER-thrifty-otter
35+
- TEAMMEMBER-cora
36+
decided_at: '2026-04-25T10:40:50+00:00'
37+
---
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
apiVersion: processkit.projectious.work/v1
3+
kind: LogEntry
4+
metadata:
5+
id: LOG-20260425_1000-StoutRobin-workitem-transitioned
6+
created: '2026-04-25T10:00:39+00:00'
7+
spec:
8+
event_type: workitem.transitioned
9+
timestamp: '2026-04-25T10:00:39+00:00'
10+
summary: Transitioned WorkItem 'BACK-20260424_0134-KeenFern-fill-model-assignment-seniority'
11+
from 'review' to 'done'
12+
subject: BACK-20260424_0134-KeenFern-fill-model-assignment-seniority
13+
subject_kind: WorkItem
14+
actor: BACK-20260424_0134-KeenFern-fill-model-assignment-seniority
15+
---
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
apiVersion: processkit.projectious.work/v1
3+
kind: LogEntry
4+
metadata:
5+
id: LOG-20260425_1040-DaringSwan-decision-created
6+
created: '2026-04-25T10:40:50+00:00'
7+
spec:
8+
event_type: decision.created
9+
timestamp: '2026-04-25T10:40:50+00:00'
10+
summary: 'Created DecisionRecord ''DEC-20260425_1040-StoutCliff-expand-v0-21-0'':
11+
''Expand v0.21.0 scope: add two pk-doctor portability fixes for derived projects
12+
(silent-zero schema_filename + migrations layout fallback)'''
13+
subject: DEC-20260425_1040-StoutCliff-expand-v0-21-0
14+
subject_kind: DecisionRecord
15+
actor: DEC-20260425_1040-StoutCliff-expand-v0-21-0
16+
---
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
apiVersion: processkit.projectious.work/v1
3+
kind: LogEntry
4+
metadata:
5+
id: LOG-20260425_1041-HappyTiger-workitem-created
6+
created: '2026-04-25T10:41:11+00:00'
7+
spec:
8+
event_type: workitem.created
9+
timestamp: '2026-04-25T10:41:11+00:00'
10+
summary: 'Created WorkItem ''BACK-20260425_1041-DeepMoss-pk-doctor-migrations-detect'':
11+
''pk-doctor migrations: detect both layouts (pending/ subdir AND top-level + applied/)'''
12+
subject: BACK-20260425_1041-DeepMoss-pk-doctor-migrations-detect
13+
subject_kind: WorkItem
14+
actor: BACK-20260425_1041-DeepMoss-pk-doctor-migrations-detect
15+
---
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
apiVersion: processkit.projectious.work/v1
3+
kind: LogEntry
4+
metadata:
5+
id: LOG-20260425_1041-QuickFox-workitem-created
6+
created: '2026-04-25T10:41:01+00:00'
7+
spec:
8+
event_type: workitem.created
9+
timestamp: '2026-04-25T10:41:01+00:00'
10+
summary: 'Created WorkItem ''BACK-20260425_1041-HappyReef-pk-doctor-schema-filename'':
11+
''pk-doctor schema_filename: derived-project schemas-dir fallback (fix silent-zero
12+
walk)'''
13+
subject: BACK-20260425_1041-HappyReef-pk-doctor-schema-filename
14+
subject_kind: WorkItem
15+
actor: BACK-20260425_1041-HappyReef-pk-doctor-schema-filename
16+
---
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
apiVersion: processkit.projectious.work/v1
3+
kind: LogEntry
4+
metadata:
5+
id: LOG-20260425_1041-SureTiger-workitem-transitioned
6+
created: '2026-04-25T10:41:15+00:00'
7+
spec:
8+
event_type: workitem.transitioned
9+
timestamp: '2026-04-25T10:41:15+00:00'
10+
summary: Transitioned WorkItem 'BACK-20260425_1041-HappyReef-pk-doctor-schema-filename'
11+
from 'backlog' to 'in-progress'
12+
subject: BACK-20260425_1041-HappyReef-pk-doctor-schema-filename
13+
subject_kind: WorkItem
14+
actor: BACK-20260425_1041-HappyReef-pk-doctor-schema-filename
15+
---
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
apiVersion: processkit.projectious.work/v1
3+
kind: LogEntry
4+
metadata:
5+
id: LOG-20260425_1042-CalmHawk-workitem-transitioned
6+
created: '2026-04-25T10:42:49+00:00'
7+
spec:
8+
event_type: workitem.transitioned
9+
timestamp: '2026-04-25T10:42:49+00:00'
10+
summary: Transitioned WorkItem 'BACK-20260425_1041-DeepMoss-pk-doctor-migrations-detect'
11+
from 'backlog' to 'in-progress'
12+
subject: BACK-20260425_1041-DeepMoss-pk-doctor-migrations-detect
13+
subject_kind: WorkItem
14+
actor: BACK-20260425_1041-DeepMoss-pk-doctor-migrations-detect
15+
---

0 commit comments

Comments
 (0)