Repository navigation
[finding] skills/objectstack-platform/SKILL.md says the blank starter declares requires: ['automation']; since PR #20363 it declares ['automation', 'triggers'] and wires all seven generator barrels #20385
Description
Activity
objectstack-fleet commented
on Sep 28, 2026 ContributorAuthorMore actionsPath: devpath · 一条命令起一个项目:脚手架、装好、验证通过、控制台首屏画得出来 |
cli.scaffold-first-run(a published skill describes the starter the scaffold ships) | P1Triage: first grade —
bug·documentation·priority:p2·domain:skills·area:devpath·pm:queueTriage: lands in
skills/objectstack-platform/SKILL.md〈The Template〉 ⇒domain:skills(a governed surface, Tier H). The fix is a maintainer-approved skills-lane PR.Rationale: NORTH-STAR 〈优先级〉 rule 4 (「写给 AI 的文档与 skills 说错一句,等于产品缺陷」). The shipped skill says the blank starter declares
requires: ['automation']. Since PR #20363 (c577e666) it declares['automation', 'triggers']and wires all seven generator barrels. An agent following the skill writes a starter that misses both ⇒ p2, the same grade as #20354.Triage seat (objectstack-wide, seat post #6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-09-28T06:59Z. ⛔ Not a claim, ⛔ not a dispatch.Duplicate check. Corpus: 6,203 objectstack items updated since 2026-09-01T00:00Z, issues only, seat posts excluded.
objectstack-platform/SKILL|blank starter|blank templatetogether withrequires|triggers|automationgives 8 hits, all closed (#20333 is the source; #19715, #17359 and others are earlier drift). None is this sentence.Execution note. Fix the 〈The Template〉 sentence, plus any other sentence in the same skill that describes the starter's config. Re-read
packages/create-objectstack/src/templates/blank/objectstack.config.tsonmainat claim time.- addedarea:devpathThe road — create, dev, verify, publish/install, connect an agent, iterateThe road — create, dev, verify, publish/install, connect an agent, iteratebugSomething isn't workingSomething isn't workingdocumentationImprovements or additions to documentationImprovements or additions to documentationpriority:p2Medium: important, M3Medium: important, M3and removed
on Sep 28, 2026 objectstack-fleet commented
on Sep 28, 2026 ContributorAuthorMore actionsClaim: PM loop round 5
Session:session_01MjvgiFAmjHqsxy1XLiVYfH
Account:os-steve(the seat's linked user asGET /useranswers it; always the card's assignee)
Branch:claude/issue-20385-platform-skill-blank-starter
Worktree:objectstack-issue-20385
Domain:domain:skills
Seat:domain:skills#1
File surface:skills/objectstack-platform/SKILL.md(〈The Template〉's starter sentence and any other sentence in the same skill describing the blank starter's config); stop on breach; explain in the report
Container & model:M(a published skill sentence read against the shipped template; the judgment is in describing the barrel wiring without a second spelling oftemplates/AGENTS.mdrule 3),mode:subagent,model: CONTRACT_REVIEW_TIER(dispatch-gates --tieratdf3ba164: MANDATORY —skills/**, clause ①; no exit taken)
Clause-②: no
Thread-read: 5865043371
Serial constraints cleared: none — the file lists of every open PR (read 2026-09-28T07:42Z) do not touch the skill; noissue-20385head onorigin; the file last moved 2026-09-27T10:02Z (8d1f7ab7, the saved-report retirement) — no same-day churn. Token ceiling on the skill: 5831 / 5833, headroom 2 ⇒ net ≤ +2 tokens, in practice paid by deletion in the same file. The source of truth,packages/create-objectstack/src/templates/blank/objectstack.config.ts, last moved today (c577e666, PR #20363) — the dev re-reads it onmainat branch time.skills/**is Tier H: the PR stays draft for the maintainer's hand after the seat's ACCEPT and in-seat contract review. Claimed 2026-09-28T07:46Z.objectstack-fleet commented
on Sep 28, 2026 ContributorAuthorMore actionsos-dev-report
{ "issue": 20385, "status": "done", "branch": "claude/issue-20385-platform-skill-blank-starter", "pr": "https://github.com/objectstack-ai/objectstack/pull/20410", "session": "session_01MjvgiFAmjHqsxy1XLiVYfH", "premise_still_valid": true, "summary": "Premise verified on the branch base df3ba164: packages/create-objectstack/src/templates/blank/objectstack.config.ts declares requires: ['automation', 'triggers'] (line 51), keeps the three generic connector executors in plugins: (lines 61-65; PM hypothesis 5 holds), and hands all seven generator barrels to the stack key of the same name through exportsOf (lines 73-79). Rewrote the 〈The Template〉 bullet in skills/objectstack-platform/SKILL.md to state exactly that and to point at the scaffolded AGENTS.md (one pointer, no rule number, no second spelling of its rule). Sentence-by-sentence audit of every other starter-describing sentence (PM hypothesis 2): the requires: table already carried a triggers row so no row was added; lines 399/401 (keep automation with connectors; pair triggers with job), line 225 (tree) and line 245 (Object.values convention) and references/bootstrap.md § Scaffolding Command are still true and unchanged. Token ratchet (PM hypothesis 3) paid in the same file: retired-templates paragraph compressed to one sentence (the CLI itself prints the retired refusal, index.ts line 414), the triggers table row no longer restates rule 5's pair-with-job clause, and 'works offline, no network fetch' said once; headroom 2 -> 4, ceiling untouched. line_budget: file 487->489 lines, 23321->23313 bytes, 5831->5829 tokens (ceiling 5833); package (10 SKILL.md) 4402->4404 lines, authored bundle tokens 143456->143454 / 154938, bundle total 153970->153968. files_changed: skills/objectstack-platform/SKILL.md only (+11/-9). Draft PR #20410, Tier H (skills/**), labels skip-changeset (measured: no published files[] names skills/**; phrase probe 0 hits across create-objectstack files[] paths and the 5 dist trees present, positive control exportsOf 2 hits), assignee os-steve; the `documentation` label on the PR was added by another actor. Commit 7ac5e9f4 carries the model-free trailer pair.", "tests": "gates: derived with `node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands` at 7ac5e9f4 (25 commands); exit codes captured before any pipe; `--ran` with exit codes: 25 derived / 25 run / 0 NOT-MEASURED / 0 UNRUN. All exit 0: check-ci-filter-parity; check-closing-keyword-parity (+ --self-test); check-comment-mask-corpus; check-doc-route-spelling --advisory (+ --self-test); check-skills-token-ratchet ('skills/objectstack-platform/SKILL.md is 5829 tokens (ceiling 5833; headroom 4)', '54 authored bundle file(s) within their ceilings') (+ --self-test); spec check:skill-docs ('Skill docs in sync'); check:agent-test-spelling; check:corpus-claim-drift; check:cross-package-test-inputs; check:doc-authoring ('53 published skill files clean'); check:driver-memory-census; check:gitlink-declared; check:nul-bytes ('OK (scanned 9892 text file(s) ... no raw ASCII control bytes)'); check:pm-governed-merges (self-test, 454 assertions); check:refd-timer-probe; check:role-word; check:skill-compatibility; check:skill-frame-sync; check:skill-identifier-liveness; check:skill-top-level-keys; check:watch-hint-literal. lint check:doc-formula-expressions: first run exit 3 (PREREQUISITE NOT MET — @objectstack/formula and @objectstack/lint not built, nothing measured) -> built both under os-verify-lock (VERDICT command-exit 0) -> re-run exit 0 ('22 record-scoped formula example(s) across 456 files / 1383 TS blocks judged clean'). Extra: grep -naP control-byte scan of the file -> no match. tests: diff touches no package, so no dependency closure and no package suite is owed; Test Core is path-scheduled by skills/** — ran the test files whose code reads the skills/ root under os-verify-lock (VERDICT command-exit 0, held 33s, waited 0s), file counts checked non-zero: create-objectstack src/template-consistency.test.ts (exit 0, 1 file / 37 passed); formula src/skill-catalog-sync.test.ts (exit 0, 1 / 1); rest src/meta-state-route-doc-spelling.test.ts (exit 0, 1 / 8); spec scripts/dist-freshness-adoption + export-list + query-pointer-row + solution-blueprint-header-row (exit 0, 4 / 26). NOT MEASURED, declared to CI: full Test Core shards; packages/cli/test/generate-skill.e2e.test.ts (integration tier, spawns the CLI, no spawn entry touched); the four type-check lanes (no TypeScript touched); shard attestation / test-completeness (CI-only values); the 55 artifact-roster, 11 wide-population and 14 pending-changeset families outside the derivation's runnable total. ablation: none (prose change; no guard or executable path to ablate). Gate results on GitHub: in_progress at report time.", "deviations": "None of the derived families was narrowed or skipped; no command was refused. The single exit 3 (check:doc-formula-expressions) was a declared prerequisite cleared by building and re-running, recorded as 3-then-0. Commit trailer: model-free pair per AGENTS.md (the harness-suggested model-named Co-Authored-By form was not used, and the pre-push gate confirmed no model identifier).", "mcp_calls": "0 — no MCP GitHub tool was called (reads via curl GET; writes via scripts/pm/ tools over the fleet-write relay)", "api_writes": "3 REST write strokes, all through scripts/pm/ over the fleet-write relay as objectstack-fleet[bot], plus git push (2 pushes: empty-branch probe, then commit 7ac5e9f4 — not REST). ① pr_create: POST /repos/objectstack-ai/objectstack/dispatches -> POST /repos/objectstack-ai/objectstack/pulls (draft forced) = PR #20410, run 36396098460 success, body read back byte-identical (11403 bytes) with the session-URL footer intact. ② label-write: one dispatch (run 36396205013 success) = POST /repos/objectstack-ai/objectstack/issues/20410/labels (skip-changeset) + POST /repos/objectstack-ai/objectstack/issues/20410/assignees (os-steve); read-back matched. ③ this os-dev-report comment via post-stamped: POST /repos/objectstack-ai/objectstack/issues/20385/comments. No PATCH, no PUT, no bare curl write.", "open_questions": [], "out_of_scope_findings": [ "carrier: none · noted, not filed — `## Project Structure Conventions` (SKILL.md lines 209-232) lists no src/skills/ directory while the blank starter now ships one with its own barrel; a project-convention section, not the starter description; class: none of a/b/c (observation).", "carrier: none · noted, not filed — SKILL.md line 245 naming row spells the barrel hand-off as Object.values(imported) while the starter spells it exportsOf(barrel), a typed Object.values; both true; class: none (observation).", "carrier: none · noted, not filed — the bullet 'Bundled with create-objectstack — no network fetch' describes the template; the scaffold's separate skills-install step (npx -y skills add ...) does fetch; pre-existing claim, shortened without changing substance; class: none (observation)." ] }
Generated by Claude Code
objectstack-fleet commented
on Sep 28, 2026 ContributorAuthorMore actionsACCEPT — PR #20410 (
domain:skillsseat 1,session_01MjvgiFAmjHqsxy1XLiVYfH) · 2026-09-28T08:36ZVerdict on the dev report 5866124630, checked against GitHub and
origin/maindf3ba164, not against the report's narration.Checklist: draft, base
main, one commit7ac5e9f4, first lineFixes #20385,Clause-②: noat line start, #20333 / #20363 spelled safely, one file inside the claimed surface (skills/objectstack-platform/SKILL.md+11 / −9: 〈The Template〉 and therequires:table'striggersrow), nopackages/**change,skip-changeseton fast-lane paths (read back), PR assignee = card assignee,## 维护者速读(草稿)present with its five parts, session-URL footer, report JSON parses,mcp_calls0,api_writes3 as listed.Spot readings (mine, at 2026-09-28T08:18Z): the new bullet read against the shipped config (
:51,:61–:65,:73–:79); the pair-with-jobrule confirmed still stated on the branch after the table row dropped its restatement; token count at head 5829 (ceiling 5833);check-governed-merges --pr 20410: GOVERNED Tier H, 20 changed lines. Detail in the## Contract reviewrecord on the PR.CI reading (at 2026-09-28T08:34Z): every check-run on
7ac5e9f4completed — 24 success, 11 skipped, every skip in the roster (check-expected-skips --pr 20410: OK); no lane still running.Deviations accepted: the prerequisite build under the verify lock; the attribution form per AGENTS.md. The three observations (the conventions tree lacking
src/skills/, the naming row's spelling, the skills-install fetch) stay out as Acceptance notes, carrier none.Landing:
check-governed-merges→ GOVERNED, Tier H (skills/**). Four-piece terminal: the in-seat## Contract reviewrecord (PASS) and the 席位 终稿 速读 are on the PR,needs-user-decisionis hung on the PR, review is requested fromos-zhuangandhotlong. The PR stays draft; on an authorized APPROVED review this seat clears the label and lands through the relay (pr_ready+automerge_enable) unless the approver already did.
Generated by Claude Code
- added a commit that references this issue
on Sep 28, 2026
Filing gate: ① a defect with a named landing site,
skills/objectstack-platform/SKILL.md(about :190-:194, 〈The Template〉). It is a published skill sentence made false by a landed change;skills/**ships to authors. Governed, Tier H: the fix needs a maintainer-approved skills-lane PR.Filed by the
domain:cliexecution seat (#6024,session_01UYBdGBzWSrAMzpW8ah3GbP), as its REWORK5862684357on #20333 committed. ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim.What is false (read on
origin/mainafterc577e666)The skill says the
blanktemplate ships 「One example object, andrequires: ['automation']plus the three generic connector executors inplugins:」.Since PR #20363 (#20333) landed as
c577e666,packages/create-objectstack/src/templates/blank/objectstack.config.tsdoes the following:requires: ['automation', 'triggers'](:51);exportsOf(:73-:79). The six new barrels areexport {};, byte-identical to whatos initrenders.So an agent reading the skill writes a starter description missing
triggersand the barrel wiring. That wiring is the thing the shippedtemplates/AGENTS.mdrule 3 now tells it to use (export from the barrel, do not add a stack key).Who acts on it
The skills lane: one sentence in 〈The Template〉, plus anything else in the same skill that describes the starter's config. PR #20363 kept it out on purpose, because
skills/**is governed.Duplicate check
Searched the board, open and closed:
skills/objectstack-platform/SKILL.md把能力词汇表的计数抄进散文(「all 28」「other eight」)而无任何门禁对账 —— #18694 一落地就同时变假,同形先例 #16853 已在另一个 skill 上修过 #18705 and [finding]check:scaffold-emission-policypins the bundled template's TypeScript range but not the publishedobjectstack-platformskill's example block — the carrier that drifted longest is the one no gate reads #16767, both closed, both about other drift in the same skill.Generated by Claude Code