@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,6 +1,6 @@
1
1
  {
2
2
  "name": "@openwop/openwop-conformance",
3
- "version": "1.98.0",
3
+ "version": "1.99.0",
4
4
  "description": "Production-ready black-box conformance suite for OpenWOP v1.0 compliant servers.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -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.98.0",
4
- "corpusCommit": "74e2402caae98a97d16a2d8d56f1b46aae759741"
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
+ });