sections, customize required project content, and retain only the locally
significant exceptions identified in the roadmap. Preserve Narratio's actual
application contracts; this is not an architecture redesign or new safety audit.
Every adopted policy receives its actual Base Policy Version, actual local
adoption date, and an Upstream Source URL with the full reviewed commit and its
own `docs/policy/<filename>.md` path. Use current branch URLs only for public
discovery/adoption-guide navigation. Preserve commit-pinned upstream example
links; do not duplicate the example collection locally. No sync checker or
metadata registry is required.
### Attribution scope and presentation
Use OSS v1.8's exact House Format. Attribution contains factual entries, not
research notes. Put concrete exception reasoning in OSS policy or an appropriate
decision record. Credit copied policy, agent-orientation, and reading-guide
material accurately, distinguishing adapted portions from unrelated local text.
Keep adapted material CC-BY-SA-4.0 and application code GPL-3.0-or-later.
Inventory selected modules and shipped runtime material, not every historical
go.sum entry or development executable. Include the test-only go-cmp module as
part of the maintained module inventory with factual scope identification. Do not
include separately installed Audita, Notarius, PromptKit, or other subprocess
applications merely because Narratio invokes them. Include any actual copied
material discovered in the repository. Combine related modules into a component
entry only when their source revisions and notices can all be represented
accurately; do not invent a single revision for independently tagged modules.
### Final release validation and mechanics
Keep the current `scripts/release.sh VERSION` interface and source-push-before-tag
workflow. The optional `check-release-candidate.sh VERSION` remains diagnostic;
normal release instructions invoke only publication, which calls the checker once.
No persistent validation receipt/cache or skip-validation escape hatch is added.
The final checker runs these checks once per invocation:
| Check | Selected treatment and reason |
| --- | --- |
| Stable version and nonempty matching note/title | Retain existing identity checks. Remove fixed section-heading checks; content and footer are preparation responsibilities, not a new prose parser. |
| `go mod tidy -diff` | Retain: detects an incomplete checked-in module graph without modifying source. Module downloads are preparation, not application-service calls. |
| Tracked Go formatting and diff whitespace | Retain existing inexpensive source hygiene checks; do not add whole-history scans. |
| `go test -race -count=1 ./...` | The single full suite. It includes doccheck and maintained examples. Race instrumentation adds distinct coverage for Narratio's concurrent I/O, cancellation, and shared state. Remove the separate ordinary full-suite invocation. |
| `go vet ./...` | Retain distinct static checks not established by runtime tests. |
| Release asset builder | Retain three existing targets and embedded-version smoke check. Remove redundant `go build ./...`; package tests compile packages and the builder validates deliverables. |
| Extra focused doc/example test invocations | Remove: covered by the full suite. Remain available for development diagnosis. |
Keep GOWORK=off for owned Go commands. Use explicit `-mod=readonly` on owned
test/vet/build commands, including the asset builder, so incidental vendor trees
are not selected and validation cannot silently edit the module requirements.
Do not overwrite all caller GOFLAGS just to set this option. Keep tidy's own
`-diff` mode. These choices preserve the existing module-based release model.
Remove the blanket tracked-go.work/go.work.sum rejection: they are inert with
GOWORK=off. Remove the mere-existence vendor-directory rejection. Narrow the
existing all-replacements ban to filesystem replacements: release inputs remain
versioned modules rather than machine-local replacement paths; allow versioned
module replacements. Use Go's module metadata, not regex parsing of replace
blocks. A `go list -m` template inspecting `.Replace.Version` can report local
replacement module names. Do not build a new dependency-policy framework.
This narrows an existing prohibition; supporting repository-local replacement
modules is not introduced by this work.
Retain exact-candidate guards, origin/main matching, clean tracked/untracked state
as reported by Git, fresh versions, lightweight tags, explicit-ref push, and
builder destination protections. Ignored local files alone do not fail release.
Do not add successful-push network read-back, CI polling, native macOS checks,
new artifacts, or application credential requirements. Cheap mutable publication
state checks before and after validation remain justified.
## Stage 1: Adopt common policy, provenance, and orientation
Status: Pending.
Read the pinned adoption guide, all seven pinned policy templates, the attribution
example for policies, and current local counterparts. Review the roadmap's local
customizations, root AGENTS.md, and docs/development.md.