Releases: projectious-work/processkit
v0.26.0 — GH cluster + team-creator v2 + MCP gateway adoption
[v0.26.0] — 2026-05-10
v0.26.0 is a minor release that lands the GH-issue cluster
(#17–#23, #31), the team-creator v2 epic (#20, decomposed into 5
sub-WorkItems), and lazy-import support for the aggregate MCP gateway.
Added
RoleSlotprimitive (PR #27). New first-class entity kind that
decouples the role/seniority axis from the identity axis. Adds
five MCP tools (create_role_slot,get_role_slot,
list_role_slots,fill_role_slot,close_role_slot) and a
resolver hook onteam-manager.- Catalog-driven
pk-team-create(PR #28). Charter now reads
archetype-catalog-mapping.yamland writes RoleSlots instead of
archetype Roles + Actors + role-assignment Bindings (Phase A
cutover). Includesapply_migration_2139.pyidempotent backfill
for existing projects. - Consultant TeamMember type + engagement window (PR #29).
team-member.yamlv1.1.0 → v1.2.0 addsconsultantenum,
engaged_for,engagement_window, and
auto_deactivate_on_scope_close;scope-managementauto-deactivates
consultants on Scope archive. - Budget projection + drift detection in charter DECs (PR #30).
CharteringDecisionRecordblocks include a budget projection;
query_budget_driftsurfaces variance from snapshotted unit cost. recommended_team_member_slugandrecommended_model_classon
route_task(PR #24). PM-coordination domain groups resolved
initially; engineering-role coverage extended to all 14 domain
groups (branchfeat/wildpanda-p2-engineering-roles).v1_entity_penaltyre-rank infind_skill/ task-router
(PR #24). Default 0.3 multiplicative penalty down-weights v1
entities when a v2 successor exists. Applied toquery_entities,
get_entity,search_entities, and now also
semantic_search_entities+hybrid_search_entities(branch
feat/warmoak-semantic-hybrid-v1-penalty).v1_entity_driftandteam_member_exportschecks in pk-doctor
(PR #24). Surface stale v1 frontmatter outside append-only buckets,
and missing.claude/agents/<slug>.mdexports for active members
(withexportable=falseopt-out for human owners).- Slim per-turn compliance hook + harness knobs documentation
(PR #24). UserPromptSubmit emits a 14-line slim block; SessionStart
emits the full contract. Newdocs/harness-claude-code.md. - Lazy-import mode for
aggregate-mcp(branch
feat/gh31-aggregate-mcp-lazy, gh#31). Opt-in via
PROCESSKIT_MCP_LAZY=1orPROCESSKIT_MCP_MODE=lazy_catalog;
defers per-skill module imports until first tool call. 1.58×
cold-start speedup (median 422ms → 268ms). Reuses
GatewayRegistryinfrastructure shipped via BACK-ThriftyWren.
Changed
- Compliance contract rewritten with positive-imperative balance
(PR #24).compliance-contract.mdnow 50 lines, 6 sections,
10 positive : 4 negative imperatives. Includes a sub-agent-dispatch
clause (route_taskbefore anyAgent/Taskcall) and BEGIN/END
HOOK markers for slim hook injection. pk-team-createno longer writes archetype Roles, Actors, or
role-assignment Bindings (PR #28). Behavioral cutover — derived
projects on v0.26.0+ should not see these entity kinds emitted at
charter time. Existing projects can backfill via Migration
20260509_2139_0.25.8-to-0.26.0.pk-doctorSKILL.md documents all 16 check modules (PR #24).
Previously only 4 were documented; the other 12 (including the new
v1_entity_driftandteam_member_exports) now appear with
severity,--fixpaths, and exception notes.- Migration schema relaxed:
spec.requiredreduced from
[source, from_version, to_version, state]to[source, state].
from_version/to_versionremain enforced forsource-upgrade
migrations byaibox syncat generation time; the relaxation
unblocks validation ofschema-extensionmigrations like
aibox-lockbackfills which document an internal schema bump. release-auditexemptsmigrations/applied/and
migrations/rejected/from v1 apiVersion errors, matching the
v1_entity_driftexception in pk-doctor. Rewriting historical
applied migrations would falsify the audit trail.pk-doctorteam_member_exportscheck honorsexportable=false.
Human owners (and other non-exportable members) are no longer
flagged as missing a.claude/agents/<slug>.mdexport.pk-doctorpreauth_appliedcheck is gateway-mode aware.
Whenprocesskit-gatewayis the only enabled MCP server (per
_processkit_managed_keys.enabled_servers), per-skill servers are
proxied through the gateway and no longer reported as missing
fromenabledMcpjsonServers.
Migrations
20260509_2139_0.25.8-to-0.26.0.md— Phase A additive cutover for
the team-creator v2 entity model.apply_migration_2139.py
idempotent backfill; rollback feasible.
Housekeeping
- Archived 9 applied migrations into
context/archives/2026/05/ARCHIVE-20260510_074047-migration-applied.tar.gz
(8 runtime + 1 lock + 1 source-upgrade), per the
context_hygienearchive recommendation. Originals retained
inside the archive tarball with manifest + sha256.
v0.25.8 — MiMo roster and cleanup hints
v0.25.8 is a patch release that adds Xiaomi MiMo to model routing
and teaches processkit release diffs how to emit downstream cleanup
hints for renamed or removed skills.
Added
- Added Xiaomi MiMo-7B-RL-0530 to the model roster. The
model-recommender now ships amodel-specartifact, quick-reference
row, detailed profile, and MCP score projection for Xiaomi's
open-weight MiMo reasoning checkpoint. - Added cleanup hints to
processkit-diff.sh. JSON and TOML output
now includecleanup_hintsfor removed upstream-managed skill files,
renamed skill directories, replacement paths, removed command names,
and generated command adapters that downstream installers should
remove.
Changed
- Migration reference docs now describe installer cleanup semantics.
The migration reference documents how sync tools should interpret
cleanup_hints, includingremove_skill_directoryand
replacement_path. - Dogfood runtime migration state is current. The local pending
runtime-home migration was applied and the processkit index now reports
zero pending migrations.
Fixed
- Fixed
processkit-diff.shunder non-GNU awk. Provenance parsing no
longer depends on GNU awk'smatch(..., array)extension, so the diff
script works undermawk. - Closed GitHub issue #16. Removed and renamed skill cleanup metadata
is now machine-readable for downstream sync implementations.
Verification
bash -n scripts/processkit-diff.shuv run --with pyyaml --with pytest --with mcp pytest context/skills/processkit/model-recommender/scripts/test_query_models_filters.py context/skills/processkit/model-recommender/scripts/test_resolver.py context/skills/processkit/model-recommender/scripts/test_default_bindings_coverage.pynpm --prefix docs-site run builduv run scripts/smoke-test-servers.pyuv run context/skills/processkit/pk-doctor/scripts/doctor.py
processkit v0.25.7
v0.25.7 is a patch release that improves processkit routing,
semantic index observability, and model planning for Codex-heavy agent
workflows.
Added
- Added command-aware task routing.
task-router.route_tasknow
scorespk-*command projections as first-class candidates, accepts
optionalintent_signals, returns command routes for high-signal
workflows such aspk-release-audit, and surfaces multi-route
candidates for compound requests. - Added runtime-capacity planning guidance.
model-recommender
now exposesplan_runtime_capacity(...)and adds capacity guidance to
resolve_model(...)when callers provide subscription/quota
observations. - Added GPT-5.3-Codex-Spark to model routing. Spark is now modeled
as an OpenAI Codex subscription candidate and ranked in thecode-fast
model profile for bounded low-latency agent work.
Changed
- sqlite-vec handling is now observable and non-destructive by
default. The index reports sqlite-vec load diagnostics and vector row
counts, while preserving existing vector tables unless explicit repair
is requested. - MCP configs for the gateway and index server now launch as PEP 723
scripts. This makes their declaredsqlite-vecdependency active in
the MCP runtime. - Provider-equivalent fast Codex routing now prefers Spark over
o4-minifor Haiku-class OpenAI fallbacks.
Verification
uv run --with pyyaml --with pytest --with mcp pytest context/skills/processkit/task-router/scripts/test_task_router.py -vuv run --with pyyaml --with pytest --with mcp --with jsonschema pytest context/skills/processkit/processkit-gateway/scripts/test_gateway.py -vuv run --with pyyaml --with pytest pytest context/skills/processkit/model-recommender/scripts/test_resolver.py -vuv run scripts/smoke-test-servers.pyuv run context/skills/processkit/pk-doctor/scripts/doctor.py --no-loguv run --script context/skills/processkit/release-audit/scripts/release_audit.py --tree=both
v0.25.6 - Provider-neutral pk command projections
v0.25.6 is a patch release that makes processkit command exposure
provider-neutral and closes the remaining dogfood v2 backlog audit gap.
Slash-capable harnesses continue to receive pk-* command projections,
while non-slash harnesses receive matching natural-language skill
adapters.
Added
- Added provider-neutral command projection for
pk-explain-routing. The model-recommender command now has a
canonical command file, Claude slash projection, Codex skill shim, and
MCP metadata entry.
Changed
- Processkit command metadata now treats
pk-*as mandatory.
pk-doctorvalidates canonical command files, Claude projections,
Codex skill projections, argument hints, and projection-only command
drift across all processkit skills. - Renamed team-creator commands into the reserved namespace.
The formerteam-create,team-rebalance, andteam-review
command files are now projected aspk-team-create,
pk-team-rebalance, andpk-team-review. - Dogfood backlog entities were restamped to the v2 API contract.
The livecontext/tree no longer carries legacy v1 backlog entities
that made full release-audit output noisy outside the shipped
src/context/boundary.
Verification
pk-doctorreported0 ERROR / 0 WARN / 19 INFO.pk-release-audit --tree=contextreported0 ERROR.pk-release-audit --tree=src-contextreported0 ERROR / 0 WARN.uv run scripts/smoke-test-servers.pypassed across the MCP smoke
suite.uv run context/skills/processkit/pk-doctor/scripts/test_doctor.py
passed.npm --prefix docs-site run buildpassed.
v0.25.5 — Active interlocutor runtime binding
v0.25.5 is a patch release that makes active TeamMember
interlocutor sessions honest about the difference between processkit
identity and the already-running harness model. It adds runtime binding
reporting, conservative Claude adapter model emission, and explicit
subagent MCP lifecycle guardrails.
Added
- Added active interlocutor runtime binding reporting.
team-manager.get_interlocutor_runtime_bindingreturns the configured
TeamMember, the resolved model-recommender candidate after provider
gates, harness capability mode, observed runtime fields supplied by
the caller, and informational mismatch status. - Added opt-in resolved Claude adapter model policy.
export_claude_subagent(..., model_policy="resolved")emits a Claude
model and effort only when processkit routing resolves to an Anthropic
candidate; the default remainsmodel: inherit.
Changed
- Session identity setup now records capability-negotiated binding
policy.set_active_interlocutorkeeps TeamMember identity and
memory growth stable while making runtime control an explicit harness
capability rather than an implicit promise. - Status and agent-management guidance now surface model/runtime
mismatch and subagent MCP instability. Session start should display
resolved runtime vs observed harness runtime when available, and MCP
writes stay in the primary session until subagent server lifecycle is
proven stable.
Verification
56 passedfor team-manager coverage incontext/.56 passedfor team-manager coverage insrc/context/.uv run scripts/smoke-test-servers.pypassed across the MCP smoke
suite.pk-doctor --no-logreported0 ERROR; the only warning was the
existingarchive.applied-migrationsadvisory.
v0.25.4 - MCP gateway daemon proxy startup fix
v0.25.4 is a patch release that fixes the gateway stdio proxy
startup path used by daemon-first MCP clients. A stdio-only harness can
now point at a localhost streamable HTTP gateway URL and let processkit
start the matching daemon when no listener is present.
Changed
- Gateway stdio proxy now owns local daemon startup by default.
stdio-proxy --url http://127.0.0.1:PORT/mcpstarts the matching
serve --transport streamable-httpdaemon when the port is not already
listening. - Added an explicit external-supervisor escape hatch.
stdio-proxy --no-start-daemonkeeps the previous behavior for
harnesses or service managers that already own daemon lifecycle.
Fixed
- Fixed MCP client startup timeouts for daemon-backed gateway configs.
A generated config that invokesprocesskit-gatewaythrough
stdio-proxyno longer fails solely because the HTTP daemon has not
already been launched. - Fixed failed daemon auto-start cleanup. If the spawned local daemon
never becomes ready, the proxy now terminates that child process before
reporting the startup failure.
Verification
30 passedfor gateway proxy and CLI coverage insrc/context/.30 passedfor gateway proxy and CLI coverage incontext/.uv run scripts/smoke-test-servers.pypassed across the MCP smoke
suite.pk-doctor --category=mcp_gateway --no-logpassed with
0 ERROR / 0 WARNfor both source and shipped paths.
v0.25.3 - Provider-neutral model profile routing
v0.25.3 is a patch release that makes role and team-member model
routing portable across harnesses. Concrete provider/model descriptions
remain timestamped Artifact(kind=model-spec) deliverables, while
roles, actors, team members, and default assignments now bind to
provider-neutral Artifact(kind=model-profile) artifacts.
Added
- Added provider-neutral model-profile artifacts. processkit now
ships nineArtifact(kind=model-profile)deliverables covering
general, coding, research, writing, and governed routing profiles.
Model-profile filenames deliberately avoid provider and model names;
their content carries ranked candidateArtifact(kind=model-spec)
references. - Added model-profile schema support. Artifact schemas now recognize
model-profile, binding schemas allow model-assignment targets to be
eitherModelProfileorModelSpecartifacts, and role schemas expose
default_model_profilewhile keeping legacydefault_model
compatibility. - Added a model-profile migration helper.
migrate_model_profiles.pycreates the shipped profile artifacts and
rewrites role/team-member model-assignment bindings from concrete
model specs to profile targets. - Added runtime provider access gates to the resolver. The resolver
now expands model profiles into concrete model candidates only after
applying runtime access constraints from user config,aibox.toml
model providers, and native harnesses such as Codex, Claude, Gemini,
Aider, Continue, Cursor, OpenCode, and Hermes. - Added
available_providersto model-recommender configuration.
MCP callers can declare which providers are callable in the current
environment without hard-coding a provider into role or team-member
bindings. - Added pk-doctor checks for routing portability.
pk-doctornow
flags provider/model names in model-profile filenames, missing profile
candidate model specs, and Role/TeamMember bindings that directly pin a
ModelSpec withoutconditions.direct_model_pin: true.
Changed
- Role and team-member bindings now target model profiles. Shipped
default bindings, including Cora's default, no longer point directly to
OpenAI, Anthropic, Google, or other concrete model artifacts. - Concrete model specs remain provider/model named. The release keeps
the v0.25.2 decision thatModelSpecartifacts map directly to
provider/model families and therefore may include provider/model names
in their filenames. - Default binding documentation now describes two layers.
Role/team-member defaults bind to profile artifacts; model profiles
list provider-specific model-spec candidates; project overrides may
still use direct ModelSpec pins when intentional. - The release deliverable boundary accepts model-profile artifacts.
scripts/check-src-context-drift.sh --release-deliverablenow permits
timestampedModelProfileartifacts insrc/context/artifacts/. - Team and model-recommender docs now define harness portability.
The docs make aibox responsible for surfacing runtime provider access,
while processkit owns provider-neutral defaults and local fallback
checks.
Removed
- Removed dogfood-specific provider bias/veto bindings from the
deliverable. The old processkit-local Codex/OpenAI preference and
Anthropic veto bindings no longer ship to derived projects.
Fixed
- Fixed Cora and role defaults under non-Codex harnesses. Changing
aibox.tomlfrom Codex to Claude, Gemini, OpenCode, Hermes, or another
supported harness no longer leaves role/team-member defaults bound to a
provider the harness cannot call. - Fixed pk-doctor's blind spot around direct model pins. The doctor
now distinguishes portable Role/TeamMember profile bindings from
explicit direct model pins. - Fixed resolver explanations for profile-expanded candidates.
Resolved candidates now carryprofile_idandprofile_rank, making
it visible which neutral profile produced the concrete model choice.
Verification
pk-doctor --no-logpassed with0 ERROR / 0 WARN.scripts/check-src-context-drift.sh --release-deliverablepassed.release_audit.py --tree=src-contextpassed with0 ERROR / 0 WARN.35 passedfor resolver and default-binding coverage tests.21 passedfor model-recommender MCP filter tests.20 passedfor model migration tests.26 passedfor release-audit tests.uv run scripts/smoke-test-servers.pypassed across the MCP smoke
suite.
v0.25.2 - model-spec artifact hygiene
v0.25.2 - model-spec artifact hygiene
v0.25.2 is a patch release that settles the v0.25 model-spec projection
and release-deliverable hygiene work. The important architectural outcome
is that model descriptions are represented as normal processkit artifacts:
Artifact(kind=model-spec). They are no longer a separate primitive and
are no longer hidden only inside model-recommender JSON when a binding needs
to target them.
This release also tightens pk-doctor so derived projects get early signal
when their local context still contains stale model primitives, non-canonical
model artifact IDs, HTML artifact sidecars, suspicious _0000 artifact
timestamps, or model-assignment bindings that target the old artifact shape.
Highlights
- Model descriptions now ship as timestamped model-spec artifacts in both
context/artifacts/andsrc/context/artifacts/. - Model-assignment bindings now target timestamped
Artifact(kind=model-spec)IDs. pk-doctornow flags model-spec artifact naming drift and legacy
ART-model-*binding targets..gitignore.exampleis now part of the release deliverable under
src/.gitignore.example.- Applied and rejected dogfood migrations were archived out of active
migration state. - The resolver remains compatible with legacy
MODEL-*andART-model-*
inputs while canonical bindings use timestamped artifact IDs.
Added
- Timestamped model-spec artifacts:
ART-YYYYMMDD_HHMM-ModelSpec-<provider>-<family>.md. - A
pk-doctorcontext-hygiene check for non-timestamped model-spec
artifact IDs and filenames. - A
pk-doctorcontext-hygiene check for model-assignment bindings that
still target oldART-model-*model artifacts. src/.gitignore.examplein the consumer deliverable, so the gitignore
example artifact ships with processkit.
Changed
- Model-assignment bindings now target processkit-addressable
Artifact(kind=model-spec)entities instead of hidden JSON records or the
short-lived non-timestampedART-model-*projection. migrate_models.pyemits canonical timestamped model-spec artifact IDs.- The release boundary guard accepts only timestamped model-spec artifacts in
src/context/artifacts/. - Applied and rejected migrations were archived into
context/archives/,
reducing active context noise while preserving migration history. - The shipped model-spec projection is mirrored into
src/context/so
consumers receive model descriptions and bindings in the release tarball.
Fixed
pk-doctornow catches artifact hygiene issues that previously reached a
zero-error report:- HTML artifacts in active context.
- suspicious
_0000artifact timestamps. - non-timestamped model-spec artifact names.
- model bindings that still target old model artifact IDs.
model-recommenderresolver compatibility now accepts legacyMODEL-*and
ART-model-*references during migration while resolving canonical
timestamped model-spec artifacts.context-archivingcan serialize archive manifests that contain
datetime-like metadata.
Compatibility Notes
- Consumers should treat
Artifact(kind=model-spec)as the binding target for
model descriptions. - The legacy
context/models/primitive projection is removed from the
processkit deliverable. - Existing derived projects may still contain old
MODEL-*orART-model-*
references. The resolver accepts those forms for compatibility, but
pk-doctornow reports them so projects can migrate to timestamped
artifact IDs. aiboxshould still own first-line migration generation for derived
projects;pk-doctoris the fallback and local validation layer.
Release Asset
- Tarball:
processkit-v0.25.2.tar.gz - SHA-256:
b942c888a2b15fe3cf680405bf0725ce8703d9638291bf8fdf22ce14f035d50a - Commit:
2f9e391040244dc83415199e19242e60e06595c2
Verification
uv run context/skills/processkit/model-recommender/scripts/test_migrate_models.py
passed:20 passed.uv run --with pytest --with pyyaml pytest context/skills/processkit/model-recommender/scripts/test_resolver.py
passed:29 passed.uv run context/skills/processkit/pk-doctor/scripts/test_doctor.pypassed.uv run context/skills/processkit/pk-doctor/scripts/doctor.py --no-log
passed with0 ERROR / 0 WARN.scripts/check-src-context-drift.sh --release-deliverablepassed.uv run --script context/skills/processkit/release-audit/scripts/release_audit.py --tree=src-context
passed with0 ERROR / 0 WARN.uv run scripts/smoke-test-servers.pypassed across the MCP smoke suite.sha256sum -c processkit-v0.25.2.tar.gz.sha256passed for the release
tarball.
v0.25.1 — model recommender lifecycle and task routing
v0.25.1 is a patch release for the model-recommender after the
v0.25.0 gateway and v2 deliverable release. It updates the shipped model
market roster, makes model lifecycle explicit, and adds fine-grained task
suitability routing while preserving the existing R/E/S/B/L/G scoring
contract.
Added
- Added lifecycle metadata for model roster entries. Models now carry
active,legacy,deprecated,retired, orunverifiedstatus so
processkit can distinguish “still offered but no longer top-ranked”
from “not callable anymore.” This prevents older but useful provider
models from disappearing from the roster merely because a newer model
has taken the top recommendation slot. - Added 42 fine-grained task suitability classes. The roster now
scores models for concrete work types such asarchitecture,
debugging,code_review,summarization,rag,ocr,
voice,bulk_generation,privacy_sensitive, and
self_hosted_enterprise. These classes sit on top of the stable
Reasoning, Engineering, Speed, Breadth, Reliability, and Governance
dimensions. - Added task-class-aware MCP querying.
query_models()now accepts
task_class,min_task_suitability,require_task_suitability,
lifecycle, andinclude_retired, allowing callers to ask for
models that are suitable for a specific task without losing the
existing dimension filters. - Added
list_task_classes()to model-recommender MCP. Callers can
inspect the live task taxonomy and its dimension profile instead of
hard-coding task-class names. - Added current-market model entries across major providers. The
roster now includes new or refreshed entries for OpenAI GPT-5.5,
GPT-5.2, GPT-5.2-Codex, Anthropic Claude Opus 4.7, Google Gemini 3
preview models, Mistral Medium 3.5 / Small 4 / Devstral 2, DeepSeek
V4, Moonshot Kimi K2.6, Z.AI GLM-5/5.1, xAI Grok 4.20 and Grok 4.1
Fast, Meta Llama 4 Scout/Maverick, Qwen3 Coder, Cohere Command A,
Amazon Nova 2 Lite, and NVIDIA Nemotron 3 Super.
Changed
- Model routing now separates availability from ranking. A model that
remains available through a provider API can stay in the roster as
legacyordeprecated; routing can still select it for cost,
compatibility, privacy, or task-fit reasons. - Resolver tie-breaking now understands task classes.
resolve_model
acceptstask_hints.task_class,task_hints.task_classes,
task_hints.min_task_suitability, and
task_hints.require_task_suitability. Suitability only reorders
otherwise comparable candidates after binding layer/rank/provider
precedence, so project and team model bindings remain authoritative. - Model migration helpers preserve lifecycle and task-suitability
metadata. The legacymigrate_models.pypath maps lifecycle into
version status and carries source URLs, model classes, and task
suitability into generated model artifacts for compatibility. - The model-recommender documentation now documents lifecycle and task
suitability explicitly. Workflow C clarifies that refreshes are
additive and should not delete still-offered models; Workflow B now
classifies tasks before applying the six-axis score.
Fixed
- Corrected the previous roster-refresh assumption that “demote” meant
remove. The shipped behavior now keeps offered models and lowers
routing priority only through lifecycle/task-fit metadata. - Corrected stale pricing/context metadata for several existing roster
entries. Notable updates include GPT-5.5 API pricing/context,
GPT-5/GPT-5 Pro legacy pricing, o3 pricing/context, Gemini 2.5 Flash
pricing, and Kimi K2.6 API pricing.
Notes
- This remains a patch release because processkit is still pre-1.0 and
the change is additive for consumers: existing model IDs, the six
dimension filters,model_classes, and user configuration continue to
work. unverifiedentries remain visible only under the same conservative
assumptions as_estimatedrecords; production routing can exclude
them withinclude_estimated=False.- Provider pricing and model availability change quickly. The roster
carries source URLs and should be refreshed again before making
budget-critical decisions.
Verification
44 passedfor model-recommender query, migration, and default-binding
tests.29 passedfor resolver tests.python3 -m py_compilepassed for model-recommender server,
resolver, and migration helper.scripts/check-src-context-drift.sh --release-deliverablepassed.uv run scripts/smoke-test-servers.pypassed across the MCP smoke
suite.
v0.25.0 — processkit gateway and v2 release boundary
[v0.25.0] — 2026-05-02
v0.25.0 is a breaking pre-1.0 minor release. It completes the
SmoothTiger/SmoothRiver v2 deliverable boundary, adds the new
provider-neutral processkit-gateway MCP entry point, removes legacy
first-class primitives from the shipped src/context/ surface, and
turns the release checks into executable gates. The release remains below
1.0 because processkit is still evolving its public compatibility
contract; consumers should read the breaking-change notes before
upgrading.
Breaking Changes
src/context/is now the release deliverable boundary. The shipped
tree is validated as a consumer-facing package, not as a mirror of this
repository's live dogfoodcontext/. Runtime project memory,
generated logs, local decisions, and migration history remain in the
consuming project'scontext/; only the versioned processkit
primitives, skills, schemas, state machines, and release metadata ship
fromsrc/context/.Metric,Model,Process,Schedule, andStateMachineare no
longer shipped as first-class v2 entity primitives. Their schemas,
shipped entity directories, and primitive asset schemas were removed
fromsrc/context/. Existing projects may still keep those files as
migration-source or project-local memory, but new processkit releases
do not promise these directories or schemas as part of the v2 package
contract.- Model assignments are no longer typed as
Modelentity bindings.
Shipped model-assignment Binding files now reference model-recommender
roster/profile identifiers directly and no longer carry
target_kind: Model. Consumers that validated these bindings against
the old first-classModelprimitive must update that logic. - Task-router process overrides are legacy-v1 compatibility data.
Theprocess_overridefield is retained for older derived projects,
but the server now identifies it aslegacy-v1metadata. New v2
routing should rely on skill and tool routing rather than first-class
Processentities. - The release gate now rejects dogfood-only content in
src/context/.
scripts/check-src-context-drift.sh --release-deliverablefails if
the shipped tree contains local project memory, demoted primitive
schemas, demoted entity directories, ortarget_kindreferences to
removed primitives. This can break downstream packaging flows that
assumedcontext/andsrc/context/were interchangeable.
Added
- Added
processkit-gateway, a provider-neutral MCP gateway. The new
gateway speaks standard MCP on the harness side and processkit's
skill/entity/tool layer on the implementation side. It does not call
Anthropic, OpenAI, or other provider APIs; harness-specific behavior
remains limited to installer/config adapters. - Added gateway runtime helpers under
context/skills/_lib/processkit/gateway/. The library covers tool
catalog loading, module loading, registry construction, session and
permission helpers, transport helpers, daemon runtime wiring, lazy
registration, and stdio proxy support. - Added gateway transports and modes. The gateway can run as direct
stdio (serve --transport stdio), as a localhost streamable HTTP
daemon (serve --transport streamable-http --host 127.0.0.1 --port 8000 --path /mcp), or throughstdio-proxy --url ...for harnesses
that only support command-launched MCP servers. - Added lazy catalog support for lower idle memory. The gateway can
generate and consumemcp/tool-catalog.jsonso it can list tool
metadata without importing every backing MCP server at startup. Hot
modules are loaded on first use and remain available through the
gateway runtime. - Added gateway health and discovery tools.
list_gateway_toolsand
gateway_healthexpose the gateway's registered source servers,
imported tools, duplicate-name handling, and runtime mode for harness
diagnostics. - Added gateway verification coverage. New tests cover direct
gateway registration, daemon runtime behavior, stdio proxy behavior,
and aggregate/gateway compatibility.scripts/measure-mcp-gateway.py
measures process count and tool coverage across granular, aggregate,
gateway, and daemon-proxy modes. - Added v2 workflow and projection MCP surfaces. The release includes
hook-inbox note-management helpers, process-instance and SEP handoff
helpers, schedule and budget binding helpers, agent-card projection,
eval-gate authoring, security policy projections, and v2 contract
doctor checks. - Added release-audit target selection. The release-audit script now
supports--tree=context,--tree=src-context, and--tree=bothso
local dogfood context and shipped release content can be audited under
the right expectations. - Captured aibox follow-up responsibilities as internal processkit
context. The handover covers installing the pinned release,
supervising the gateway daemon, generating harness MCP config,
exposing user-facing daemon/reset knobs, preserving provider
neutrality, and implementing the optional harder reset path.
Changed
- Release packaging now enforces the deliverable boundary.
scripts/build-release-tarball.shruns the release-boundary guard and
thesrc-contextrelease audit before building a tarball. A release
artifact is no longer just a copy operation; it must pass the shipped
package contract first. - pk-doctor drift checks now wrap the release-boundary guard. The
drift category reports whethersrc/contextis a valid release
deliverable, making the same invariant available during normal project
health checks. - MCP manifest generation and drift checks were tightened. The MCP
config manifest remains the installer-facing signal that aibox should
re-merge generated harness MCP config even when the processkit version
number has not changed. aggregate-mcpremains as a compatibility bridge. It was updated
to coexist withprocesskit-gatewayand keep unique tool names stable
while qualifying duplicate helper names as<skill_slug>__<tool_name>.- Docs now describe the 25-server MCP surface. The MCP server
overview documents per-skill servers,aggregate-mcp, the new
gateway, direct stdio, streamable HTTP daemon mode, and stdio proxy
mode. - Harness guidance now covers Claude Code, Codex, OpenCode, Hermes,
Aider, and other MCP-capable clients. The guidance keeps processkit
usable without aibox while documenting the integration points aibox can
automate in managed devcontainers. - v2 contract docs now explain demoted primitives and migration
expectations. The docs make clear which old primitives are
migration-source only and which v2 primitives remain durable shipped
entities. - SKILL documentation was brought up to the release-audit contract.
agent-card,eval-gate-authoring,security-projections,
processkit-gateway, and release-audit-facing docs now include the
required sections and clearer operational guidance. - The docs site now has a root route and modern Docusaurus markdown
hook configuration. This removes the/processkit/navbar broken
link warning and the deprecatedsiteConfig.onBrokenMarkdownLinks
warning during docs builds.
Removed
- Removed shipped
src/context/models/andsrc/context/processes/.
These remain valid as project-local migration-source memory in a live
consuming context, but they are no longer part of the released
processkit v2 package. - Removed shipped demoted primitive schemas from
src/context/schemas/:
metric.yaml,model.yaml,process.yaml,schedule.yaml, and
statemachine.yaml. - Removed shipped demoted primitive asset schemas from
metrics-management, process-management, schedule-management, and
state-machine-management. - Removed
target_kind: Modelfrom shipped model-assignment Binding
files. - Removed the docs primitive page for
Metricas a first-class shipped
primitive.
Migration Notes
- The normal upgrade path is still the existing migration flow. aibox
should continue to generate and apply migrations as it does today. - The proposed harder reset path is optional and belongs in aibox as an
explicit user-selected mode ofaibox applyoraibox reset. That
flow should export project memory, bootstrap a freshcontext/tree
from the new processkit release, re-import preserved entities with
updated references/schema fields, and write an auditable migration
record. - aibox should not re-create removed
Model,Process,Metric,
Schedule, orStateMachinerelease schemas during sync. Existing
local project files of those kinds should be treated as preserved
migration-source memory or project-local content. - Harnesses can still use per-skill MCP servers directly. aibox is not a
runtime dependency of processkit; it is the recommended installer,
supervisor, and harness-config manager for managed devcontainers.
Verification
- Release-audit tests passed for both dogfood and shipped trees:
26 passed. - Gateway and aggregate MCP tests passed:
30 passed. scripts/check-src-context-drift.sh --release-deliverablepassed.release_audit.py --tree=src-contextpassed with
0 ERROR / 0 WARN / 485 INFO.pk-doctor --category=drift --no-logpassed with
0 ERROR / 0 WARN / 1 INFO.uv run scripts/smoke-test-servers.pypassed across the MCP server
smoke suite.scripts/measure-mcp-gateway.py --format text --include-metadata
reported the expected one-process gateway and daemon-proxy modes with
130tools across23source servers.