Skip to content

QA run · platform-core.activation-ledger-row-contract (1/1) · fb82f9b1 · 2026-10-16 · 1 PASS / 0 PARTIAL / 0 FAIL / 0 BLOCKED / 0 NOT-RUN #23999

Closed

Description

@objectstack-fleet

Run record for the re-run #23950 asks for, after its six stale clauses were re-pointed. Runner: an os-dev subagent dispatched by the domain:devx seat 2 PM (session session_016PVjjuVPte5XEJvaQx1E4t). Protocol: .claude/skills/checklist-test/SKILL.md + docs/qa/platform-checklist/RUNNER.md. Executed sequentially (no subagent tool in this runner).

Environment fingerprint

  • framework: fb82f9b180bcc6af04ce8d36153fd52d2eb6845c, the tip of branch claude/issue-23950-checklist-stale-clauses at run time. Its product tree is origin/main 022c6e799; the branch adds docs/qa/platform-checklist/areas/*.json only. Built with pnpm install --frozen-lockfile && pnpm build (75/75 tasks green).
  • .objectui-sha: daeb77fc84dd824e74c95b87cdede85afdb248e7 (API-only item).
  • boot: OS_PORT=47313 objectstack dev --ui --seed-admin -p 47313 -d file:(run dir)/ledger/data.db from examples/app-showcase. The run stopped that server for the direct-DB legs (better-sqlite3 on the same file) and restarted it on the same DB.
  • persona: the seeded dev admin.
  • timestamps: 2026-10-16, 16:39Z to 16:41Z.

Scope

Selector platform-core.activation-ledger-row-contract resolves to 1 runnable item: platform-core.activation-ledger-row-contract at revision 3, P2, surface api. The item text was read at branch head c4bf2ba4e.

Tier 1 pins (RUNNER rule 6), each green:

  • pnpm --filter @objectstack/objectql exec vitest run --maxWorkers=2 src/action-activation.test.ts: 18 passed.
  • pnpm --filter @objectstack/service-automation exec vitest run --maxWorkers=2 src/flow-activation-ledger.test.ts: 47 passed.
  • pnpm --filter @objectstack/dogfood exec vitest run --maxWorkers=1 test/packaged-activation-ledger-reach.dogfood.test.ts: 11 passed.

Writer list re-derived first, as the knownGap asks. The METADATA_TYPE literals are 'flow' (service-automation flow-activation-store.ts) and 'action' (objectql action-activation.ts). The one new ObjectStoreMetadataActivationStore( call site is runtime catalog-activation.ts, its :type closed to position / permission. No other insert or update into sys_metadata_activation exists outside the shared store in core/src/utils/metadata-activation-store.ts. Three writer sites write four values, as revision 3 states.

Per-clause verdicts

item # clause (short) verdict evidence
platform-core.activation-ledger-row-contract 0 reads open, generic writes refused pass GET /api/v1/data/sys_metadata_activation 200; data-API POST, PATCH /ID, DELETE /ID each 405 OBJECT_API_METHOD_NOT_ALLOWED, naming the operation with allowed: [get, list, aggregate, search, export]; the re-read equals the pre-probe read
platform-core.activation-ledger-row-contract 1 one row per (metadata_type, name); duplicates refused pass index CREATE UNIQUE INDEX uniq_sys_metadata_activation_metadata_type_name on sys_metadata_activation (metadata_type, name); a direct INSERT of a second (position, legal) row is refused: UNIQUE constraint failed: sys_metadata_activation.metadata_type, sys_metadata_activation.name
platform-core.activation-ledger-row-contract 2 no tenant column; a row naming one cannot land pass API row key set active, created_at, created_by, id, metadata_type, name, package_id, updated_at, updated_by, with no organization_id key; PRAGMA table_info gives id, created_at, updated_at, created_by, updated_by, metadata_type, name, package_id, active, __search, nothing tenant-shaped (__search is the search column); INSERT naming organization_id is refused: table sys_metadata_activation has no column named organization_id; the control INSERT without it lands (changes=1) and is deleted; the table is byte-identical before and after the probes (4 rows)
platform-core.activation-ledger-row-contract 3 re-enable updates, never deletes pass after all four switches went back on: the same 4 ids, the same count, every row active: true
platform-core.activation-ledger-row-contract 4 scope wall: flow, action, position, permission only pass the four OFF switches each answered 200: flow toggle showcase_task_completed, action _activation/showcase_task/showcase_mark_done, security/_activation/position/legal, security/_activation/permission/showcase_auditor. That left 4 rows, distinct metadata_type = {action, flow, permission, position}. Door probes: POST /api/v1/security/_activation/capability/showcase.export_data {"enabled": false} 400 VALIDATION_ERROR Path must be /security/_activation/:type/:name, with :type one of position, permission; …/position/everyone 400 Position 'everyone' is an audience anchor: … not switchable through this door (ADR-0090 D5/D9). Row count unchanged after both
platform-core.activation-ledger-row-contract 5 durable: rows survive restart; absence reads as active pass the ledger was empty on the fresh boot while every switch served as active; after the stop, the direct-DB probes and a restart on the same DB, the 4 rows read back byte-identical (JSON compare) to the pre-stop read

Derived item verdict

platform-core.activation-ledger-row-contract r3: pass (6 of 6 clauses).

Timing: about 2 minutes of legs, on the build shared across this re-run's five records.

Checklist-accuracy findings, if any, close out on the wave anchor #23878.

Activity

  1. objectstack-fleet commented on Oct 17, 2026

    @objectstack-fleet
    ContributorAuthor

    Close-out (domain:devx seat 2): every clause PASS; nothing to extract. The re-pointed item landed with #24000 (e18b23fac5), Fixes #23950.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions