Skip to content

Assay 0.13.0

Choose a tag to compare

@X-T-E-R X-T-E-R released this 08 Aug 20:54
· 25 commits to main since this release

Assay 0.13.0

Assay 0.13.0 replaces the 0.6 built-in workflow/runtime stack with a smaller,
local-first project evidence workbench. The release contract is exactly
0.13.0+s4+l8+r3: package 0.13.0, manifest schema 4, layout 8, and systems
registry schema 3.

This note covers the full change set since v0.6.0. Intermediate 0.7–0.13
candidates were never released and have no compatibility contract.

Native Project work

  • Project is a native schema-1 object. project/project.yaml (or
    .assay/project/project.yaml in overlay mode) is the sole Project id/name
    authority.
  • Task provides durable bounded-work identity with readable
    task-0001-<slug> ids, a closed task.json envelope, reader-owned prd.md,
    optional checkpoint/design/research material, explicit lifecycle and archive,
    exact host-context bindings, typed lineage relationships, and partial-health
    listing. Task does not own dispatch, permissions, project acceptance, or
    host runtime state.
  • Roadmap provides readable roadmap-0001-<slug> ids, reader-owned outcome
    prose, independent state and horizon, validated dependency/replacement graphs,
    explicit Task links, revisions, archive, and partial-health reads. Roadmap and
    Task lifecycle never propagate into each other.
  • Spec provides readable spec-0001-<slug> ids, a closed schema-1 envelope,
    reader-owned specification prose, draft/active/retired lifecycle, explicit
    replacement and archive, and digest-bound promotion provenance from an
    Analysis or approved Task file. Activation validates structure; it is not
    approval or Project acceptance.
  • Readable ids are allocated across live and archived records, tolerate
    duplicate titles, and remain stable when titles change.

External Plugin metadata, not execution

  • The former built-in plugin runtime is replaced by schema-1 external Plugin
    metadata under .assay/external-plugins.json.
  • plugin register, observe, list, check, disable, enable, and
    remove validate and record descriptors, exact payload integrity, requested
    host surfaces, grants, observations, and Assay-owned contribution state.
  • Assay does not fetch, install, activate, execute, supervise, or uninstall
    external payloads. Host execution and host-owned state remain outside Assay.
  • The repository includes a descriptor-only generic fixture and an unpublished,
    metadata-only Ponytail adapter. Neither package contains executable Ponytail
    or host payload code.

Source convergence

  • External evidence is consistently a Source. Living and frozen modes share
    the sources/<alias>/ namespace, observation/manifests/captures ledger, and
    Source-bound Analysis flow.
  • The former Reference and Absorb command families, public schemas, templates,
    and help entries are removed. Layout 8 has no references path and current
    Templates do not scaffold Reference/Absorb records.
  • Source observations no longer contain Analysis lifecycle state. Analysis
    close does not rewrite an observation; derived history.md and persisted
    comparison files are removed, while source diff derives comparisons from
    immutable manifests.
  • status reports local upstream movement without network access; --fetch is
    explicit. source sync and switch preserve unrecorded managed-checkout work
    by failing before a destructive refresh.
  • Adopted Source material is tracked only through assay source adoption ....
    Definitions, inspections, evidence, decisions, baselines, and rollback
    receipts use the assay.source-adoption-*/v1 schema family and lazy
    .assay/source-adoptions/ store.
  • The earlier internal Donor module, diagnostics, schema tokens, and loose-state
    path are removed. No dual reader or migration writer exists for those
    unpublished candidate records.
  • Overlay-to-standalone conversion preflights and preserves the current Source
    ledger and Source adoption receipt store without taking ownership of target
    System code.

Simpler Templates, manifest, and workspace index

  • Built-in study, solve, and explore are one-shot Templates. A custom
    Template is an explicit YAML path with a closed schema; Template identity is
    not persisted or reloaded after expansion.
  • Manifest schema 4 contains the literal framework version and exact layout-8
    resolver block. layout.entries stores only bounded paths expanded from the
    one-shot Template; fixed native/core paths are resolved rather than copied
    into the manifest.
  • Retired manifest fields for minimum versions, Project identity, profiles or
    archetypes, capability modules, plugin declarations, and bindings are not
    accepted. External Plugin metadata has its own schema-1 store.
  • Layout-8 path names describe the actual areas directly, including systems.
    No unpublished systems_contracts/systemsContracts alias remains.
  • .assay/managed-files.json schema 1 is the independent no-clobber receipt for
    fixed core assets. It owns generator/asset identity, baseline hashes,
    protection, and executable metadata; the manifest does not.
  • update reconciles only fixed core files. Template output and reader-owned
    Project artifacts remain outside managed overwrite behavior.
  • Global workspace discovery is an explicit schema-1 index under
    ~/.assay/workspaces. Only workspace track, discover, and forget write
    it; lifecycle and read commands do not register, repair, or deduplicate
    workspaces implicitly. The former global projects store is not read or
    migrated.

Registry-canonical Systems

  • .assay/systems-registry.json schema 3 is the sole Project-local System
    authority. The map key is the exact canonical selector; records hold only
    locator, lifecycle, VCS/version observations, and supersedes edges.
  • Selectors are exact. Prefix fallback is removed.
  • Assay does not create, parse, validate, refresh, move, or delete a
    system.yaml; such a file is ordinary System-owned content.
  • system update --path changes only the registry locator. system archive --apply is a logical registry transition and never moves or deletes System
    bytes. The primary transition and supersedes graph remain registry operations.
  • Standalone/overlay conversion preserves registered System content as opaque
    user/System bytes and rewrites only registry locators it owns.

Removed authorities and runtimes

  • Native ADR is removed, including its index, commands, templates, provider
    responsibility, Source hints, and Intent-promotion target. Current normative
    contracts belong in native Specs; durable decisions and findings can remain
    in reader-owned Project prose, Analyses, and Knowledge.
  • Iteration authority is removed: there is no layout path, command family, core
    API/type, template/profile module, status/check projection, Knowledge
    back-reference, conversion ownership, or root-discovery marker. Native Task
    owns bounded future work. solve attempts and explore trials remain
    Template-specific user work areas, not Iteration records.
  • The native capability-module abstraction and product Intent are removed,
    including commands, manifest fields, archetype modules, scaffolds, gates,
    projections, events, capture/list/promotion/integrity, System authority,
    templates, zones, and conversion behavior. External descriptor capability
    requests remain opaque host metadata and grant no Assay authority. A manually
    created intent/ or .assay/intent/ directory is ordinary unowned content.
  • The built-in Trellis runtime, protocols, channels, hooks, migrations, memory,
    plugin reconciliation, and execution surfaces are removed. Agent DAG,
    dispatch, permissions, and activation stay with the host; Relay retains its
    own fork/promotion semantics.
  • Manual/freeform event commands and public event-append/capture exports are
    removed. Mutating core operations still append their automatic structured
    events internally.
  • .assay/VERSION is removed. The exact framework version lives only in the
    schema-4 manifest envelope.
  • There is no physical migration subsystem, native Intent compatibility layer,
    or host execution runtime hidden behind the retained commands.

Narrowed Analysis and Knowledge vocabularies

  • analysis close --exit accepts exactly adopt, reject, or experiment;
    retired decision exits and ADR/Iteration coupling are absent.
  • knowledge add accepts exactly pattern, guide, or troubleshooting;
    retired Knowledge types and Iteration back-references are absent.

Breaking cutover boundary

  • Repository installation and the distributable core/CLI packages require
    Node.js >=22.13.0; repository workflows pin pnpm 11.3.0.
  • Assay 0.13 reads only the exact current workspace tuple
    0.13.0+s4+l8; System operations additionally require registry r3.
  • v0.6.0 workspaces and every unpublished intermediate candidate fail closed
    before semantic reads or writes. Core does not contain a legacy reader,
    in-place upgrader, dual writer, or downgrade path.
  • Any retained workspace that must cross the boundary requires a separately
    reviewed external exact-pair cutover tool. This release does not claim that a
    real workspace migration was performed.
  • Package metadata is set to 0.13.0. This repository note does not claim npm
    publication, tagging, deployment, or installation into a user environment.

Release verification

The repository release gate builds all packages, runs type checking, lint,
package tests, CLI smoke scenarios, disposable init/adopt flows, and the
committed public-example check. The public example is a sanitized generated
study workspace with no runtime ledgers or local systems registry.