Publish an accepted analysis

Type: types/instruction.md

Expose one accepted complete analysis per source while preserving exact accepted bytes. Only the agent running the analysis loads this instruction; workers do not. Analyst obligations end at their assigned outputs. No regeneration or Git authority follows from this instruction.

Assembly and publication finish acceptance in commonplace-analysis run in the prepared worktree. The subsequent trace scan and meta-analysis are advisory; they neither change the receipt nor gate publication or integration. Assembly and publication require exact members, every member passing its check against the current members, pinned validation criteria, producer provenance from the harness records, frozen source and unchanged method/code. Assembly produces the exact-byte manifest; publication consumes the pinned manifest and members from the run's artifact/. There is no standalone finalize, handoff or publication command.

A complete disposition publishes GitHub sources to retained/<owner>--<project>/, lowercasing both components and preserving repository punctuation. Other source kinds retain their existing naming. Publication names do not change run IDs. An incumbent moves unchanged to retained-archive/<its-run-id>/, then the accepted manifest and members are copied unchanged. blocked and out-of-scope dispositions complete locally without retained mutation. commonplace-analysis inspect <run> distinguishes these results: published means the receipt says so, local a non-complete result; neither is a fresh audit of retained files.

After the report and separate operator authorization, run commonplace-analysis integrate <run> with the prepared worktree's command directory and working directory; its recorded origin must be clean and on main (an agent adds --model <model-id>). Integration independently checks current completion and coverage, exact pinned publication inputs, retained bytes, publication journal and archive evidence. It stages only the changed retained artifact and its archive, commits them on analysis/<run-id> from the method commit, and merges that branch into main. It refuses unrelated tracked changes or pre-existing staging in the worktree and a method commit not ancestral to main. A merge conflict is aborted; preserve the branch and worktree for the operator. Do not copy the artifact or choose a conflict side automatically.

Publication journals record exact trees before mutation. A shared repository lock coordinates cooperating publishers; exclude non-cooperating writers from the destination. Ordinary failures restore the incumbent. Abrupt interruption or failed preliminary guards can leave an uncertain effect. Stop and preserve the evidence for separately authorized recovery; a journal's state label does not establish the filesystem outcome. Never edit state to claim completion. Old/mixed run directories are rejected. Keep old retained data; independently chosen old-evidence handling requires its archived method checkout, not an adapter in this tree.

A frozen pre-namespace-migration worktree still uses its pinned publication name and integration code. Do not patch its members, receipts, method or run ID. Before separately authorized integration, compare its source identity with the origin's current publications. If an owner-qualified incumbent exists, stop: the old integration path does not establish replacement or archive correctness at the new path. Preserve the audit hold for a separately planned transfer. If no incumbent exists, an authorized legacy integration may use its pinned commands, followed immediately by the separately authorized uv run python scripts/migrate_analysis_publications.py --apply --record <new-record-path> in the origin. Review its dry run first. The migration rejects duplicate sources, destination collisions and member edits; validate before exposing the result. This migration command belongs to this checkout, not the installed framework.

The site and comparison tools use the shared current-analyses enumerator. It rejects partial sets, duplicate sources and directory names that disagree with source identity. No list or per-source reference file is committed. Links to the current path follow its newest analysis; version-dependent claims cite the run ID and commit or the superseded analysis's archive path.