@openwop/openwop-conformance 1.98.0 → 1.99.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/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_comment": "Provenance of this vendored schemas/ copy. See conformance/README.md \u00a7\"Resolving the contract\". Compare against the stamp in your installed @openwop/openwop-conformance to detect a stale hand-copied contract.",
|
|
3
|
-
"suiteVersion": "1.
|
|
4
|
-
"corpusCommit": "
|
|
3
|
+
"suiteVersion": "1.99.0",
|
|
4
|
+
"corpusCommit": "e30c3c5e8b14d76c90b608666deaf10411df0414"
|
|
5
5
|
}
|
|
@@ -135,3 +135,81 @@ describe.skipIf(RFCS_DIR === null || !existsSync(RFCS_DIR))('RFC 0149 §D — li
|
|
|
135
135
|
).toBe(true);
|
|
136
136
|
});
|
|
137
137
|
});
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Every non-terminal RFC either carries the **Parked** annotation with a named
|
|
141
|
+
* tripwire, or is genuinely in flight.
|
|
142
|
+
*
|
|
143
|
+
* `RFCS/README.md` §"Parked RFCs" extends the annotation from `Draft` to
|
|
144
|
+
* `Active`, and the reason is the confusion this corpus has now made in both
|
|
145
|
+
* directions: **an RFC blocked on the world and an RFC blocked on somebody's
|
|
146
|
+
* unfinished work look identical from an index.** RFC 0038 was parked on an
|
|
147
|
+
* external tripwire while three of its acceptance criteria were plain
|
|
148
|
+
* repository work nobody had done; RFC 0121 sits on an unresolved legal
|
|
149
|
+
* question and kept re-reading as an open action item.
|
|
150
|
+
*
|
|
151
|
+
* What this leg defends is the honesty of the annotation, not its presence. A
|
|
152
|
+
* Parked RFC MUST name a **falsifiable** tripwire — a condition someone could
|
|
153
|
+
* check and declare met. "Needs more adoption" is not one. Without this leg the
|
|
154
|
+
* annotation would be a label anybody could apply to make an index look
|
|
155
|
+
* finished, which is precisely the move RFC 0147 §A exists to stop: **Parked is
|
|
156
|
+
* a reason an RFC has not graduated, never a substitute for having graduated.**
|
|
157
|
+
*/
|
|
158
|
+
describe.skipIf(RFCS_DIR === null || !existsSync(RFCS_DIR))('RFCS/README §Parked — a park names its tripwire', () => {
|
|
159
|
+
const dir = RFCS_DIR as string;
|
|
160
|
+
|
|
161
|
+
function nonTerminal(): { file: string; doc: string; status: string }[] {
|
|
162
|
+
const out: { file: string; doc: string; status: string }[] = [];
|
|
163
|
+
for (const name of readdirSync(dir).filter((f) => /^\d{4}-.*\.md$/.test(f)).sort()) {
|
|
164
|
+
if (name.startsWith('0000')) continue; // the template is not an RFC
|
|
165
|
+
const doc = readFileSync(join(dir, name), 'utf8');
|
|
166
|
+
const st = statusOf(doc);
|
|
167
|
+
if (st === 'Draft' || st === 'Active') out.push({ file: name, doc, status: st });
|
|
168
|
+
}
|
|
169
|
+
return out;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
it('the scan finds the non-terminal RFCs it is meant to govern', () => {
|
|
173
|
+
// Guard: if every RFC were `Accepted` this leg would pass over an empty set,
|
|
174
|
+
// which is the vacuity RFC 0148 §C found in the floor verifier. If the corpus
|
|
175
|
+
// ever genuinely reaches zero, delete this leg deliberately rather than
|
|
176
|
+
// letting it go quiet.
|
|
177
|
+
expect(
|
|
178
|
+
nonTerminal().length,
|
|
179
|
+
'RFCS/README §"Status index" records non-terminal RFCs; a zero here means the scan broke, ' +
|
|
180
|
+
'not that the corpus finished',
|
|
181
|
+
).toBeGreaterThan(0);
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
it('every Parked RFC names a falsifiable tripwire', () => {
|
|
185
|
+
const offenders: string[] = [];
|
|
186
|
+
for (const { file, doc } of nonTerminal()) {
|
|
187
|
+
const statusLine = /^\|\s*\*\*Status\*\*\s*\|[^\n]*$/m.exec(doc)?.[0] ?? '';
|
|
188
|
+
if (!/\(\*\*Parked\*\*\)/.test(statusLine)) continue;
|
|
189
|
+
const updated = /^\|\s*\*\*Updated\*\*\s*\|([^\n]*)$/m.exec(doc)?.[1] ?? '';
|
|
190
|
+
if (!/tripwire/i.test(updated) || updated.length < 80) {
|
|
191
|
+
offenders.push(`${file}: Parked without a named tripwire in \`Updated\``);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
expect(
|
|
195
|
+
offenders,
|
|
196
|
+
'RFCS/README.md §"Parked RFCs" rule 1: a Parked RFC MUST name the condition that un-parks ' +
|
|
197
|
+
'it, in `Updated`. An unfalsifiable park is a label that makes an index look finished ' +
|
|
198
|
+
'while nothing was decided — Parked records why an RFC has NOT graduated, and is never a ' +
|
|
199
|
+
'substitute for having graduated.\n ' + offenders.join('\n '),
|
|
200
|
+
).toEqual([]);
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
it('no Parked RFC claims to be Accepted', () => {
|
|
204
|
+
// Rule 2. The annotation confers nothing: an `Active` (**Parked**) RFC is
|
|
205
|
+
// exactly as unimplemented as an `Active` one, and licenses no advertisement.
|
|
206
|
+
for (const { file, doc, status } of nonTerminal()) {
|
|
207
|
+
const statusLine = /^\|\s*\*\*Status\*\*\s*\|[^\n]*$/m.exec(doc)?.[0] ?? '';
|
|
208
|
+
if (!/\(\*\*Parked\*\*\)/.test(statusLine)) continue;
|
|
209
|
+
expect(
|
|
210
|
+
status,
|
|
211
|
+
`${file}: Parked applies to \`Draft\` and \`Active\` only — it never stands in for \`Accepted\``,
|
|
212
|
+
).not.toBe('Accepted');
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
});
|