Skip to content

Commit 74853d7

Browse files
committed
test(spec): the six reader-bound test strings move with their readers, stating each cited decision in words instead of a tracker number (stage 31)
Each needle and every reader site it matched move in lockstep, one span per line: the build-progress module docblock and its two liveness-watch needles, the continueRestoredRun docblock sibling citation, the ./ui notification tombstone label and its anchor, the no-door retirement both ui modules record, and the ComponentPropsMap opaque-member ruling with its assertion. Two class (e) titles that regrew since stage 30 drop a number the title already explains. Text only: no schema shape, key, describe string or behaviour moves. Claude-Session: https://claude.ai/code/session_01DhTqaEHqPVSVnAkjG3jywn Co-authored-by: Claude <noreply@anthropic.com>
1 parent e148ca9 commit 74853d7

11 files changed

Lines changed: 24 additions & 24 deletions

‎packages/spec/src/ai/build-progress.test.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ describe('module docblock provenance', () => {
233233
}
234234
// The point of the watch: no gate notices, so the paragraph is the notice.
235235
expect(SOURCE).toContain('ADR-0049');
236-
expect(SOURCE).toContain('cloud#2172');
237-
expect(SOURCE).toContain('objectui#7388 block 2');
236+
expect(SOURCE).toContain('the cloud build-progress card');
237+
expect(SOURCE).toContain('block 2 of the objectui build-panel card');
238238
});
239239
});

‎packages/spec/src/ai/build-progress.zod.ts‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { lazySchema } from '../shared/lazy-schema';
55

66
/**
77
* Build-progress PHASE vocabulary for the `data-build-progress` stream frame
8-
* (cloud#2172 ruling A).
8+
* (the cloud build-progress card, ruling A).
99
*
1010
* ## How to read the claims in this module
1111
*
@@ -24,7 +24,7 @@ import { lazySchema } from '../shared/lazy-schema';
2424
* ## Producer
2525
*
2626
* The cloud AI-studio **agent loop** — deliberately not the tool it just ran.
27-
* **Declared by ruling**: cloud#2172 ruling A owns WHERE in the loop a frame is
27+
* **Declared by ruling**: the cloud build-progress card's ruling A owns WHERE in the loop a frame is
2828
* emitted; this module declares only what such a frame may SAY.
2929
*
3030
* A build turn applies its change through `apply_blueprint` / `apply_edit` and
@@ -74,15 +74,15 @@ import { lazySchema } from '../shared/lazy-schema';
7474
* (**measured on named reachable sources** — each reading is recorded in the
7575
* source beside its surface: on `BUILD_PROGRESS_PHASES` for the phase, and on
7676
* the `hop` / `tool` field declarations). They stand on a ruling instead
77-
* (**declared by ruling**): cloud#2172 ruled the vocabulary in, and
77+
* (**declared by ruling**): the cloud build-progress card ruled the vocabulary in, and
7878
* objectui#7388 asked the panel to be able to name the phase. That is a good
7979
* reason, and it is not a measurement.
8080
*
8181
* ⛔ No gate watches this. The ADR-0049 liveness ledger is rooted in the
8282
* metadata-type registry, and `BuildProgressFrame` is not a registered
8383
* metadata type, so the liveness job stays green however long these three go
84-
* unused. Two named carriers are meant to close it — cloud#2172 for the
85-
* emitter, objectui#7388 block 2 for the consumer's strict parse. If neither
84+
* unused. Two named carriers are meant to close it — the cloud build-progress card for the
85+
* emitter, block 2 of the objectui build-panel card for the consumer's strict parse. If neither
8686
* lands, the three become enforce-or-remove candidates with nothing watching
8787
* them, and the only thing that notices is a person reading this paragraph.
8888
*/
@@ -105,7 +105,7 @@ import { lazySchema } from '../shared/lazy-schema';
105105
* `dda8f3815`; line numbers drift, the two symbols are the anchor.
106106
* - `verify` — **declared by ruling**, ⛔ not measured: the post-apply
107107
* verification window objectui#7388 asks the panel to be able to name, and
108-
* the reason cloud#2172 ruled this vocabulary into the spec. At objectui
108+
* the reason the cloud build-progress card ruled this vocabulary into the spec. At objectui
109109
* `dda8f3815` `packages/plugin-chatbot` has ZERO occurrences of `'verify'`
110110
* (bright control, same instrument: `'structure'` hits 4 files there), and
111111
* this repository emits no frame at all, so `verify` has no reachable
@@ -120,7 +120,7 @@ import { lazySchema } from '../shared/lazy-schema';
120120
* assuming every phase occurs. The two illustrations of a phase being skipped
121121
* — a turn that applies no seed data never reporting `data`, and `apply_edit`
122122
* turns not reporting `structure` — are **inferred**: no reachable repository
123-
* records either, and cloud#2172's emitter has not landed. ⛔ The guidance
123+
* records either, and the cloud build-progress card's emitter has not landed. ⛔ The guidance
124124
* does not rest on them; treat every phase as optional whatever a producer
125125
* turns out to do.
126126
*
@@ -174,7 +174,7 @@ export const BuildProgressFrameSchema = lazySchema(() => z.looseObject({
174174
*
175175
* Typed as a non-negative integer rather than pinned to a base: whether the
176176
* loop counts its first hop as 0 or 1 is part of the emitter's placement,
177-
* which cloud#2172 owns and this card does not decide. ⛔ Consumers render it
177+
* which the cloud build-progress card owns and this card does not decide. ⛔ Consumers render it
178178
* as progress, never as an index into anything here.
179179
*
180180
* ⛔ Zero emitters and zero readers in every reachable repository at this

‎packages/spec/src/automation/end-node-outcome.test.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ describe('EndConfigSchema — the `end` node contract: it may refuse the run wit
6464
expect(issue.message).toContain('{{ record.name }}');
6565
});
6666

67-
it('REFUSES a single-brace token in the `message` — a text slot reads `{{ }}` holes (#22110)', () => {
67+
it('REFUSES a single-brace token in the `message` — a text slot reads `{{ }}` holes', () => {
6868
const result = EndConfigSchema.safeParse({ outcome: 'refused', message: 'Refused: {record.name}' });
6969
expect(result.success).toBe(false);
7070
if (result.success) return;

‎packages/spec/src/automation/io-node-config.test.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,7 @@ describe('NotifyConfigSchema — an unknown key is refused, not stripped', () =>
469469
}
470470
});
471471

472-
it('refuses a single-brace token left from the 17.x dialect, in either spelling, naming its hole spelling (#22110)', () => {
472+
it('refuses a single-brace token left from the 17.x dialect, in either spelling, naming its hole spelling', () => {
473473
for (const key of ['title', 'message'] as const) {
474474
for (const value of ['Deal {record.name} won', tmpl`Deal {record.name} won`]) {
475475
const label = `${key} = ${JSON.stringify(value)}`;

‎packages/spec/src/contracts/approval-service.test.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ describe('continueRestoredRun — the approvals operator repair verb, declared',
271271
const doc = source.slice(source.lastIndexOf('/**', at), at);
272272

273273
// The sibling this was ruled to copy, named where a later author reads it.
274-
expect(doc).toContain('#16495');
274+
expect(doc).toContain('the automation-service contract');
275275
// What the engine verb leaves undone, which is the whole reason this exists.
276276
expect(doc).toMatch(/the[\s*]+continuation[\s*]+must[\s*]+be[\s*]+re-issued/);
277277
// ⛔ It replays a recorded outcome; it does not re-decide.

‎packages/spec/src/contracts/approval-service.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -996,7 +996,7 @@ export interface IApprovalService {
996996
/**
997997
* **Operator verb — re-issue the continuation for a run an operator has
998998
* re-armed** (#15389; the maintainer ruling of 2026-09-09, decision batch
999-
* #106 item 3, declared here exactly as #16495 declared
999+
* #106 item 3, declared here exactly as the automation-service contract declared
10001000
* `IAutomationService.cancelRun` / `restoreConsumedSuspension`).
10011001
*
10021002
* The missing half of `IAutomationService.restoreConsumedSuspension`, for

‎packages/spec/src/ui/component-props-unknown-members.pin.test.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ on(['object-grid'], ['pagination.*'], {
319319
// none.
320320
on(['object-timeline'], ['items[].content'], {
321321
kind: 'opaque',
322-
ruling: 'decision card #21704, fork 4, letter B (record 5979239990)',
322+
ruling: 'decision card on the five members the last typing stage stopped on, fork 4, letter B (record 5979239990)',
323323
why: 'child schema nodes no measured writer authors; it becomes a slot position the page walks judge once one does',
324324
});
325325

@@ -414,7 +414,7 @@ describe('§2 each recorded reason holds', () => {
414414
expect(opaque.map(([key]) => key)).toEqual(['object-timeline items[].content']);
415415
for (const [key, reason] of opaque) {
416416
expect(members.get(key)?.describe ?? '', key).toMatch(/Held opaque/);
417-
expect(reason.kind === 'opaque' && reason.ruling, key).toMatch(/#21704/);
417+
expect(reason.kind === 'opaque' && reason.ruling, key).toMatch(/the five members the last typing stage stopped on/);
418418
}
419419
});
420420

‎packages/spec/src/ui/notification.test.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ describe('./ui notification tombstone — corrected evidence, no false FROM →
120120
*/
121121
const tombstone = (() => {
122122
const source = fs.readFileSync(SOURCE, 'utf8');
123-
const start = source.indexOf('// [#4610]');
123+
const start = source.indexOf('// [dual-source removal]');
124124
return source
125125
.slice(start)
126126
.split('\n')
@@ -131,7 +131,7 @@ describe('./ui notification tombstone — corrected evidence, no false FROM →
131131
})();
132132

133133
it('finds the tombstone note at all (anti-vacuity)', () => {
134-
expect(tombstone).toMatch(/^\[#4610\]/);
134+
expect(tombstone).toMatch(/^\[dual-source removal\]/);
135135
expect(tombstone).toMatch(/NotificationConfigSchema/);
136136
expect(tombstone.length).toBeGreaterThan(800);
137137
});

‎packages/spec/src/ui/notification.zod.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export const NotificationPositionSchema = lazySchema(() => z.enum([
4545

4646
export type NotificationPosition = z.input<typeof NotificationPositionSchema>;
4747

48-
// [#5015] `NotificationActionSchema` / `NotificationAction` were REMOVED per
48+
// [no-door retirement] `NotificationActionSchema` / `NotificationAction` were REMOVED per
4949
// ADR-0049 enforce-or-remove, ruled REMOVE on 2026-08-04.
5050
//
5151
// The shape declared an interactive action button inside a notification —
@@ -91,7 +91,7 @@ export type NotificationPosition = z.input<typeof NotificationPositionSchema>;
9191
// enforce route of ADR-0049 — a carrier key on a real metadata type, with a
9292
// renderer that reads it, in one change. Vocabulary second, never first.
9393

94-
// [#4610] `NotificationSchema` / `Notification` and `NotificationConfigSchema`
94+
// [dual-source removal] `NotificationSchema` / `Notification` and `NotificationConfigSchema`
9595
// / `NotificationConfig` were removed from this module (dual-source cleanup,
9696
// #4535 C3). The bare name `Notification(Schema)` now belongs to
9797
// `@objectstack/spec/api` alone: the REST inbox-row contract served by
@@ -100,7 +100,7 @@ export type NotificationPosition = z.input<typeof NotificationPositionSchema>;
100100
// `./system` twin was wired into no parent schema and contradicted ADR-0030's
101101
// accepted delivery model. What survives on this module is the presentation
102102
// vocabulary above: `NotificationType` / `NotificationSeverity` /
103-
// `NotificationPosition` — three enums, not four, since #5015 took
103+
// `NotificationPosition` — three enums, not four, since the no-door retirement took
104104
// `NotificationAction` — which objectui's toaster reads as a vocabulary.
105105
//
106106
// ⚠️ [#5781] The retirement STANDS; the evidence #4610 published for it does

‎packages/spec/src/ui/sharing.zod.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
* `@objectstack/metadata-core` re-exports to the server's doors). Both
2222
* example apps author it (`app-showcase` `inquiry.view.ts`, `app-crm`
2323
* `lead.view.ts`). It is `strictObject` as of #4001 批 14.
24-
* - `EmbedConfigSchema` was **REMOVED** at #5015 (ADR-0049 enforce-or-remove) —
24+
* - `EmbedConfigSchema` was **REMOVED** at the no-door retirement (ADR-0049 enforce-or-remove) —
2525
* see the block below where it stood.
2626
*
2727
* The ledger's classification question is *"who writes this schema's input?"*,
@@ -111,7 +111,7 @@ export const SharingConfigSchema = lazySchema(() => strictObject({
111111
.describe('Allow access without authentication'),
112112
}));
113113

114-
// [#5015] `EmbedConfigSchema` / `EmbedConfig` were REMOVED per ADR-0049
114+
// [no-door retirement] `EmbedConfigSchema` / `EmbedConfig` were REMOVED per ADR-0049
115115
// enforce-or-remove, ruled REMOVE on 2026-08-04.
116116
//
117117
// The shape described iframe embedding of an app, page or form — `enabled`,

0 commit comments

Comments
 (0)