chore(public-prep): scrub author identity + private-IP references
Some checks are pending
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / preflight (push) Waiting to run
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / vps-smoke (push) Waiting to run
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:frustration-matrix,kei-frustration-loop,kei-skill-importer,kei-projects-index,kei-projects-watcher,kei-gdrive-import,kei-leak-matrix,kei-skills,kei-gateway,kei-cron-scheduler,kei-export-trajectories,kei-backend-daytona,kei-d… (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:kei-compute-baremetal,kei-compute-vultr,kei-compute-linode,kei-compute-digitalocean,kei-svc-systemd,kei-llm-bridge-mlx name:hosted-sleep-compute]) (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:kei-diff,kei-scheduler,kei-watch,kei-prune,kei-discover,kei-brain-view,kei-hibernate,kei-ledger-sign,kei-fork name:wave13-15]) (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:kei-git-gitea,kei-git-forgejo,kei-git-gitlab,kei-git-bitbucket,kei-memory-sled,kei-memory-redis,kei-memory-postgres,kei-memory-sqlite,kei-auth-google,kei-auth-apple,kei-auth-magiclink,kei-auth-webauthn,kei-notify-slack,kei-n… (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:kei-ledger,kei-migrate,kei-changelog,kei-memory,kei-store,kei-conflict-scan,kei-refactor-engine,kei-graph-check,kei-shared,kei-dna-index,kei-pet name:core]) (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:kei-machine-probe,kei-llm-ollama,kei-llm-llamacpp,kei-llm-mlx,kei-llm-router,kei-model name:llm-stack]) (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:kei-router,kei-sage,kei-task,kei-chat-store,kei-crossdomain,kei-search-core,kei-content-store,kei-social-store,kei-curator,kei-auth,kei-artifact name:mcp-lbm]) (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:keisei,kei-forge,kei-runtime,kei-runtime-core,kei-atom-discovery,kei-agent-runtime,kei-capability,kei-provision,kei-entity-store,kei-pipe,kei-cache,kei-spawn,kei-replay name:atom-substrate]) (push) Blocked by required conditions
Some checks are pending
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / preflight (push) Waiting to run
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / vps-smoke (push) Waiting to run
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:frustration-matrix,kei-frustration-loop,kei-skill-importer,kei-projects-index,kei-projects-watcher,kei-gdrive-import,kei-leak-matrix,kei-skills,kei-gateway,kei-cron-scheduler,kei-export-trajectories,kei-backend-daytona,kei-d… (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:kei-compute-baremetal,kei-compute-vultr,kei-compute-linode,kei-compute-digitalocean,kei-svc-systemd,kei-llm-bridge-mlx name:hosted-sleep-compute]) (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:kei-diff,kei-scheduler,kei-watch,kei-prune,kei-discover,kei-brain-view,kei-hibernate,kei-ledger-sign,kei-fork name:wave13-15]) (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:kei-git-gitea,kei-git-forgejo,kei-git-gitlab,kei-git-bitbucket,kei-memory-sled,kei-memory-redis,kei-memory-postgres,kei-memory-sqlite,kei-auth-google,kei-auth-apple,kei-auth-magiclink,kei-auth-webauthn,kei-notify-slack,kei-n… (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:kei-ledger,kei-migrate,kei-changelog,kei-memory,kei-store,kei-conflict-scan,kei-refactor-engine,kei-graph-check,kei-shared,kei-dna-index,kei-pet name:core]) (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:kei-machine-probe,kei-llm-ollama,kei-llm-llamacpp,kei-llm-mlx,kei-llm-router,kei-model name:llm-stack]) (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:kei-router,kei-sage,kei-task,kei-chat-store,kei-crossdomain,kei-search-core,kei-content-store,kei-social-store,kei-curator,kei-auth,kei-artifact name:mcp-lbm]) (push) Blocked by required conditions
CI (Forgejo Actions — self-hosted runner on Mac, host mode) / rust-primitives (map[crates:keisei,kei-forge,kei-runtime,kei-runtime-core,kei-atom-discovery,kei-agent-runtime,kei-capability,kei-provision,kei-entity-store,kei-pipe,kei-cache,kei-spawn,kei-replay name:atom-substrate]) (push) Blocked by required conditions
Pre-public Phase 1. Remove personal/IP traces that should not ship in a general-purpose kit; keep only intended author attribution. - no-github-push.sh + hooks-and-blocks.md + ci-scaffold: drop "KeiTech unfiled patent IP / trade secrets / priority date" wording; reword as a generic opt-in guard for keeping code on a private remote. - check-error-patterns.sh: remove author-local absolute path from the tombstone comment. - graph-export-watcher.sh: default viz dir to ~/.local/share/kei/graph-viz (was a personal project path). - agent manifests (cost-guardian, modal-runner, infra/ml/code-implementer) + ci.yml: strip private memory references and dated personal incidents; keep the generic cost/ops lessons. Snapshots regenerated; golden 3/3. Kept intentionally: author attribution (NOTICE / README / Cargo / plugin). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
7b453aac1b
commit
2ffb3a8b1e
20 changed files with 39 additions and 40 deletions
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
|
|
@ -145,7 +145,7 @@ jobs:
|
|||
continue-on-error: true
|
||||
|
||||
workflow-lint:
|
||||
# v0.20.1: guards against the dtolnay-SHA-class incident (2026-04-22).
|
||||
# v0.20.1: guards against the dtolnay-SHA-class incident.
|
||||
# actionlint catches workflow syntax; validate-workflow-shas.sh catches
|
||||
# fabricated / force-pushed SHA pins. Runs fast (<30s).
|
||||
runs-on: ubuntu-latest
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ extra = [
|
|||
"path:user-rules/dev-workflow.md",
|
||||
"path:user-rules/debugging.md",
|
||||
"path:user-rules/karpathy-behavioral.md",
|
||||
"MEMORY.md → Architecture Overlay Incident (model_brain.py 227→354 LOC from \"fixes\" — never patch, fix root formulas)",
|
||||
"Architecture Overlay Incident (model_brain.py 227→354 LOC from \"fixes\" — never patch, fix root formulas)",
|
||||
]
|
||||
|
||||
[taxonomy]
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ You are the cost guardian. Your job is to make sure no paid compute launches wit
|
|||
verified cost estimate, a checked dashboard, and a clean head-room calculation. You stop \
|
||||
runaway spend before it starts. You are READ-ONLY: you emit a GO/NO-GO report card; you do \
|
||||
NOT launch jobs yourself (hand back to user or `ml-implementer`). **The $98.78 Modal incident \
|
||||
(2026-02-26)** is the cautionary tale: prices guessed not verified, silent retries \
|
||||
** is the cautionary tale: prices guessed not verified, silent retries \
|
||||
re-billing, file changes never confirmed, dashboard never checked. Every protocol below \
|
||||
exists because of that day — never again.
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -419,4 +419,4 @@ Blockers / next: <list>
|
|||
- `path:user-rules/dev-workflow.md`
|
||||
- `path:user-rules/debugging.md`
|
||||
- `path:user-rules/karpathy-behavioral.md`
|
||||
- `MEMORY.md → Architecture Overlay Incident (model_brain.py 227→354 LOC from "fixes" — never patch, fix root formulas)`
|
||||
- `Architecture Overlay Incident (model_brain.py 227→354 LOC from "fixes" — never patch, fix root formulas)`
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ model: opus
|
|||
|
||||
# ROLE
|
||||
|
||||
You are the cost guardian. Your job is to make sure no paid compute launches without a verified cost estimate, a checked dashboard, and a clean head-room calculation. You stop runaway spend before it starts. You are READ-ONLY: you emit a GO/NO-GO report card; you do NOT launch jobs yourself (hand back to user or `ml-implementer`). **The $98.78 Modal incident (2026-02-26)** is the cautionary tale: prices guessed not verified, silent retries re-billing, file changes never confirmed, dashboard never checked. Every protocol below exists because of that day — never again.
|
||||
You are the cost guardian. Your job is to make sure no paid compute launches without a verified cost estimate, a checked dashboard, and a clean head-room calculation. You stop runaway spend before it starts. You are READ-ONLY: you emit a GO/NO-GO report card; you do NOT launch jobs yourself (hand back to user or `ml-implementer`). **The $98.78 Modal incident ** is the cautionary tale: prices guessed not verified, silent retries re-billing, file changes never confirmed, dashboard never checked. Every protocol below exists because of that day — never again.
|
||||
|
||||
# AGENT SUBSTRATE — role `read-only`
|
||||
|
||||
|
|
|
|||
|
|
@ -463,4 +463,4 @@ behaviour-verified: yes | no | not-applicable
|
|||
follow-up-required:
|
||||
- <bullet list>
|
||||
```
|
||||
- `MEMORY.md → Architecture Overlay Incident (model_brain.py 227→354 LOC from "fixes" — never patch, fix root formulas)`
|
||||
- `Architecture Overlay Incident (model_brain.py 227→354 LOC from "fixes" — never patch, fix root formulas)`
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ model: sonnet
|
|||
|
||||
# ROLE
|
||||
|
||||
You are the cost guardian. Your job is to make sure no paid compute launches without a verified cost estimate, a checked dashboard, and a clean head-room calculation. You stop runaway spend before it starts. You are READ-ONLY: you emit a GO/NO-GO report card; you do NOT launch jobs yourself (hand back to user or `ml-implementer`). **The $98.78 Modal incident (2026-02-26)** is the cautionary tale: prices guessed not verified, silent retries re-billing, file changes never confirmed, dashboard never checked. Every protocol below exists because of that day — never again.
|
||||
You are the cost guardian. Your job is to make sure no paid compute launches without a verified cost estimate, a checked dashboard, and a clean head-room calculation. You stop runaway spend before it starts. You are READ-ONLY: you emit a GO/NO-GO report card; you do NOT launch jobs yourself (hand back to user or `ml-implementer`). **The $98.78 Modal incident** is the cautionary tale: prices guessed not verified, silent retries re-billing, file changes never confirmed, dashboard never checked. Every protocol below exists because of that day — never again.
|
||||
|
||||
# AGENT SUBSTRATE — role `read-only`
|
||||
|
||||
|
|
|
|||
|
|
@ -438,9 +438,9 @@ Blockers / next: <list>
|
|||
- `{path::user-rules}/git-conventions.md`
|
||||
- `{path::user-rules}/dev-workflow.md`
|
||||
- `{path::user-memory}/security-restricted-projects.md`
|
||||
- `MEMORY.md → Compute Cost Incident (2026-02-26): $98.78 Modal overrun — no dashboard check, unverified prices.`
|
||||
- `MEMORY.md → Recruiter shared-EC2 risk (i-0a8b747023809d451 shared with 3 projects, default SECRET_KEY, no CSRF).`
|
||||
- `MEMORY.md → CloudSync 146 GB bloat: two duplicate LaunchAgents both writing logs. Scan for duplicates before adding infra.`
|
||||
- `Compute Cost Incident: $98.78 Modal overrun — no dashboard check, unverified prices.`
|
||||
- `Recruiter shared-EC2 risk (i-0a8b747023809d451 shared with 3 projects, default SECRET_KEY, no CSRF).`
|
||||
- `CloudSync 146 GB bloat: two duplicate LaunchAgents both writing logs. Scan for duplicates before adding infra.`
|
||||
|
||||
## Output Footer (RULE 0.16)
|
||||
|
||||
|
|
|
|||
|
|
@ -483,8 +483,8 @@ Blockers / next: <list>
|
|||
- `{path::user-rules}/manifold-tangent-sanity.md`
|
||||
- `{path::user-rules}/no-downgrade-constructive.md`
|
||||
- `{path::user-memory}/wrong-paths-specialized-ml.md`
|
||||
- `MEMORY.md → Compute Cost Incident (2026-02-26): promised $27, spent $98.78 on Modal. NEVER AGAIN.`
|
||||
- `MEMORY.md → Architecture Overlay Incident: model_brain.py 227→354 LOC from audit fixes. No Patching.`
|
||||
- `Compute Cost Incident: promised $27, spent $98.78 on Modal. NEVER AGAIN.`
|
||||
- `Architecture Overlay Incident: model_brain.py 227→354 LOC from audit fixes. No Patching.`
|
||||
|
||||
## Output Footer (RULE 0.16)
|
||||
|
||||
|
|
|
|||
|
|
@ -11,9 +11,9 @@ model: sonnet
|
|||
|
||||
You are the Modal compute orchestrator. You launch Modal jobs safely, observe them well, and NEVER burn money or kill running work. Two incidents shape every rule below.
|
||||
|
||||
$98.78 Modal Incident (2026-02-26): promised $27, spent $98.78 in one session. Prices guessed not verified, failed retries silently re-billed, file changes never confirmed, dashboard never checked. Every cost rule exists because of that day.
|
||||
$98.78 Modal Incident: promised $27, spent $98.78 in one session. Prices guessed not verified, failed retries silently re-billed, file changes never confirmed, dashboard never checked. Every cost rule exists because of that day.
|
||||
|
||||
anti-stop guard Incident (2026-03-29): stopped a 1.4-hour training run for a non-critical bug. Cost: 1.4 hours A10G + restart + re-warmup. Every kill rule exists because of that day.
|
||||
anti-stop guard Incident: stopped a 1.4-hour training run for a non-critical bug. Cost: 1.4 hours A10G + restart + re-warmup. Every kill rule exists because of that day.
|
||||
|
||||
Cost tiers: <$5 per run → AUTO; $5-$20 → WARN + daily-cap check ($20/day session); >$20 → STOP and ask. Always state estimate in dollars BEFORE launch: "Estimate: $X.XX (= N_gpus × hours × $/hr/gpu)". GPU compat: A10G torch>=2.0 (~$1.10/hr), H100 torch>=2.1 (~$4.50/hr), B200 torch>=2.6 (~$8/hr). Always verify on pricing page — rates change.
|
||||
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ extra = [
|
|||
"path:user-rules/dev-workflow.md",
|
||||
"path:user-rules/debugging.md",
|
||||
"path:user-rules/karpathy-behavioral.md",
|
||||
"MEMORY.md → Architecture Overlay Incident (model_brain.py 227→354 LOC from \"fixes\" — never patch, fix root formulas)",
|
||||
"Architecture Overlay Incident (model_brain.py 227→354 LOC from \"fixes\" — never patch, fix root formulas)",
|
||||
]
|
||||
|
||||
[taxonomy]
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ You are the cost guardian. Your job is to make sure no paid compute launches wit
|
|||
verified cost estimate, a checked dashboard, and a clean head-room calculation. You stop \
|
||||
runaway spend before it starts. You are READ-ONLY: you emit a GO/NO-GO report card; you do \
|
||||
NOT launch jobs yourself (hand back to user or `ml-implementer`). **The $98.78 Modal incident \
|
||||
(2026-02-26)** is the cautionary tale: prices guessed not verified, silent retries \
|
||||
** is the cautionary tale: prices guessed not verified, silent retries \
|
||||
re-billing, file changes never confirmed, dashboard never checked. Every protocol below \
|
||||
exists because of that day — never again.
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -100,9 +100,9 @@ extra = [
|
|||
"path:user-rules/git-conventions.md",
|
||||
"path:user-rules/dev-workflow.md",
|
||||
"path:user-memory/security-restricted-projects.md",
|
||||
"MEMORY.md → Compute Cost Incident (2026-02-26): $98.78 Modal overrun — no dashboard check, unverified prices.",
|
||||
"MEMORY.md → Recruiter shared-EC2 risk (<ec2-instance-id> shared with 3 projects, default SECRET_KEY, no CSRF).",
|
||||
"MEMORY.md → CloudSync 146 GB bloat: two duplicate LaunchAgents both writing logs. Scan for duplicates before adding infra.",
|
||||
"Compute Cost Incident: $98.78 Modal overrun — no dashboard check, unverified prices.",
|
||||
"Recruiter shared-EC2 risk (<ec2-instance-id> shared with 3 projects, default SECRET_KEY, no CSRF).",
|
||||
"CloudSync 146 GB bloat: two duplicate LaunchAgents both writing logs. Scan for duplicates before adding infra.",
|
||||
]
|
||||
|
||||
[taxonomy]
|
||||
|
|
|
|||
|
|
@ -113,8 +113,8 @@ extra = [
|
|||
"path:user-rules/manifold-tangent-sanity.md",
|
||||
"path:user-rules/no-downgrade-constructive.md",
|
||||
"path:user-memory/wrong-paths-specialized-ml.md", # TODO verify path:user-memory exists in assembler resolver
|
||||
"MEMORY.md → Compute Cost Incident (2026-02-26): promised $27, spent $98.78 on Modal. NEVER AGAIN.",
|
||||
"MEMORY.md → Architecture Overlay Incident: model_brain.py 227→354 LOC from audit fixes. No Patching.",
|
||||
"Compute Cost Incident: promised $27, spent $98.78 on Modal. NEVER AGAIN.",
|
||||
"Architecture Overlay Incident: model_brain.py 227→354 LOC from audit fixes. No Patching.",
|
||||
]
|
||||
|
||||
[taxonomy]
|
||||
|
|
|
|||
|
|
@ -12,11 +12,11 @@ role = """
|
|||
You are the Modal compute orchestrator. You launch Modal jobs safely, observe them well, and NEVER \
|
||||
burn money or kill running work. Two incidents shape every rule below.
|
||||
|
||||
$98.78 Modal Incident (2026-02-26): promised $27, spent $98.78 in one session. Prices guessed not \
|
||||
$98.78 Modal Incident: promised $27, spent $98.78 in one session. Prices guessed not \
|
||||
verified, failed retries silently re-billed, file changes never confirmed, dashboard never checked. \
|
||||
Every cost rule exists because of that day.
|
||||
|
||||
anti-stop guard Incident (2026-03-29): stopped a 1.4-hour training run for a non-critical bug. Cost: \
|
||||
anti-stop guard Incident: stopped a 1.4-hour training run for a non-critical bug. Cost: \
|
||||
1.4 hours A10G + restart + re-warmup. Every kill rule exists because of that day.
|
||||
|
||||
Cost tiers: <$5 per run → AUTO; $5-$20 → WARN + daily-cap check ($20/day session); >$20 → STOP \
|
||||
|
|
|
|||
|
|
@ -32,8 +32,8 @@ All hooks live under `hooks/` directory. Format: `| Hook Name | Event | Severity
|
|||
|
||||
| Hook | Event | Severity | Purpose | Bypass Env |
|
||||
|------|-------|----------|---------|-----------|
|
||||
| no-github-push.sh | PreToolUse:Bash | block | Prevent pushing KeiTech patent IP to github.com — destroys priority date | KEI_NO_GITHUB_PUSH_BYPASS |
|
||||
| no-python-without-approval.sh | PreToolUse:Bash | block | Enforce RULE 0.2 (Rust first) — Python requires exception justification | none |
|
||||
| no-github-push.sh | PreToolUse:Bash | block | Block accidental push / repo-create to github.com (opt-in; for code kept on a private remote) | KEI_NO_GITHUB_PUSH_BYPASS |
|
||||
| no-python-without-approval.sh | PreToolUse:Bash | block | Optional Rust-first policy — Python requires explicit justification (opt-in, stack-gated) | none |
|
||||
| rust-first.sh | UserPromptSubmit | remind | Remind about Rust-first default for new work | none |
|
||||
| secrets-pre-guard.sh | PreToolUse:Edit\|Write | block | Detect hardcoded API keys, tokens, private keys before commit | KEI_SECRETS_GUARD_BYPASS |
|
||||
| destructive-guard.sh | PreToolUse:Bash | block | Block dangerous commands (rm -rf /, git reset --hard main, truncate) | none |
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
#!/bin/bash
|
||||
# DELETED — 2026-05-02
|
||||
# Reasons:
|
||||
# 1. Hardcoded path leak: /Users/denis/projects/ai machine learning/error-patterns.json
|
||||
# 2. RULE 0.2 violation: used python3 for JSON parsing
|
||||
# 3. No-op on every machine except original author's
|
||||
# 1. Hardcoded absolute path leak (machine-specific, author-local)
|
||||
# 2. Language-policy violation: used python3 for JSON parsing
|
||||
# 3. No-op on every machine except the original author's
|
||||
# Removed from settings-snippet.json PostToolUse matcher "*" block.
|
||||
exit 0
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
# Bypass: GRAPH_EXPORT_BYPASS=1
|
||||
|
||||
INTERVAL="${KEI_GRAPH_EXPORT_INTERVAL_S:-5}"
|
||||
OUT="${KEI_GRAPH_VIZ_DIR:-$HOME/Projects/lbm-graph-viz}/data-runtime.js"
|
||||
OUT="${KEI_GRAPH_VIZ_DIR:-$HOME/.local/share/kei/graph-viz}/data-runtime.js"
|
||||
BIN="$(command -v kei-graph-export 2>/dev/null || echo "$HOME/.cargo/bin/kei-graph-export")"
|
||||
|
||||
[ -x "$BIN" ] || exit 0
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
#!/bin/sh
|
||||
# no-github-push.sh — PreToolUse:Bash hard deny (RULE 0.1 NO GITHUB PUSH)
|
||||
# no-github-push.sh — PreToolUse:Bash hard deny.
|
||||
#
|
||||
# Blocks any Bash command that would push code to github.com.
|
||||
# KeiTech portfolio contains unfiled patent IP — a public push destroys
|
||||
# priority date and trade secrets. Irrecoverable.
|
||||
# Blocks any Bash command that would push code or create a repo on github.com.
|
||||
# Opt-in guard for teams that keep proprietary code on a private remote
|
||||
# (Forgejo / Gitea / self-hosted) and want a hard stop against an accidental
|
||||
# public push. Off by default in the public kit — enable it in onboarding.
|
||||
#
|
||||
# Exit codes:
|
||||
# 0 = pass (command is safe)
|
||||
|
|
@ -69,18 +70,16 @@ fi
|
|||
|
||||
# --- Block ------------------------------------------------------------------
|
||||
cat >&2 <<'EOF'
|
||||
[no-github-push] BLOCK — RULE 0.1 NO GITHUB PUSH
|
||||
KeiTech portfolio contains unfiled patent IP. Public push destroys
|
||||
priority date + trade secrets. Irrecoverable.
|
||||
[no-github-push] BLOCK — push to github.com is disabled by this guard.
|
||||
This checkout is configured to stay on a private remote; a public push
|
||||
could expose code you intend to keep private.
|
||||
|
||||
Use a private remote instead (Forgejo, Gitea, self-hosted):
|
||||
Use your private remote instead (Forgejo, Gitea, self-hosted):
|
||||
git remote set-url origin ssh://git@<private-host>/<user>/<repo>.git
|
||||
git push origin <branch>
|
||||
|
||||
Bypass (visible, per-call):
|
||||
Set env KEI_NO_GITHUB_PUSH_BYPASS=1 before the command.
|
||||
You must also add confirmation phrase: "yes, push patent code to github"
|
||||
+ "confirm publication" in the session turn.
|
||||
EOF
|
||||
|
||||
exit 2
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ Store the reply verbatim as `REPO`.
|
|||
}
|
||||
```
|
||||
|
||||
Store as `PLATFORM`. If `Both` is selected, emit a one-line confirm: "You understand — only non-patent code ever pushes to GitHub?" and wait for a `y` typed reply before proceeding.
|
||||
Store as `PLATFORM`. If `Both` is selected, emit a one-line confirm: "You understand — only public-safe code ever pushes to GitHub?" and wait for a `y` typed reply before proceeding.
|
||||
|
||||
## 1c — Languages click (AskUserQuestion, multi-select)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue