Repository navigation
Commit ff29410
docs(qa): re-point 17 platform-checklist clauses the 17.7 pre-release runs proved stale or mis-asserted (#21741)
Fixes #21735
Clause-②: no
## What this changes
Re-points 17 clauses on 16 items in
`docs/qa/platform-checklist/areas/*.json`. The 17.7 pre-release runs
named on the card proved each one stale or mis-asserted. Every item
keeps its id, area and selectors, gets exactly one `revision` bump (both
rows of `integration-system.external-schema-introspection` ride one
bump), and gets one `history` entry that cites the source commit and
card.
No product code changes. No run record. `docs/qa/**` publishes nothing,
so there is no changeset.
Each row was re-derived from source at the claim ref `316be321ef`, not
copied from the card. Line numbers below are at that commit. The
checklist itself carries symbol citations only, because its validator
refuses `file:line`.
| # | item | clause | old → new (short) | source re-read @316be321ef |
matches card? |
|---|---|---|---|---|---|
| 1 | access-security.share-link-capability-tokens | A5 record-gone leg,
step 7 | 410 RECORD_GONE → 404 INVALID_OR_EXPIRED, byte-identical to an
unknown token | share-link-service.ts:923 (`if (!record) return null`),
share-links.ts:128 + :228 (`invalidOrExpired()` fall-through) | Y |
| 2 | ai.agent-tool-skill-metadata-roundtrip | A4, step 7 | draft PUT on
the package-shipped skill succeeds → draft on a runtime-created name
(200, `?state=draft`); package-shipped is 403 NOT_OVERRIDABLE |
metadata-plugin.zod.ts:1200-1210 (tool/skill `allowOrgOverride: false`),
sys-metadata-repository.ts:1694 | Y |
| 3 | api-backend.batch-transactional-discovery | A5, step 6 | default
mixed batch "neither blocks" → names `options.continueOnError: true`,
and asserts the default stop + NOT_ATTEMPTED tail as a second leg |
batch.zod.ts:81-85, :209-214 | Y (took both legs the card offers) |
| 4 | api-backend.server-timing-admin-gated | A1-A3, steps 1 and 4 | env
flag as a second admin gate → env off: `X-OS-Debug-Timing` is
admin-only; `OS_SERVER_TIMING=true` sends spans to everyone;
`X-OS-Debug-Timing-Detail` admin-only | hono-plugin.ts:83-104, :311-353
| Y |
| 5 | identity-auth.two-factor-enrollment-reveal | A6, step 8,
browser-lane knownGap | toast-only, no QR → `sys_user.enable_two_factor`
declares resultDialog (qrcode + code-list); knownGap reworded in the
same revision | sys-user.object.ts:526-549 | Y |
| 6 | identity-auth.two-factor-backup-codes | A6, step 9, title,
knownGap | regenerate lockout path → `generate_backup_codes` declares a
one-shot resultDialog | sys-user.object.ts:570-599 | Y |
| 7 | integration-system.external-schema-introspection | A1 |
columnCount 5 → 7 (initObjects adds created_at / updated_at) |
external-fixture.ts:36-45, sql-driver.ts:12506-12508 | Y |
| 8 | integration-system.external-schema-introspection | A3, step 6 |
`fields.FIELD.primaryKey` + type-only import → `// Remote primary key:`
comment, `ObjectSchema` value import |
external-datasource-service.ts:283, :956 | Y |
| 9 | platform-core.activation-ledger-registration-home | A5, step 6 |
"41 names" → count dropped, the one-owner membership asserted (46 at
this ref, noted as context) | platform-object-names.ts:47 (46 names;
`sys_metadata_activation` occurs once) | Y (chose drop; see below) |
| 10 | platform-core.marketplace-install-local-lifecycle | A7 + its step
| restart needed to unload → hot withdrawal from the running kernel, no
restart | marketplace-install-local-plugin.ts:1302, :1370 | Y |
| 11 | records-forms.field-unique-enforcement | A1, step 1, fixtures,
knownGap | memory driver (stock default) → stock SQLite; 409
UNIQUE_VIOLATION, object named, "No record was written."; `object.field`
stays a memory-pin assertion; SQL knownGap inverted |
duplicate-record-error.ts:129-137; serve.ts:3202 (memory refused) | Y |
| 12 | cli.migrate-plan-apply-json | A5, step 4, source, variants |
in_sync → in_sync_partial on the showcase (federated objects
unexamined); "nine subcommands" → 13 | apply.ts:235, plan.ts:301-311; 13
Command files in commands/migrate/ | Y (13 measured) |
| 13 | cli.migrate-meta-codemod | A4, step 8 | `--from` target prints
"Nothing to migrate" → empty range prints "⚠ No migration step exists
for protocol N → N …"; canonical-source replay; default `--to` 18 |
meta.ts:91, :199, :411; chain.ts:100 | Y, with a nuance (below) |
| 14 | cli.migrate-duplicates-inventory | A3 + its step | whole-file md5
→ rows + `_objectstack_sequences` + `sqlite_master` byte-identical |
duplicates.ts:61-66 | Y |
| 15 | cli.datasource-introspect-codegen | A6 + its step | unknown-name
probe on all three → list-tables / introspect only; validate is a
vacuous ok by design | external-datasource-routes.ts:517,
external-datasource-service.ts:854-858 | Y |
| 16 | cli.plugin-manifest-build-contract | A2, probe (d) | `id: ""`
reaches the post-parse guard → located Zod error (reverse-domain rule);
guard unreachable | manifest.zod.ts:364, build.ts:121-122 | Y |
| 17 | api-backend.enforce-or-remove-authoring-gates | A1, step 2 |
retired filter operator rejected at parse/build → green at parse/build,
refused at runtime with 400 INVALID_FILTER + the prescription, listed by
`os migrate meta` | filter.zod.ts:3256,
semantic/17.filter-regex-options-retired.ts:30, sql-driver.ts:17392 | Y,
with a nuance (below) |
## Divergences and choices worth a reviewer's eye
- **Row 13 (`cli.migrate-meta-codemod`).** The card says to replay a
canonical source. Measured: over the real range `--from 17` (default
`--to 18`), a canonical source shows no "Applied N mechanical change(s)"
block, but it still lists the step-18 semantic advisories. `chain.ts`
lists every hop's semantic entries unconditionally. So "Nothing to
migrate — …" does **not** print there either. The clause asserts zero
mechanical edits plus exit 0, not the success line.
- **Row 17 (`api-backend.enforce-or-remove-authoring-gates`).** The full
prescription reaches the wire only on a caller-authored `where`. A
predicate whose provenance cannot be vouched gets the withheld "RETIRED"
sentence, with the full diagnostic in the server log (sql-driver.ts
`withheldFilterError`). The verify text says which shape to expect.
- **Row 9.** RUNNER.md's convention for counts that move is that the
discriminator is the fact, never its digits. A literal is pinned only
where the validator enforces it, as `enumSource` does. Nothing enforces
this array's length, so the count is dropped from the assertion and kept
as context.
- **Row 12.** The variants list gains the four subcommands it lacked:
account-issuer, audit-metadata-bodies, multi-value-columns and
unmapped-columns.
- `coverage.json` is untouched. No item's capability mapping moved.
## Verification (at `d52c1fe937`)
- `pnpm check:platform-checklist` → exit 0: `OK — 15 areas, 270 items …;
line citations: 0 survive …; symbol anchors: 652/662 resolved`. On the
base `316be321ef` the same check reads 650/660. The two new anchors
(`hono-plugin.ts#serverTiming`,
`duplicate-record-error.ts#buildDuplicateMessage`) resolve, and the
unresolved count stays at the named residual of 10.
- `node scripts/pm/dispatch-gates.mjs --commands`: 13 families derived.
All 13 ran with exit 0. `--ran` reconciliation: `13 derived, 13 run, 0
NOT-MEASURED, 0 UNRUN`.
---
_Generated by [Claude
Code](https://claude.ai/code/session_01VDtqoecgES7ScQYGbFVDRv)_
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent cf60dbc commit ff29410
8 files changed
Lines changed: 206 additions & 104 deletions
File tree
- docs/qa/platform-checklist/areas
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1499 | 1499 | | |
1500 | 1500 | | |
1501 | 1501 | | |
1502 | | - | |
| 1502 | + | |
1503 | 1503 | | |
1504 | 1504 | | |
1505 | 1505 | | |
| |||
1526 | 1526 | | |
1527 | 1527 | | |
1528 | 1528 | | |
1529 | | - | |
| 1529 | + | |
1530 | 1530 | | |
1531 | 1531 | | |
1532 | 1532 | | |
| |||
1555 | 1555 | | |
1556 | 1556 | | |
1557 | 1557 | | |
1558 | | - | |
| 1558 | + | |
1559 | 1559 | | |
1560 | | - | |
1561 | | - | |
| 1560 | + | |
| 1561 | + | |
1562 | 1562 | | |
1563 | 1563 | | |
1564 | 1564 | | |
| |||
1610 | 1610 | | |
1611 | 1611 | | |
1612 | 1612 | | |
| 1613 | + | |
| 1614 | + | |
| 1615 | + | |
| 1616 | + | |
| 1617 | + | |
| 1618 | + | |
1613 | 1619 | | |
1614 | 1620 | | |
1615 | 1621 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
45 | | - | |
| 45 | + | |
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| |||
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
69 | | - | |
| 69 | + | |
70 | 70 | | |
71 | | - | |
72 | | - | |
| 71 | + | |
| 72 | + | |
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
| |||
101 | 101 | | |
102 | 102 | | |
103 | 103 | | |
104 | | - | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
105 | 111 | | |
106 | 112 | | |
107 | 113 | | |
| |||
0 commit comments