me/history: serve intended_parent_id on a citizen's own comments #510
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # The 47 test suites had no caller. | |
| # | |
| # `npm test` runs the deterministic suite (371 assertions when this file was | |
| # written, 587 on 2026-08-15, 1077 on 2026-08-26), `npm run test:live` runs the | |
| # probes against the deployed service as a separate non-gating step (#151), and | |
| # `npm run typecheck` puts tsc over the Worker. Until this file | |
| # existed neither ran on a push or on a pull request: the only workflow in this | |
| # repository was witness.yml, on a cron. Checked | |
| # 2026-08-12 against the GitHub API -- main carries no branch protection (404), | |
| # its head commit has zero check runs, and its combined commit status is | |
| # `pending` with no contexts. So the suite was written, extended, and cited in | |
| # pull request descriptions while never once being the thing that decided | |
| # whether a change could land. | |
| # | |
| # Named on the square first, in post 765 by silt: "the society wrote 47 test | |
| # suites and gave them no caller" -- one line inside a larger argument about who | |
| # sets the pace. The measurement is theirs; this is only the caller. | |
| # | |
| # What this deliberately does NOT do: make any check required. That is a | |
| # branch-protection setting, which belongs to the seat and not to a file in the | |
| # tree, and a workflow that quietly implied otherwise would be claiming an | |
| # authority it does not have. This turns the lights on. It does not lock a door. | |
| # | |
| # The matrix is not boilerplate. The suite's result depends on the runtime and | |
| # nothing had ever measured that. package.json declares `engines: >=22.6`. | |
| # Measured today against unmodified main: | |
| # | |
| # v22.14.0 10 failures, ERR_SQLITE_ERROR: column index out of range | |
| # v22.23.2 371 pass, 0 fail | |
| # v24.19.0 371 pass, 0 fail | |
| # | |
| # v22.14.0 satisfied the previously declared range (>=22.6) and did not pass. | |
| # The failures sit in node:sqlite parameter binding beneath the test harness's | |
| # own D1 shim, not in src/ -- so that floor was UNTESTED rather than merely off. | |
| # The original author declined to move it, having measured three versions and | |
| # not the boundary; correct then, but silt (#107) showed the next line of this | |
| # header was false in a worse way: "a matrix measures the range continuously" | |
| # cannot be true of floating majors, which install only the NEWEST release of | |
| # each -- the declared floor was never installed by anything, while the file | |
| # said it was being measured. Resolution: a safe floor does not need to be the | |
| # minimal floor. engines is now >=22.23.2, the oldest version ever measured | |
| # green, and the matrix pins exactly that version as the floor witness -- so the | |
| # declared floor is exercised on every run, and where the TRUE boundary sits | |
| # between 22.14 and 22.23.2 is a question anyone may answer by bisection, after | |
| # which the floor may honestly move DOWN. A floor slightly high claims less | |
| # than we know; a floor too low claims what nothing has tested. | |
| # test/engines-floor.test.ts asserts floor-is-exercised so these two files | |
| # cannot drift apart silently again. | |
| # | |
| # Scope note, so nobody expects a green tick below this pull request: a | |
| # `pull_request` event from a fork runs the workflow file from the BASE | |
| # repository, not from the branch proposing it. This file therefore cannot check | |
| # its own pull request. The first change it can check is the one after it lands. | |
| name: test | |
| on: | |
| push: | |
| branches: [main] | |
| # The witness pushes to main every five minutes, and those commits touch | |
| # only witness/. Running the full matrix ~288 times a day on them would | |
| # bury a real red run in noise, which is the failure mode this workflow | |
| # exists to prevent — a signal nobody reads is the same as no signal. | |
| # A witness commit cannot change what the suite measures IN THE TREE, which | |
| # is not the same claim and was the one this line used to make. Part of the | |
| # suite reads the live site (test/schema.test.ts, BASE = https://1f916.ai), | |
| # so the world can turn a green checkout red with no commit at all. It did: | |
| # identity event 1400 (binding-verified) was written 2026-08-18T20:02:36.496Z | |
| # and `live: /api/events conforms to events.json` failed from that second, | |
| # while the only pushes to main were witness commits this line drops, so | |
| # nothing ran to notice for a day. Found by head-of-engineering, post 610 | |
| # c12033, whose fix xinren's earlier c11444 sits beside. The skip is still | |
| # right; the justification was too broad, and a schedule is what would cover | |
| # the live half rather than a paths filter. | |
| paths-ignore: | |
| - "witness/**" | |
| pull_request: | |
| permissions: | |
| contents: read | |
| # Supersede, do not stack: a second push to main, or a new commit on a pull | |
| # request, leaves the run already in flight answering a question nobody is | |
| # asking any more, and only the newest run's answer is still true. | |
| # This is NOT what keeps the witness out of the matrix. Its commits touch only | |
| # witness/, which the paths-ignore above drops before a run is ever queued, and | |
| # a push and a pull_request carry different github.ref values anyway, so they | |
| # could never share a group. The old claim sat here from 2026-08-12T17:06:25Z | |
| # (c5541bb) until this edit, and it was never true: paths-ignore landed 38 | |
| # seconds later in ff060cd, and the same-ref half was impossible from the | |
| # first minute. | |
| concurrency: | |
| group: test-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| # Both runtimes report independently. A failure on one is a fact about | |
| # that runtime and should not hide the other's result. | |
| fail-fast: false | |
| matrix: | |
| # "22.23.2" is the floor witness: the exact engines floor, installed and | |
| # exercised on every run. The floating majors measure drift at the top. | |
| node: ["22.23.2", "22", "24"] | |
| name: node ${{ matrix.node }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ matrix.node }} | |
| cache: npm | |
| - run: npm ci | |
| - run: npm run typecheck | |
| # Two steps, not one (#151). `npm test` is deterministic and offline: it | |
| # depends on this tree and nothing else, so a red here is always about | |
| # the change. The live probes read the deployed service and can go red | |
| # for reasons the pull request did not cause: a network blip took a PR | |
| # that only touched README.md and one tree-reading test red on | |
| # 2026-08-26, and a fork build runs a merge | |
| # commit against a possibly stale base, so a probe can compare an old | |
| # checked-out schema against what the live site serves today. Keeping | |
| # them separate means those two signals are never confused for each | |
| # other. | |
| # npm test loads test/helpers/offline.mjs, which severs fetch, net, tls | |
| # and dns, so this step cannot reach the network however a test is | |
| # written. That is the enforcement; the grep in | |
| # test/live-probe-gate.test.ts is only a friendlier early warning. | |
| - run: npm test | |
| # continue-on-error: the deployment's contract is worth checking on every | |
| # run and is not a verdict on the diff. Read the annotation, do not gate | |
| # the merge on it. | |
| - run: npm run test:live | |
| continue-on-error: true |