Skip to content

Add public-repo guardrails: .gitignore, CONTRIBUTING, disable blank issues - #2

Open
taylormade7978 wants to merge 2 commits into
mainfrom
chore/public-repo-guardrails
Open

Add public-repo guardrails: .gitignore, CONTRIBUTING, disable blank issues#2
taylormade7978 wants to merge 2 commits into
mainfrom
chore/public-repo-guardrails

Conversation

@taylormade7978

Copy link
Copy Markdown
Contributor

Closes #1

Preventive guardrails for a public repo that will receive reviewer-authored issues and screenshots. The security audit itself came back clean — this PR adds no fixes, only prevention.

What changed

File Why
.gitignore Blocks .env, keys, certs, kubeconfigs, service-account JSON, and raw image/CSV/PDF captures from being committed by accident.
.github/ISSUE_TEMPLATE/config.yml blank_issues_enabled: false. This was a real gapdefect.yml has a required confidentiality checkbox, but a reviewer could open a blank issue and skip it entirely. Also adds a contact link routing sensitive reports away from public issues.
CONTRIBUTING.md Screenshot redaction guidance and an accidental-disclosure procedure.
README.md Links CONTRIBUTING; states plainly that filing an issue requires a GitHub account (public = anonymous read only).

Already done outside this PR

Secret scanning, push protection, and non-provider pattern scanning are now enabled on the repo. Backfill over the full history returned zero alerts.

Note on the screenshot rules

.gitignore ignores image files, and CONTRIBUTING tells reviewers to link governed storage rather than paste. This does not affect issue attachments (GitHub hosts those outside the repo) — it only stops captures being committed to the tree. Issue attachments stay governed by the template checkbox and the CONTRIBUTING guidance.

Redaction guidance says solid boxes, not blur or pixelation — both are reversible.

…ssues

The repo is public and will receive reviewer-authored issues and screenshots.
Audit of tree + full history found nothing sensitive; these are preventive.

- .gitignore: env/secret/key/kubeconfig files plus raw image and data
  captures, so evidence cannot be committed by accident.
- .github/ISSUE_TEMPLATE/config.yml: blank_issues_enabled: false, so every
  defect goes through the form carrying the confidentiality checkbox.
- CONTRIBUTING.md: screenshot redaction guidance (the main UAT leak vector)
  and what to do after an accidental sensitive post.
- README: link CONTRIBUTING; note that filing issues needs a GitHub account.

Refs #1
The platform-uat course that generates the scenario issues here was corrected
in edgent-lms#266, so this page has to say the same thing rather than a second,
slightly different thing.

The gap this closes is the security-control paradox. CONTRIBUTING listed
"security findings" among the things never to post but gave no instruction for
the case reviewers will actually hit: a Fail on tenant scoping, the audit
ledger, ReBAC or masking, where the failure report is itself a vulnerability
disclosure and, on masking, a data disclosure on top of it. A new section says
what to do - report the observable behavior, never the workaround, never the
data the control was hiding, and no reproduction steps for an access-control
defect, because those are a recipe.

Screenshots: the page already led with "prefer words", but the scenario issues
used to make an image mandatory. Both now say the same thing - never mandatory,
and on the security-control scenarios attach nothing at all.

Redaction wording strengthened in place. It already said solid boxes and not
blur, which is what the course was corrected TO; it now also offers cropping
the region out, matching the scenario issues word for word.

One private channel, one name: the page said "your Edgent point of contact"
while the course and the issues say "your product lead". Both now name the same
person in the same breath, so a reviewer is never left wondering whether these
are two different escalation paths.
@taylormade7978

Copy link
Copy Markdown
Contributor Author

Reconciled with the corrected course guidance — 469228d

The audit finding in #1 traced the unsafe reporting guidance to the platform-uat course that generates issues #3#27, so the fix landed there (edgent-lms#266) and the 25 issue bodies here have been re-synced against it. That left this PR saying nearly the same thing as the issues a reviewer reads at the point of posting — and "nearly" is how a reviewer ends up following the looser of two instructions. Reconciled in CONTRIBUTING.md only; .gitignore, config.yml and README.md are untouched.

Not merged — this is yours to review and merge.

What I changed

1. Added the missing case: "When the defect is the security control". This was the real gap. The page listed security findings among the never-post categories, but gave no instruction for the situation reviewers will actually hit — a Fail on tenant scoping, the audit ledger, ReBAC or masking, where the failure report is itself a vulnerability disclosure and, on masking, a data disclosure on top of that. The new section says: report the observable behavior and stop; never write down a way around the control; never write down the data the control was hiding; and no reproduction steps for an access-control defect, because those are a recipe rather than a bug report.

2. Screenshots — removed the conflict. This page already led with "prefer describing what you saw in words", but every scenario issue simultaneously demanded "attach at least one image of the screen you were on". Two instructions, and the mandatory one wins. Both sides now say a screenshot is never mandatory, and that on the security-control scenarios the right answer is to attach nothing at all.

3. Redaction wording — strengthened, not corrected. Your version was already right (solid boxes, never blur or pixelate) — it is what the course was corrected to, and #19's "blur or crop" was the thing that disagreed. It now also offers cropping the region out entirely and explains why a merely blurred image is worse than an obviously unredacted one, matching the issues word for word.

4. One private channel, one name. The page said "your Edgent point of contact"; the course and the issues say "your product lead". A reviewer could reasonably read those as two different escalation paths, and pick neither. Both now name the same person in the same breath.

On duplication

I deliberately did not deduplicate. The layering is right: the per-issue 🔐 note fires at the point of temptation, the issue footer is the standing reminder, and this page is the reference that explains why. What was wrong was that the three disagreed — not that there were three. Issue #24 (reviewer onboarding) now points here explicitly.

One thing worth your judgment

.gitignore ignores *.png/*.jpg/*.pdf/*.csv, and your PR description correctly notes this does not cover issue attachments, which GitHub hosts outside the repo. That is the higher-volume path by far, and it is governed only by guidance — the template checkbox, this page, and the per-scenario notes. Worth a follow-up on whether attachments should be discouraged outright in favor of governed-storage links, but out of scope here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Harden public UAT repo: secret scanning, blank-issue bypass, .gitignore, CONTRIBUTING

1 participant