Skip to content

Parity pin bump: re-sync the ported sweeper to upstream's H32 board-independent specimens and delete the three name-swap divergence entries #6689

Description

@os-litant

Filed and graded by the Director/skills seat (session session_01MnijPVVDakqK2J335JoJtq) — the post-merge follow-through the parity gate's design prescribes, owed since objectstack landed the H32 specimen fix (2026-08-28 15:04Z, commit on main carrying board-independent H32 self-test specimens).

What

The standard --resync act, exactly as scripts/check-upstream-port-parity.mjs's own header documents:

  1. git -C <objectstack checkout> fetch origin main, take origin/main:scripts/pm/check-half-states.mjs and the merge commit's sha.
  2. node scripts/check-upstream-port-parity.mjs --resync <upstream-file> --ref <sha> — forward-applies the declared divergences, rewrites the ported file and the pinned digest.
  3. Delete the three name-swap-only divergence entries from scripts/upstream-port-pin.json — ids h32-lane-own-board, h32-foreign-out-of-scope, h32-foreign-no-fetch — whose only content was swapping two repo names; upstream's specimens are now derived from the resolved sweep repo, so a verbatim copy passes here (the fix's own two-board proof ran green with the sweep repo resolved to objectui).
  4. Verify: the parity gate green on the result; the sweeper's --self-test green ON THIS BOARD (the property the upstream fix guarantees); the floor end-to-end spot-check (pre-floor closed card skipped, post-floor reported) still holds; the vitest adaptation suite green.

Grading (same stroke)

pm:queue, type Task, domain:skills, S — mechanical by design (the gate's documented re-sync procedure); the one judgment point is step 3's entry deletion, whose acceptance is the gate red-ing if any deleted entry was still load-bearing. Serial: none — both prerequisites merged (upstream fix 15:04Z; this repo's gate landed 13:22Z). No changeset owed expected (scripts-only; follow check-changeset-presence's verdict). ⛔ Never apply a skip-changeset label in this repo (phantom).

Activity

  1. added theissue type on Aug 28, 2026
  2. os-litant commented on Aug 28, 2026

    @os-litant
    CollaboratorAuthor

    Claim: Director/skills seat, session session_01MnijPVVDakqK2J335JoJtq
    Branch: claude/issue-6689-parity-pin-bump
    Worktree: ../objectui-6689
    Domain: skills
    File surface: scripts/pm/check-half-states.mjs (rewritten by --resync) + scripts/upstream-port-pin.json (digest bump + three entry deletions). The gate's own documented procedure; acceptance = gate green on the result + sweeper self-test green on this board.
    Container & model: opus — objectui scripts, no path mandate. Clause-② limb: no.
    Serial: cleared at filing (both prerequisites merged). Race re-read: card filed by this seat this minute, zero other comments.


    Generated by Claude Code

  3. self-assigned this
    on Aug 28, 2026
  4. os-litant commented on Aug 28, 2026

    @os-litant
    CollaboratorAuthor

    os-dev-report

    {
      "issue": "ui#6689",
      "branch": "claude/issue-6689-parity-pin-bump",
      "pr_number": 6691,
      "pr_url": "https://github.com/objectstack-ai/objectui/pull/6691",
      "draft": true,
      "new_pin_ref": "bf10debd587f6ba891be9eadc2b76c91e15bd82b",
      "entries_deleted": ["h32-lane-own-board", "h32-foreign-out-of-scope", "h32-foreign-no-fetch"],
      "divergences_remaining": 11,
      "sweeper_selftest_count": 1574,
      "gates": [
        { "name": "check-upstream-port-parity", "verdict_line": "✓ check-upstream-port-parity: 2 ported file(s) match objectstack-ai/objectstack@bf10debd5 modulo their declared divergences. (The digest is verified; the ref beside it is provenance and is NOT fetched.)", "exit": 0 },
        { "name": "check-upstream-port-parity --self-test", "verdict_line": "✓ check-upstream-port-parity self-test: 37 cases pass — parity holds on an undrifted copy, drift outside the declared regions reds as a digest mismatch, drift inside one names its divergence, an ambiguous anchor is refused rather than applied, the pin-bump procedure round-trips (and a vanished anchor fails it loudly), and every malformed-pin shape is refused instead of read as clean.", "exit": 0 },
        { "name": "check-half-states --self-test (ON THIS BOARD)", "verdict_line": "✓ check-half-states self-test: 1574 cases pass.", "exit": 0 },
        { "name": "floor end-to-end spot check (workflow env)", "verdict_line": "FLOOR SPOT CHECK: PASS (4/4) — pre-floor skipped, on/post-floor reported", "exit": 0 },
        { "name": "vitest check-half-states.test.ts + upstream-port-parity-wiring.test.ts", "verdict_line": "Test Files 2 passed (2) · Tests 30 passed (30)", "exit": 0 },
        { "name": "pnpm type-check:scripts", "verdict_line": "tsc -p tsconfig.scripts.json — no diagnostics", "exit": 0 },
        { "name": "check-control-bytes", "verdict_line": "✅  check-control-bytes: OK (scanned 5537 tracked text file(s); skipped 85 binary).", "exit": 0 },
        { "name": "check-entry-guard", "verdict_line": "✓ check:entry-guard: 51 scripts/ file(s) — no entry guard outside the baseline; 0 file(s) still hand-type one (0 occurrence(s), SHRINK-ONLY, objectui#6092); 46 export bindings, 46 of them inert on import (0 known-unsafe, SHRINK-ONLY).", "exit": 0 },
        { "name": "check-lint-coverage", "verdict_line": "✅  lint coverage: 46/46 packages linted, 0 with outstanding errors (0 total).", "exit": 0 },
        { "name": "check-changeset-presence", "verdict_line": "✅  No source of a released package changed in this range, so no changeset is owed.", "exit": 0 },
        { "name": "eslint (declared narrowing: 2 changed files)", "verdict_line": "--format json: 2 files, 0 errors, 0 warnings; no type-aware linting configured", "exit": 0 }
      ],
      "stopped": false,
      "out_of_scope_findings": [],
      "notes": [
        "Union re-run on the FINAL commit af9771c; every exit captured before any pipe (never through tail).",
        "Sanctioned order followed: --resync was run FIRST and failed loudly naming exactly the three h32-* entries and no others, writing nothing. That failure IS the step-5 sweep — the remaining 11 divergences on this file all still apply cleanly, so no still-needed divergence lost its anchor. Deletion second, resync third.",
        "Digest not hand-edited: the tool-written 449a0aec… equals the sha256sum taken independently of upstream's blob before any edit.",
        "Shared-ref safety measured, not assumed: scripts/invoked-as.mjs is byte-identical at the old and new refs (90f72bf4… both), so bumping the single upstream.ref keeps its provenance true. It keeps its own 9 divergences.",
        "Deletion is safe by derivation: upstream now computes OWN_BOARD = SWEEP_REPO.repo.split('/')[1], and objectui's surviving default-sweep-repo divergence resolves that to objectui / sibling objectstack — distinct, so the FOREIGN and own-board rows are not vacuously green.",
        "Baseline before the change was green too (parity 2 files / 14+9 divergences, sweeper 1574) — so 1574 -> 1574 is case-preserving, not case-losing.",
        "DELIVERY DEFECT worth PM's attention: on create, the platform APPENDED a second signature footer preceded by a --- rule, duplicating mine and adding exactly the rule the dispatch forbade. Caught only by the mandated read-back; fixed with one PATCH (single footer, no rule) and re-read. The session URL is preserved in the body prose as the durable copy, since a PATCH downgrades the session-URL footer form.",
        "check-node-esm-load was derived-then-excluded on scope, not cost: it enumerates published packages (non-private manifests) and this diff touches 0 files under packages/ and 0 manifests. A repo-wide gate batch was cut short by the container's ~10 minute foreground cap (exit 143) after control-bytes/entry-guard/type-check had already printed green verdicts; those were re-run individually and in the final union.",
        "No changeset (gate's own verdict). No skip-changeset label applied — phantom in this repo. Draft, no reviewers, no ready flip, no auto-merge. PR is 'behind' main; PM lands it at collection.",
        "Commit trailer follows the dispatch's explicit 'no model identifiers' clause: Co-Authored-By: Claude, and no session trailer. This deviates from the harness default trailer, which carries a model name — flagging the conflict rather than silently choosing."
      ]
    }

    Generated by Claude Code


    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

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions