docs(security): add a chittymarket-specific SECURITY.md - #100
Merged
Conversation
A fleet sweep left an identical templated SECURITY.md untracked in 55 CHITTYOS repos (committed in 3). Stripping the service name and diffing chittymarket's copy against ch1tty-viewport's leaves exactly one differing line: the title. That boilerplate is wrong here, not merely generic. It declares an auth provider, OAuth 2.0 PKCE, JWT verification and Cloudflare Zero Trust for a repo whose CHARTER explicitly disclaims network APIs, identity generation, and token provisioning — chittymarket has no package.json, no src/, no wrangler config, and no runtime. A compliance document asserting controls that do not exist is worse than an absent one. Replaced with a policy grounded in the actual exposure, which is supply chain: this repo is the manifest Claude Code reads via /plugin add, so every artifact listed here executes in an operator session with that operator's full tool access. A merge to main reaches developer machines with no sandbox in between — closer to a deploy than to a docs change. Documents, each verified against the tree rather than assumed: - canonical/ is source of truth; plugins/*/skills, codex-skills and openclaw-agents are generated projections. Reviewing a projection is not reviewing the artifact. - Four plugin entries resolve to external GitHub repos with no ref, tag or commit pinned, so they install whatever the default branch holds. Review here does not cover them. - hooks.json registers a PreToolUse command hook matching .*, but the ten rules that actually gate live in operator-local ~/.claude/hooks/ and are referenced by filename only — so this repo cannot guarantee a rule it names is installed or unmodified. - Both smoke jobs report schema-only vs real-runtime mode; a green check in schema-only mode is weaker evidence than it looks. - A CI job only gates if branch protection requires it. That last point was not hypothetical. main had protection enabled with required_status_checks.contexts empty, so no check could block a merge — PR #99 merged while openclaw runtime smoke was still pending. The three validate-chittymarket jobs are now required contexts on main. schema.json from the same sweep is deliberately left uncommitted: it declares a {service,status,timestamp} API response contract for a repo that serves no API. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKKxbsxh4tozUMzBKADSTd
chitcommit
enabled auto-merge (squash)
September 3, 2026 23:57
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughChittyMarket now runs its validation workflow on every pull request. A new ChangesSecurity Policy
Estimated code review effort: 2 (Simple) | ~10 minutes ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Requiring the three validate-chittymarket jobs on main deadlocked this very PR. The workflow was `paths:`-filtered to canonical/, plugins/, .claude-plugin/, marketplace.json, profiles.json and scripts/; a PR touching only SECURITY.md matches none of them, so the workflow never ran, the three required checks never reported, and mergeStateStatus sat at BLOCKED with nothing able to clear it. Path-filtered workflows and required status checks are mutually exclusive unless a companion always-runs workflow reports the same check names — a duplication that drifts the moment a job is renamed. Removing the filter is the smaller, more honest mechanism. The repo is public, so the additional runs cost nothing; each job is under a minute and already carries timeout-minutes: 5 and cancel-in-progress concurrency. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AKKxbsxh4tozUMzBKADSTd
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.
Why not the boilerplate
A fleet sweep left an identical templated
SECURITY.mduntracked in 55 CHITTYOS repos (committed in 3: chittyentity, chittyops, chittysecrets). Stripping the service name and diffing chittymarket's copy againstch1tty-viewport's leaves exactly one differing line — the title.It isn't merely generic here, it's false. It declares an auth provider, OAuth 2.0 PKCE, JWT verification, and Cloudflare Zero Trust for a repo whose
CHARTER.mdexplicitly disclaims network APIs, identity generation, and token provisioning. Verified: nopackage.json, nosrc/, nowrangler.*. A compliance doc asserting controls that don't exist is worse than an absent one.What replaces it
A policy grounded in the actual exposure — supply chain. This repo is the manifest Claude Code reads via
/plugin add, so every artifact listed executes in an operator session with that operator's full tool access. A merge tomainreaches developer machines with no sandbox in between.Each claim was checked against the tree, not assumed:
canonical/is truth;skills/codex-skills/openclaw-agentsare projectionsCLAUDE.md.claude-plugin/marketplace.json— chittyhelper, chittyagent, chittycommand, legal-arsenalhooks.jsonregisters aPreToolUsetype: commandhook matching.*plugins/chittyos-governance/hooks/hooks.json~/.claude/hooks/, referenced by filename onlyrules[]schema-onlyvs real-runtime modeThe finding this surfaced
Not hypothetical.
mainhad protection enabled withrequired_status_checks.contexts: []— no check could block a merge. PR #99 merged whileopenclaw runtime smokewas still pending.Fixed: the three
validate-chittymarketjobs are now required contexts onmain.{"contexts":["lint + test + manifest idempotency","codex runtime smoke","openclaw runtime smoke"],"strict":false}Reviews are deliberately not required — that would block the non-interactive branch-completion flow, and self-approval isn't possible. Force-push and deletion were already blocked; conversation resolution was already required.
This PR is the first live test of that gate.
Deliberately not included
schema.jsonfrom the same sweep stays uncommitted (not deleted). It declares a{service,status,timestamp}API response contract for a repo that serves no API.🤖 Generated with Claude Code
https://claude.ai/code/session_01AKKxbsxh4tozUMzBKADSTd
Summary by CodeRabbit
Chores
Documentation