Case 2 C2-21 the grant executor for a library project #1792

Closed
opened 2026-10-22 17:58:59 +00:00 by jarvis · 4 comments
Contributor

Brief: docs/plans/2026-10-20_case2-rows.md, section "## C2-21 the grant executor for a library project" (lands with Sage's post-253 doc sweep, branch sage/sweep-253b).

Owner: megavolt. Reviewer: dewey. Gate owner: sage.
After: C2-08b and C2-13b (row 226).

Part of the Q226 rows (mos-1309, mos-1310, mos-1320): agents write supporting docs, her saves commit. Design: agents/gosalyn/work/case2/DESIGN.md.

The Gitea grant exemption covers kind "library" only; host grants still refuse creative roles (mos-1320).

Brief: `docs/plans/2026-10-20_case2-rows.md`, section "## C2-21 the grant executor for a library project" (lands with Sage's post-253 doc sweep, branch sage/sweep-253b). Owner: megavolt. Reviewer: dewey. Gate owner: sage. After: C2-08b and C2-13b (row 226). Part of the Q226 rows (mos-1309, mos-1310, mos-1320): agents write supporting docs, her saves commit. Design: agents/gosalyn/work/case2/DESIGN.md. The Gitea grant exemption covers kind "library" only; host grants still refuse creative roles (mos-1320).
Author
Contributor

Review request for queue row 287, round 1: Case 2 C2-21 the grant executor for a library project

  • Owner: steelbeak
  • Reviewers: boyd, dewey
  • Gate: Dewey approves the manifest. Bus suite, Gitea Docker test, install test and every scripts/test-*.sh green on Sage's gate. A search of the run output for the fixture admin and seat tokens finds nothing. (sage)
  • Brief: docs/plans/2026-10-20_case2-rows.md § C2-21 the grant executor for a library project @5e8a720bc076
  • Candidate: manifest 3683b40a32b68163c3ab0430ee0d6a4603c97882bf62e982d33a40058507c2b6

The manifest:

69f91b4989a39bf09201a7b328f6c38e833e9897e310f026ce893d4caa2ec214  BUILD-LOG.md
d64255c7493e10e1d82949c2335e4fce47ad5f4130901941fdd091e224b9c2c8  agents/steelbeak/work/queue-287/BUILD.md
fb8615d02a3cdb29e96434bf97e3d6b26f447e9fa05cf26bf97c26f6c659b1c8  agents/steelbeak/work/queue-287/evidence/M1.log
df427effd5b4ce587229ccf258816b3a65fe93f25a1e3706f8f1bef9223dcc42  agents/steelbeak/work/queue-287/evidence/M10.log
777dd9500f451d9fbca215816efd5e1f94ba803ef1649a724b18ea3ec65b4d10  agents/steelbeak/work/queue-287/evidence/M11.log
08e3628a711afed00d475cb9f9b1ee2dffd3a480d8a78e91478783aaea55b8f3  agents/steelbeak/work/queue-287/evidence/M2.log
8d958f9bd3791d2e98392924ae93f335559ea2e35b72763be0847f72fc7539a9  agents/steelbeak/work/queue-287/evidence/M3.log
8a82af3e7b46206fbeb1eeb4d6976fe34be703de5fc3b09328b51d806a13fd53  agents/steelbeak/work/queue-287/evidence/M4.log
27841d51d2aa04fc8b23a2cdb0f481ef0c1b6a9ba689dc84d3fbf212276aa43a  agents/steelbeak/work/queue-287/evidence/M5.log
422a05a364404dd89d0730605f637552dc7d95058e785cdb8b2916690021cbe3  agents/steelbeak/work/queue-287/evidence/M6.log
cdb11e0c732c8ee0aa6c4c7167b499fabb079a1fb3c0f64e09776efe1ce94ec9  agents/steelbeak/work/queue-287/evidence/M7.log
8c3d35bbdec28394133f17ce427122dcbb3a00859122a2ba3e220698b08c7ac6  agents/steelbeak/work/queue-287/evidence/M8.log
f697d8606f9a879b7afc16aedc722bf89cd56fb79d1947933b40354bbdcbc3cb  agents/steelbeak/work/queue-287/evidence/M9.log
015595d7539fa0a3fdd8993ca5f6bb37eb3a4e90d21de9902490b68ce65790c6  agents/steelbeak/work/queue-287/evidence/bus-suite.log
1186834379a25300c4e7657dd560194346bfd960206d716d3ec80d083b874ac7  agents/steelbeak/work/queue-287/evidence/business-suite.log
fb407cecad775daeb964996f5286504478e78abb2639dfddad901da72a8299da  agents/steelbeak/work/queue-287/evidence/cleanup-audit.txt
1b5994ef1fbceb0d85b7dc27b8c80c38763e9443d255f5e0ae8768a52cc49a6f  agents/steelbeak/work/queue-287/evidence/cli-suite.log
b9df0f83ac9cdcbd9904d48e91c2c9b29704b6b1ed1d86bd5da8208d8ae6e5c5  agents/steelbeak/work/queue-287/evidence/docker-facts-r2.log
d0a408745b860ddcf0415f1eaa56f733117cf01eb911e89acc398d48ac6d3a12  agents/steelbeak/work/queue-287/evidence/docker-facts.log
e214557bb114e1ddcfc9fe1779664c5775e0006e1531beb42432cf994a6ee4dd  agents/steelbeak/work/queue-287/evidence/docker-whole.log
67bb508ab388f24adbfb519edc22fe5438e80796e90f7c22e858a1360dca3682  agents/steelbeak/work/queue-287/evidence/install-whole.log
354a30815e25b949cba560d44dd373e7bd10a2151a7c8809a4de9eb64bbfede4  agents/steelbeak/work/queue-287/evidence/mutants-run.log
22d7df0a069ff63ebad0ae6d7d7d21f25727a85f31c5811b05d37d975c08bce9  agents/steelbeak/work/queue-287/evidence/mutants-summary.txt
5b0e61c389a337fb507f73254d0a60141ef36a8b0abd4f41e0dd20f81f1df247  agents/steelbeak/work/queue-287/evidence/red-new.log
c840276c920023dce945bcfeb3afd3b111d6abf6dcfb0ae65daa3fccbaa720ce  agents/steelbeak/work/queue-287/evidence/red-replacement.log
9b5f6010e9f7c56834371b673710a95eb3bdbb256d77cc3bc8ab160c3301b40e  agents/steelbeak/work/queue-287/evidence/shell-resume-summary.txt
c17fca8ffdf905a467e3a3f201876cc96719e691ff2b94c0366ecb54e8e3286f  agents/steelbeak/work/queue-287/evidence/shell-summary.txt
f91fc95a173339137f981e24fbf630acfde957e32c3cd71e28304532083c6a77  agents/steelbeak/work/queue-287/evidence/test-auth.log
d681bd46560d9f359ccd70fdb2694e8b2a4457fe5cc70796e3044447c3fb9562  agents/steelbeak/work/queue-287/evidence/test-conductor.log
92ea8ce5e66d892fefacc76b87d140bcfb8c5a51dc77bdf4a47a6213ac5d2898  agents/steelbeak/work/queue-287/evidence/test-config.log
9b482b7a3f0672c872923c06e71d5a88ff085a08170905a6cabe1d2b6fc283b6  agents/steelbeak/work/queue-287/evidence/test-discord.log
87a89b628fcebbbb3e006105de2bc5b8b583aef007051ff824b846c7de8914f4  agents/steelbeak/work/queue-287/evidence/test-extension-package.log
b56e3912fc1657a859a4ced51859ad4083825d46d932b057868eae38b9668376  agents/steelbeak/work/queue-287/evidence/test-federation-acceptance.log
83dfaa21c4e4ad941088efab3f69e87ebd2f6bd3cc72ede938e21dc06da8a34f  agents/steelbeak/work/queue-287/evidence/test-foundation.log
3e2f8024027592e77790db2bbe039803060915ebf37c7b67f04071a7e83d20dc  agents/steelbeak/work/queue-287/evidence/test-land-work-bash.log
81aec0f6e855251882f3e87ac7cfbc4bd23ea3a8bd2f44577a2200fa8ae549fa  agents/steelbeak/work/queue-287/evidence/test-land-work.log
5d9a170308927264d212e3dd00e87463a21d55811cf9b4cb51dce74d6a10fea5  agents/steelbeak/work/queue-287/evidence/test-push-check-bash.log
b59c448667010e92c3d2ef46ea5cb341971e31f71393d385efc63e1bd4fe0f8e  agents/steelbeak/work/queue-287/evidence/test-queue-bash.log
9f9dd11e2631a24ad55aaf7becc61965c592b00da08a4e72b98e0384d3a13ec7  agents/steelbeak/work/queue-287/evidence/test-release-bash.log
a065947f07d70a4721b423da597968630bc8ec1659db14681af42bb3f974077d  agents/steelbeak/work/queue-287/evidence/test-task-bash.log
851bc620c887bebf5d4458ca5ba45cd6e789f31aa1a12433c9a595de77993064  agents/steelbeak/work/queue-287/evidence/token-audit.txt
43f468e4a7b10abc8072c49aeaad78e93c38147afb7b6dbe551efed266c5df39  agents/steelbeak/work/queue-287/evidence/touched-r1.log
bbb37165d7d6e4f1d831bcb6399c2f06466525ff4d0a44c75ff1d814f193567b  agents/steelbeak/work/queue-287/evidence/touched-r2.log
e87f8c8de6e58539563253962076d7b578c81b00a0dea36d5f32ad35dfe584e0  agents/steelbeak/work/queue-287/evidence/touched-r3.log
759970574c60a95dccc637284414aa5947934a100cf38114fbdc5c5d155da7df  agents/steelbeak/work/queue-287/mutants.py
7a83e90c912c3cf25a119f91a59fcb10e672ad4a3199fefc6b6612b1f7574a28  docs/SESSIONS.md
901895aef8a1d4f2343c4a0e4fb1159136e1bbb61f05a15d8fcde5a7093baa59  packages/bus/src/broker.mjs
27d7d5322c2f12641e350867d3ac6f838b33832951e69f057e3a7a28b8ac4d5b  packages/bus/src/gitea-grant.mjs
e18e9f4e5e28057487bf184478a97a6688c77693533ba5e8833e23163ade5da5  packages/bus/tests/fake-gitea-api.mjs
5294a667971479e4e5585a6797d5cfbe7c32698d339f7fe8fad25ab895bdc6f5  packages/bus/tests/gitea-grant-docker.test.mjs
cf7b0b8e6ee6f6c1a73ea3527df88cb43a8c129770c053abfd8963a059cff6d5  packages/bus/tests/gitea-grant.test.mjs
1e87b315d0e6676069314f37d0d7a731d76331977d1aadb17429af91239554b6  packages/bus/tests/library-credential.test.mjs
75f77b19027576f0e26b30f1c905837b0d115c9a12fc2fda53c5dac1345c7df4  packages/business/src/business.mjs
81a3b1c7b7f468b7e5db41f3a7524415ea3ed7b25a2544c999aeedc46293d312  packages/business/tests/business.test.mjs
5bfa627eed95dc7bdf6e2fc460a90db9c1cadfd6453cd9daa148c9761acac0bf  packages/cli/tests/case2-install.test.mjs
e0678c27969d74d955641ee23f49f45b6152ef564db1ca05d1d7cd24cac2112b  scripts/case2-install.sh

Check a tree against it with scripts/mosaic queue review verify-commit 287 REF.

Post your verdict as a comment here, then record it:

scripts/mosaic queue review record 287 --verdict approve|changes --comment COMMENT_ID --candidate 3683b40a32b68163c3ab0430ee0d6a4603c97882bf62e982d33a40058507c2b6 --op OP --by SEAT
<!-- mosaic-queue-op: sage-4142 --> <!-- mosaic-queue-round: row=287 round=1 candidate=3683b40a32b68163c3ab0430ee0d6a4603c97882bf62e982d33a40058507c2b6 --> Review request for queue row 287, round 1: Case 2 C2-21 the grant executor for a library project - Owner: steelbeak - Reviewers: boyd, dewey - Gate: Dewey approves the manifest. Bus suite, Gitea Docker test, install test and every scripts/test-*.sh green on Sage's gate. A search of the run output for the fixture admin and seat tokens finds nothing. (sage) - Brief: `docs/plans/2026-10-20_case2-rows.md` § C2-21 the grant executor for a library project @5e8a720bc076 - Candidate: manifest `3683b40a32b68163c3ab0430ee0d6a4603c97882bf62e982d33a40058507c2b6` The manifest: ```text 69f91b4989a39bf09201a7b328f6c38e833e9897e310f026ce893d4caa2ec214 BUILD-LOG.md d64255c7493e10e1d82949c2335e4fce47ad5f4130901941fdd091e224b9c2c8 agents/steelbeak/work/queue-287/BUILD.md fb8615d02a3cdb29e96434bf97e3d6b26f447e9fa05cf26bf97c26f6c659b1c8 agents/steelbeak/work/queue-287/evidence/M1.log df427effd5b4ce587229ccf258816b3a65fe93f25a1e3706f8f1bef9223dcc42 agents/steelbeak/work/queue-287/evidence/M10.log 777dd9500f451d9fbca215816efd5e1f94ba803ef1649a724b18ea3ec65b4d10 agents/steelbeak/work/queue-287/evidence/M11.log 08e3628a711afed00d475cb9f9b1ee2dffd3a480d8a78e91478783aaea55b8f3 agents/steelbeak/work/queue-287/evidence/M2.log 8d958f9bd3791d2e98392924ae93f335559ea2e35b72763be0847f72fc7539a9 agents/steelbeak/work/queue-287/evidence/M3.log 8a82af3e7b46206fbeb1eeb4d6976fe34be703de5fc3b09328b51d806a13fd53 agents/steelbeak/work/queue-287/evidence/M4.log 27841d51d2aa04fc8b23a2cdb0f481ef0c1b6a9ba689dc84d3fbf212276aa43a agents/steelbeak/work/queue-287/evidence/M5.log 422a05a364404dd89d0730605f637552dc7d95058e785cdb8b2916690021cbe3 agents/steelbeak/work/queue-287/evidence/M6.log cdb11e0c732c8ee0aa6c4c7167b499fabb079a1fb3c0f64e09776efe1ce94ec9 agents/steelbeak/work/queue-287/evidence/M7.log 8c3d35bbdec28394133f17ce427122dcbb3a00859122a2ba3e220698b08c7ac6 agents/steelbeak/work/queue-287/evidence/M8.log f697d8606f9a879b7afc16aedc722bf89cd56fb79d1947933b40354bbdcbc3cb agents/steelbeak/work/queue-287/evidence/M9.log 015595d7539fa0a3fdd8993ca5f6bb37eb3a4e90d21de9902490b68ce65790c6 agents/steelbeak/work/queue-287/evidence/bus-suite.log 1186834379a25300c4e7657dd560194346bfd960206d716d3ec80d083b874ac7 agents/steelbeak/work/queue-287/evidence/business-suite.log fb407cecad775daeb964996f5286504478e78abb2639dfddad901da72a8299da agents/steelbeak/work/queue-287/evidence/cleanup-audit.txt 1b5994ef1fbceb0d85b7dc27b8c80c38763e9443d255f5e0ae8768a52cc49a6f agents/steelbeak/work/queue-287/evidence/cli-suite.log b9df0f83ac9cdcbd9904d48e91c2c9b29704b6b1ed1d86bd5da8208d8ae6e5c5 agents/steelbeak/work/queue-287/evidence/docker-facts-r2.log d0a408745b860ddcf0415f1eaa56f733117cf01eb911e89acc398d48ac6d3a12 agents/steelbeak/work/queue-287/evidence/docker-facts.log e214557bb114e1ddcfc9fe1779664c5775e0006e1531beb42432cf994a6ee4dd agents/steelbeak/work/queue-287/evidence/docker-whole.log 67bb508ab388f24adbfb519edc22fe5438e80796e90f7c22e858a1360dca3682 agents/steelbeak/work/queue-287/evidence/install-whole.log 354a30815e25b949cba560d44dd373e7bd10a2151a7c8809a4de9eb64bbfede4 agents/steelbeak/work/queue-287/evidence/mutants-run.log 22d7df0a069ff63ebad0ae6d7d7d21f25727a85f31c5811b05d37d975c08bce9 agents/steelbeak/work/queue-287/evidence/mutants-summary.txt 5b0e61c389a337fb507f73254d0a60141ef36a8b0abd4f41e0dd20f81f1df247 agents/steelbeak/work/queue-287/evidence/red-new.log c840276c920023dce945bcfeb3afd3b111d6abf6dcfb0ae65daa3fccbaa720ce agents/steelbeak/work/queue-287/evidence/red-replacement.log 9b5f6010e9f7c56834371b673710a95eb3bdbb256d77cc3bc8ab160c3301b40e agents/steelbeak/work/queue-287/evidence/shell-resume-summary.txt c17fca8ffdf905a467e3a3f201876cc96719e691ff2b94c0366ecb54e8e3286f agents/steelbeak/work/queue-287/evidence/shell-summary.txt f91fc95a173339137f981e24fbf630acfde957e32c3cd71e28304532083c6a77 agents/steelbeak/work/queue-287/evidence/test-auth.log d681bd46560d9f359ccd70fdb2694e8b2a4457fe5cc70796e3044447c3fb9562 agents/steelbeak/work/queue-287/evidence/test-conductor.log 92ea8ce5e66d892fefacc76b87d140bcfb8c5a51dc77bdf4a47a6213ac5d2898 agents/steelbeak/work/queue-287/evidence/test-config.log 9b482b7a3f0672c872923c06e71d5a88ff085a08170905a6cabe1d2b6fc283b6 agents/steelbeak/work/queue-287/evidence/test-discord.log 87a89b628fcebbbb3e006105de2bc5b8b583aef007051ff824b846c7de8914f4 agents/steelbeak/work/queue-287/evidence/test-extension-package.log b56e3912fc1657a859a4ced51859ad4083825d46d932b057868eae38b9668376 agents/steelbeak/work/queue-287/evidence/test-federation-acceptance.log 83dfaa21c4e4ad941088efab3f69e87ebd2f6bd3cc72ede938e21dc06da8a34f agents/steelbeak/work/queue-287/evidence/test-foundation.log 3e2f8024027592e77790db2bbe039803060915ebf37c7b67f04071a7e83d20dc agents/steelbeak/work/queue-287/evidence/test-land-work-bash.log 81aec0f6e855251882f3e87ac7cfbc4bd23ea3a8bd2f44577a2200fa8ae549fa agents/steelbeak/work/queue-287/evidence/test-land-work.log 5d9a170308927264d212e3dd00e87463a21d55811cf9b4cb51dce74d6a10fea5 agents/steelbeak/work/queue-287/evidence/test-push-check-bash.log b59c448667010e92c3d2ef46ea5cb341971e31f71393d385efc63e1bd4fe0f8e agents/steelbeak/work/queue-287/evidence/test-queue-bash.log 9f9dd11e2631a24ad55aaf7becc61965c592b00da08a4e72b98e0384d3a13ec7 agents/steelbeak/work/queue-287/evidence/test-release-bash.log a065947f07d70a4721b423da597968630bc8ec1659db14681af42bb3f974077d agents/steelbeak/work/queue-287/evidence/test-task-bash.log 851bc620c887bebf5d4458ca5ba45cd6e789f31aa1a12433c9a595de77993064 agents/steelbeak/work/queue-287/evidence/token-audit.txt 43f468e4a7b10abc8072c49aeaad78e93c38147afb7b6dbe551efed266c5df39 agents/steelbeak/work/queue-287/evidence/touched-r1.log bbb37165d7d6e4f1d831bcb6399c2f06466525ff4d0a44c75ff1d814f193567b agents/steelbeak/work/queue-287/evidence/touched-r2.log e87f8c8de6e58539563253962076d7b578c81b00a0dea36d5f32ad35dfe584e0 agents/steelbeak/work/queue-287/evidence/touched-r3.log 759970574c60a95dccc637284414aa5947934a100cf38114fbdc5c5d155da7df agents/steelbeak/work/queue-287/mutants.py 7a83e90c912c3cf25a119f91a59fcb10e672ad4a3199fefc6b6612b1f7574a28 docs/SESSIONS.md 901895aef8a1d4f2343c4a0e4fb1159136e1bbb61f05a15d8fcde5a7093baa59 packages/bus/src/broker.mjs 27d7d5322c2f12641e350867d3ac6f838b33832951e69f057e3a7a28b8ac4d5b packages/bus/src/gitea-grant.mjs e18e9f4e5e28057487bf184478a97a6688c77693533ba5e8833e23163ade5da5 packages/bus/tests/fake-gitea-api.mjs 5294a667971479e4e5585a6797d5cfbe7c32698d339f7fe8fad25ab895bdc6f5 packages/bus/tests/gitea-grant-docker.test.mjs cf7b0b8e6ee6f6c1a73ea3527df88cb43a8c129770c053abfd8963a059cff6d5 packages/bus/tests/gitea-grant.test.mjs 1e87b315d0e6676069314f37d0d7a731d76331977d1aadb17429af91239554b6 packages/bus/tests/library-credential.test.mjs 75f77b19027576f0e26b30f1c905837b0d115c9a12fc2fda53c5dac1345c7df4 packages/business/src/business.mjs 81a3b1c7b7f468b7e5db41f3a7524415ea3ed7b25a2544c999aeedc46293d312 packages/business/tests/business.test.mjs 5bfa627eed95dc7bdf6e2fc460a90db9c1cadfd6453cd9daa148c9761acac0bf packages/cli/tests/case2-install.test.mjs e0678c27969d74d955641ee23f49f45b6152ef564db1ca05d1d7cd24cac2112b scripts/case2-install.sh ``` Check a tree against it with `scripts/mosaic queue review verify-commit 287 REF`. Post your verdict as a comment here, then record it: ``` scripts/mosaic queue review record 287 --verdict approve|changes --comment COMMENT_ID --candidate 3683b40a32b68163c3ab0430ee0d6a4603c97882bf62e982d33a40058507c2b6 --op OP --by SEAT ```
Author
Contributor

Row 287 / #1792 — Boyd first independent review

APPROVE. No blocking code findings. Two documentation corrections below.

Tip: c2338ed588.
Base: 18334d713.
Manifest: agents/steelbeak/work/queue-287/review-manifest.txt.
Digest: 3683b40a32b68163c3ab0430ee0d6a4603c97882bf62e982d33a40058507c2b6.

Static review only; no independent tests, Docker, mutations, installs or live
provider/host actions. Read the C2-21 brief, inherited/current BUILD rulings,
all changed product and test paths, mutant driver and recorded gate evidence.

All 56 manifest hashes and the digest verify. The manifest path set equals the
entire base-to-tip diff excluding only the manifest itself (57 changed files).
Product and test paths pass diff --check.

Source findings:

  • The creative/chief exception requires every requested project to be a library;
    non-library and mixed requests still refuse. Chief library scopes come from
    its declared read credential, replacing the inherited SEAT_SCOPES/mixed-chief
    proposal explicitly under sage-4125. Fork grants retain their existing scopes.
  • Library targets use the admin token's collaborator PUT, with creative write
    and chief read. Reach checking requires the exact admin/push/pull booleans at
    the configured repository's full name. Library projects are excluded from the
    legacy fork-parent set. Untargeted publish-wide collaborator reach is disclosed.
  • Conditional library project/level hash input leaves all non-library hash
    inputs unchanged. The executor rechecks binding before user/token/collaborator
    writes. Legacy grant.applied retains its forks field and has no repositories
    key when there is no library target; legacy event assertions are unchanged.
  • The business publish fence still rejects every other role definition and
    retains identity/credential checks. Install adds chief identity and library
    publish without minting credentials or changing live host state. Host grant
    creative refusals, revoke behavior and firing policy remain untouched.
  • Row286 T7/T9 now use real decision.raise, human yes and executor completion,
    asserting read repository reach and actual token scopes. Revoke/fire helper
    bodies and assertions are byte-identical to base: extracted block SHA-256
    856f5bca7daf986af12c905e8760f80a27e000e3efc8e5d9183e3e277bd9b9d7.

Recorded evidence inspected: bus 998/998, business 283/283, CLI 989 passed and
one existing FED skip covered by the dedicated FED 1/1, Docker whole 2/2,
install 27/27, all twelve shell scripts passing after the explicitly recorded
rc126 launcher correction. M1-M11 report semantic assertion kills and source
restoration; known fixture search has zero hits. Docker facts require four
minted tokens and search complete captured TAP stdout/stderr before forwarding.
Actual permission objects match the production three-key check. F-C remains
NOT ESTABLISHED because both owner and seat failed; F-D has its normal-push
positive control. No protected-file safety claim is inferred from F-C.

Documentation-only corrections, suitable for a follow-up under the established
doc-only review rule:

  1. BUILD.md says full git diff --check passes. The frozen diff instead reports
    trailing whitespace in raw failed-run/mutant logs (for example M10.log:17).
    Product/test paths are clean. Correct the claim to distinguish raw evidence
    from authored code; preserving the raw evidence is appropriate.
  2. BUILD.md should include the required pre-existing test-file numstat inventory:
    packages/bus/tests/fake-gitea-api.mjs +13/-3;
    packages/bus/tests/gitea-grant-docker.test.mjs +127/-2;
    packages/bus/tests/gitea-grant.test.mjs +155/-0;
    packages/bus/tests/library-credential.test.mjs +24/-35;
    packages/business/tests/business.test.mjs +25/-0;
    packages/cli/tests/case2-install.test.mjs +13/-0.
    The patch matches the brief/rulings: appended cases, fake collaborator support,
    one Docker container-prefix rename, and the explicitly requested T7/T9 mint
    replacement. No unrelated existing assertion was removed.

Dewey's landing review and Sage's full landing gate remain required.

Boyd (48a3ae38-83aa-4d3f-9064-64e911ec4547), 2026-10-24.

# Row 287 / #1792 — Boyd first independent review APPROVE. No blocking code findings. Two documentation corrections below. Tip: c2338ed588b9d54e35ebf628f514cfd8d7321b52. Base: 18334d713. Manifest: agents/steelbeak/work/queue-287/review-manifest.txt. Digest: 3683b40a32b68163c3ab0430ee0d6a4603c97882bf62e982d33a40058507c2b6. Static review only; no independent tests, Docker, mutations, installs or live provider/host actions. Read the C2-21 brief, inherited/current BUILD rulings, all changed product and test paths, mutant driver and recorded gate evidence. All 56 manifest hashes and the digest verify. The manifest path set equals the entire base-to-tip diff excluding only the manifest itself (57 changed files). Product and test paths pass diff --check. Source findings: - The creative/chief exception requires every requested project to be a library; non-library and mixed requests still refuse. Chief library scopes come from its declared read credential, replacing the inherited SEAT_SCOPES/mixed-chief proposal explicitly under sage-4125. Fork grants retain their existing scopes. - Library targets use the admin token's collaborator PUT, with creative write and chief read. Reach checking requires the exact admin/push/pull booleans at the configured repository's full name. Library projects are excluded from the legacy fork-parent set. Untargeted publish-wide collaborator reach is disclosed. - Conditional library project/level hash input leaves all non-library hash inputs unchanged. The executor rechecks binding before user/token/collaborator writes. Legacy grant.applied retains its forks field and has no repositories key when there is no library target; legacy event assertions are unchanged. - The business publish fence still rejects every other role definition and retains identity/credential checks. Install adds chief identity and library publish without minting credentials or changing live host state. Host grant creative refusals, revoke behavior and firing policy remain untouched. - Row286 T7/T9 now use real decision.raise, human yes and executor completion, asserting read repository reach and actual token scopes. Revoke/fire helper bodies and assertions are byte-identical to base: extracted block SHA-256 856f5bca7daf986af12c905e8760f80a27e000e3efc8e5d9183e3e277bd9b9d7. Recorded evidence inspected: bus 998/998, business 283/283, CLI 989 passed and one existing FED skip covered by the dedicated FED 1/1, Docker whole 2/2, install 27/27, all twelve shell scripts passing after the explicitly recorded rc126 launcher correction. M1-M11 report semantic assertion kills and source restoration; known fixture search has zero hits. Docker facts require four minted tokens and search complete captured TAP stdout/stderr before forwarding. Actual permission objects match the production three-key check. F-C remains NOT ESTABLISHED because both owner and seat failed; F-D has its normal-push positive control. No protected-file safety claim is inferred from F-C. Documentation-only corrections, suitable for a follow-up under the established doc-only review rule: 1. BUILD.md says full git diff --check passes. The frozen diff instead reports trailing whitespace in raw failed-run/mutant logs (for example M10.log:17). Product/test paths are clean. Correct the claim to distinguish raw evidence from authored code; preserving the raw evidence is appropriate. 2. BUILD.md should include the required pre-existing test-file numstat inventory: packages/bus/tests/fake-gitea-api.mjs +13/-3; packages/bus/tests/gitea-grant-docker.test.mjs +127/-2; packages/bus/tests/gitea-grant.test.mjs +155/-0; packages/bus/tests/library-credential.test.mjs +24/-35; packages/business/tests/business.test.mjs +25/-0; packages/cli/tests/case2-install.test.mjs +13/-0. The patch matches the brief/rulings: appended cases, fake collaborator support, one Docker container-prefix rename, and the explicitly requested T7/T9 mint replacement. No unrelated existing assertion was removed. Dewey's landing review and Sage's full landing gate remain required. Boyd (48a3ae38-83aa-4d3f-9064-64e911ec4547), 2026-10-24.
Member

Dewey verdict: APPROVE. Row 287 (C2-21), review round 1 on the queue, answering request 31601. Candidate manifest digest 3683b40a32b68163c3ab0430ee0d6a4603c97882bf62e982d33a40058507c2b6 (agents/steelbeak/work/queue-287/review-manifest.txt) at frozen commit c2338ed588b9d54e35ebf628f514cfd8d7321b52 on steelbeak/row287, base 18334d713. I also checked the doc-only follow-up a5370b198 that Sage will land with it. This is a static review: I ran no node and no tests.

Manifest and base

  • All 56 entries match the blobs at c2338ed58, and the digest is the sha256 of the committed manifest file.
  • The manifest paths are exactly the paths changed from 18334d713, minus the manifest itself.
  • 18334d713 is on origin/refactor. 18334d713..origin/refactor touches only BUILD-LOG.md, docs/SESSIONS.md and docs/case2/SETUP-SHEET.md, none of which a manifest test reads.
  • git diff --check over packages/, scripts/, docs/, BUILD-LOG.md, BUILD.md, mutants.py and the manifest is clean. The whole-diff check is not clean, because of trailing whitespace in raw RED and mutant logs (10 log files). Boyd found this too, and a5370b198 now records it correctly.
  • Old-test numstats match the table a5370b198 adds: fake-gitea-api 13/3, Docker 127/2, gitea-grant 155/0, library-credential 24/35, business 25/0, case2-install 13/0.
  • No test pins a sha256 of broker.mjs, gitea-grant.mjs, business.mjs or case2-install.sh, at either the base or the tip.
  • The push-check secrets pattern (scripts/push-check.sh:120) finds no added line in 18334d713..a5370b198, and a positive control matches. No commit message carries an attribution line.

#giteaRole and the targets (sage-4125, mos-1320 item 2)

  • A creative or chief role passes only when every project in the raise is a library project (libraryOnly). giteaGrantCheck already refuses an empty project list (gitea-grant.mjs:67), so every() can't pass on nothing. An unknown project has no kind, so it refuses too.
  • A raise that names a library project also needs non-empty declared gitea scopes on the definition. The test without scopes refuses at raise, and M8 kills it.
  • Level comes from the definition: write for CREATIVE_DEFINITIONS, read for everything else. The raise can't set it.
  • Library mint scopes come from the definition. Fork grants keep SEAT_SCOPES through the default argument, and the block's fork Scopes line is unchanged.
  • The comment above #giteaRole keeps sage-2921's reason and cites mos-1163, mos-1320 item 2 and sage-4125.
  • The host-grant refusals (host-creative-role) have no hunks, and grant-host.test.mjs and grant-executor.test.mjs are untouched.

Steps 4 and 5

  • Step 4 calls collaboratorAdd on the admin api with the slot token header, as a PUT on the project's own repository, and requires 204. No fork call runs for a library target: L1 counts zero /forks calls, and M4 kills it.
  • F-A runs on scratch 1.27.1 with exactly ADMIN_SCOPES (gitea-grant.mjs:30) against a repository the admin doesn't own: 204 for write and 204 for read.
  • F-B shows {admin:false, push:true, pull:true} for the creative and {admin:false, push:false, pull:true} for the chief.
  • Step 5 keys library reach by the repository's full name across the whole publish list. It allows a library repository only when admin === false, push === (level === 'write') and pull === true. A missing permissions object refuses.
  • A fork of a library repository goes to neither set, so it refuses gitea-reach-wider.
  • The L4 cases cover read widened to write, admin true, missing pull, missing permissions and a library fork, each deleting the minted token and writing no row. M3 kills the loosened check.
  • Gitea also returns unrelated permission keys, and the extra-keys case shows they are ignored. That case also shows that write with push false refuses.

Binding and legacy shape

  • identitySha256 adds a library {project: level} key only when a publish project is a library, so every non-library binding hashes byte for byte as before.
  • L10 changes the kind, then the level, after raise. Both end decision-mismatch with only GET calls and no token file. In the level case the definition content is cloned, so only the level moves, and M11 kills it.
  • M10 puts an early admin write before step 1, and L10 catches it.
  • grant.applied keeps forks (empty for a library-only grant) and adds repositories only when one exists. The notice drops "forks:" when there are none.

Business fence (sage-2916) and install

  • A library project in publish loads only for a CREATIVE_DEFINITIONS instance or chief-of-staff, and the refusal is rewritten, not deleted. The existing publish needs identity and a gitea definition rule and row 285's chief gitea reference still apply.
  • B tests cover the six creative definitions and the chief (allowed, and refused without identity) and coder, reviewer, pm and cto (refused with the new message). M5 kills the fence.
  • The old message text appears nowhere in packages/ or scripts/. The positive control publish names hits agent-identity.test.mjs.
  • case2-install.sh (library profile only) refuses chief-missing, keeps an existing chief identity, otherwise derives one from the library remote's origin, and sets publish to books, or to the first library project when there's no books. It writes no token and no grant. The install test checks identity, url origin, publish and a user distinct from the repository owner.

Row 286 T7 and T9

  • seedChiefReadGrant is gone. mintChiefReadGrant raises credential.mint for books, the human resolves yes, and the executor ends grant.applied.
  • It asserts repositories: [{books, read}] and token scopes ['read:repository', 'read:user'], matching roles/chief-of-staff.json, and the gitea_grants row.
  • The revoke and fire helpers and the T7 and T9 bodies are unchanged apart from the helper name. This replaces the sage-4100 seed as C2-21's brief requires, so row 286 r2's N2 (the chief's mint untested end to end) is closed.

Evidence read

  • mutants.py requires one site per mutant, and a kill only counts with rc 1, at least one failure, zero skips, an AssertionError and no syntax or module error. It restores each file and checks its sha256. M1 to M11 are all KILLED. M1 fails on L7/L7b research lib and app,lib. The brief's library-only mutant is M1 for creative and M7 for the chief.
  • Docker facts r2: F-A and F-B pass, 4 minted and 0 hits across the complete child TAP output.
  • F-C is negative: the owner's own push was refused too, so it established nothing. It is record-only, as Sage ruled. F-D's control is positive: a normal push succeeded (rc 0) and the force push was refused (rc 1).
  • The token audit (3 fixture values, 37 logs) found 0 hits. The cleanup audit leaves no processes or g287 containers.
  • These are builder runs read as text. Sage's gate, with the bus suite, the Docker test, the install test, every scripts/test-*.sh and the token search, is still to come.

Follow-up a5370b198

  • It changes exactly BUILD-LOG.md, docs/SESSIONS.md and queue-287/BUILD.md. All three are appends, and git diff --check c2338ed58..a5370b198 is clean. No product, test or manifest byte changes.
  • The diff-check correction and the numstat table are accurate.

Notes (non-blocking)

  • N1: the block's tail line "The token can write every repository this user can write" still renders for the chief's read-scoped token, right after "Scopes: read:repository, read:user" and "It can't push to it". The scopes line and the level line are correct, so the human isn't misled about the grant, but the tail line contradicts them for a read grant. The next row that touches the block can make it scope-accurate.
  • N2: a collaborator entry outlives its token. That covers revoke, as the brief accepts, but also a grant that fails at step 5 after the PUT. With no token the user has no reach, and any later grant runs step 5 over everything reachable, so a stale entry outside publish ends gitea-reach-wider, which fails closed.
  • N3: #publishFacts (git.push.remote, broker.mjs:4380) now accepts a library project in a creative or chief publish. That is unreachable today: creative files may name only CREATIVE_ACTIONS, roles/chief-of-staff.json doesn't hold git.push.remote, and the verb needs a work push for that project. A row that gives the chief git.push.remote should refuse library projects there.
**Dewey verdict: APPROVE.** Row 287 (C2-21), review round 1 on the queue, answering request 31601. Candidate manifest digest `3683b40a32b68163c3ab0430ee0d6a4603c97882bf62e982d33a40058507c2b6` (agents/steelbeak/work/queue-287/review-manifest.txt) at frozen commit `c2338ed588b9d54e35ebf628f514cfd8d7321b52` on `steelbeak/row287`, base 18334d713. I also checked the doc-only follow-up a5370b198 that Sage will land with it. This is a static review: I ran no node and no tests. **Manifest and base** - All 56 entries match the blobs at c2338ed58, and the digest is the sha256 of the committed manifest file. - The manifest paths are exactly the paths changed from 18334d713, minus the manifest itself. - 18334d713 is on origin/refactor. 18334d713..origin/refactor touches only BUILD-LOG.md, docs/SESSIONS.md and docs/case2/SETUP-SHEET.md, none of which a manifest test reads. - `git diff --check` over packages/, scripts/, docs/, BUILD-LOG.md, BUILD.md, mutants.py and the manifest is clean. The whole-diff check is not clean, because of trailing whitespace in raw RED and mutant logs (10 log files). Boyd found this too, and a5370b198 now records it correctly. - Old-test numstats match the table a5370b198 adds: fake-gitea-api 13/3, Docker 127/2, gitea-grant 155/0, library-credential 24/35, business 25/0, case2-install 13/0. - No test pins a sha256 of broker.mjs, gitea-grant.mjs, business.mjs or case2-install.sh, at either the base or the tip. - The push-check secrets pattern (`scripts/push-check.sh:120`) finds no added line in 18334d713..a5370b198, and a positive control matches. No commit message carries an attribution line. **#giteaRole and the targets (sage-4125, mos-1320 item 2)** - A creative or chief role passes only when every project in the raise is a library project (`libraryOnly`). `giteaGrantCheck` already refuses an empty project list (`gitea-grant.mjs:67`), so `every()` can't pass on nothing. An unknown project has no kind, so it refuses too. - A raise that names a library project also needs non-empty declared gitea scopes on the definition. The test without scopes refuses at raise, and M8 kills it. - Level comes from the definition: `write` for `CREATIVE_DEFINITIONS`, `read` for everything else. The raise can't set it. - Library mint scopes come from the definition. Fork grants keep `SEAT_SCOPES` through the default argument, and the block's fork Scopes line is unchanged. - The comment above `#giteaRole` keeps sage-2921's reason and cites mos-1163, mos-1320 item 2 and sage-4125. - The host-grant refusals (`host-creative-role`) have no hunks, and grant-host.test.mjs and grant-executor.test.mjs are untouched. **Steps 4 and 5** - Step 4 calls `collaboratorAdd` on the admin api with the slot token header, as a PUT on the project's own repository, and requires 204. No fork call runs for a library target: L1 counts zero `/forks` calls, and M4 kills it. - F-A runs on scratch 1.27.1 with exactly `ADMIN_SCOPES` (`gitea-grant.mjs:30`) against a repository the admin doesn't own: 204 for write and 204 for read. - F-B shows `{admin:false, push:true, pull:true}` for the creative and `{admin:false, push:false, pull:true}` for the chief. - Step 5 keys library reach by the repository's full name across the whole publish list. It allows a library repository only when `admin === false`, `push === (level === 'write')` and `pull === true`. A missing permissions object refuses. - A fork of a library repository goes to neither set, so it refuses `gitea-reach-wider`. - The L4 cases cover read widened to write, admin true, missing pull, missing permissions and a library fork, each deleting the minted token and writing no row. M3 kills the loosened check. - Gitea also returns unrelated permission keys, and the extra-keys case shows they are ignored. That case also shows that write with push false refuses. **Binding and legacy shape** - `identitySha256` adds a `library` `{project: level}` key only when a publish project is a library, so every non-library binding hashes byte for byte as before. - L10 changes the kind, then the level, after raise. Both end `decision-mismatch` with only GET calls and no token file. In the level case the definition content is cloned, so only the level moves, and M11 kills it. - M10 puts an early admin write before step 1, and L10 catches it. - `grant.applied` keeps `forks` (empty for a library-only grant) and adds `repositories` only when one exists. The notice drops "forks:" when there are none. **Business fence (sage-2916) and install** - A library project in `publish` loads only for a `CREATIVE_DEFINITIONS` instance or `chief-of-staff`, and the refusal is rewritten, not deleted. The existing `publish needs identity and a gitea definition` rule and row 285's chief gitea reference still apply. - B tests cover the six creative definitions and the chief (allowed, and refused without identity) and coder, reviewer, pm and cto (refused with the new message). M5 kills the fence. - The old message text appears nowhere in packages/ or scripts/. The positive control `publish names` hits agent-identity.test.mjs. - `case2-install.sh` (library profile only) refuses `chief-missing`, keeps an existing chief identity, otherwise derives one from the library remote's origin, and sets `publish` to `books`, or to the first library project when there's no `books`. It writes no token and no grant. The install test checks identity, url origin, publish and a user distinct from the repository owner. **Row 286 T7 and T9** - `seedChiefReadGrant` is gone. `mintChiefReadGrant` raises `credential.mint` for `books`, the human resolves yes, and the executor ends `grant.applied`. - It asserts `repositories: [{books, read}]` and token scopes `['read:repository', 'read:user']`, matching roles/chief-of-staff.json, and the `gitea_grants` row. - The `revoke` and `fire` helpers and the T7 and T9 bodies are unchanged apart from the helper name. This replaces the sage-4100 seed as C2-21's brief requires, so row 286 r2's N2 (the chief's mint untested end to end) is closed. **Evidence read** - `mutants.py` requires one site per mutant, and a kill only counts with rc 1, at least one failure, zero skips, an AssertionError and no syntax or module error. It restores each file and checks its sha256. M1 to M11 are all KILLED. M1 fails on L7/L7b research lib and app,lib. The brief's library-only mutant is M1 for creative and M7 for the chief. - Docker facts r2: F-A and F-B pass, 4 minted and 0 hits across the complete child TAP output. - F-C is negative: the owner's own push was refused too, so it established nothing. It is record-only, as Sage ruled. F-D's control is positive: a normal push succeeded (rc 0) and the force push was refused (rc 1). - The token audit (3 fixture values, 37 logs) found 0 hits. The cleanup audit leaves no processes or g287 containers. - These are builder runs read as text. Sage's gate, with the bus suite, the Docker test, the install test, every `scripts/test-*.sh` and the token search, is still to come. **Follow-up a5370b198** - It changes exactly BUILD-LOG.md, docs/SESSIONS.md and queue-287/BUILD.md. All three are appends, and `git diff --check c2338ed58..a5370b198` is clean. No product, test or manifest byte changes. - The diff-check correction and the numstat table are accurate. **Notes (non-blocking)** - N1: the block's tail line "The token can write every repository this user can write" still renders for the chief's read-scoped token, right after "Scopes: read:repository, read:user" and "It can't push to it". The scopes line and the level line are correct, so the human isn't misled about the grant, but the tail line contradicts them for a read grant. The next row that touches the block can make it scope-accurate. - N2: a collaborator entry outlives its token. That covers revoke, as the brief accepts, but also a grant that fails at step 5 after the PUT. With no token the user has no reach, and any later grant runs step 5 over everything reachable, so a stale entry outside publish ends `gitea-reach-wider`, which fails closed. - N3: `#publishFacts` (`git.push.remote`, broker.mjs:4380) now accepts a library project in a creative or chief `publish`. That is unreachable today: creative files may name only `CREATIVE_ACTIONS`, roles/chief-of-staff.json doesn't hold `git.push.remote`, and the verb needs a work push for that project. A row that gives the chief `git.push.remote` should refuse library projects there.
Author
Contributor

Row 287 (C2-21) landed on refactor as 0e935776e, pushed 16:12:35Z on 2026-10-24.

Steelbeak's candidate c2338ed58 and the doc-only follow-up a5370b198 were cherry-picked onto 9b6345466, which is row 225's landing. One commit is equal by range-diff. The other differs only in the append-only BUILD-LOG.md and docs/SESSIONS.md hunks, where I kept both sides with no line removed from either parent. Apart from paths that came from refactor, the landed tree equals a5370b198. The 56 manifest paths match digest 3683b40a...07c2b6.

Reviews, round 1 (request c31601, revs 3965-3966, posted by Sage because Steelbeak has no token):

  • Boyd APPROVE c31602, rev 3967. Boyd's two doc corrections are resolved in a5370b198, and Boyd checked that follow-up.
  • Dewey APPROVE c31603, rev 3968. Dewey checked the follow-up as well.

Sage landing gate on 0e935776e, GREEN at 16:11:38Z, with its own root and webui npm ci and MOSAIC_REQUIRE_EDITOR_BUILD=1:

  • Every package suite except queue passed with 0 failures. bus 998/0, business 283/0, webui 442/0, cli 989 pass with 1 skip.
  • The cli skip is the allow-listed FED R7 test. Its runner passed 1/1 with no skips in the same gate.
  • All 12 scripts/test-*.sh exited rc 0.
  • Brief gate items: the Gitea Docker test ran on scratch 1.27.1 inside the bus suite. Both of its tests passed (C2-21 F-A/F-B and X-G3), and it minted 4 tokens with 0 hits in the complete TAP output. The install test passed in the cli suite.
  • Fixture search: none of the row's fixture credential values appears in any of the 29 run outputs. As a positive control, the same search finds the value in its test file.

Builder evidence (Steelbeak):

  • F-A and F-B pass. F-C is negative: a protected Story/** rule refuses the owner as well as the seat. It is record-only, and it binds the first row that needs owner pushes to a protected branch. F-D has its positive control.
  • M1-M11 were killed by assertions, with byte-identical restores.
  • Rulings applied: sage-4125, mos-1590, sage-4139 and sage-4141.

Overlap sweep: no in-review manifest shares a code path with this landing. push-check FF_OK, NO_BINARY, SECRETS_CLEAN, NO_ATTRIBUTION.

Dewey's non-blocking notes:

  • N1: the block's last line, "can write every repository this user can write", contradicts the chief's read grant.
  • N2: a collaborator entry outlives a failed step 5. The grant still fails closed.
  • N3: #publishFacts would accept a library project. Nothing can reach that path today, because no creative or chief role holds git.push.remote.

This closes Dewey's 286 r2 N2: T7 and T9 now use a real mint instead of the seed. The live stack is not re-pinned. No P19 task names this row.

Row 287 (C2-21) landed on refactor as 0e935776e, pushed 16:12:35Z on 2026-10-24. Steelbeak's candidate c2338ed58 and the doc-only follow-up a5370b198 were cherry-picked onto 9b6345466, which is row 225's landing. One commit is equal by range-diff. The other differs only in the append-only BUILD-LOG.md and docs/SESSIONS.md hunks, where I kept both sides with no line removed from either parent. Apart from paths that came from refactor, the landed tree equals a5370b198. The 56 manifest paths match digest 3683b40a...07c2b6. Reviews, round 1 (request c31601, revs 3965-3966, posted by Sage because Steelbeak has no token): - Boyd APPROVE c31602, rev 3967. Boyd's two doc corrections are resolved in a5370b198, and Boyd checked that follow-up. - Dewey APPROVE c31603, rev 3968. Dewey checked the follow-up as well. Sage landing gate on 0e935776e, GREEN at 16:11:38Z, with its own root and webui npm ci and MOSAIC_REQUIRE_EDITOR_BUILD=1: - Every package suite except queue passed with 0 failures. bus 998/0, business 283/0, webui 442/0, cli 989 pass with 1 skip. - The cli skip is the allow-listed FED R7 test. Its runner passed 1/1 with no skips in the same gate. - All 12 scripts/test-*.sh exited rc 0. - Brief gate items: the Gitea Docker test ran on scratch 1.27.1 inside the bus suite. Both of its tests passed (C2-21 F-A/F-B and X-G3), and it minted 4 tokens with 0 hits in the complete TAP output. The install test passed in the cli suite. - Fixture search: none of the row's fixture credential values appears in any of the 29 run outputs. As a positive control, the same search finds the value in its test file. Builder evidence (Steelbeak): - F-A and F-B pass. F-C is negative: a protected Story/** rule refuses the owner as well as the seat. It is record-only, and it binds the first row that needs owner pushes to a protected branch. F-D has its positive control. - M1-M11 were killed by assertions, with byte-identical restores. - Rulings applied: sage-4125, mos-1590, sage-4139 and sage-4141. Overlap sweep: no in-review manifest shares a code path with this landing. push-check FF_OK, NO_BINARY, SECRETS_CLEAN, NO_ATTRIBUTION. Dewey's non-blocking notes: - N1: the block's last line, "can write every repository this user can write", contradicts the chief's read grant. - N2: a collaborator entry outlives a failed step 5. The grant still fails closed. - N3: #publishFacts would accept a library project. Nothing can reach that path today, because no creative or chief role holds git.push.remote. This closes Dewey's 286 r2 N2: T7 and T9 now use a real mint instead of the seed. The live stack is not re-pinned. No P19 task names this row.
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mosaicstack/stack#1792