Repository navigation
feat(automation): promotion kernel contract keeps may_post false - #13528
Conversation
The live catalog stays 109 records and 13 clusters. 84 formats and 83-as-formats are refused. may_post stays false. Nothing is posted, mailed, cron-armed, or sent to a paid fallback. Closes #13466 Closes #13467 Closes #13468 Closes #13469 Closes #13470 Closes #13471 Closes #13472 Refs #13465 Refs #13473 Refs #13474 Refs #13475 Refs #13476 Refs #13477 Refs #13478 Refs #13479 Refs #13480 Refs #13483 Refs #13484 Refs #13485 Co-authored-by: Dmitrii Vasilev <gHashTag@users.noreply.github.com>
Co-authored-by: Dmitrii Vasilev <gHashTag@users.noreply.github.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 34f0c4e. Configure here.
| "forced": false, | ||
| "passed": 9, | ||
| "total": 9, | ||
| "vacuous": 0 |
There was a problem hiding this comment.
Seal mismatches current promotion kernel
High Severity
The new seal records 9 passing tests and a closure that includes std::mem and std::text, but specs/automation/promotion_kernel.t27 now has 13 tests, no invariant block, and no those imports. spec_hash therefore cannot match the spec at HEAD, so t27c seal --verify will fail and the recorded test count understates what the contract actually checks.
Reviewed by Cursor Bugbot for commit 34f0c4e. Configure here.
PR DashboardGenerated at: 2026-11-09 21:27:59 UTC
Summary
Seal Status
|


Pull Request Checklist
feat(scope): descriptionCloses #Nreferencet27c test-reporton the new spect27c seal specs/automation/promotion_kernel.t27 --savethen--verifyDescription
specs/automation/promotion_kernel.t27is the proof-to-demand contract named by #13465. It was not on master. The module records claims, assets, the ten-day draft calendar, the 27-lesson map, the 16 widget types, the funnel, the metrics gate, the anomaly stop, one T27L line, the bounded loop, and the publish gate.may_post()is false. The module does not post, send mail, arm a cron, or fall back to a paid model. #13481 and #13482 are not in this contract. No second CRM.The live catalog is
paper_claims: 109 records and 13 clusters.claim_classmarks that catalog a fit and marks "84 formats" refused. "83 formats" is refused. 83 is the getter count from thecatalog_gate.rscount_getterspredicate onspecs/numeric/formats_catalog.t27, counted on this checkout (83). That count is not a published reconciliation, and this change claims no picture of it.Changes
specs/automation/promotion_kernel.t27— the contract and its tests.trinity/seals/automation_automation::promotion_kernel.json— seal v2, relativespec_pathTesting
t27c check: Typecheck OK (exit 0). Warnings are existingt27lparameter counts.t27c test-report: 9/9 pass, 1 invariant proved, vacuous 0 of 9, 261 runtime asserts, exit 0.t27c seal --verify: all hashes MATCH.claim_classof "84 formats" to fit fails the comptime invariant (assertion failed, exit 2). The broken copy was not committed.origin/master...HEAD: exit 0.Documentation
No
docs/promotion/pages. Those M0 paths stay the open issues below.Review Notes
X figures are the view recorded in #13465 for @t27_dev on 2026-11-09 (7-day, plan Super): 809 impressions, 2 profile visits, 231 followers. This module did not re-read X.
metric_knownis true only for impressions. Clicks, course starts, payments, and GitHub stars, forks, open issues, and contributors are unknown and are not stored as 0.The ten day claims are the epic's non-fit patterns (FP8 15/16, BF16 21/21, ml_dtypes, SHA-256 packs, abs_error, codegen, "No Vivado", every widget compiled, "12 clusters", "84 formats"). A post script for those days is not in the repo. All ten
day_publishableresults are false.pk_eventwrites at27l/v1line on wire surfaceagent(id 11).t27lhas nopromotion_kernelsurface, and this change does not editt27l. The schema constantSCHEMA_SURFACEispromotion_kernel, andRATE_WAIT_NAMEisWAITING_RATE_LIMIT. The payload isclaim=<id>and is refused when it contains an address.Lesson frames come from
specs/course/lesson_frames.t27(27). Idea text and measurable lesson results are not in this repo, solesson_idea_knownandlesson_result_knownstay false.lessons_marked_ready()is 0.publish_readyis true only when widget, screenshot, test pass, and human approval are all true.publish_sendsstays false becausemay_postis false.Still open: #13465, #13473, #13474 (GitHub counts and
docs/promotion/baseline.md), #13475 (idea and result text,docs/promotion/course-map.md), #13476, #13477, #13478, #13479, #13480 (thedocs/promotion/pages), #13483 (separatespecs/promotion/t27l_promotion.t27and the schema markdown; the rules are in the kernel), #13484, #13485 (loop and publish gate are in the kernel; the markdown pages are not). #13481 and #13482 were not started.PUBLISHED=no MERGED=no
Closes #13466
Closes #13467
Closes #13468
Closes #13469
Closes #13470
Closes #13471
Closes #13472
Refs #13465
Refs #13473
Refs #13474
Refs #13475
Refs #13476
Refs #13477
Refs #13478
Refs #13479
Refs #13480
Refs #13483
Refs #13484
Refs #13485
Note
Low Risk
Adds a verified build/seal artifact for a non-transmitting automation spec; no changes to runtime auth, payments, or external integrations in this diff.
Reviewed by Cursor Bugbot for commit 34f0c4e. Bugbot is set up for automated code reviews on this repo. Configure here.