Skip to content
Closed
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
8 changes: 7 additions & 1 deletion .claude/skills/INDEX.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ Run `python3 <skill>/scripts/<name>` (`bash` for `.sh`). `name: purpose — argu
- weekly_receipt.py: Weekly value receipt: a one-screen plain-English card from… — [--days 7] [--repo DIR] [--session…

### agentic-delivery
- baseline_guard.py: store a test baseline only when it is not poisoned by load. — --fails FILE --rerun 'CMD {id}' --out…
- bg_admit.py: admission for background and shadow jobs, plus a lint for… — admit SCRIPT...
- board_post.py: compose one typed, capped, privacy-linted coordination post. — --repo O/N --issue N --agent ID --type…
- board_state.py: render a coordination issue's current state into its body. — --repo OWNER/NAME --issue N [--now…
Expand All @@ -55,8 +56,12 @@ Run `python3 <skill>/scripts/<name>` (`bash` for `.sh`). `name: purpose — argu
- feedback_ledger.py: one durable requirement ledger across every feedback source. — [--ledger PATH] <command> [options]
- feeder_order.py: order the work queue so a fix for a recurring failure class… — --ledger FILE [--min N] [--max-run M]…
- file_finding.py: duplicate check to run BEFORE anything files an issue. — [--repo OWNER/NAME] [--force REASON]…
- fitness_tick.py: run every fix's fitness check once per operating-loop tick — [--dir D] [--state F]
- flake_holder.py: warn when a flaky-test fix touches a test file another open PR… — BASE HEAD
- flow_alarm.py: three flow checks that read the delivery queue, not the code. — symptom [--hours H] [--red-since TS]
- focus_gate.py: no work outside the owner's open priority until that priority… — status [common options] [--evidence…
- focus_kit.py: keep agents on task across long sessions and compactions… — handoff set|add SECTION TEXT |…
- freeze_gate.py: while a freeze is on, allow only deletions and red-trunk fixes. — BASE HEAD
- handback.py: lane handback, gates to merge — --sha SHA --base REF --branch BRANCH…
- host_probe.py: the fan-out spawn/hold predicate, computed once, not… — --lane-type {cpu,io,light,heavy}…
- job_lease.py: per-repo lease for long jobs (ship and QA scripts) + a unique… — run [--name NAME] [--timeout SECS] --…
Expand All @@ -74,6 +79,7 @@ Run `python3 <skill>/scripts/<name>` (`bash` for `.sh`). `name: purpose — argu
- pr_state.py: one command, one compact block: a PR's head, base, checks… — <n> [--repo OWNER/NAME] [--state PATH]…
- preflight.py: run cheap gates first, report every failure together. — CONFIG.json [--all] [--cache FILE]
- premise_check.py: before handing PRs or issues to a lane or peer, say which are… — N [N ...] [--repo OWNER/NAME]…
- prevention_lint.py: every prevention/action item needs an owner, a tracking id and… — FILE.md
- priority_gate.py: no presentation-only PR while an aged P0/mechanism issue has… — --labels-json FILE [options]
- queue_guard.py: single priority queue: print the next issue to pull, flag P0… — --issues issues.json --priorities…
- reap_own.sh: kill your own dev servers older than MAX_AGE_S whose cwd is…
Expand All @@ -100,7 +106,7 @@ Run `python3 <skill>/scripts/<name>` (`bash` for `.sh`). `name: purpose — argu
- vacuous_test_gate.py: a changed test file must really run and assert. — [REPORT] (--changed PATH... | --base…
- vendor_drift.py: list vendored skill files in TARGET that differ from the… — TARGET [--src DIR]
- wired_check.py: warn when a NEW script has no caller. — BASE HEAD [--root DIR]
- No documented CLI: _clean_union.sh, _dirty_guard.sh, _lock.sh, admission_check.py, board_common.py, bypass_guard.py, ceo_altitude_guard.py, comms_guard.py, context_nudge.py, cost_statusline.py, decision_gate.py, destructive_guard.py, destructive_guard_core.py, flake_ledger.py, gh_rest.py, handback_cap.py, handoff_inject.py, heavy_gate.py, host_accept.py, host_installer.py, host_safety.py, landing_watchdog.py, lane_cap.py, lane_resume_nudge.py, lkg.py, outcome_claim_guard.py, peer_ack.py, perun_auto_update.py, pipe_mask_guard.py, pipeline_profile.py, plan_gate.py, pregate_parity.py, red_main.py, repeat_poll_guard.py, reply_cap.py, restore_ledger.py, scope_creep_check.py, session_brief.py, stall_guard.py, subagent_brief_lint.py, surface_check.py, terse_reply_check.py
- No documented CLI: _clean_union.sh, _dirty_guard.sh, _lock.sh, admission_check.py, board_common.py, bypass_guard.py, ceo_altitude_guard.py, comms_guard.py, context_nudge.py, cost_statusline.py, decision_gate.py, destructive_guard.py, destructive_guard_core.py, finding_guard.py, flake_ledger.py, gh_rest.py, handback_cap.py, handoff_inject.py, heavy_gate.py, host_accept.py, host_installer.py, host_safety.py, landing_watchdog.py, lane_cap.py, lane_resume_nudge.py, lkg.py, outcome_claim_guard.py, peer_ack.py, perun_auto_update.py, pipe_mask_guard.py, pipeline_profile.py, plan_gate.py, pregate_parity.py, red_main.py, repeat_poll_guard.py, reply_cap.py, restore_ledger.py, scope_creep_check.py, session_brief.py, stall_guard.py, subagent_brief_lint.py, surface_check.py, terse_reply_check.py

### business-ops
- bizops_check.py: Deterministic arithmetic checks business-ops already states… — [input.json] (stdin when no path)
Expand Down
7 changes: 7 additions & 0 deletions .claude/skills/agentic-delivery/INDEX-scripts.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ Generated by `scripts/skill_index.py` (do not hand-edit). The script half of `IN
| `scripts/_dirty_guard.sh` | Sourced by scripts that run git checkout\|switch\|reset on a caller-given tree. | — |
| `scripts/_lock.sh` | Sourced by train scripts. | — |
| `scripts/admission_check.py` | flag a per-PR admission config that omits a test class the batch (merge train) runs, and a stale sp… | — |
| `scripts/baseline_guard.py` | store a test baseline only when it is not poisoned by load. | baseline_guard.py --fails FILE --rerun 'CMD {id}' --out BASELINE.json [--normal N] [--max-factor F] [--max-load L] |
| `scripts/bg_admit.py` | admission for background and shadow jobs, plus a lint for mktemp without a cleanup trap. | bg_admit.py admit SCRIPT... |
| `scripts/board_common.py` | shared post grammar and forge I/O for the board_* scripts. | — |
| `scripts/board_post.py` | compose one typed, capped, privacy-linted coordination post. | board_post.py --repo O/N --issue N --agent ID --type CLAIM --refs '#12' \ --body-file note.md [--ttl 90] [--post] board… |
Expand All @@ -29,9 +30,14 @@ Generated by `scripts/skill_index.py` (do not hand-edit). The script half of `IN
| `scripts/feedback_ledger.py` | one durable requirement ledger across every feedback source. | feedback_ledger.py [--ledger PATH] <command> [options] feedback_ledger.py --selftest |
| `scripts/feeder_order.py` | order the work queue so a fix for a recurring failure class runs before features. | feeder_order.py --ledger FILE [--min N] [--max-run M] < items.json |
| `scripts/file_finding.py` | duplicate check to run BEFORE anything files an issue. | file_finding.py [--repo OWNER/NAME] [--force REASON] TITLE [KEYWORD...] |
| `scripts/finding_guard.py` | PreToolUse(Bash) hook: deny gh issue create when file_finding.py finds the same finding already fil… | — |
| `scripts/fitness_tick.py` | run every fix's fitness check once per operating-loop tick | fitness_tick.py [--dir D] [--state F] |
| `scripts/flake_holder.py` | warn when a flaky-test fix touches a test file another open PR already changes. | flake_holder.py BASE HEAD |
| `scripts/flake_ledger.py` | per-test pass/fail ledger keyed by tree SHA, with a time-boxed quarantine list. | — |
| `scripts/flow_alarm.py` | three flow checks that read the delivery queue, not the code. | flow_alarm.py symptom [--hours H] [--red-since TS] |
| `scripts/focus_gate.py` | no work outside the owner's open priority until that priority is done or blocked. | focus_gate.py status [common options] [--evidence FILE] focus_gate.py check [common options] [--item REF] [--paths P ..… |
| `scripts/focus_kit.py` | keep agents on task across long sessions and compactions: handoff, memory lint, docs map. | focus_kit.py handoff set\|add SECTION TEXT \| memory-lint [DIR] \| docs-index [--check] \| measure |
| `scripts/freeze_gate.py` | while a freeze is on, allow only deletions and red-trunk fixes. | freeze_gate.py BASE HEAD |
| `scripts/gh_rest.py` | curl REST fallback for gh api when gh's Go TLS fails inside a macOS sandbox. | — |
| `scripts/handback.py` | lane handback, gates to merge | handback.py --sha SHA --base REF --branch BRANCH --gate-cmd CMD [--gate-cmd CMD ...] |
| `scripts/handback_cap.py` | SubagentStop hook: cap a subagent handback, log how far it is from fields-only, and audit each lane… | — |
Expand Down Expand Up @@ -67,6 +73,7 @@ Generated by `scripts/skill_index.py` (do not hand-edit). The script half of `IN
| `scripts/preflight.py` | run cheap gates first, report every failure together. | preflight.py CONFIG.json [--all] [--cache FILE] |
| `scripts/pregate_parity.py` | may a faster checker run fail-fast before the authoritative gate? | — |
| `scripts/premise_check.py` | before handing PRs or issues to a lane or peer, say which are already done or stale. | premise_check.py N [N ...] [--repo OWNER/NAME] [--timeout S] |
| `scripts/prevention_lint.py` | every prevention/action item needs an owner, a tracking id and a verifiable end state. | prevention_lint.py FILE.md |
| `scripts/priority_gate.py` | no presentation-only PR while an aged P0/mechanism issue has no PR citing it. | priority_gate.py --labels-json FILE [options] priority_gate.py --repo OWNER/REPO --pr N [options] priority_gate.py --se… |
| `scripts/queue_guard.py` | single priority queue: print the next issue to pull, flag P0 inflation. | queue_guard.py --issues issues.json --priorities PRIORITIES.md [--max-unranked N] issues.json gh issue list --json numb… |
| `scripts/reap_own.sh` | kill your own dev servers older than MAX_AGE_S whose cwd is under ROOT (your own lane or session tr… | reap_own.sh |
Expand Down
10 changes: 5 additions & 5 deletions .claude/skills/agentic-delivery/INDEX.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Generated by `scripts/skill_index.py` (do not hand-edit; rerun it after changing
| `references/fanout-host-sizing.md` | sizing a fan-out or capping in-flight write lanes, cutting per-lane cycle-time or handback verbosit… | 12456 |
| `references/fast-agentic-delivery.md` | sizing a heavy-lane fan-out on a shared machine (the full environment-probe procedure and the fan-o… | 1703 |
| `references/focus-kit.md` | a session runs long or compacts, a new session must resume the work, or memory files and docs grow… | 1308 |
| `references/full-map.md` | a delivery needs more than the SKILL.md fast path: the full gate table with every hard condition, t… | 6095 |
| `references/full-map.md` | a delivery needs more than the SKILL.md fast path: the full gate table with every hard condition, t… | 6122 |
| `references/gate-epistemology.md` | adding a gate (4) | 2950 |
| `references/host-enforcement.md` | claiming that state, permissions, or spend are *enforced* rather than merely followed, briefing a w… | 11228 |
| `references/incident-response.md` | drafting an incident runbook, defining severity levels or status/comms templates, setting up a brea… | 3264 |
Expand All @@ -22,19 +22,19 @@ Generated by `scripts/skill_index.py` (do not hand-edit; rerun it after changing
| `references/pipeline-optimizer.md` | a delivery pipeline is slow (a commit or push hook over about a minute, CI over about ten minutes,… | 4838 |
| `references/production-grade-product-playbook.md` | you are shaping a user-facing product surface in G3 Design, so you build to the domain-P quality ba… | 1658 |
| `references/project-state.md` | beginning multi-step delivery, changing objectives, transferring ownership, checkpointing, or recov… | 1885 |
| `references/red-gate-triage.md` | a gate, union, or CI check is red and you must decide whether it is real: attributing a red union (… | 6796 |
| `references/red-gate-triage.md` | a gate, union, or CI check is red and you must decide whether it is real: attributing a red union (… | 7062 |
| `references/retrospective.md` | running G10, or when a target's own incident/postmortem practice is in scope for a review. | 1211 |
| `references/roles.md` | standing up (or running) the full delivery team on a repo: who does what, when a hat fires, which g… | 6830 |
| `references/support-ops.md` | the product has users who file tickets, bug reports, or feature requests, and you need a support sy… | 1113 |
| `references/template-adr.md` | G3 Design must record a decision — an interface, NFR budget, or data/security choice — as an ADR (c… | 660 |
| `references/template-onepager.md` | G0 Intake turns a vague idea into a brief the owner can approve in one reply, or when /idea drafts… | 416 |
| `references/template-postmortem.md` | G10 or an incident meets retrospective.md's mandatory-trigger criteria and you must write the blame… | 846 |
| `references/unattended-operating-mode.md` | an agent or a Conductor is granted a block of unattended time to work a backlog — an overnight or m… | 6684 |
| `references/template-postmortem.md` | G10 or an incident meets retrospective.md's mandatory-trigger criteria and you must write the blame… | 879 |
| `references/unattended-operating-mode.md` | an agent or a Conductor is granted a block of unattended time to work a backlog — an overnight or m… | 6980 |
| `references/unattended-trackers.md` | deciding whether an open issue's fix is absent, placing an auto-close keyword or a gate-parsed PR-b… | 11803 |
| `references/verification-handback.md` | delegating visual/parity work by measured number, running or finalizing verification, writing a lan… | 15206 |
| `references/work-tracking.md` | a repo uses a work tracker (Linear first-class | 1051 |
| `references/worktree-isolation.md` | isolating a lane's worktree: stale refs, git stash, out-of-tree scratch, an assignment path, a work… | 4120 |

## Scripts

99 scripts. Read `INDEX-scripts.md` when you need a script (a trigger and CLI per script). `../INDEX.md`, `### agentic-delivery`, has only each one-line purpose and arguments.
106 scripts. Read `INDEX-scripts.md` when you need a script (a trigger and CLI per script). `../INDEX.md`, `### agentic-delivery`, has only each one-line purpose and arguments.
2 changes: 1 addition & 1 deletion .claude/skills/agentic-delivery/references/full-map.md
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ paths or generated files; else drain green PRs back-to-back (`train_land.sh`).
collision*).
- **A forked lane with a narrower brief than its inherited context** (research-only, "change nothing"): prefer a fresh unit; verify from effects — `references/verification-handback.md` **A context-inheriting fork is not a blank slate**.
- **Inventory the repo's own scripts before spawning a lane for a repeatable step.** On start, read `scripts/` and the README; if a tick, train, bisect, land, or release script exists, run it instead of having an LLM lane do the step (or hand-resolve a generated-file conflict) by judgment.
- **New script?** `python3 scripts/wired_check.py <base> HEAD`: a WARN means no caller (own test excluded); wire it.
- **New script?** `python3 scripts/wired_check.py <base> HEAD`: a WARN means no caller (own test excluded); wire it. A script named only on an orphan/unused allowlist added in the same PR is `merged-not-wired`, never wired.
- **Hand-back / reruns / drift?** `wired_check.py <base> HEAD --strict --runs <log>` fails a new script with no caller or no observed-run line; `stage_run.py --run-dir <fresh dir> -- CMD` refuses a reused run dir; `python3 .claude/skills/agentic-delivery/scripts/lkg.py verdict <receipt.json>` fails (rerun) when its `sha` is not HEAD; `python3 .claude/skills/agentic-delivery/scripts/vendor_drift.py <target-repo>` exits 1 listing vendored skill files that differ from canonical (sha256).
- **P0 count inflated / "what next?":** read when many open issues are P0. Don't relabel; rank a top-N in PRIORITIES.md, tag the rest `p0:unranked`; `scripts/queue_guard.py` prints the next pull and flags inflation.
- Serialize shared-state edits, migrations, generated files, and the
Expand Down
4 changes: 4 additions & 0 deletions .claude/skills/agentic-delivery/references/red-gate-triage.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ audit gate in every train; run the audit on the bare base first and report `BASE
`scripts/train_land.sh` implements (1) and (3) behind optional `RATCHET_CMD` and `BASE_AUDIT_CMD` (tested in
`scripts/test-train-scripts.sh`); (2) is the same measurement taken on the merged result.

**Before a flaky-test fix, list the open PRs that touch that test file** (`gh pr list --state open --json number,headRefName,files`) and add the fix to the holder's PR rather than opening a second one; the pre-push hook runs `flake_holder.py`, which warns naming the holder (warn, never refuse).

**Never store a poisoned baseline.** Store a baseline only through `python3 .claude/skills/agentic-delivery/scripts/baseline_guard.py --fails F --rerun 'CMD {id}' --out B.json --normal N`: it re-runs each failure solo (a solo pass is load, dropped), records the 1-minute load at start, and refuses a run with far more failures than normal. **A quarantine entry needs a ticket and an expiry** (`flake_ledger.py quarantine --ticket T`); a full list (`--max`, default 10) exits 1 and `--file-issue` files a P0, it is not a note for a human. **A freeze is a file, not a message**: while `.perun-freeze` (or `<git-common-dir>/PERUN_FREEZE`) exists, `freeze_gate.py BASE HEAD` (run by pre-push) lets through only pure deletions and commits with a `Red-Trunk-Fix:` line.

**Load flakes must not sink a train.** A train that is all-or-nothing under load can merge nothing for hours: failures that
looked new all passed when re-run alone. With `RERUN_CMD` (and optionally `BASELINE_FAILS`), `train_land.sh` re-runs each
new `FAIL <id>` from the browser gate alone up to 3 times (`train_flake.sh`); an id is real only when it fails all 3,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,12 +63,13 @@ fired and didn't?>

## Action items

| Action | Type (mitigate / prevent / process) | Owner | Bug/issue | Status |
|---|---|---|---|---|
| | | | | Open / In progress / Done |
| Action | Type (mitigate / prevent / process) | Owner | Bug/issue | Done when (verifiable) | Status |
|---|---|---|---|---|---|
| | | | | | Open / In progress / Done |

Every action item is owned and tracked to closure — an item with no owner
or no closing reference is not done. If this root cause has appeared in a
Every action item is owned and tracked to closure — an item with no owner,
tracking id or verifiable end state is not done
(`python3 .claude/skills/agentic-delivery/scripts/prevention_lint.py FILE.md` fails it). If this root cause has appeared in a
prior postmortem, the missing action item is the finding: name which
regression test, alert, or gate should have existed and did not.

Expand Down
Loading
Loading