Files
scriptorium/docs/roadmap/policy.md

219 lines
13 KiB
Markdown

# Standard Repository Policy Alignment
## Status And Intent
Agreed on 2026-09-28; implementation is pending. This roadmap replaces the
earlier licensing-only proposal with alignment of the complete applicable
policy set and its supporting documentation. It defines the targeted end state
and required changes; the [implementation plan](implementation.md) owns ordered
stages and their verification.
The goal is identical policy language across adopting projects except where a
substantive, locally significant requirement or decision warrants customization.
Adopt upstream wording verbatim for non-substantive differences. Existing local
phrasing is not, by itself, a reason to retain a variation.
## Review Revision And Current Baseline
The fixed upstream review revision is
`d84a38ebab26f048cafbe59a2246700c35d29843`.
Use the [adoption and update guide at that revision](https://gitea.maximumdirect.net/eric/policy/src/commit/d84a38ebab26f048cafbe59a2246700c35d29843/docs/adoption.md)
for this adoption. The review compared current local documents directly with
that revision; reconstruction or assessment of historical adoption baselines
is not required.
The reviewed Scriptorium revision is
`d6aecf5c50269b7d130dbf19f416a67454cd9778`. It has six adopted policies,
without per-document Upstream Source metadata, and no `docs/policy/meta.md`.
The policy targets below supersede the earlier roadmap's narrower version
targets.
| Policy and proposed Upstream Source | Current base | Target base | Target treatment |
| --- | --- | --- | --- |
| [agents.md](https://gitea.maximumdirect.net/eric/policy/src/commit/d84a38ebab26f048cafbe59a2246700c35d29843/docs/policy/agents.md) | 1.1 | 1.3 | Adopt shared rules verbatim, including commit discipline. |
| [architecture.md](https://gitea.maximumdirect.net/eric/policy/src/commit/d84a38ebab26f048cafbe59a2246700c35d29843/docs/policy/architecture.md) | 1.1 | 1.3 | Adopt common principles and customize for Scriptorium's established boundaries. |
| [documentation.md](https://gitea.maximumdirect.net/eric/policy/src/commit/d84a38ebab26f048cafbe59a2246700c35d29843/docs/policy/documentation.md) | 1.4 | 1.11 | Adopt shared language and tailor the canonical topic map. |
| [testing.md](https://gitea.maximumdirect.net/eric/policy/src/commit/d84a38ebab26f048cafbe59a2246700c35d29843/docs/policy/testing.md) | 1.1 | 1.3 | Adopt shared guidance with focused local test ownership. |
| [release.md](https://gitea.maximumdirect.net/eric/policy/src/commit/d84a38ebab26f048cafbe59a2246700c35d29843/docs/policy/release.md) | 1.2 | 1.4 | Adopt common rules and retain justified release choices. |
| [oss.md](https://gitea.maximumdirect.net/eric/policy/src/commit/d84a38ebab26f048cafbe59a2246700c35d29843/docs/policy/oss.md) | 1.1 | 1.8 | Adopt licensing, attribution, and reference-example conventions. |
| [meta.md](https://gitea.maximumdirect.net/eric/policy/src/commit/d84a38ebab26f048cafbe59a2246700c35d29843/docs/policy/meta.md) | Not adopted | 1.0 | Add provenance, local authority, and upstream discovery. |
Every existing policy needs language and provenance updates. No adopted policy
is entirely update-free, but established application decisions, dependency
licenses, and release mechanics need no substantive change.
Current supporting-document gaps include the README's obsolete BSD project
license statement, the release procedure's two-link footer, an attribution
document that does not follow the new exact House Format, and orientation
guidance that requires architecture reading even for unrelated work.
The architecture policy's command inventory also omits the implemented
`config` command family.
## Target Policy Language And Local Customizations
Remove every `Base Policy Template` section and its adoption instructions.
Replace instructional application-specific placeholders with actual decisions;
do not leave template examples describing nonexistent components.
Use upstream common language verbatim. Keep necessary local requirements
clearly identifiable rather than paraphrasing entire shared sections.
The following customizations are justified:
- **Architecture:** preserve PromptKit and ConfigKit ownership, full support
for valid PromptKit definitions, public dependency boundaries, HTTP artifact
containment, and simple predefined-prompt execution. Preserve caller-visible
request independence alongside shared engine and backend capacity state.
These are deliberate product and safety decisions, not generic template
choices. Adopt upstream architectural principles proportionately; they do
not require a wrapper or interface for every library. Correct the command
inventory and keep concrete package mechanics in internal documentation.
- **Documentation ownership:** tailor the topic map to the executable CLI and
HTTP application. Scriptorium does not offer a reusable public Go API;
consumer guidance covers executable use and migration to PromptKit.
PromptKit remains the owner of framework formats. Use upstream wording for
generic ownership, example, and ADR guidance instead of retaining redundant
local paraphrases. Preserve accepted ADR decisions and their history.
- **Testing:** retain a short project-specific ownership section distinguishing
Scriptorium's integration and adapter tests from upstream framework/parser
tests. This prevents duplication of PromptKit and ConfigKit test matrices.
HTTP containment and shared-capacity behavior justify focused adapter
coverage. Upstream observations about domain coverage are not quotas or a
hierarchy that displaces risk-based testing.
- **Release:** preserve branch-before-tag publication, annotated tags,
Linux amd64/arm64 binaries and checksums, and asynchronous artifact delivery.
Retain race testing because the server shares concurrent engine state and
source guards because local replacements, workspaces, or vendoring can hide
unpublished dependency substitutions. Keep gate rationale in policy and
concrete commands, targets, and publication choices in the release procedure.
Upstream's optional atomic-push approach does not require a new feature.
- **OSS:** use Scriptorium's actual GPL-3.0-or-later grant in the project
example. Preserve dependency grants and the settled House Format
interpretation for upstream notice links. The code grant does not extend
to separately licensed copied policy material.
No agent-policy exception is needed: upstream already preserves the local
commit authorization and safety boundaries. Stylistic preferences, alternate
wording, and generic elaboration do not justify additional exceptions.
## Provenance And Public Discovery
When adoption lands, each of the seven policies records its target
`Base Policy Version`, actual local adoption date in `Last Updated`, and
`Upstream Source` pointing to the exact corresponding file linked in the
table above. Do not substitute a repository homepage, moving branch, another
policy's URL, or a historical source revision for that per-document link.
Retain accurate provenance in later local edits.
The new local `docs/policy/meta.md` follows upstream language after removing
its template section. It establishes that adopted local policies govern the
repository and that upstream changes require deliberate adoption. Its public
discovery links remain current:
- [Standard Repository Policies](https://gitea.maximumdirect.net/eric/policy).
- [Current adoption and update guide](https://gitea.maximumdirect.net/eric/policy/src/branch/main/docs/adoption.md).
Adopted-source and example links remain commit-pinned. Preserve the valid
commit-pinned example links supplied in the selected OSS policy; their asset
revision need not be rewritten merely to match the policy review revision.
Public discovery and attribution in this agreed adoption supersede the earlier
instruction not to reference the policy repository.
## Orientation And Selective Reading
Adapt [the upstream agent orientation](https://gitea.maximumdirect.net/eric/policy/src/commit/d84a38ebab26f048cafbe59a2246700c35d29843/agents/AGENTS.md)
into [root AGENTS.md](../../AGENTS.md), preserving applicable existing
code-discovery instructions. It points to the local contributor guide and
requires the agent policy before recommendations, planning, or implementation;
it does not require reading the entire suite by default.
The [contributor guide](../development.md) gains the upstream Policy Reading
Guide table and associated selection rules, including the new meta policy.
Retain Scriptorium's task-specific contract guide alongside it. Architecture
reading becomes task-triggered rather than unconditional. Relevant policies
are read before governed decisions, multiple policies may apply, material
already available in context may be reused, and expanded scope triggers
expanded reading. Policy-reading triggers live here, not in the documentation
topic map.
## Licensing And Attribution
Follow the [canonical copied-policy attribution entry](https://gitea.maximumdirect.net/eric/policy/src/commit/d84a38ebab26f048cafbe59a2246700c35d29843/examples/licensing/policy-attribution.md).
Insert it directly beneath the prescribed attribution title and replace all
three placeholder URLs with the full review commit. Identify the actual
copied/adapted scope, including agent-orientation material and copied reading
guidance where used, rather than describing only policy files if additional
material is incorporated. Preserve creator, copyright, license, disclaimer,
and modification information through the supplied notices and links.
Required supporting changes:
- Add the complete, unmodified `docs/oss/licenses/CC-BY-SA-4.0.txt` from the
selected revision.
- Extend [COPYRIGHT](../../COPYRIGHT) to identify the adapted policy material
as CC-BY-SA-4.0 and point to attribution for exact scope. Preserve
Scriptorium's GPL-3.0-or-later code grant and existing [LICENSE](../../LICENSE).
Unrelated application documentation is not automatically relicensed.
- Reformat [attribution](../oss/attribution.md) to the v1.8 House Format:
`# Open Source Attribution Notices`, followed directly by component entries;
factual optional identification; supplied copyrights; SPDX expressions;
license/notice links with actual filename labels and terminal periods;
and `[Source](COMMIT_URL).`.
- Remove its introductory policy prose, missing-copyright filler, and
agent-authored license-scope explanations. Omit an unavailable copyright
field instead of explaining that none was invented. Preserve actual
required upstream notices, applicable license expressions, and imported
dependency revisions.
- Correct [README](../../README.md) to link its GPL v3 or later statement to
`COPYRIGHT`, followed by the attribution link.
- Update [the release procedure](../release.md) to use the prospective
`COPYRIGHT | LICENSE | ATTRIBUTION` footer, with absolute immutable-release
URLs for all three destinations. The existing hosted workflow continues
copying the checked-in release note unchanged.
The documented CC-BY-SA arrangement is agreed for this adoption. Original
licensing-example formatting has upstream's CC0 permission; using it alone
does not require a separate attribution entry. Reproduced license texts and
third-party notices retain their own terms.
## Local Materials And Upstream References
Keep applicable adopted policies, Scriptorium's adapted root orientation and
developer guide, actual project notices, attribution entries, and required
license texts locally.
Keep the upstream adoption guide, README, root AGENTS.md, developer guide, and
example collection upstream. Link to them as appropriate rather than copying
them into a parallel local handbook. The upstream `agents/AGENTS.md` is the
downstream orientation template, distinct from upstream's own root AGENTS.md.
Copy only needed standard license texts, not the entire reference collection.
## Scope And Completion Criteria
This work updates policy and supporting documentation. It does not change
application code, dependency versions or grants, release scripts, publication
mechanics, or accepted ADR decisions. No new scanner, recurring synchronization
check, license approval, publication-time network probe, or release gate is
introduced. Published releases, tags, notes, and assets remain unchanged.
Completion means:
- All seven policy files use the selected versions, accurate source links,
adoption dates, and upstream common wording, with template-only content
removed and local variations limited to the justified decisions above.
- Orientation and selective reading agree, and local links resolve without
depending on a sibling checkout.
- Policy attribution and document-license scope match the material actually
incorporated; required standard texts are complete and unmodified.
- README, attribution, release navigation, and still-operative roadmap
handoffs agree with the new conventions. Historical implementation evidence
remains available through the Git references in the implementation plan,
without making old footer directions current policy. The earlier
author-selected license change remains in the next release's preparation
context; publication remains separate work.
- Review checks the resulting rules, source/example URLs, notice facts, local
links, license-text fidelity, and final diff. Runtime tests are unnecessary
for documentation-only changes. A Git adoption record is sufficient; no
additional provenance database or recurring audit is required.
There are no unresolved policy choices for this scope.