Repository navigation
Expand file tree
/
Copy path.cs-lint.yaml
More file actions
166 lines (146 loc) · 6.88 KB
/
Copy path.cs-lint.yaml
File metadata and controls
166 lines (146 loc) · 6.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
# The knobs cs-lint reads for this repository.
#
# The linters carry no project knowledge. Everything that differs between
# repositories lives here, so a fix to a check reaches every project without
# carrying one project's exceptions into the next.
#
# Run `cs-lint <linter> --explain` to read what each rule wants. Tune until
# every reported problem is a real one: a check that cries wolf is worse than
# no check.
# The documentation block: the set of documents the checks read, then one
# section per documentation linter.
docs:
# The set `refs` and `surface` read the claims from. PROTOCOL.md and
# PLAYBOOK.md are standalone pages the document set adds, and both linters read
# them too. The playbook belongs here because it quotes command lines a reader
# copies, which is exactly what the surface checks hold against the binary.
extraDocs:
- PROTOCOL.md
- PLAYBOOK.md
prose:
# The domain terms a reader of this project cannot infer. Each must be
# introduced where a document first uses it: glossed on the spot, defined in a
# glossary table, or linked to the page that defines it. The SPEC's vocabulary
# table is where they come from.
glossary:
- campaign
- orchestrator
- dispatch
- readback
- adapter
- orientation
- manifest
- covmap
- settling window
- turn driver
# Words that legitimately start a sentence in lower case, which is nearly
# always a command name. Without them the splitter reads "Nothing matches.
# cs-campaign exits 1." as one seven-word sentence and reports a length that
# is not real.
lowercaseStarters:
- cs-campaign
- cs-campaign-member
- cs-dispatch-viewer
- cs-sandbox
- cs-ledger
- goreleaser
- golangci-lint
- deadcode
- gofmt
# Verbs the shared list does not carry, added when a real verb trips the
# epigram check. Pattern fragments rather than literals, so "mints?" covers
# both numbers. Only what is this project's own belongs here.
# The things this repository counts for itself. The agent tool surface grows
# whenever cs-sandbox ships another wrapper, so a number written into a
# sentence is right today and wrong at the next pin, with nothing to fail
# when it drifts. Name what reports the number instead.
countable:
- agent tools
- members?
- dispatches
- fixtures?
projectVerbs:
- "dispatch(?:es|ed)?"
- "restate[sd]?"
- "re-anchors?"
- "mints?"
- "harvests?"
refs:
placeholderOK:
- "acme/profile.yaml"
- "acme/mission.md"
- "acme/roles/*.md"
- "hello/profile.yaml"
- "nudge.md"
- "./runs/acme-1"
- "acme-1.html"
prereqOK: ["goreleaser", "cs-sandbox", "cs-ledger", "golangci-lint", "deadcode"]
surface:
tool: cs-campaign
toolPath: bin/cs-campaign
# The section that states the host command surface. Its block is held
# against the verbs the binary carries, in both directions: SPEC 3.1 kept
# naming `pin` for six months after the verb went, and never gained
# `orientation`, because every other check was satisfied by MANUAL.md
# naming them.
surfaceSection: SPEC.md#3.1
envPrefix: CS_CAMPAIGN_
sourceSkip:
"cmd/cs-campaign-member": "the guest binary's settings are read inside a member, not set by a user on the host"
"internal/covmap": "the behaviour map's buffer is test instrumentation"
# Read-only, offline, and safe to run in a checkout on every gate. A verb that
# writes belongs nowhere near this list: a checker that writes can mask the
# staleness another gate exists to catch.
safeVerbs:
- version
- ls
- validate
sampleSkip:
"cs-campaign ls": "the sample shows a live campaign; this checkout's state directory is empty"
"cs-campaign version": "the sample is a build stamp, and every checkout prints its own"
"cs-dispatch-viewer version": "the same build stamp, from the other binary"
"cs-campaign doctor": "the sample is a host with cs-sandbox, its agent tools and a pin; a clean machine has none of them"
"cs-campaign init acme --orchestrator codex --agent backend=claude --agent qa=codex": "init writes files, so re-running it would scaffold into the checkout"
"cs-campaign init hello --orchestrator codex --agent worker=codex": "the same, for the install page's own steps"
"cs-campaign validate acme/profile.yaml": "the sample is the acme workspace a reader scaffolds, not a file this repo carries"
"cs-campaign validate hello/profile.yaml": "the same, for the install page"
"cs-campaign plan acme --profile acme/profile.yaml": "the same workspace, and plan resolves paths that exist only there"
"cs-campaign plan hello --profile hello/profile.yaml | head -8": "the same, for the install page"
"cs-campaign observe acme": "the sample is a running campaign, which no gate may create"
"cs-campaign create acme --profile acme/profile.yaml": "create boots real virtual machines and spends model tokens"
"cs-campaign audit acme": "audit probes a live fleet"
"cs-campaign fetch acme/backend": "fetch reaches a live member"
"cs-campaign send acme --file nudge.md": "send reaches a live orchestrator"
"cs-campaign restart acme": "restart reaches a live orchestrator"
oss:
project: cs-campaign
githubRepo: codesweep-ai/campaign
# True once the repository is public. From that point a finding about a commit
# a remote already carries reports as a warning, because rewriting one is a
# decision about every clone somebody else made. A finding about a commit no
# remote has stays an error, because an amend still reaches it. Flip this in
# the same commit that makes the repository public.
published: false
docSet:
- README.md
- INSTALL.md
- MANUAL.md
- SPEC.md
- CONTRIBUTING.md
- AGENTS.md
# Genuine standalone pages, each long enough that folding it would bury the
# document it landed in. The router must name them too.
extraDocs:
- PROTOCOL.md
- PLAYBOOK.md
# github.com is here for `git@github.com:owner/repo.git`, the SSH transport
# user every clone URL in this family carries. It is a machine identity and
# never a mailbox, and without it a runnable clone command cannot be written
# down. anthropic.com is the provider host the recorded cassettes and the live
# tests name.
emailAllow: ["github.com", "anthropic.com"]
# The packed design-system tarball the viewer app builds from.
binaryOK: [".png", ".jpg", ".jpeg", ".gif", ".webp", ".ico", ".icns", ".woff", ".woff2", ".ttf", ".otf", ".pdf", ".zip", ".gz", ".tar", ".mp4", ".mov", ".wasm", ".tgz"]
# Only what the built-in list does not already carry. deadcode is a Go tool,
# so it is this project's to name rather than every project's.
expectedTargets: ["install", "uninstall", "fmt", "fmt-check", "vet", "deadcode"]