docs(agent-best-practices): add docs/launch/** to persona-naming closed-list (closes B-0443)#3005
Merged
AceHack merged 1 commit intoMay 13, 2026
Conversation
…ed-list (closes B-0443) Implements the policy amendment proposed in B-0443 (PR #3002). docs/launch/** is now an explicit closed-list surface where persona names and external creator attributions are allowed. Rationale (preserved inline): - Brand register canonized 2026-05-13: Office paper-factory + 8-Bit Theater stick-figure + Tales-from-the-Loop — the launch surface inherently uses named characters - IP-respect canonical commitment substrate: external creator attributions like Brian Clevinger / 8-Bit Theater are substrate-honest, not policy violations - Recurring Copilot finding observed on PR #2997 + PR #3001 resolves to "policy-amended" rather than "explanatory-resolve" going forward Composes with: - B-0443 (PR #3002, just merged — backlog row proposing this amendment) - PR #2980 (launch thread already operating with persona naming on main) - PR #2997 (Otto-section recovery — recurring trigger) - PR #3001 (image brief + visual-artist user-memory — recurring trigger) - Aaron's IP-respect canonical commitment substrate (Brian Clevinger / 8-Bit Theater) Co-Authored-By: Claude <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Adds docs/launch/** to the persona-naming closed-list in docs/AGENT-BEST-PRACTICES.md, codifying a carve-out for launch substrate so persona names and external creator attributions no longer trigger the recurring naming-policy finding.
Changes:
- Insert a 13-line bullet for
docs/launch/**into the closed-list with rationale citing the brand register and IP-respect commitment.
AceHack
added a commit
that referenced
this pull request
May 13, 2026
…-fast on unknown flags, role-ref, expand tests)
Addresses 4 P1/P2 findings:
1. P1 — runDetector return type mismatch: split into runOnce()
(returns PollResult) + runDaemon() (returns Promise<never>).
Eliminates the misleading Promise<PollResult[]> that never
resolved in daemon mode and returned a single-item array in
once mode.
2. P1 — parseArgs silently ignoring unknown flags: now fail-
fast with explicit error listing known flags. Typos no
longer hide. Functions also exported for testability.
3. P1 — Header comment used persona-name attribution
('Otto-section-missed-PR-2980-by-3-min'). Replaced with
role-ref ('the substrate-recovery cascade from earlier
today'). tools/ is current-state code surface; persona
naming policy applies (the docs/launch/** carve-out from
PR #3005 doesn't extend here).
4. P2 — Tests now cover CLI validation paths:
- parsePositiveMinutes: 5 cases (positive, undefined,
non-numeric, zero/negative, Infinity/NaN)
- parseArgs: 5 cases (defaults, --once, --poll-min,
unknown-flag rejection, invalid --poll-min)
Test results: 13 pass / 0 fail / 21 expect() calls (was 3 / 7).
Sibling impl PRs (B-0440.1 / B-0441.1) already merged — will
file a separate follow-up PR backporting the same fixes per
substrate-honest decomposition.
Co-Authored-By: Claude <noreply@anthropic.com>
AceHack
added a commit
that referenced
this pull request
May 13, 2026
…skeleton mechanization suite) (#3008) * feat(bg): B-0442.1 — missed-substrate cascade detector skeleton (completes the 3-skeleton suite) Third and final skeleton in the mechanization suite. With B-0440.1 (reactive Standing-by detector; PR #3006) and B-0441.1 (proactive backlog-ready notifier; PR #3007), B-0442.1 (drift-prevention) closes the trio. Files (same shape as B-0440.1 / B-0441.1 with bug-fixes pre-applied): - tools/bg/missed-substrate-detector.ts (87 lines): - DetectorConfig + DEFAULT_CONFIG (5min poll) - pollOnce() no-op result - runDetector() — bounded single-iter or unbounded daemon (no result accumulation) - parsePositiveMinutes validation on --poll-min - CLI entry - tools/bg/missed-substrate-detector.test.ts (3 tests, all pass) Three-layer defense suite now in code: | Service | Layer | Trigger | |---------|-------|---------| | B-0440.1 standing-by-detector | Reactive | Cron-fires + idle threshold | | B-0441.1 backlog-ready-notifier | Proactive | Queue-empty + rows-ready | | B-0442.1 missed-substrate-detector | Drift-prevention | Merged-PR + branch-HEAD divergence | Canonical operational example B-0442 was filed for: Otto-section-missed-PR-2980-by-3-min cascade (recovered via PR #2997). Future slices (per B-0442 decomposition): - Slice 2: merged-PR state fetch via gh CLI - Slice 3: branch-vs-squash comparison logic - Slice 4: cascade-detection bus publish (requires B-0400 schema extension for missed-substrate-cascade topic) - Slice 5: optional auto-recovery-PR opening (gated) - Slice 6: integration tests + cron registration Test results: 3 pass / 0 fail / 7 expect() calls. Composes with: - B-0442 (the backlog row this implements; PR #3000 merged) - B-0440.1 + B-0441.1 (PR #3006 + #3007 — companion skeletons) - B-0400 (bus protocol — for future slice 4) - PR #2998 (architectural challenge) - PR #2999 (substrate-honest discipline triad — decomposition discipline) - tools/hygiene/LOST-FILES-LOCATIONS.md (15-class lost-files survey — this service mechanizes one class) Co-Authored-By: Claude <noreply@anthropic.com> * fix(tsc): non-null assert results[0]! under noUncheckedIndexedAccess TypeScript 6 + noUncheckedIndexedAccess makes results[0] PollResult|undefined; toHaveLength(1) asserts length but doesn't narrow the type, so the explicit non-null assertion is needed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(bg): B-0442.1 — close 4 Copilot findings (split runDetector, fail-fast on unknown flags, role-ref, expand tests) Addresses 4 P1/P2 findings: 1. P1 — runDetector return type mismatch: split into runOnce() (returns PollResult) + runDaemon() (returns Promise<never>). Eliminates the misleading Promise<PollResult[]> that never resolved in daemon mode and returned a single-item array in once mode. 2. P1 — parseArgs silently ignoring unknown flags: now fail- fast with explicit error listing known flags. Typos no longer hide. Functions also exported for testability. 3. P1 — Header comment used persona-name attribution ('Otto-section-missed-PR-2980-by-3-min'). Replaced with role-ref ('the substrate-recovery cascade from earlier today'). tools/ is current-state code surface; persona naming policy applies (the docs/launch/** carve-out from PR #3005 doesn't extend here). 4. P2 — Tests now cover CLI validation paths: - parsePositiveMinutes: 5 cases (positive, undefined, non-numeric, zero/negative, Infinity/NaN) - parseArgs: 5 cases (defaults, --once, --poll-min, unknown-flag rejection, invalid --poll-min) Test results: 13 pass / 0 fail / 21 expect() calls (was 3 / 7). Sibling impl PRs (B-0440.1 / B-0441.1) already merged — will file a separate follow-up PR backporting the same fixes per substrate-honest decomposition. Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
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.
Summary
Implements the policy amendment proposed in B-0443 (PR #3002 — just merged): adds `docs/launch/**` to the persona-naming closed-list in `docs/AGENT-BEST-PRACTICES.md`.
Why
Recurring Copilot finding observed on PR #2997 + PR #3001: launch substrate uses persona names per the canonized brand register (Office paper-factory + 8-Bit Theater + Tales-from-the-Loop), but the closed-list didn't include `docs/launch/**`. Each PR resolved with explanatory comments rather than policy fix.
This amendment closes the loop: future launch substrate PRs no longer trigger the policy finding.
What changed
13-line insertion into the existing closed-list at `docs/AGENT-BEST-PRACTICES.md` line 699-707 (after `docs/active-trajectory.md`):
```
positioning artifacts; persona names + external
creator attributions allowed because the substrate's
job is to preserve the multi-agent factory's
named-team positioning AND IP-respect attribution
at a specific date; per the brand register canonized
2026-05-13 — Office paper-factory + 8-Bit Theater
stick-figure + Tales-from-the-Loop — the launch
surface inherently uses named characters; per the
IP-respect canonical commitment, external creator
attributions like Brian Clevinger / 8-Bit Theater
are substrate-honest, not policy violations; closes
B-0443)
```
Composes with
🤖 Generated with Claude Code