Repository navigation
Release date: 2026-10-11
Prism 0.7.0 delivers the full lifecycle from intake and specification through separate UI and technical design tracks, development, QA, release and operation. It adds roles to board grants with gated approval in the board, per-app progress, release records with rollback and redeploy, and support for bugs and incident records. It also includes security hardening from the independent reviews. Workspaces from earlier versions must be recreated.
Added
- Six workflow roles on board grants.
prism board grant NAME --kind human --write --role po,designer,tech-lead,dev,qa,releasegives a writable human grant its roles (--roletakes a comma-separated list and may be repeated). Roles are fixed for a grant's life; a change is a new grant plusprism board revokeof the old one. An agent grant holds no role (agent_role_forbidden), a role needs--write(role_requires_write) and a role outside the set, or one listed twice, isinvalid_role. A grant identifies a registered token holder and does not verify a person. - Gated approval. A lifecycle action is gated when the registry names the roles its approver must hold (
required_roles: every role inall_ofand, whenany_ofis not empty, one of them). An agent proposes withpreview_skilland cannot apply, recover or decline (approval_required). A human who satisfies the predicate approves in the board: the board header's Proposals dialog lists the proposals that wait for them, shows the checks and the writes, and applies with the review revision and an explicit acknowledgement, or declines with a reason. Approval is accepted only over a browser board session (approval_requires_board_session). The log entry names the approver, the roles they held and the proposer. The board checks the role at preview, at apply, on a pending retry and at recovery, together with the current policy (role_required,approval_review_required,stale_approval_review,stale_policy,proposer_revoked,proposal_declined). qa-separate-from-dev. The setting inknowledge/wiki/SETTINGS.mdmakes the board refuse a QA approval, a bug verification or a bug reverification from the grant that produced, recovered or repaired the evidence it verifies. The journal binds each Delivery evidence row and each bug Fix row to the operation that produced it (separation_required,separation_unverifiable,evidence_generation_conflict). It separates grants, not people. A value other thantrueorfalseisinvalid_policyandinvalid-workflow-policy.- Repair and board state commands.
operation-repairadopts the effects of an abandoned operation and finishes its remaining writes under the original action's predicate (repair_invalid).prism board audit export --out FILEwrites the grants (without token hashes), previews, operations, events and evidence provenance to a new file, andprism board state resetwrites the same export and removes.prism/state/; it is refused while an operation is unresolved (unresolved_operations). - MCP tool contract 4. 16 tools.
list_proposalsanddecline_proposalserve the proposal list;discoverreports the role model, the action registry with each action'srequired_roles,modesand availability, the workspace policy, the participant's roles and whether the request came through a board session, and the pending proposals;list_skillsandget_skillreportrequired_rolesandwrite_toolsfor every skill. - Ten statuses, seven owners and per-app progress. The statuses are
raw,specified,ready-for-design,in-design,ready-for-dev,in-dev,ready-for-qa,in-qa,ready-for-releaseandreleased; the owners arepo,designer,tech-lead,dev,qa,releaseandnone. Fromin-devon, a feature's status is the minimum over the stages of its active apps, derived from each app's rows in## Delivery evidence,## QA verificationand## Release. Acceptance criteria carry stable IDs and the apps that verify them (AC-1 [backend],AC-3 [integration: backend, web]), a revision that QA rows cite, and acriteria-high-watermark so an ID is never reused. Evidence rows record whether they werecheckedorattested. Wiki lint compares status, owner and rows (feature-status-not-minimum,app-row-missing,app-row-ahead-of-status,app-row-out-of-order,stale-qa-evidence,stale-delivery-evidence). - Design in two tracks under one owner. The design owner is
designerwhen an active app has a UI (has-uitrue orunknown) andtech-leadotherwise.design-tracks(ui,technical) recordspending,doneornot-applicablewith a reason. The skillsdesign-ui-doneandtech-design-donesettle a track;design-handoffneeds both settled anddesign-reaffirmempty. The technical design page kind (knowledge/wiki/technical-design/F-XXX-slug.md) holds architecture impact per app, data model, security, non-functional needs, risks, decisions and a Test strategy that names every acceptance criterion. The API contractapi-contracts/F-XXX.mdis created atagreedwith the human's confirmation as the agreement, carries a version and a digest, and delivery evidence cites it (contract_binding_stale). A change to a settled track's pages sets the track back topending; the pages are locked fromready-for-devon. - The QA stage and bugs.
qa-verifyrecords QA rows per app or per integration against the delivered artifact, the criterion revision, the attempt (qa-<n>) and the environment; its first result opensin-qa.qa-passpasses the apps it names and may carry the QA rows still missing, so a clean run is one approval.qa-failsends apps back to development and archives their delivery, QA and Release rows in## Evidence history.qa-return-specandqa-return-designsend the whole feature back. A bug is a current-state page inknowledge/wiki/bugs/, created by a QA action or byingest, with the lifecycleopen,in-fix,fixed,verified,releasedorclosed(wont-fix,duplicate,promoted);bug-updateperforms triage, scope, start, fixed, verified, reverify, reject, close, defer and reopen under per-action roles. An unresolved bug of an app blocks its pass and its release. - Returns and reopening.
dev-return-specanddev-return-designsend a feature in development back;qa-fail,qa-return-*andrelease-return-devsend it back from QA and release;reopen-spec,reopen-designandreopen-devreopen a released feature,reopen-devonly for the apps that change. Each appends one## Evidence historyentry that copies the removed rows verbatim, lowers the requirement pages and the contract it names, and sets therevalidationandapp-revalidationdomains that need fresh evidence. A feature with a released app cannot go back to specification or design (partial_release_requires_new_feature). - The release stage and release records.
release-donesettles the Release rows of the apps it releases (releasedorfailed), ships theverifiedbugs of those apps and writes one dated record,knowledge/wiki/releases/REL-XXX.md, numbered by the board under its lock. The record lists a Delivery row per feature or bug and app with the target, the version, the attempt and the outcome, and snapshots each cited API contract with its digest. Each app has a delivery target indelivery-targetsofSETTINGS.md(deployment,store,artifactorother, with a default for each stack exceptother).release-return-devreturns a failed delivery to development;release-rollbackandrelease-redeployadd records that bind to the current delivery of an app and target. A dependency on a feature or app is satisfied atreleased(dependency_not_released,dependency-cycle). - Operations: incidents, runbooks and the status board. An incident is a dated record in
knowledge/wiki/incidents/INC-XXX-slug.mdwith impact, timeline, cause, mitigation, resolution and follow-up links, written throughingest(there is no incident engine and no incident action). Every generated app shipsdocs/runbook.mdwith what its stack makes known and**Unknown:**items for hosting; an app in an external repository may record the https link of its runbook in the manifest fieldrunbook. The status board has three tables: the features (withDesign tracks,App stagesandOpen bugs), the open bugs, and oneOperationsrow per app with its released features, latest release record and outcome, open bugs and open incidents. - Seven skills.
design-ui-done,tech-design-done,qa-verify,qa-pass,qa-fail,release-doneandbug-updatejoin the 27 existing skills: 34 canonical skills, 23 with connected writes.feature-reopen,ingest(technical design pages, bugs, incidents),feature-status,prep-sprint,wiki-app,wiki-owner,wiki-blockers,askandaudit-featurecover the new statuses, owners and page kinds. - The read layer covers the lifecycle.
prism wiki ownertakespo,designer,tech-lead,dev,qa,releaseandnoneand lists the bugs an owner holds;prism wiki searchreaches bug pages, incident records and technical design pages through their index lines;prism statusreports the app stages of the features in development or later; blockers addfeature-status-not-minimum,app-row-missing,stale-qa-evidence,stale-delivery-evidenceandopen-bug-blocks-qa; the graph and the JSON schemas use the ten statuses; the index lists bugs, technical designs, release records and incidents in their own groups. - Page kinds and lint.
technical-design/,bugs/,releases/andincidents/each have a_FORMAT.md. Lint reports the findings of the new kinds (bug-page-invalid,invalid-bug-status-owner,bug-close-reason-required,duplicate-target-invalid,promoted-bug-unreopened,bug-feature-missing,release-record-invalid,release-row-record-mismatch,incident-record-invalid,incident-follow-up-missing,missing-technical-design,technical-design-feature-mismatch,test-strategy-incomplete,design-tracks-missing,design-tracks-invalid,design-track-pending,design-coverage-incomplete,ui-exemption-reason-required,technical-track-required,invalid-delivery-target,invalid-app-runbook,dependency-cycle). - Docs. The docs describe the roles, the lifecycle, the approval flow, the page kinds, the standard files, every lifecycle error code by stage and the maturity of each lifecycle feature.
Changed
- Release reads and writes use one chronological record validator. Rollback and redeploy bind to the current delivery, retries include a failed delivery of the same item and app and may also ship new items, and malformed reference chains produce diagnostics without recursive traversal. A preview accepts its record only after validating the complete candidate sequence. A verified bug may ship its apps independently, retaining earlier rows and becoming
releasedonly when every app succeeds. releasedends a feature's lifecycle;dev-doneends atready-for-qa.dev-donerecords per-app delivery evidence (artifact, contract citation, implementation, tests and basis) and moves a feature to the minimum of its app stages. Shipping is a release record, not the end of development. A Delivery evidence row has the columnsApp | Artifact | Contract | Implementation | Tests | Basis.- Every action that advances a status, a design track or an app stage is gated. An ungated write (intake, clarification,
ingest,verify-pages,board-review) is applied by any writable grant after the human confirms the preview in the agent host. The direct human actions arepo-handoff,design-startanddev-start, plusoperation-repair. - The instruction files are split by topic so each stays on one page. The action registry, the common action protocol and the write scopes are in
knowledge/wiki/ACTIONS.md, read by the skills that run a lifecycle action; the format and rules of each page kind are in the_FORMAT.mdof its folder;SCHEMA.mdlists the kinds.ACTIONS.mdis a required wiki file (missing-required-wiki-file,missing-schema-version). feature-reopenselects its action from the state of the feature.specifiedandin-designare returns from implementation, returns from QA or reopens of a released feature;in-devis valid only fromreleased.feature-scopeis an ordinary write beforeready-for-devand the actionscope-editfromready-for-devon, which only removes apps, derives the criteria from the removal and archives the removed app's rows.- Generated skill layers, the packaged workflow asset and the golden workspace carry the lifecycle. The workflow asset has a new digest, so grants are reissued after
prism workflow upgrade.
Removed
- The
donefeature status and its owner.releasedand the ownernonereplace them for features; requirements, advisory reviews and plans keep their owndone. ## Post-ship notes,## Reopen historyand theReleasecolumn of Delivery evidence.## Evidence historyrecords what a return or reopen archives, theBasiscolumn records whether evidence wascheckedorattested, and a Release row records the delivery.- The
design: not-applicableanddesign-exemption-reasonfront matter fields. The design tracks and their reasons replace them (unsupported-feature-field). - Delivery attestation by
attested by <Name>:and the codesrelease_evidence_required,delivery_evidence_not_archivedandreopen_artifact_missing. TheBasiscell and the Evidence history checks replace them. - MCP tool contract 3, and any board state without role support. A state database created before roles is refused with
unsupported_board_state; runprism board state resetand issue the grants again. Workspaces and wiki pages written for an earlier status model are recreated.
Security
- Roles and approval are enforced by the board, not by the skills. A gated action is applied only by a writable human grant that satisfies its role predicate, in a browser board session with a review revision and an acknowledgement. The predicate is checked again on a pending retry, on recovery and on repair, with the current policy; an agent cannot apply, recover, decline or repair a gated operation.
- The limits are documented. A grant identifies a registered token holder; a role records what whoever ran
prism board grantassigned; session-only approval keeps the approval out of tool calls and does not protect a leaked human token; local filesystem access can mint a grant;qa-separate-from-devseparates grants. SECURITY.md states each. - Board state is exported and reset in one safe path.
prism board audit exportnever overwrites a file and omits token hashes;prism board state resetexports first and refuses while an operation is unresolved, because deleting.prism/state/loses recovery and separation provenance. - One section parser. The write-scope checks and the evidence readers find a
##heading the same way: a line that starts with##in column zero, outside fenced code. An indented or repeated## Delivery evidence,## QA verification,## Releaseor## Evidence historyheading is refused at preview (ambiguous_lifecycle_section) and reported bywiki lint(ambiguous-lifecycle-section), and a question skill (ask, the clarify skills) cannot change those sections (lifecycle_evidence_changed). A proposal can no longer hide evidence from the scope check that a reader would take as authoritative. - Separation holds through repairs. With
qa-separate-from-dev, the grants excluded from verifying evidence include the approver and every recoverer of eachoperation-repairlinked to the producing operation, a repair of a repair included. - A repair binds the files it adopts. The repair preview records the current digest of every file the abandoned operation already wrote. An edit of one after the review stops the approval (
stale_approval_review,stale_preview), and a recovery of the repair stops withrecovery_source_changed. Recovery rechecks the lint of the pages the repair leaves behind. - Release records are validated before they carry authority. A page in
releases/counts for the current delivery, the next number, a retry or a rollback only when it is a valid record: file name and ID agree, no duplicate ID, required front matter, parseable rows, and a validretry-oforrollback-ofchain. An invalid page blocksrelease-done(release_record_invalid, naming the file) until it is fixed, andwiki lintnames it. - The approval view shows what is approved. The Proposals dialog renders the before and after text of every write, the folder moves and the review obligations, escaped, before the acknowledgement can be given, and reports success only for an
appliedreceipt. A conflict keeps the operation ID, the completed writes and the recovery controls in view. - Evidence history is dated by the preview. The heading of an archiving write is checked against the day the operation was previewed, stored with it, on apply, recovery and repair. A recovery on a later day no longer fails on the date.