Skip to content

Releases: projectious-work/processkit

v0.26.0 — GH cluster + team-creator v2 + MCP gateway adoption

10 May 08:49

Choose a tag to compare

[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

  • RoleSlot primitive (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 on team-manager.
  • Catalog-driven pk-team-create (PR #28). Charter now reads
    archetype-catalog-mapping.yaml and writes RoleSlots instead of
    archetype Roles + Actors + role-assignment Bindings (Phase A
    cutover). Includes apply_migration_2139.py idempotent backfill
    for existing projects.
  • Consultant TeamMember type + engagement window (PR #29).
    team-member.yaml v1.1.0 → v1.2.0 adds consultant enum,
    engaged_for, engagement_window, and
    auto_deactivate_on_scope_close; scope-management auto-deactivates
    consultants on Scope archive.
  • Budget projection + drift detection in charter DECs (PR #30).
    Chartering DecisionRecord blocks include a budget projection;
    query_budget_drift surfaces variance from snapshotted unit cost.
  • recommended_team_member_slug and recommended_model_class on
    route_task
    (PR #24). PM-coordination domain groups resolved
    initially; engineering-role coverage extended to all 14 domain
    groups (branch feat/wildpanda-p2-engineering-roles).
  • v1_entity_penalty re-rank in find_skill / task-router
    (PR #24). Default 0.3 multiplicative penalty down-weights v1
    entities when a v2 successor exists. Applied to query_entities,
    get_entity, search_entities, and now also
    semantic_search_entities + hybrid_search_entities (branch
    feat/warmoak-semantic-hybrid-v1-penalty).
  • v1_entity_drift and team_member_exports checks in pk-doctor
    (PR #24). Surface stale v1 frontmatter outside append-only buckets,
    and missing .claude/agents/<slug>.md exports for active members
    (with exportable=false opt-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. New docs/harness-claude-code.md.
  • Lazy-import mode for aggregate-mcp (branch
    feat/gh31-aggregate-mcp-lazy, gh#31). Opt-in via
    PROCESSKIT_MCP_LAZY=1 or PROCESSKIT_MCP_MODE=lazy_catalog;
    defers per-skill module imports until first tool call. 1.58×
    cold-start speedup
    (median 422ms → 268ms). Reuses
    GatewayRegistry infrastructure shipped via BACK-ThriftyWren.

Changed

  • Compliance contract rewritten with positive-imperative balance
    (PR #24). compliance-contract.md now 50 lines, 6 sections,
    10 positive : 4 negative imperatives. Includes a sub-agent-dispatch
    clause (route_task before any Agent/Task call) and BEGIN/END
    HOOK markers for slim hook injection.
  • pk-team-create no 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-doctor SKILL.md documents all 16 check modules (PR #24).
    Previously only 4 were documented; the other 12 (including the new
    v1_entity_drift and team_member_exports) now appear with
    severity, --fix paths, and exception notes.
  • Migration schema relaxed: spec.required reduced from
    [source, from_version, to_version, state] to [source, state].
    from_version/to_version remain enforced for source-upgrade
    migrations by aibox sync at generation time; the relaxation
    unblocks validation of schema-extension migrations like
    aibox-lock backfills which document an internal schema bump.
  • release-audit exempts migrations/applied/ and
    migrations/rejected/ from v1 apiVersion errors
    , matching the
    v1_entity_drift exception in pk-doctor. Rewriting historical
    applied migrations would falsify the audit trail.
  • pk-doctor team_member_exports check honors exportable=false.
    Human owners (and other non-exportable members) are no longer
    flagged as missing a .claude/agents/<slug>.md export.
  • pk-doctor preauth_applied check is gateway-mode aware.
    When processkit-gateway is 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
    from enabledMcpjsonServers.

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_hygiene archive recommendation. Originals retained
    inside the archive tarball with manifest + sha256.

v0.25.8 — MiMo roster and cleanup hints

05 May 16:00

Choose a tag to compare

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 a model-spec artifact, 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 include cleanup_hints for 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, including remove_skill_directory and
    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.sh under non-GNU awk. Provenance parsing no
    longer depends on GNU awk's match(..., array) extension, so the diff
    script works under mawk.
  • Closed GitHub issue #16. Removed and renamed skill cleanup metadata
    is now machine-readable for downstream sync implementations.

Verification

  • bash -n scripts/processkit-diff.sh
  • uv 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.py
  • npm --prefix docs-site run build
  • uv run scripts/smoke-test-servers.py
  • uv run context/skills/processkit/pk-doctor/scripts/doctor.py

processkit v0.25.7

04 May 14:41

Choose a tag to compare

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_task now
    scores pk-* command projections as first-class candidates, accepts
    optional intent_signals, returns command routes for high-signal
    workflows such as pk-release-audit, and surfaces multi-route
    candidates for compound requests.
  • Added runtime-capacity planning guidance. model-recommender
    now exposes plan_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 the code-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 declared sqlite-vec dependency active in
    the MCP runtime.
  • Provider-equivalent fast Codex routing now prefers Spark over
    o4-mini for Haiku-class OpenAI fallbacks.

Verification

  • uv run --with pyyaml --with pytest --with mcp pytest context/skills/processkit/task-router/scripts/test_task_router.py -v
  • uv run --with pyyaml --with pytest --with mcp --with jsonschema pytest context/skills/processkit/processkit-gateway/scripts/test_gateway.py -v
  • uv run --with pyyaml --with pytest pytest context/skills/processkit/model-recommender/scripts/test_resolver.py -v
  • uv run scripts/smoke-test-servers.py
  • uv run context/skills/processkit/pk-doctor/scripts/doctor.py --no-log
  • uv run --script context/skills/processkit/release-audit/scripts/release_audit.py --tree=both

v0.25.6 - Provider-neutral pk command projections

04 May 12:39

Choose a tag to compare

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-doctor validates 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 former team-create, team-rebalance, and team-review
    command files are now projected as pk-team-create,
    pk-team-rebalance, and pk-team-review.
  • Dogfood backlog entities were restamped to the v2 API contract.
    The live context/ tree no longer carries legacy v1 backlog entities
    that made full release-audit output noisy outside the shipped
    src/context/ boundary.

Verification

  • pk-doctor reported 0 ERROR / 0 WARN / 19 INFO.
  • pk-release-audit --tree=context reported 0 ERROR.
  • pk-release-audit --tree=src-context reported 0 ERROR / 0 WARN.
  • uv run scripts/smoke-test-servers.py passed across the MCP smoke
    suite.
  • uv run context/skills/processkit/pk-doctor/scripts/test_doctor.py
    passed.
  • npm --prefix docs-site run build passed.

v0.25.5 — Active interlocutor runtime binding

04 May 09:58

Choose a tag to compare

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_binding returns 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 remains model: inherit.

Changed

  • Session identity setup now records capability-negotiated binding
    policy.
    set_active_interlocutor keeps 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 passed for team-manager coverage in context/.
  • 56 passed for team-manager coverage in src/context/.
  • uv run scripts/smoke-test-servers.py passed across the MCP smoke
    suite.
  • pk-doctor --no-log reported 0 ERROR; the only warning was the
    existing archive.applied-migrations advisory.

v0.25.4 - MCP gateway daemon proxy startup fix

04 May 07:24

Choose a tag to compare

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/mcp starts the matching
    serve --transport streamable-http daemon when the port is not already
    listening.
  • Added an explicit external-supervisor escape hatch.
    stdio-proxy --no-start-daemon keeps 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 invokes processkit-gateway through
    stdio-proxy no 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 passed for gateway proxy and CLI coverage in src/context/.
  • 30 passed for gateway proxy and CLI coverage in context/.
  • uv run scripts/smoke-test-servers.py passed across the MCP smoke
    suite.
  • pk-doctor --category=mcp_gateway --no-log passed with
    0 ERROR / 0 WARN for both source and shipped paths.

v0.25.3 - Provider-neutral model profile routing

03 May 19:24

Choose a tag to compare

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 nine Artifact(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 candidate Artifact(kind=model-spec)
    references.
  • Added model-profile schema support. Artifact schemas now recognize
    model-profile, binding schemas allow model-assignment targets to be
    either ModelProfile or ModelSpec artifacts, and role schemas expose
    default_model_profile while keeping legacy default_model
    compatibility.
  • Added a model-profile migration helper.
    migrate_model_profiles.py creates 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_providers to 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-doctor now
    flags provider/model names in model-profile filenames, missing profile
    candidate model specs, and Role/TeamMember bindings that directly pin a
    ModelSpec without conditions.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 that ModelSpec artifacts 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-deliverable now permits
    timestamped ModelProfile artifacts in src/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.toml from 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 carry profile_id and profile_rank, making
    it visible which neutral profile produced the concrete model choice.

Verification

  • pk-doctor --no-log passed with 0 ERROR / 0 WARN.
  • scripts/check-src-context-drift.sh --release-deliverable passed.
  • release_audit.py --tree=src-context passed with 0 ERROR / 0 WARN.
  • 35 passed for resolver and default-binding coverage tests.
  • 21 passed for model-recommender MCP filter tests.
  • 20 passed for model migration tests.
  • 26 passed for release-audit tests.
  • uv run scripts/smoke-test-servers.py passed across the MCP smoke
    suite.

v0.25.2 - model-spec artifact hygiene

03 May 18:06

Choose a tag to compare

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/ and src/context/artifacts/.
  • Model-assignment bindings now target timestamped
    Artifact(kind=model-spec) IDs.
  • pk-doctor now flags model-spec artifact naming drift and legacy
    ART-model-* binding targets.
  • .gitignore.example is 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-* and ART-model-*
    inputs while canonical bindings use timestamped artifact IDs.

Added

  • Timestamped model-spec artifacts:
    ART-YYYYMMDD_HHMM-ModelSpec-<provider>-<family>.md.
  • A pk-doctor context-hygiene check for non-timestamped model-spec
    artifact IDs and filenames.
  • A pk-doctor context-hygiene check for model-assignment bindings that
    still target old ART-model-* model artifacts.
  • src/.gitignore.example in 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-timestamped ART-model-* projection.
  • migrate_models.py emits 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-doctor now catches artifact hygiene issues that previously reached a
    zero-error report:
    • HTML artifacts in active context.
    • suspicious _0000 artifact timestamps.
    • non-timestamped model-spec artifact names.
    • model bindings that still target old model artifact IDs.
  • model-recommender resolver compatibility now accepts legacy MODEL-* and
    ART-model-* references during migration while resolving canonical
    timestamped model-spec artifacts.
  • context-archiving can 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-* or ART-model-*
    references. The resolver accepts those forms for compatibility, but
    pk-doctor now reports them so projects can migrate to timestamped
    artifact IDs.
  • aibox should still own first-line migration generation for derived
    projects; pk-doctor is 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.py passed.
  • uv run context/skills/processkit/pk-doctor/scripts/doctor.py --no-log
    passed with 0 ERROR / 0 WARN.
  • scripts/check-src-context-drift.sh --release-deliverable passed.
  • uv run --script context/skills/processkit/release-audit/scripts/release_audit.py --tree=src-context
    passed with 0 ERROR / 0 WARN.
  • uv run scripts/smoke-test-servers.py passed across the MCP smoke suite.
  • sha256sum -c processkit-v0.25.2.tar.gz.sha256 passed for the release
    tarball.

v0.25.1 — model recommender lifecycle and task routing

03 May 10:30

Choose a tag to compare

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, or unverified status 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 as architecture,
    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, and include_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
    legacy or deprecated; routing can still select it for cost,
    compatibility, privacy, or task-fit reasons.
  • Resolver tie-breaking now understands task classes. resolve_model
    accepts task_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 legacy migrate_models.py path 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.
  • unverified entries remain visible only under the same conservative
    assumptions as _estimated records; production routing can exclude
    them with include_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 passed for model-recommender query, migration, and default-binding
    tests.
  • 29 passed for resolver tests.
  • python3 -m py_compile passed for model-recommender server,
    resolver, and migration helper.
  • scripts/check-src-context-drift.sh --release-deliverable passed.
  • uv run scripts/smoke-test-servers.py passed across the MCP smoke
    suite.

v0.25.0 — processkit gateway and v2 release boundary

02 May 17:41

Choose a tag to compare

[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 dogfood context/. Runtime project memory,
    generated logs, local decisions, and migration history remain in the
    consuming project's context/; only the versioned processkit
    primitives, skills, schemas, state machines, and release metadata ship
    from src/context/.
  • Metric, Model, Process, Schedule, and StateMachine are no
    longer shipped as first-class v2 entity primitives.
    Their schemas,
    shipped entity directories, and primitive asset schemas were removed
    from src/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 Model entity 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-class Model primitive must update that logic.
  • Task-router process overrides are legacy-v1 compatibility data.
    The process_override field is retained for older derived projects,
    but the server now identifies it as legacy-v1 metadata. New v2
    routing should rely on skill and tool routing rather than first-class
    Process entities.
  • The release gate now rejects dogfood-only content in src/context/.
    scripts/check-src-context-drift.sh --release-deliverable fails if
    the shipped tree contains local project memory, demoted primitive
    schemas, demoted entity directories, or target_kind references to
    removed primitives. This can break downstream packaging flows that
    assumed context/ and src/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 through stdio-proxy --url ... for harnesses
    that only support command-launched MCP servers.
  • Added lazy catalog support for lower idle memory. The gateway can
    generate and consume mcp/tool-catalog.json so 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_tools and
    gateway_health expose 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=both so
    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.sh runs the release-boundary guard and
    the src-context release 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 whether src/context is 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-mcp remains as a compatibility bridge. It was updated
    to coexist with processkit-gateway and 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 deprecated siteConfig.onBrokenMarkdownLinks
    warning during docs builds.

Removed

  • Removed shipped src/context/models/ and src/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: Model from shipped model-assignment Binding
    files.
  • Removed the docs primitive page for Metric as 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 of aibox apply or aibox reset. That
    flow should export project memory, bootstrap a fresh context/ 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, or StateMachine release 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-deliverable passed.
  • release_audit.py --tree=src-context passed with
    0 ERROR / 0 WARN / 485 INFO.
  • pk-doctor --category=drift --no-log passed with
    0 ERROR / 0 WARN / 1 INFO.
  • uv run scripts/smoke-test-servers.py passed 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
    130 tools across 23 source servers.