@oneie/claude 0.7.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agents/abm-strategist.md +89 -0
- package/agents/ads-meta.md +97 -0
- package/agents/analyst.md +173 -0
- package/agents/architect.md +280 -0
- package/agents/brand-guardian.md +88 -0
- package/agents/brand-strategist.md +92 -0
- package/agents/campaign-content.md +90 -0
- package/agents/campaign-email.md +88 -0
- package/agents/campaign-sms.md +87 -0
- package/agents/campaign-social.md +87 -0
- package/agents/cco.md +99 -0
- package/agents/ceo.md +106 -0
- package/agents/chairman.md +120 -0
- package/agents/cmo.md +101 -0
- package/agents/community-greeter.md +89 -0
- package/agents/community-moderator.md +92 -0
- package/agents/compliance.md +92 -0
- package/agents/copywriter.md +100 -0
- package/agents/creative-strategist.md +95 -0
- package/agents/cro.md +98 -0
- package/agents/cto.md +267 -0
- package/agents/customer-interviewer.md +93 -0
- package/agents/customer-researcher.md +89 -0
- package/agents/customer-success-manager.md +90 -0
- package/agents/customer-trainer.md +90 -0
- package/agents/cxo.md +100 -0
- package/agents/demand-creator.md +89 -0
- package/agents/demo-mover.md +83 -0
- package/agents/demo-specialist.md +89 -0
- package/agents/demo-thai-family-law.md +87 -0
- package/agents/designer.md +112 -0
- package/agents/discovery-caller.md +98 -0
- package/agents/doctor.md +139 -0
- package/agents/educate-coach.md +100 -0
- package/agents/elevate-tutor.md +83 -0
- package/agents/email-lifecycle-marketer.md +91 -0
- package/agents/engage-specialist.md +99 -0
- package/agents/events-coordinator.md +90 -0
- package/agents/foundation-builder.md +94 -0
- package/agents/funnel-architect.md +89 -0
- package/agents/gift-creator.md +100 -0
- package/agents/google-ads.md +103 -0
- package/agents/guide.md +292 -0
- package/agents/helpdesk-dispatcher.md +88 -0
- package/agents/hook-specialist.md +91 -0
- package/agents/identify-optimizer.md +101 -0
- package/agents/implementer.md +305 -0
- package/agents/incident-commander.md +120 -0
- package/agents/insights-lead.md +93 -0
- package/agents/journey-runner.md +113 -0
- package/agents/linkedin-ads.md +123 -0
- package/agents/live-sales-chat.md +90 -0
- package/agents/market-researcher.md +88 -0
- package/agents/media-buyer.md +96 -0
- package/agents/movers-customer-researcher.md +95 -0
- package/agents/movers-foundation-builder.md +96 -0
- package/agents/movers-market-researcher.md +97 -0
- package/agents/movers-pricing-strategist.md +171 -0
- package/agents/nurture-architect.md +99 -0
- package/agents/offer-architect.md +92 -0
- package/agents/onboarder.md +222 -0
- package/agents/onboarding-specialist.md +92 -0
- package/agents/operations-dashboard.md +98 -0
- package/agents/perf-engineer.md +348 -0
- package/agents/playbook-writer.md +71 -0
- package/agents/plg-strategist.md +91 -0
- package/agents/positioning-architect.md +88 -0
- package/agents/press-officer.md +89 -0
- package/agents/pricing-strategist.md +94 -0
- package/agents/privacy-officer.md +92 -0
- package/agents/referral-manager.md +91 -0
- package/agents/refine-analyst.md +102 -0
- package/agents/release-manager.md +261 -0
- package/agents/renewals-upsell-rep.md +90 -0
- package/agents/review-engineer.md +327 -0
- package/agents/rewards-steward.md +82 -0
- package/agents/sales-call-coach.md +94 -0
- package/agents/sales-closer.md +98 -0
- package/agents/security-auditor.md +313 -0
- package/agents/sell-closer.md +101 -0
- package/agents/share-amplifier.md +99 -0
- package/agents/social-media-manager.md +92 -0
- package/agents/storyteller.md +250 -0
- package/agents/strategist.md +83 -0
- package/agents/strategy-aligner.md +94 -0
- package/agents/support-agent.md +90 -0
- package/agents/tagger.md +245 -0
- package/agents/tech-writer.md +216 -0
- package/agents/test-engineer.md +243 -0
- package/agents/tiktok-ads.md +105 -0
- package/agents/tracking-engineer.md +92 -0
- package/agents/upsell-strategist.md +101 -0
- package/agents/voice.md +85 -0
- package/agents/w4-tools.md +153 -0
- package/agents/w4-verify.md +20 -138
- package/agents/workflow-optimiser.md +84 -0
- package/commands/close.md +814 -160
- package/commands/create.md +2 -2
- package/commands/deploy.md +554 -175
- package/commands/do.md +119 -109
- package/commands/fast.md +67 -0
- package/commands/improve.md +2 -2
- package/commands/one.md +418 -0
- package/commands/see.md +1 -1
- package/commands/sync.md +1 -1
- package/commands/tasks.md +222 -0
- package/commands/vespio.md +110 -0
- package/commands/vespio.remote.md +227 -0
- package/hooks/hooks.json +25 -79
- package/hooks/lib/governor-escape-match.sh +88 -0
- package/hooks/lib/hook.sh +4 -13
- package/hooks/lib/signal.sh +9 -2
- package/hooks/scripts/branch-pin.sh +6 -0
- package/hooks/scripts/config-protect.sh +6 -0
- package/hooks/scripts/do-outcome-gate.sh +19 -2
- package/hooks/scripts/git-add-guard.sh +43 -2
- package/hooks/scripts/governor-escape.sh +96 -0
- package/hooks/scripts/load-guard.sh +127 -0
- package/hooks/scripts/post-edit-check.sh +36 -29
- package/hooks/scripts/session-start.sh +34 -80
- package/hooks/scripts/task-complete-verify.sh +46 -40
- package/package.json +1 -1
- package/rules/documentation.md +9 -0
- package/scripts/ad-copy-lint.sh +656 -0
- package/scripts/agentverse-audit.sh +256 -0
- package/scripts/asi-walk.sh +435 -0
- package/scripts/astro-build-cached.sh +143 -0
- package/scripts/blocks-manifest-cached.sh +100 -0
- package/scripts/blocks-manifest.mjs +497 -0
- package/scripts/blocks-ratchet.sh +116 -0
- package/scripts/blocks-render-probe.mjs +529 -0
- package/scripts/blocks-usage.mjs +334 -0
- package/scripts/chat-context-check.sh +89 -0
- package/scripts/close-metrics.sh +558 -0
- package/scripts/close-owner.sh +268 -0
- package/scripts/db-sync-lock-check.sh +116 -0
- package/scripts/deploy-dev.sh +35 -0
- package/scripts/deploy-emit.sh +298 -0
- package/scripts/deploy-gate-check.sh +128 -0
- package/scripts/deploy-ready.sh +78 -0
- package/scripts/deploy-record.sh +605 -0
- package/scripts/deploy.sh +1273 -0
- package/scripts/do-auto.sh +598 -48
- package/scripts/do-brief.sh +113 -0
- package/scripts/do-close.sh +1137 -0
- package/scripts/do-commit.sh +75 -0
- package/scripts/do-consumer-sweep.sh +18 -1
- package/scripts/do-cycle-shape-check.sh +160 -0
- package/scripts/do-decide.sh +476 -0
- package/scripts/do-derive-check.sh +436 -0
- package/scripts/do-fleet.sh +106 -28
- package/scripts/do-folder.sh +10 -1
- package/scripts/do-next.sh +106 -0
- package/scripts/do-orchestrate.sh +17 -5
- package/scripts/do-plan-json.mjs +201 -0
- package/scripts/do-plan-json.sh +8 -0
- package/scripts/do-preflight.sh +117 -0
- package/scripts/do-project.sh +157 -0
- package/scripts/do-prove-selftest.sh +108 -0
- package/scripts/do-prove.sh +295 -23
- package/scripts/do-rank.py +31 -1
- package/scripts/do-recon-cache.sh +7 -1
- package/scripts/do-recon-pack.sh +196 -0
- package/scripts/do-reconcile.sh +121 -4
- package/scripts/do-signal.sh +280 -23
- package/scripts/do-smoke.sh +18 -1
- package/scripts/do-test-gate.sh +80 -0
- package/scripts/do-tick.sh +102 -0
- package/scripts/do-tier.sh +6 -0
- package/scripts/do-triage.sh +182 -0
- package/scripts/do-ui-gate.sh +1 -1
- package/scripts/do-w4-gates.sh +451 -0
- package/scripts/do-walk.sh +12 -1
- package/scripts/env-sync.sh +173 -0
- package/scripts/factory-brief-check.sh +330 -0
- package/scripts/factory-check.sh +68 -14
- package/scripts/factory-close-check.sh +257 -0
- package/scripts/factory-emit.sh +211 -0
- package/scripts/factory-executor-check.mjs +353 -0
- package/scripts/factory-peak.sh +301 -0
- package/scripts/factory-repo.sh +118 -3
- package/scripts/factory-review-check.mjs +61 -0
- package/scripts/factory-ship.sh +61 -0
- package/scripts/factory-tasks-check.sh +18 -1
- package/scripts/factory-turn.sh +326 -0
- package/scripts/factory-walk.sh +396 -0
- package/scripts/factory-width.sh +57 -0
- package/scripts/fade-toxic.sh +4 -3
- package/scripts/fixtures/factory-brief-real.md +44 -0
- package/scripts/fixtures/triage-dupe.md +5 -0
- package/scripts/fleet-manifest.mjs +108 -0
- package/scripts/fleet-status.sh +110 -0
- package/scripts/full-suite-paths-check.sh +144 -0
- package/scripts/gate-reaper-check.sh +98 -0
- package/scripts/gate-reaper.sh +125 -0
- package/scripts/gate-run.sh +73 -0
- package/scripts/gc-content-check.sh +140 -0
- package/scripts/gen-dev-config.py +20 -0
- package/scripts/govern-bound-check.sh +60 -0
- package/scripts/govern-claims-check.sh +233 -0
- package/scripts/govern-mem-check.sh +290 -0
- package/scripts/governor-doors-check.sh +362 -0
- package/scripts/governor-escape-check.sh +171 -0
- package/scripts/health.sh +413 -0
- package/scripts/id-inventory.mjs +418 -0
- package/scripts/land.sh +551 -0
- package/scripts/lib/gc-finished.sh +77 -0
- package/scripts/lib/govern.sh +361 -0
- package/scripts/lib/govern.ts +756 -0
- package/scripts/lighthouse-run.sh +187 -0
- package/scripts/livekit-live-check.sh +61 -0
- package/scripts/livekit-ratchet.sh +46 -0
- package/scripts/load-guard-check.sh +49 -0
- package/scripts/machine-check.sh +102 -0
- package/scripts/machine-watch.sh +177 -0
- package/scripts/one-agents.mjs +415 -0
- package/scripts/one-resume.sh +78 -0
- package/scripts/orphan-baseline.json +182 -0
- package/scripts/orphan-modules.mjs +179 -0
- package/scripts/pr-body.sh +335 -0
- package/scripts/preview-fd-check.sh +289 -0
- package/scripts/promise-manifest.mjs +24 -1
- package/scripts/release.sh +322 -0
- package/scripts/roles-check.sh +946 -0
- package/scripts/sdk-build-cached.sh +64 -0
- package/scripts/signal-watch.sh +241 -0
- package/scripts/skills-publish.sh +94 -0
- package/scripts/speed-cache-check.sh +173 -0
- package/scripts/speed-check.mjs +907 -0
- package/scripts/speed-parity-check.sh +648 -0
- package/scripts/speed-waterfall-check.sh +355 -0
- package/scripts/substrate-env-parity.mjs +156 -0
- package/scripts/tasks-claim-race.mjs +108 -0
- package/scripts/tasks-loop.sh +185 -0
- package/scripts/test-cached.sh +255 -0
- package/scripts/test-full.sh +87 -0
- package/scripts/test-honesty.mjs +137 -0
- package/scripts/test-lanes.sh +166 -0
- package/scripts/test-speed.sh +94 -0
- package/scripts/triage-shape-check.sh +149 -0
- package/scripts/tsc-cached.sh +179 -0
- package/scripts/typedb-flake-check.sh +197 -0
- package/scripts/urls-lint.sh +15 -0
- package/scripts/verify-fast.sh +445 -0
- package/scripts/vespio-sync.sh +149 -0
- package/scripts/wf-check.mjs +104 -1
- package/scripts/worktree-preview.sh +879 -0
- package/scripts/worktree-up.sh +208 -0
- package/skills/livekit-agents/SKILL.md +285 -0
- package/skills/livekit-agents/references/freshness-rules.md +168 -0
- package/skills/shadcn/SKILL.md +1 -1
- package/skills/signal/SKILL.md +0 -1
- package/skills/voice/SKILL.md +94 -6
- package/skills/voice/corpus-check.sh +87 -0
- package/hooks/scripts/compact-hint.sh +0 -35
- package/hooks/scripts/gate-guard.sh +0 -83
- package/hooks/scripts/read-tracker.sh +0 -26
- package/hooks/scripts/session-end-verify.sh +0 -51
- package/hooks/scripts/stop-reflect.sh +0 -140
- package/hooks/scripts/sync-priority-todo.sh +0 -57
- package/hooks/scripts/sync-todo-docs.sh +0 -46
- package/hooks/scripts/tool-signal.sh +0 -48
- package/scripts/do-tasks-bridge.py +0 -366
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# typedb-flake-check.sh — decide whether a RED vitest log is ONLY the shared
|
|
3
|
+
# TypeDB Cloud cluster being unavailable, and therefore safe to ship past.
|
|
4
|
+
#
|
|
5
|
+
# manifest: portable
|
|
6
|
+
#
|
|
7
|
+
# WHY THIS EXISTS. `one.ie/web`'s suite talks to a REAL shared TypeDB Cloud
|
|
8
|
+
# cluster (CLAUDE.md: "Don't mock TypeDB in integration tests"). When that
|
|
9
|
+
# cluster blips or a query exceeds its timeout, a handful of task/substrate
|
|
10
|
+
# suites go red without anything in the diff being wrong. Before this script the
|
|
11
|
+
# operator read the log by eye and decided — which is exactly the judgement call
|
|
12
|
+
# that gets rubber-stamped at 2am on the fifth deploy attempt.
|
|
13
|
+
#
|
|
14
|
+
# WHAT IT IS NOT. It is not a failure allowlist by FILE. A file-based allowlist
|
|
15
|
+
# waves through every future failure in that file, including real ones. This
|
|
16
|
+
# keys on the failure SIGNATURE — the substrate was unreachable — so a genuine
|
|
17
|
+
# assertion break in the very same test still blocks.
|
|
18
|
+
#
|
|
19
|
+
# THE HARD LINE. `not_found` from `tasks:claim` is the privilege boundary. Four
|
|
20
|
+
# separate defects presented as exactly that string and were fixed 2026-08-02
|
|
21
|
+
# (see deploy.md's Known-Flaky section). It is NEVER a flake, it is never
|
|
22
|
+
# waived, and it is checked BEFORE the flake signatures so no combination of
|
|
23
|
+
# other output can pass it.
|
|
24
|
+
#
|
|
25
|
+
# CONTRACT
|
|
26
|
+
# exit 0 — every failure carries a substrate-unavailable signature. Waivable.
|
|
27
|
+
# exit 1 — at least one failure is real, or the log could not be classified.
|
|
28
|
+
# Silence is never a pass: a log with no parseable "Tests N failed" line exits 1.
|
|
29
|
+
#
|
|
30
|
+
# bash .claude/scripts/typedb-flake-check.sh <vitest-log>
|
|
31
|
+
# bash .claude/scripts/typedb-flake-check.sh --self-test
|
|
32
|
+
set -uo pipefail
|
|
33
|
+
|
|
34
|
+
# ── signatures ───────────────────────────────────────────────────────────────
|
|
35
|
+
# The substrate refused to answer. Nothing downstream of these proved anything.
|
|
36
|
+
FLAKE_RE='upstream_50[234]|status=50[234]|fixture write failed|Test timed out in [0-9]+ ?ms|ETIMEDOUT|ECONNRESET|ECONNREFUSED|EAI_AGAIN|socket hang up|fetch failed|TypeDB.*(unavailable|timed out|connection)|Failed to connect'
|
|
37
|
+
|
|
38
|
+
# Never waivable, whatever else the log says: the privilege boundary. Matched
|
|
39
|
+
# against failure BODIES only, in the awk below -- see the comment there.
|
|
40
|
+
NEVER_RE='not_found'
|
|
41
|
+
|
|
42
|
+
classify() {
|
|
43
|
+
local log="$1" fails blocks matched
|
|
44
|
+
[ -f "$log" ] || { echo "typedb-flake: no such log: $log"; return 1; }
|
|
45
|
+
|
|
46
|
+
# A COLLECT CRASH — vitest's bracketed form, `FAIL path/x.test.ts [ path/x.test.ts ]`
|
|
47
|
+
# followed by a parse/import error — ran ZERO tests. It is never a cluster blip
|
|
48
|
+
# and never waivable: on 2026-09-05 a truncated gitignored JSON crashed the
|
|
49
|
+
# collect of deploy-board.test.tsx and the waiver called it a TypeDB outage
|
|
50
|
+
# (vitest-collect-crash-reads-as-pass, through the waiver door).
|
|
51
|
+
if grep -qE '^ *FAIL +[^ ]+\.test\.[a-z]+ +\[ +[^ ]+\.test\.[a-z]+ +\]' "$log"; then
|
|
52
|
+
echo "typedb-flake: BLOCKED -- a test file failed to COLLECT ($(grep -oE '^ *FAIL +[^ ]+\.test\.[a-z]+ +\[' "$log" | head -1 | awk '{print $2}')). Zero tests ran there. Not a flake."
|
|
53
|
+
return 1
|
|
54
|
+
fi
|
|
55
|
+
# Unhandled errors ("Errors 45 errors") fail the run with ZERO failed tests.
|
|
56
|
+
# They are never a cluster blip and never waivable — refuse before anything
|
|
57
|
+
# else, or a red run reads GREEN here (measured 2026-09-05).
|
|
58
|
+
if grep -qE 'Errors +[1-9][0-9]* errors?' "$log"; then
|
|
59
|
+
echo "typedb-flake: BLOCKED -- the log carries unhandled errors ($(grep -Eo 'Errors +[0-9]+ errors?' "$log" | tail -1)). Not a flake."
|
|
60
|
+
return 1
|
|
61
|
+
fi
|
|
62
|
+
# How many tests vitest itself says failed. No line ⇒ we cannot classify ⇒ RED.
|
|
63
|
+
# Strip ANSI escape codes first — vitest 4.x wraps its summary in colour codes
|
|
64
|
+
# that break the regex ("Tests \x1b[1m\x1b[31m12 failed\x1b[39m" → no match).
|
|
65
|
+
fails=$(sed 's/\x1b\[[0-9;]*m//g' "$log" | grep -Eo 'Tests +[0-9]+ failed' | tail -1 | grep -Eo '[0-9]+' || true)
|
|
66
|
+
if [ -z "$fails" ]; then
|
|
67
|
+
# A green log has "Tests N passed" and no "failed" — that is not our business.
|
|
68
|
+
if grep -qE 'Tests +[0-9]+ passed' "$log" && ! grep -qE '[0-9]+ failed' "$log"; then
|
|
69
|
+
echo "typedb-flake: log is GREEN — nothing to classify"; return 1
|
|
70
|
+
fi
|
|
71
|
+
echo "typedb-flake: cannot find a 'Tests N failed' line — refusing to classify"; return 1
|
|
72
|
+
fi
|
|
73
|
+
|
|
74
|
+
# The hard line, checked first and independently of everything else.
|
|
75
|
+
#
|
|
76
|
+
# Scoped to failure BODIES, with the FAIL header line dropped. Two reasons,
|
|
77
|
+
# both real: (a) a whole-log grep sees `not_found` in the NAME of a perfectly
|
|
78
|
+
# healthy test -- tasks-do-roundtrip.test.ts really does contain
|
|
79
|
+
# `claim by an unknown slug is not_found, never a silent success`, so a
|
|
80
|
+
# log-wide grep let one passing test veto every deploy; (b) `not_found` is
|
|
81
|
+
# legitimate ASSERTED output in the tests that check the boundary holds. What
|
|
82
|
+
# is never acceptable is `not_found` as the RECEIVED value of a failure.
|
|
83
|
+
# `seen` bounds the FIRST block: before any FAIL header the accumulator holds
|
|
84
|
+
# the log PREAMBLE — gate banners plus the stderr of every PASSING test that
|
|
85
|
+
# ran first — and a passing test's NAME ("…is not_found") or asserted output
|
|
86
|
+
# ("workspace_not_found") tripped this on two deploys (2026-09-05), once with a
|
|
87
|
+
# confident wrong diagnosis pointing at tasks:claim for an un-regenerated
|
|
88
|
+
# roster. A body is only a failure body once a header has opened it.
|
|
89
|
+
if awk -v re="$NEVER_RE" '
|
|
90
|
+
/^ *(FAIL|Unhandled)/ { if (seen && body ~ re) { print "HIT"; exit } ; seen = 1; body = ""; next }
|
|
91
|
+
{ body = body "\n" $0 }
|
|
92
|
+
END { if (seen && body ~ re) print "HIT" }
|
|
93
|
+
' "$log" | grep -q HIT; then
|
|
94
|
+
echo "typedb-flake: BLOCKED -- a failure BODY contains 'not_found'."
|
|
95
|
+
echo " That is the tasks:claim privilege boundary, not a cluster blip."
|
|
96
|
+
echo " It is never waived. See deploy.md section Known-Flaky Test Allowlist."
|
|
97
|
+
return 1
|
|
98
|
+
fi
|
|
99
|
+
|
|
100
|
+
# Split the log into vitest's per-failure blocks (the ⎯[n/m]⎯ separators) and
|
|
101
|
+
# require EVERY one of them to carry a substrate signature. Counting matched
|
|
102
|
+
# blocks rather than grepping the whole file is the point: one flake signature
|
|
103
|
+
# anywhere must not vouch for an unrelated assertion failure beside it.
|
|
104
|
+
blocks=$(awk '/^ *(FAIL|Unhandled)/{n++} END{print n+0}' "$log")
|
|
105
|
+
matched=$(awk -v re="$FLAKE_RE" '
|
|
106
|
+
/^ *(FAIL|Unhandled)/ { if (cur != "" && cur ~ re) m++; cur = $0; next }
|
|
107
|
+
{ cur = cur "\n" $0 }
|
|
108
|
+
END { if (cur != "" && cur ~ re) m++; print m+0 }
|
|
109
|
+
' "$log")
|
|
110
|
+
|
|
111
|
+
if [ "$blocks" -eq 0 ]; then
|
|
112
|
+
echo "typedb-flake: $fails failed test(s) but no FAIL blocks parsed — refusing to classify"; return 1
|
|
113
|
+
fi
|
|
114
|
+
if [ "$matched" -lt "$blocks" ]; then
|
|
115
|
+
echo "typedb-flake: BLOCKED — $matched/$blocks failure blocks look like substrate outage."
|
|
116
|
+
echo " $(( blocks - matched )) failure(s) are REAL. Diagnose them."
|
|
117
|
+
return 1
|
|
118
|
+
fi
|
|
119
|
+
echo "typedb-flake: WAIVABLE — all $blocks failure block(s) ($fails test(s)) are substrate-unavailable."
|
|
120
|
+
echo " Signature matched: shared TypeDB Cloud did not answer. Nothing was disproven."
|
|
121
|
+
return 0
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
# ── --self-test: prove the checker can go RED ────────────────────────────────
|
|
125
|
+
# A classifier that only ever says "waivable" is worse than no classifier. This
|
|
126
|
+
# drives both halves, including the two ways it must refuse.
|
|
127
|
+
if [ "${1:-}" = "--self-test" ]; then
|
|
128
|
+
d=$(mktemp -d); fails=0
|
|
129
|
+
t() { # name expected_rc file
|
|
130
|
+
local name="$1" want="$2" f="$3" got
|
|
131
|
+
classify "$f" >/dev/null 2>&1; got=$?
|
|
132
|
+
if [ "$got" -eq "$want" ]; then echo " ok $name (rc=$got)"
|
|
133
|
+
else echo " FAIL $name — wanted rc=$want got rc=$got"; fails=$((fails+1)); fi
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
cat >"$d/flake.log" <<'EOF'
|
|
137
|
+
FAIL tests/unit/tasks-humans.test.ts > seeds a task
|
|
138
|
+
Error: fixture write failed (status=503 error=upstream_503)
|
|
139
|
+
⎯⎯⎯[1/1]⎯
|
|
140
|
+
Test Files 1 failed | 900 passed (901)
|
|
141
|
+
Tests 1 failed | 9000 passed (9001)
|
|
142
|
+
EOF
|
|
143
|
+
t "pure 503 outage is waivable" 0 "$d/flake.log"
|
|
144
|
+
|
|
145
|
+
cat >"$d/real.log" <<'EOF'
|
|
146
|
+
FAIL tests/unit/billing.test.ts > charges the card once
|
|
147
|
+
AssertionError: expected 2 to be 1
|
|
148
|
+
⎯⎯⎯[1/1]⎯
|
|
149
|
+
Test Files 1 failed | 900 passed (901)
|
|
150
|
+
Tests 1 failed | 9000 passed (9001)
|
|
151
|
+
EOF
|
|
152
|
+
t "a real assertion failure BLOCKS" 1 "$d/real.log"
|
|
153
|
+
|
|
154
|
+
cat >"$d/mixed.log" <<'EOF'
|
|
155
|
+
FAIL tests/unit/tasks-humans.test.ts > seeds a task
|
|
156
|
+
Error: fixture write failed (status=503 error=upstream_503)
|
|
157
|
+
FAIL tests/unit/billing.test.ts > charges the card once
|
|
158
|
+
AssertionError: expected 2 to be 1
|
|
159
|
+
⎯⎯⎯[2/2]⎯
|
|
160
|
+
Test Files 2 failed | 900 passed (902)
|
|
161
|
+
Tests 2 failed | 9000 passed (9002)
|
|
162
|
+
EOF
|
|
163
|
+
t "one flake must not vouch for its neighbour" 1 "$d/mixed.log"
|
|
164
|
+
|
|
165
|
+
cat >"$d/notfound.log" <<'EOF'
|
|
166
|
+
FAIL tests/unit/tasks-containment.test.ts > a task is claimable
|
|
167
|
+
AssertionError: expected 'not_found' to be undefined
|
|
168
|
+
Error: fixture write failed (status=503 error=upstream_503)
|
|
169
|
+
⎯⎯⎯[1/1]⎯
|
|
170
|
+
Test Files 1 failed | 900 passed (901)
|
|
171
|
+
Tests 1 failed | 9000 passed (9001)
|
|
172
|
+
EOF
|
|
173
|
+
t "not_found BLOCKS even wrapped in a 503" 1 "$d/notfound.log"
|
|
174
|
+
|
|
175
|
+
cat >"$d/nameonly.log" <<'EOF'
|
|
176
|
+
FAIL tests/tasks-do-roundtrip.test.ts > claim by an unknown slug is not_found, never a silent success
|
|
177
|
+
Error: fixture write failed (status=503 error=upstream_503)
|
|
178
|
+
Test Files 1 failed | 900 passed (901)
|
|
179
|
+
Tests 1 failed | 9000 passed (9001)
|
|
180
|
+
EOF
|
|
181
|
+
t "not_found in a test NAME does not block a real 503" 0 "$d/nameonly.log"
|
|
182
|
+
|
|
183
|
+
cat >"$d/green.log" <<'EOF'
|
|
184
|
+
Test Files 901 passed (901)
|
|
185
|
+
Tests 9001 passed (9001)
|
|
186
|
+
EOF
|
|
187
|
+
t "a green log is not classifiable" 1 "$d/green.log"
|
|
188
|
+
|
|
189
|
+
: >"$d/empty.log"
|
|
190
|
+
t "an empty log is not a pass" 1 "$d/empty.log"
|
|
191
|
+
|
|
192
|
+
rm -rf "$d"
|
|
193
|
+
[ "$fails" -eq 0 ] && { echo "typedb-flake: self-test PASS"; exit 0; }
|
|
194
|
+
echo "typedb-flake: self-test FAILED ($fails)"; exit 1
|
|
195
|
+
fi
|
|
196
|
+
|
|
197
|
+
classify "${1:?usage: typedb-flake-check.sh <vitest-log> | --self-test}"
|
package/scripts/urls-lint.sh
CHANGED
|
@@ -23,6 +23,12 @@ FROZEN_ROOT_PAGES=(
|
|
|
23
23
|
dashboard settings analytics chat skills build create editor in memory
|
|
24
24
|
profile credits payments rewards tracking watch stream meet classroom
|
|
25
25
|
learning activity do cc device motion "self-improving"
|
|
26
|
+
# console-slugless — AMENDMENT 2026-08-26 (slugless-doors). Two deliberate
|
|
27
|
+
# additions, each a session-resolved door that rewrites/redirects into
|
|
28
|
+
# /u/<workspace>/<room> and renders nothing of its own. Both words are
|
|
29
|
+
# declared in RESERVED_PREFIXES (src/lib/urls/law.ts) and added to
|
|
30
|
+
# RESERVED_SLUGS so no future workspace can claim them.
|
|
31
|
+
tasks w
|
|
26
32
|
# identity
|
|
27
33
|
signin signup recover "recovery-codes" "auth-security" unsubscribe
|
|
28
34
|
# system
|
|
@@ -32,6 +38,15 @@ FROZEN_ROOT_PAGES=(
|
|
|
32
38
|
"index-new" "index-open" home
|
|
33
39
|
# dead — unreferenced, flagged for a future lever-4 cycle, not this promise
|
|
34
40
|
dotsdemo
|
|
41
|
+
# NOT GRANDFATHERED, on purpose (noted 2026-08-26 by slugless-doors): nine root
|
|
42
|
+
# pages are committed to main with no allowlist amendment, so this lint — and
|
|
43
|
+
# therefore text/urls.md's proof: — is RED for reasons that predate and are
|
|
44
|
+
# unrelated to the slugless doors:
|
|
45
|
+
# asi1 · chat-block · factory · loading · media · pay-blocks · sell ·
|
|
46
|
+
# speed-metrics · x402
|
|
47
|
+
# They are deliberately left OFF this list. Absorbing them would turn nine live
|
|
48
|
+
# violations into permanent grandfathering and make a green lint mean less than
|
|
49
|
+
# it does. Whoever added them owns the amendment or the deletion.
|
|
35
50
|
)
|
|
36
51
|
|
|
37
52
|
is_allowed() {
|