Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
491 changes: 491 additions & 0 deletions .github/workflows/mirror-publish.yaml

Large diffs are not rendered by default.

79 changes: 79 additions & 0 deletions .publish-forbidden
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# .publish-forbidden — what must never reach the public mirror, even if the
# allowlist (.publish-include) let it through by mistake.
#
# Read by scripts/publish-guard.sh. Four sections; `#` starts a comment. A
# header the guard does not know, a needle listed in both string tiers, or an
# empty [strings-refuse] is refused as "could not tell" (exit 2).
#
# [paths] gitignore-style names. A pattern containing `/` is
# anchored to the staged root; one without matches ANY path
# component; a trailing `/` means "as a directory".
# [strings-refuse] extended regexes, matched case-insensitively against
# every staged TEXT file. A hit REFUSES the publish and
# names the file and line (never the matched text).
# [strings-report] same syntax. Hits are COUNTED and printed (per-needle
# totals, ten most-hit files) but do not refuse — unless
# the guard runs with --strict, which promotes this tier
# to refusal. A needle moves up to [strings-refuse] the
# day it is decided the mirror must never carry it.
# [allow] exact tokens removed from a line before a needle is
# re-tested, so a line is spared only when the allowed
# token was the whole reason it hit.
#
# This file is ONE list read by both the guard and its tests; the tests write
# their own inputs and never iterate this file to check itself.

[paths]
tests/
scripts/tests/
ci/
.github/
docs/rfcs/
docs/migration-tools/
CLAUDE.md
STYLE.md
Makefile
.cursor/
*.go
go.mod
go.sum
__pycache__
.DS_Store
.env*
*.pem
*.key
kubeconfig*

[strings-refuse]
# Mailboxes (the public support address is spared under [allow]).
[A-Za-z0-9._%+-]+@tracebloc\.io
# AWS account identifiers and ARNs.
arn:aws:
[0-9]{12}\.dkr\.ecr\.
#
# CUSTOMER AND TENANT IDENTIFIERS ARE DELIBERATELY NOT LISTED HERE. This file
# is public, and a list of customer names would itself be the disclosure the
# scan exists to prevent. Those needles are supplied privately at publish time:
# the workflow writes the PUBLISH_FORBIDDEN_TENANTS secret (one needle per line,
# same regex syntax) to a file and passes it as --extra-forbidden; they join
# this tier. The guard refuses to run the scan when that list is missing or
# empty.

[strings-report]
# Internal tracker and RFC identifiers — a reader of the mirror cannot open
# them. Counted until the decision to strip them from the deliverable (or to
# accept them) is taken; --strict refuses them.
backend#
rfcs#
RFC-0
RFC-BACKEND
e2e-test-agent#
tracebloc/backend
# Non-production tracebloc hosts; same decision pending.
dev-api\.tracebloc\.io
stg-api\.tracebloc\.io
dev\.tracebloc\.io
stg\.tracebloc\.io

[allow]
support@tracebloc\.io
29 changes: 29 additions & 0 deletions .publish-include
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# .publish-include — what the public mirror of this repo MAY carry.
#
# Read by scripts/publish-guard.sh. One glob per line; `#` starts a comment.
# `*` and `?` do not cross `/`, `**` does; a leading `!` takes matching files
# back out. Only tracked files are considered. Anything not matched here is
# excluded by construction — .publish-forbidden is the second lock, and it
# refuses the excluded directories below even if the `!` lines were deleted.

# The two Helm charts that `helm repo add tracebloc https://tracebloc.github.io/client`
# serves. Their unit-test suites and CI values never ship (see .helmignore).
client/**
!client/tests/**
!client/ci/**
ingestor/**

# The installer: the two bootstraps plus every file they fetch and verify
# against scripts/manifest.sha256 (the sub-scripts live under scripts/lib/).
scripts/install.sh
scripts/install.ps1
scripts/install-k8s.sh
scripts/install-k8s.ps1
scripts/lib/**
scripts/manifest.sha256

# Front matter, and the operator docs README links to. One level only:
# docs/rfcs/ and docs/migration-tools/ stay home.
README.md
LICENSE
docs/*.md
7 changes: 7 additions & 0 deletions .publish-include-pages
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# .publish-include-pages — what the mirror's GitHub Pages branch MAY carry.
#
# Read by scripts/publish-guard.sh with `--include` when the gh-pages branch is
# mirrored (it is what `helm repo add tracebloc https://tracebloc.github.io/client`
# reads). The branch holds the chart index and the packaged charts, nothing else.
index.yaml
*.tgz
Loading
Loading