blob: 08ef631ba237d5e1f9052b05f36922aa1d9cc6b3 [file] [view]
<!-- SPDX-License-Identifier: Apache-2.0
https://www.apache.org/licenses/LICENSE-2.0 -->
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*
- [Source release contents](#source-release-contents)
- [Files kept in the source archive](#files-kept-in-the-source-archive)
- [Files deliberately excluded](#files-deliberately-excluded)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
# Source release contents
The signed source artefact — `apache-magpie-<version>-source.zip`, the
file the `[VOTE]` thread votes on — is produced with `git archive`,
which honours the `export-ignore` attributes declared in
[`.gitattributes`](../.gitattributes). Alongside the framework source
(`skills/`, `tools/`, `docs/`, `projects/`, the Python packaging, and
`LICENSE`/`NOTICE`) the archive deliberately keeps a small set of
repository-root metadata and configuration files.
Those files are **part of the development and release environment**, not
stray artefacts: a from-source checkout of Magpie needs them to build the
project, run its licence audit, and drive the framework's own skills. To a
reviewer scanning the archive they can look like "developer-only" noise,
so this note records what each one is and why it ships. It follows the
review discussion on the `0.1.0-rc2` `[VOTE]` thread on
`dev@magpie.apache.org`.
`release-verify-rc` re-checks the unpacked archive (symlink-lint,
validators, no `.pyc`), so a regression in what ships fails the RC before
the vote.
## Files kept in the source archive
| Path | Why it ships |
|---|---|
| `.rat-excludes` | Input to Apache RAT, passed via `--input-exclude-file` in `.github/workflows/rat.yml`. Declares the paths that legitimately carry no Apache licence header (lock files, generated markers, licence-detection test fixtures). Anyone re-running the licence audit on the source tree — including `release-verify-rc` — needs it. |
| `.asf.yaml` | ASF self-service repository configuration consumed by ASF infrastructure (GitHub settings, notifications, branch protections). Standard ASF project metadata. |
| `doap_Magpie.rdf` | The project's DOAP ("Description Of A Project") RDF descriptor — the machine-readable project record that `projects.apache.org` and ASF tooling consume. Standard ASF project metadata. |
| `.apache-magpie.lock` | The committed self-adoption pin (Magpie adopts itself: `method: local`, `source: skills/`). Part of the framework's own adoption wiring, read by `/magpie-setup`. |
| `.claude/settings.json` | Agent development-environment configuration for working on the framework from source. Part of the dev environment rather than a personal preference; more agent configs may be added over time. |
| `.github/ISSUE_TEMPLATE/`, `.github/PULL_REQUEST_TEMPLATE.md` | Not just GitHub chrome — these are referenced by shipped GitHub-vendor skills (PR / issue triage tooling) and cross-checked by validation hooks that verify inter-file links resolve. Stripping them would break those skills and fail the validators. (The genuinely CI/bot-only parts of `.github/` are excluded — see below.) |
| `.gitignore` files — the repository root one plus the nested ones (`projects/_template/.gitignore`, `tools/**/.gitignore`, `.apache-magpie-overrides/.gitignore`) | Development-environment configuration. The repository-root `.gitignore` keeps a from-source dev checkout of the framework clean; `projects/_template/.gitignore` is example content shipped for adopters to copy; the `tools/**` ones (nesting depth varies by package — e.g. `tools/egress-gateway/.gitignore` one level down, `tools/gmail/oauth-draft/.gitignore` and `tools/privacy-llm/checker/.gitignore` two levels down) keep a from-source dev checkout of each tool package clean. |
| `.agents/skills/*` (symlinks) | The canonical agent skill view — single-hop symlinks that resolve straight to the real `skills/*` directories — kept so the shipped agent view resolves out of the box. The relay chains other agent dirs use (`.claude/skills/`, `.github/skills/`, `.kiro/skills/`) are excluded because they chain symlink → symlink, which a safe archive extractor rejects. |
## Files deliberately excluded
The following are stripped from the archive via `export-ignore` in
[`.gitattributes`](../.gitattributes) — VCS / CI / editor metadata that a
source consumer never needs:
- **Repository-root VCS / dev metadata:** `.gitattributes`,
`.pre-commit-config.yaml`, the linter configs (`.lychee.toml`,
`.markdownlint.json`, `.typos.toml`, `.zizmor.yml`), the lychee
link-checker's generated cache file (`.lycheecache`), and
`.apache-magpie.session-state.json`. (The repository-root `.gitignore`
is **not** excluded — it ships as dev-environment config, above.)
- **Editor metadata:** `.idea/`.
- **CI / bot config:** `.github/workflows/`, `.github/dependabot.yml`.
- **Relay symlink dirs:** `.claude/skills/`, `.github/skills/`,
`.kiro/skills/` (the symlink-chaining views described above).
[`.gitattributes`](../.gitattributes) is the authoritative list and
carries the per-entry rationale.