Skip to content

update: modify .gitignore to include create_issue and remove redund… - #121

Merged
graycyrus merged 1 commit into
tinyhumansai:mainfrom
graycyrus:main
Mar 31, 2026
Merged

graycyrus merged 1 commit into
tinyhumansai:mainfrom
graycyrus:main

Conversation

@graycyrus

Copy link
Copy Markdown
Contributor

No description provided.

@graycyrus
graycyrus merged commit 32cd2a7 into tinyhumansai:main Mar 31, 2026
5 checks passed
AusAgentSmith pushed a commit to AusAgentSmith/openhuman that referenced this pull request May 23, 2026
update: modify .gitignore to include `create_issue` and remove redund…
M3gA-Mind added a commit to M3gA-Mind/openhuman that referenced this pull request Aug 27, 2026
Nine subsystems load as downloaded cdylib modules. Each is pinned twice and
independently: once as a git submodule (the source this repo compiles the
wire contract against) and once as a version + per-platform SHA-256 in
`modules/registry.rs` (the artifact actually loaded at runtime). Nothing
compared them, so a stale pin compiled clean, passed every lane, and lost a
capability at runtime on a user's machine — tinyhumansai#5598 (capability bitmask 8191
vs 262143), tinyhumansai#5623 (missing ListAllFacets), tinyhumansai#5641 (missing profile family).
All three were fixed by bumping a pin; none added a check.

The module ABI gate cannot catch this. It checks magic, ABI revision,
pointer width, target triple, endianness, feature bits and panic strategy —
none of which encodes WHICH RELEASE the artifact is. A correctly built older
artifact is admitted without complaint.

Two gates, because one cannot cover the class.

`check-module-pins.mjs` asserts each of the nine records sits on the tag its
`version` names, that ARTIFACT_CAPABILITIES_PIN agrees with the tinymemory
record, and that every memory_version / memory_sha256 pair in the three
workflows describes that same release. Changing one character of the
tinymemory version raises ten findings across all five pin sites.

`check-submodule-monotonic.mjs` asserts no `vendor/*` gitlink moves onto an
ancestor of the pin the base branch had. This is the half that catches what
has actually bitten, and it is a separate gate rather than an assertion in
the first because it must cover crates that have no registry record at all:

    14a23b9  vendor/tinyagents  e0f3210 -> bbcd0a6
    $ git -C vendor/tinyagents merge-base --is-ancestor bbcd0a6 e0f3210
    (true — the new pin is an ancestor)

e0f3210 is tinyagents#122 (2026-08-25), bbcd0a6 is tinyhumansai#121 (2026-08-22). That
bump silently removed a shipped fix until tinyhumansai#5796 put it back, and tinyhumansai#5725 did
the same eight-commit rewind (undone by tinyhumansai#5787). Both commits were internally
CONSISTENT — consistent with an older release — so an equality check between
the two pins would have passed them both. And `tinyagents` has no record in
`ALL`: one pin, nothing to compare. Only direction catches it. The gate
fails on both commits today.

Coverage is 7 module crates / 9 records for the first gate and all 16
submodules for the second, and neither enumerates a fixed list. Every record
in `ALL` must be named in PIN_MAP or the gate fails, so crate 17 cannot
inherit an unchecked pin — six vendored crates landed in the week before
this, and a guard listing the modules of the day would already be behind.

tinymcp (15 commits past v0.3.1) and tinywallet (8 past v0.5.0) are drifted
today, so they are declared in module-pin-exemptions.json with reasons. An
exemption is not a mute button: `expect` pins the exact `git describe`
output, so an exempt record cannot drift FURTHER without failing, and an
exemption whose drift has been fixed fails too. Both are tested.

Fail-closed throughout, because two gates here have swallowed a git error
and reported clean having scanned nothing. An uninitialised submodule, an
unparseable or missing registry, an unresolvable base ref, a commit missing
from a submodule's object store, a `merge-base` that errors rather than
answering, zero submodules, zero workflow blocks, or any uncaught throw all
exit non-zero with a legible message. `[pin-rewind]` waives a declared
rewind only — never an unverifiable pin.

21 tests under `node --test`, picked up by the existing Scripts Self-Tests
lane. The `scripts` path filter now also watches `scripts/lib/**` and this
gate's own files, which it did not: without that a change to the checking
logic would skip the lane that tests it.

Closes tinyhumansai#5727
M3gA-Mind added a commit to M3gA-Mind/openhuman that referenced this pull request Aug 27, 2026
Nine subsystems load as downloaded cdylib modules. Each is pinned twice and
independently: once as a git submodule (the source this repo compiles the
wire contract against) and once as a version + per-platform SHA-256 in
`modules/registry.rs` (the artifact actually loaded at runtime). Nothing
compared them, so a stale pin compiled clean, passed every lane, and lost a
capability at runtime on a user's machine — tinyhumansai#5598 (capability bitmask 8191
vs 262143), tinyhumansai#5623 (missing ListAllFacets), tinyhumansai#5641 (missing profile family).
All three were fixed by bumping a pin; none added a check.

The module ABI gate cannot catch this. It checks magic, ABI revision,
pointer width, target triple, endianness, feature bits and panic strategy —
none of which encodes WHICH RELEASE the artifact is. A correctly built older
artifact is admitted without complaint.

Two gates, because one cannot cover the class.

`check-module-pins.mjs` asserts each of the nine records sits on the tag its
`version` names, that ARTIFACT_CAPABILITIES_PIN agrees with the tinymemory
record, and that every memory_version / memory_sha256 pair in the three
workflows describes that same release. Changing one character of the
tinymemory version raises ten findings across all five pin sites.

`check-submodule-monotonic.mjs` asserts no `vendor/*` gitlink moves onto an
ancestor of the pin the base branch had. This is the half that catches what
has actually bitten, and it is a separate gate rather than an assertion in
the first because it must cover crates that have no registry record at all:

    14a23b9  vendor/tinyagents  e0f3210 -> bbcd0a6
    $ git -C vendor/tinyagents merge-base --is-ancestor bbcd0a6 e0f3210
    (true — the new pin is an ancestor)

e0f3210 is tinyagents#122 (2026-08-25), bbcd0a6 is tinyhumansai#121 (2026-08-22). That
bump silently removed a shipped fix until tinyhumansai#5796 put it back, and tinyhumansai#5725 did
the same eight-commit rewind (undone by tinyhumansai#5787). Both commits were internally
CONSISTENT — consistent with an older release — so an equality check between
the two pins would have passed them both. And `tinyagents` has no record in
`ALL`: one pin, nothing to compare. Only direction catches it. The gate
fails on both commits today.

Coverage is 7 module crates / 9 records for the first gate and all 16
submodules for the second, and neither enumerates a fixed list. Every record
in `ALL` must be named in PIN_MAP or the gate fails, so crate 17 cannot
inherit an unchecked pin — six vendored crates landed in the week before
this, and a guard listing the modules of the day would already be behind.

tinymcp (15 commits past v0.3.1) and tinywallet (8 past v0.5.0) are drifted
today, so they are declared in module-pin-exemptions.json with reasons. An
exemption is not a mute button: `expect` pins the exact `git describe`
output, so an exempt record cannot drift FURTHER without failing, and an
exemption whose drift has been fixed fails too. Both are tested.

Fail-closed throughout, because two gates here have swallowed a git error
and reported clean having scanned nothing. An uninitialised submodule, an
unparseable or missing registry, an unresolvable base ref, a commit missing
from a submodule's object store, a `merge-base` that errors rather than
answering, zero submodules, zero workflow blocks, or any uncaught throw all
exit non-zero with a legible message. `[pin-rewind]` waives a declared
rewind only — never an unverifiable pin.

21 tests under `node --test`, picked up by the existing Scripts Self-Tests
lane. The `scripts` path filter now also watches `scripts/lib/**` and this
gate's own files, which it did not: without that a change to the checking
logic would skip the lane that tests it.

Closes tinyhumansai#5727
senamakel pushed a commit to nocstah/openhuman that referenced this pull request Sep 11, 2026
…dify .gitignore to include `create_issue` and remove redund…\n
senamakel pushed a commit to nocstah/openhuman that referenced this pull request Sep 11, 2026
…s\n\nNine subsystems load as downloaded cdylib modules. Each is pinned twice and\nindependently: once as a git submodule (the source this repo compiles the\nwire contract against) and once as a version + per-platform SHA-256 in\n`modules/registry.rs` (the artifact actually loaded at runtime). Nothing\ncompared them, so a stale pin compiled clean, passed every lane, and lost a\ncapability at runtime on a user's machine — tinyhumansai#5598 (capability bitmask 8191\nvs 262143), tinyhumansai#5623 (missing ListAllFacets), tinyhumansai#5641 (missing profile family).\nAll three were fixed by bumping a pin; none added a check.\n\nThe module ABI gate cannot catch this. It checks magic, ABI revision,\npointer width, target triple, endianness, feature bits and panic strategy —\nnone of which encodes WHICH RELEASE the artifact is. A correctly built older\nartifact is admitted without complaint.\n\nTwo gates, because one cannot cover the class.\n\n`check-module-pins.mjs` asserts each of the nine records sits on the tag its\n`version` names, that ARTIFACT_CAPABILITIES_PIN agrees with the tinymemory\nrecord, and that every memory_version / memory_sha256 pair in the three\nworkflows describes that same release. Changing one character of the\ntinymemory version raises ten findings across all five pin sites.\n\n`check-submodule-monotonic.mjs` asserts no `vendor/*` gitlink moves onto an\nancestor of the pin the base branch had. This is the half that catches what\nhas actually bitten, and it is a separate gate rather than an assertion in\nthe first because it must cover crates that have no registry record at all:\n\n    3fd1de3  vendor/tinyagents  e0f3210 -> bbcd0a6\n    $ git -C vendor/tinyagents merge-base --is-ancestor bbcd0a6 e0f3210\n    (true — the new pin is an ancestor)\n\ne0f3210 is tinyagents#122 (2026-08-25), bbcd0a6 is tinyhumansai#121 (2026-08-22). That\nbump silently removed a shipped fix until tinyhumansai#5796 put it back, and tinyhumansai#5725 did\nthe same eight-commit rewind (undone by tinyhumansai#5787). Both commits were internally\nCONSISTENT — consistent with an older release — so an equality check between\nthe two pins would have passed them both. And `tinyagents` has no record in\n`ALL`: one pin, nothing to compare. Only direction catches it. The gate\nfails on both commits today.\n\nCoverage is 7 module crates / 9 records for the first gate and all 16\nsubmodules for the second, and neither enumerates a fixed list. Every record\nin `ALL` must be named in PIN_MAP or the gate fails, so crate 17 cannot\ninherit an unchecked pin — six vendored crates landed in the week before\nthis, and a guard listing the modules of the day would already be behind.\n\ntinymcp (15 commits past v0.3.1) and tinywallet (8 past v0.5.0) are drifted\ntoday, so they are declared in module-pin-exemptions.json with reasons. An\nexemption is not a mute button: `expect` pins the exact `git describe`\noutput, so an exempt record cannot drift FURTHER without failing, and an\nexemption whose drift has been fixed fails too. Both are tested.\n\nFail-closed throughout, because two gates here have swallowed a git error\nand reported clean having scanned nothing. An uninitialised submodule, an\nunparseable or missing registry, an unresolvable base ref, a commit missing\nfrom a submodule's object store, a `merge-base` that errors rather than\nanswering, zero submodules, zero workflow blocks, or any uncaught throw all\nexit non-zero with a legible message. `[pin-rewind]` waives a declared\nrewind only — never an unverifiable pin.\n\n21 tests under `node --test`, picked up by the existing Scripts Self-Tests\nlane. The `scripts` path filter now also watches `scripts/lib/**` and this\ngate's own files, which it did not: without that a change to the checking\nlogic would skip the lane that tests it.\n\nCloses tinyhumansai#5727\n
fede-kamel pushed a commit to fede-kamel/openhuman that referenced this pull request Oct 22, 2026
…validation

fix(cron): validate delivery routing on update and rpc add
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant