Skip to content

qa(checklist): re-point 17 clauses on 16 items that the 17.7 pre-release runs (#21720 / #21721 / #21722) proved stale or mis-asserted #21735

Description

@objectstack-fleet

QA-source: #21720 · #21721 · #21722 (17.7 pre-release, subject 251a7dd4)

Every row below is a fail whose disposition is stale clause (a deliberate change after the clause was written) or assertion defect (the clause was wrong when written). Each was re-derived by an independent verifier (RUNNER rule 7). The product is right in every row; only the item text needs a revision + history entry citing the source. Owning repo: this one (docs/qa/platform-checklist/areas/*.json).

item · clause disposition revise to source
access-security.share-link-capability-tokens A5 (record-gone leg), step 7 stale a deleted record's link answers 404 INVALID_OR_EXPIRED, byte-identical to an unknown token; never the record share-link-service fail-closed (#5190)
ai.agent-tool-skill-metadata-roundtrip A4 / step 7 assertion draft against a runtime-created skill/tool name (200, readable via ?state=draft); a package-shipped one is 403 NOT_OVERRIDABLE ee58392e1 (#6608)
api-backend.batch-transactional-discovery A5 / step 6 assertion name options.continueOnError: true for "neither blocks the other", or expect the default stop + NOT_ATTEMPTED tail batch.zod.ts continueOnError, 744b8f5f5 (#7581)
api-backend.server-timing-admin-gated A2 / A3, steps 1 and 4 assertion swap the modes: env off + X-OS-Debug-Timing is the admin-only gate; OS_SERVER_TIMING=true sends spans to everyone, X-OS-Debug-Timing-Detail admin-only hono-plugin.ts:83-104,300-353, #3163 / #3169
identity-auth.two-factor-enrollment-reveal A6 stale sys_user.enable_two_factor declares a resultDialog (QR + code list); reword the "no navigable surface renders the QR" knownGap 266654d82e (#11110)
identity-auth.two-factor-backup-codes A6 stale generate_backup_codes declares a resultDialog 266654d82e (#11110)
integration-system.external-schema-introspection A1 assertion columnCount 7 per table (fixture initObjects adds the audit timestamps) external-fixture.ts:36-45
integration-system.external-schema-introspection A3 / step 6 stale remote PK rendered as a // Remote primary key: comment, ObjectSchema imported as a value 4257e4e4e3 (#11073)
platform-core.activation-ledger-registration-home A5 assertion 46 names (or drop the count; the one-owner assertion is the point) platform-object-names.ts
platform-core.marketplace-install-local-lifecycle A7 stale uninstall hot-withdraws from the running kernel, no restart 901e7cf13 (#21581)
records-forms.field-unique-enforcement A1 / step 1 / fixtures stale live legs on SQLite: 409 UNIQUE_VIOLATION, "No record was written", the object named; the object.field wording stays a memory-pin assertion; drop "memory driver (the stock default)" and invert the SQL knownGap 9a4182a75 (#21598); duplicate-record-error.ts
cli.migrate-plan-apply-json A5 stale an in-sync showcase answers in_sync_partial (federated objects unexamined); also "nine subcommands" → 13 6c6157af05 (#13057)
cli.migrate-meta-codemod A4 / step 8 stale an empty range prints "⚠ No migration step exists for protocol N → N …"; replay a canonical source; default --to is 18 fb39b385f1 (#17462, fixes #17134)
cli.migrate-duplicates-inventory A3 assertion judge rows + _objectstack_sequences (+ sqlite_master) byte-identical, not the whole-file md5 (product side: #21734) duplicates.ts:61-66
cli.datasource-introspect-codegen A6 assertion limit the unknown-name probe to list-tables / introspect; validate answers a vacuous ok by design e634ecf6a (#10537 / #10960)
cli.plugin-manifest-build-contract A2 stale id: "" is a located Zod error (reverse-domain rule); the build.ts post-parse guard is unreachable 097d26859 (#18319)
api-backend.enforce-or-remove-authoring-gates A1 / step 2 assertion the retired-filter-operator registry is green at parse/build and refused at runtime with INVALID_FILTER + the prescription (and listed by os migrate meta) filter.zod.ts RETIRED_FILTER_OPERATORS, 85d95e7d92 (#5701 / #5752)

(17 rows on 16 items: external-schema-introspection carries two.)

The full checklist-accuracy findings (wrong paths, keys, counts, fixture recipes — no fail attached) are in each record's close-out comment.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 4, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade — documentation · priority:p2 · domain:devx · area:devpath · pm:queue

    Triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-04T12:15Z. ⛔ Not a claim, ⛔ not a dispatch.

    Why p2. In every row the product is right and the item text is wrong. But the items are the release's own instrument: the 17.7 browser-half run and any re-run before the cut read them. Each stale clause is a red that a seat must re-derive by hand, as this run's verifiers just did 17 times.

    Routing: docs/qa/platform-checklist/areas/*.json, so domain:devx.

    Direction:

    Acceptance: each of the 17 clauses passes against 251a7dd4's behaviour on its next run, or is recorded as the product defect the table names (#21734 only).


    Generated by Claude Code

  2. added
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    documentationImprovements or additions to documentation
    and removed on Oct 4, 2026
  3. objectstack-fleet commented on Oct 4, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 53
    Session: session_01VDtqoecgES7ScQYGbFVDRv
    Branch: claude/issue-21735-checklist-clause-repoint (cut from origin/main 316be321ef)
    Worktree: objectstack-issue-21735
    Domain: domain:devx
    Seat: domain:devx#1
    File surface:

    Stop on a breach and explain it in the report.
    Container & model: M (17 clause rewrites, each re-derived from source), mode:subagent, model: opus
    Clause-②: no
    Thread-read: 5979823973
    Serial constraints cleared: board read at 2026-10-04T12:51Z. No open PR touches docs/qa/platform-checklist/**. #21734 is the only product defect the table names, and this card does not wait for it.

    Priority rule 3 reading: domain:devx has no open P0/P1. This is the 17.7 release's own instrument. docs/qa/** is not a contract-review face, and nothing publishes, so the PR carries skip-changeset.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 4, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 21735,
    "status": "done",
    "branch": "claude/issue-21735-checklist-clause-repoint",
    "pr": "#21741",
    "head_sha": "d52c1fe937c98a9cba4dd0dcbf7454a433642df2",
    "session": "session_01VDtqoecgES7ScQYGbFVDRv (dispatching PM seat's session; this subagent runs under it)",
    "premise_still_valid": true,
    "summary": "Re-pointed all 17 clauses on the 16 items to the behaviour measured at 316be32. Each item has one revision bump (external-schema-introspection's A1+A3 share one) and one history entry citing the source commit, ref #21735. Every row's reading was re-derived from source and matches the card. Two rows carry a measured nuance that the new text states (meta-codemod, enforce-or-remove); see divergences. No product change, no run record, no changeset, coverage.json untouched.",
    "files_changed": [
    "docs/qa/platform-checklist/areas/access-security.json",
    "docs/qa/platform-checklist/areas/ai.json",
    "docs/qa/platform-checklist/areas/api-backend.json",
    "docs/qa/platform-checklist/areas/cli.json",
    "docs/qa/platform-checklist/areas/identity-auth.json",
    "docs/qa/platform-checklist/areas/integration-system.json",
    "docs/qa/platform-checklist/areas/platform-core.json",
    "docs/qa/platform-checklist/areas/records-forms.json"
    ],
    "rows": [
    {"item": "access-security.share-link-capability-tokens", "clause": "A5 record-gone leg + step 7 (rev 3→4)", "matches_card": "Y", "source_reread": "plugin-sharing/src/share-link-service.ts:923; runtime/src/domains/share-links.ts:128,228", "note": "404 INVALID_OR_EXPIRED via invalidOrExpired(), byte-identical to an unknown token; revoke/expiry legs stay 410 EXPIRED_OR_REVOKED"},
    {"item": "ai.agent-tool-skill-metadata-roundtrip", "clause": "A4 + step 7 (rev 3→4)", "matches_card": "Y", "source_reread": "spec/src/kernel/metadata-plugin.zod.ts:1200-1210; metadata-protocol/src/sys-metadata-repository.ts:1694", "note": "runtime-created skill/tool name: 200, readable via ?state=draft; package-shipped: 403 NOT_OVERRIDABLE"},
    {"item": "api-backend.batch-transactional-discovery", "clause": "A5 + step 6 (rev 3→4)", "matches_card": "Y", "source_reread": "spec/src/api/batch.zod.ts:81-85,209-214", "note": "the card offered two readings; the clause takes both: continueOnError:true for the mixed outcome, and the default stop with a NOT_ATTEMPTED tail as a second leg"},
    {"item": "api-backend.server-timing-admin-gated", "clause": "A1-A3 + steps 1,4 (rev 2→3)", "matches_card": "Y", "source_reread": "plugins/plugin-hono-server/src/hono-plugin.ts:83-104,311-353", "note": "title, negative and source were also updated to match"},
    {"item": "identity-auth.two-factor-enrollment-reveal", "clause": "A6 + step 8 + browser-lane knownGap (rev 1→2)", "matches_card": "Y", "source_reread": "platform-objects/src/identity/sys-user.object.ts:526-549", "note": "knownGap reworded in the same revision; pixels are still objectui's ActionResultDialog and are scored on the browser lane only"},
    {"item": "identity-auth.two-factor-backup-codes", "clause": "A6 + step 9 + title + knownGap (rev 1→2)", "matches_card": "Y", "source_reread": "platform-objects/src/identity/sys-user.object.ts:570-599", "note": ""},
    {"item": "integration-system.external-schema-introspection", "clause": "A1 (rev 2→3, shared)", "matches_card": "Y", "source_reread": "examples/app-showcase/src/system/datasources/external-fixture.ts:36-45; drivers/driver-sql/src/sql-driver.ts:12506-12508", "note": "fixtures.requires also says 7 physical columns"},
    {"item": "integration-system.external-schema-introspection", "clause": "A3 + step 6 (rev 2→3, shared)", "matches_card": "Y", "source_reread": "services/service-datasource/src/external-datasource-service.ts:283,956", "note": "definition fields carry no primaryKey"},
    {"item": "platform-core.activation-ledger-registration-home", "clause": "A5 + step 6 (rev 2→3)", "matches_card": "Y", "source_reread": "spec/src/system/constants/platform-object-names.ts:47 (46 names; sys_metadata_activation occurs once)", "note": "count dropped per RUNNER.md: for counts that move, the discriminator is the fact, never its digits; no validator pins this length. 41 and 46 kept as context only"},
    {"item": "platform-core.marketplace-install-local-lifecycle", "clause": "A7 + its step (rev 1→2)", "matches_card": "Y", "source_reread": "cloud-connection/src/marketplace-install-local-plugin.ts:1302,1370; objectql/src/registry.ts:4457", "note": "the /meta/app drop is read from uninstallPackage -> unregisterItemsByPackage and was not run live; the object 404 is pinned by the cli integration test"},
    {"item": "records-forms.field-unique-enforcement", "clause": "A1 + step 1 + fixtures + knownGap (rev 1→2)", "matches_card": "Y", "source_reread": "objectql/src/duplicate-record-error.ts:129-137; cli/src/commands/serve.ts:3202", "note": "on SQLite the field is named only for a single-column index; a tenant-scoped composite reads 'these values'"},
    {"item": "cli.migrate-plan-apply-json", "clause": "A5 + step 4 + source count + variants (rev 2→3)", "matches_card": "Y", "source_reread": "cli/src/commands/migrate/apply.ts:235; plan.ts:301-311; 13 non-test Command files besides index.ts", "note": "13 measured; variants gain account-issuer, audit-metadata-bodies, multi-value-columns, unmapped-columns"},
    {"item": "cli.migrate-meta-codemod", "clause": "A4 + step 8 (rev 3→4)", "matches_card": "Y", "source_reread": "cli/src/commands/migrate/meta.ts:91,199,411; spec/src/migrations/chain.ts:100", "note": "nuance: over --from 17 (default --to 18) a canonical source still lists the step-18 semantic advisories, so 'Nothing to migrate' does not print there either; the clause asserts zero mechanical edits and exit 0"},
    {"item": "cli.migrate-duplicates-inventory", "clause": "A3 + its step (rev 4→5)", "matches_card": "Y", "source_reread": "cli/src/commands/migrate/duplicates.ts:61-66", "note": "no mention of, or wait on, the product-side card"},
    {"item": "cli.datasource-introspect-codegen", "clause": "A6 + its step (rev 2→3)", "matches_card": "Y", "source_reread": "rest/src/external-datasource-routes.ts:517; service-datasource/src/external-datasource-service.ts:854-858; cli/src/commands/datasource/validate.ts:59-60", "note": ""},
    {"item": "cli.plugin-manifest-build-contract", "clause": "A2 + probe (d) (rev 1→2)", "matches_card": "Y", "source_reread": "spec/src/kernel/manifest.zod.ts:364; cli/src/commands/plugin/build.ts:121-122", "note": ""},
    {"item": "api-backend.enforce-or-remove-authoring-gates", "clause": "A1 + step 2 (rev 2→3)", "matches_card": "Y", "source_reread": "spec/src/data/filter.zod.ts:3256; spec/src/migrations/entries/semantic/17.filter-regex-options-retired.ts:30; drivers/driver-sql/src/sql-driver.ts:17392", "note": "nuance: the full prescription reaches the wire only on a caller-authored where; an unvouched predicate gets the withheld RETIRED sentence"}
    ],
    "divergences": [
    "cli.migrate-meta-codemod A4: the card says 'replay a canonical source'. Measured: chain.ts emits every hop's semantic todos unconditionally, so over 17 to 18 a canonical source prints the step-18 advisories and no 'Nothing to migrate' line. The clause asserts zero mechanical edits plus exit 0.",
    "api-backend.enforce-or-remove-authoring-gates A1: 'refused with INVALID_FILTER + the prescription' holds on a caller-authored where. A predicate without vouched author provenance gets a withheld sentence, with the full text in the server log (sql-driver.ts withheldFilterError). The verify text names both shapes."
    ],
    "validators_run": [
    {"cmd": "pnpm check:platform-checklist", "result": "exit 0 at d52c1fe: OK, 270 items; line citations 0; symbol anchors 652/662 (base 316be32 reads 650/660, so +2 new anchors resolved and the residual stays 10)"},
    {"cmd": "node scripts/check-ci-filter-parity.mjs", "result": "exit 0"},
    {"cmd": "node scripts/check-closing-keyword-parity.mjs", "result": "exit 0"},
    {"cmd": "node scripts/check-closing-keyword-parity.mjs --self-test", "result": "exit 0"},
    {"cmd": "node scripts/check-comment-mask-corpus.mjs", "result": "exit 0"},
    {"cmd": "pnpm --filter @objectstack/lint run check:doc-formula-expressions", "result": "exit 0 (after building @objectstack/formula closure + @objectstack/lint under os-verify-lock; first attempts were exit 3 PREREQUISITE NOT MET, not measurements)"},
    {"cmd": "pnpm check:cross-package-test-inputs", "result": "exit 0"},
    {"cmd": "pnpm check:doc-authoring", "result": "exit 0"},
    {"cmd": "pnpm check:driver-memory-census", "result": "exit 0"},
    {"cmd": "pnpm check:gitlink-declared", "result": "exit 0"},
    {"cmd": "pnpm check:nul-bytes", "result": "exit 0"},
    {"cmd": "pnpm check:refd-timer-probe", "result": "exit 0"},
    {"cmd": "pnpm check:watch-hint-literal", "result": "exit 0"},
    {"cmd": "node scripts/pm/dispatch-gates.mjs --ran ran.txt", "result": "exit 0: 13 derived, 13 run, 0 NOT-MEASURED, 0 UNRUN"}
    ],
    "tests": "No package code is touched, so there is no package test or typecheck. The checklist validator and the 13 derived gate families are listed in validators_run, all exit 0 at d52c1fe.",
    "mcp_calls": "0",
    "api_writes": "2: 1 pr_create via fleet relay (POST /repos/objectstack-ai/objectstack/pulls, draft, PR #21741), 1 os-dev-report comment via fleet relay (POST /repos//issues/21735/comments). git push is not counted. No labels, no PR assignee and no PR body edit.",
    "deviations": [
    "The first local commit carried a model-named Co-Authored-By trailer, and pre-push check:commit-card-trailers refused the push. That commit was unpublished. I re-made it with git reset --soft to the base plus a new commit, which is the hook's own remedy. Nothing published was rewritten and nothing was force-pushed.",
    "The PR assignee was not set. The brief's write budget (pr_create, report comment, at most 1 body edit) leaves it out; the seat can mirror the card's assignee.",
    "Neither the PR body nor this report cites the source-run cards or the product-side card by number. This avoids cross-reference events on cards under the no-writes constraint."
    ],
    "out_of_scope_findings": [],
    "breaches": [],
    "open_questions": []
    }


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 4, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed: PR #21741 → ff29410ed2, verified on origin/main by content at 2026-10-04T13:58Z.

    • The eight area files on main are blob-identical to the landing head d52c1fe937:
      • access-security.json cb24abc917
      • ai.json 56cefdffdd
      • api-backend.json 0bc293e012
      • cli.json 9054d5ef09
      • identity-auth.json f6a69a77af
      • integration-system.json ad56d8e570
      • platform-core.json fc035675d6
      • records-forms.json 4cdb65bb2b
    • 17 clauses on 16 items are re-pointed. Each item carries one revision bump and one history entry citing its source commit and this card; external-schema-introspection takes one bump for its two rows. The dev re-read every row's source at 316be321ef, and every "revise to" reading matched the code.
    • Two rows carry a measured nuance the new text states:
      • cli.migrate-meta-codemod A4: replaying a canonical source over 17 → 18 still lists the step-18 semantic advisories, so the clause asserts zero mechanical edits and exit 0, not the "Nothing to migrate" line.
      • api-backend.enforce-or-remove-authoring-gates A1: the full prescription reaches the response only when the caller authored the where clause. Otherwise the response withholds it and the server log carries it. Both shapes are named.
    • platform-core.activation-ledger-registration-home A5 drops the volatile count, per RUNNER's rule on counts that drift; the one-owner fact is what gets scored. cli.migrate-plan-apply-json reads 13 subcommands, as measured.
    • cli.migrate-duplicates-inventory A3 judges rows, _objectstack_sequences and sqlite_master, and neither cites nor waits on the product-side card, per the triage.
    • pnpm check:platform-checklist is green: 270 items, symbol anchors 652/662 (base 650/660, so the two new anchors resolve). The 13 derived gate families all exited 0. CI was green, and the merge queue passed.
    • Changeset: none. docs/qa/** publishes nothing, so the PR carries skip-changeset. No contract-review face is touched.

    pm:dispatched removed.

    Seat domain:devx#1 · session_01VDtqoecgES7ScQYGbFVDRv


    Generated by Claude Code

  6. added a commit that references this issue on Oct 7, 2026
    ff29410
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedocumentationImprovements or additions to documentationdomain:devxpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions