SLICE-004 — Publication preparation: MIT license, public-facing documentation, and metadata - #8
Merged
Merged
Conversation
…tadata Prepare the repository to be published as a public teaching demo, while it is still private. No application behaviour, endpoint, or security posture changes. - LICENSE: canonical OSI MIT text, 2026, maximalfocus. - pyproject.toml: SPDX `license = "MIT"` plus `license-files`, so package metadata reports `License-Expression: MIT`; education/security classifiers and `Private :: Do Not Upload`, since nothing here is ever published to an index. - SECURITY.md: separates the intentionally demonstrated flaw (the opt-in vulnerable app, its broken "hardened" endpoint, the hand-rolled Zip-Slip import, the fictional tokens) from a real vulnerability (a hole in the containment boundary), and routes the latter to GitHub private vulnerability reporting rather than a personal address. - CONTRIBUTING.md: the Docker-only workflow, the `verify` gate, and the six invariants that keep an intentionally vulnerable project safe to hand out. - README.md: states that nothing is hosted or packaged and that no production-readiness, support, or compatibility promise is made; links the licence, security policy, and contribution guidance. Verified on this tree through the same Compose boundary CI runs: `verify` 68 passed (Ruff + mypy green), `demo` 16/16, `compare` 12/12. Refs #7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Prepares this repository to be published as a public, open-source teaching demo, and records the
publication-surface review. No application behaviour, endpoint, test, or security posture changes.
The visibility change is deliberately not part of this merge — it follows on the exact verified
default-branch commit.
What changed
LICENSEmaximalfocus.pyproject.tomllicense = "MIT"+license-files, education/security classifiers, andPrivate :: Do Not Upload— nothing here is ever published to a package index.SECURITY.mdCONTRIBUTING.mdverifygate, and the six invariants that keep an intentionally vulnerable project safe.README.mdSECURITY.mdnames the opt-in vulnerable application, the deliberately broken "hardened" endpoint,the hand-rolled Zip-Slip import, and the fictional demo tokens as in scope by design and not
reportable, and names a hole in the containment boundary — a secure-app escape, the vulnerable app
starting without both opt-in actions, a write leaving the disposable fixture tree, command execution,
egress, or a genuinely real credential in history — as the thing that is reportable. Reporting goes
through GitHub's private vulnerability reporting, so no personal address is published.
Verification
Run on this branch's tree, through the same Compose boundary CI runs:
docker compose builddocker compose run --rm verifydocker compose run --rm demoALLOW_VULNERABLE_DEMO=true docker compose --profile vulnerable run --rm comparePackage metadata was additionally read back out of a built wheel to prove the SPDX declaration
resolves rather than merely being present in source:
Publication-surface review
Every surface that becomes public on the visibility change was reviewed. The applied denylist is
case-, punctuation-, spacing-, and spelling-tolerant, and covers real governments, public
authorities, agencies, organizations, products, aliases, and abbreviations, plus the identity,
location, and URL of the private companion requirements repository. The secret scan covers provider
token prefixes, cloud access-key IDs, model-provider and chat-platform keys, PEM private-key blocks,
and JWTs.
git grepover every commit ingit rev-list --allnoreplyaddresses only, no personal addressrefs/pull/2/head,refs/pull/4/head,refs/pull/6/headfetched locally and scannedgit fsck --lost-foundmainand this feature branch onlyidentity.py,fixtures.py,config.py…NOT-A-REAL-SECRET,DEMO_SENTINEL)No unresolved secret or private-content finding. Nothing in the reviewed surface references the
private companion requirements repository, discloses private motivation, or names a real
organization; no history rewrite is required.
A CI guard enumerating forbidden terms was deliberately not added: such a guard would itself
write those terms into a retained pull-request ref that no later history rewrite can reach. The
review stays a process gate, recorded here.
Non-goals honoured
Closes #7