Skip to content

Epic: bring this repo's test farm back under the 2026-08-31 ruling — platform-first, os lint --strict first, then retire the local re-implementations by family #1579

Description

@os-zhuang

Epic parent — reserved by pm:epic; the sub-issue tree is the queue for a dedicated epic PM session (/pm-dispatch epic:#1579), summoned by the maintainer. Domain seats do not take these cards. Director seat (objectstack#12708, summon #15) filed the structure on the maintainer's ruling; ⛔ the director seat does not dispatch.

Ruling

Maintainer, 2026-09-05, live director chat, verbatim: 「hotcrm#1579 是不是应该开一个专题卡处理啊」 → 「同意你的建议,你把卡片写好」, accepting the director seat's plan A′ as presented (comment 5552648775 carries the option analysis; the refined plan is below). Standing basis: AGENTS.md § "Scope — a pure metadata application (2026-08-31 ruling)", rule 3 — "Lint, validation, gates and diagnostics belong to the platform, uniformly … Tests in this repo pin this repo's own business facts and nothing else … ⛔ Do not grow a gate farm." Protocol baseline (maintainer 2026-09-05): 「本项目以协议为基准。所以开发应该对其协议,协议有问题应该立卡修改协议」.

Step 5 ruling (2026-09-05, later the same session, verbatim, in order): 「新增平台公开面」 → 「我认为平台的能力应该放在平台,但是平台该怎么设计提供这个能力,你需要完整的重新考虑」 → 「是不是 把执行能力并进 @objectstack/verify / os test 更合理?」 → design B′ (below) → 「同意」 → 「应该还是刚才 hotcrm 专题卡的子卡片吧」. Design B′: the execution capability goes into the already-published @objectstack/verify (ADR-0054 lineage) as an in-process handle on the stack bootStack already boots — real engine, zero re-implemented semantics; no new package; os test (HTTP JSON suites) untouched. Full reasoning: the ruling comment on this card.

Census (comment 5552607309, origin/main b1599507, read-only)

bucket files lines
pure business-fact pin (stay) 86 33,166
pure platform-lint candidate 62 19,614
mixed (one row per class) 35 20,422
delete 1 94
total (test/ 169 + scripts/ 15) 184 73,296

Key finding: ~30 files re-implement rules @objectstack/lint@17.3.0 already ships (≈250 rules: 161 error / 119 warning / 11 advisory) because os lint exits 1 on error only — this repo reads 90 warnings, exit 0. The remedy is relocation to the platform, not deletion; exactly one file is deletable outright. Second finding (step 5 surveys, 2026-09-05T15:4xZ): the shared harnesses are half real (real AutomationEngine, real QuickJS runner, real wrapDeclarativeHook) and half fake (a ctx.api over arrays, hand-sorted hook dispatch, no permission check); the platform's @objectstack/verify already boots the real stack in memory but exposes no in-process way to invoke a hook / flow / action.

Program (sequenced; each step is a sub-issue, Blocked-by: lines are on the cards)

step card repo gate
1 objectstack#15935 — os lint --strict (warnings fail; default unchanged) objectstack platform first
2 #1581 — enable strict in verify, zero the 90 warnings, delete scripts/wow1-live-schema.sh hotcrm Blocked-by step 1 published and pinned (install-surface probe on the card)
3 #1582 F1 flow/predicate/readonly · #1583 F2 reference integrity · #1584 F3 analytics · #1585 F4 i18n + the severity gate · #1586 F5 security/sharing · #1587 F6 write shape hotcrm each Blocked-by #1581; delete only after an ablation proves the platform rule fires under strict; mixed files lose group A only
4 objectstack#15936 — triage decides the live card for the null-guard / totality lint (#4763 closed vs #7219 open) objectstack decides whether the five totality files in F1 are "wait" or "delete"
5a objectstack#15951 — @objectstack/verify in-process handle (hooks.run, flows.run/resume, actions.run, validate, seed/rows, metadata, tenancy option, shared boot) objectstack platform first; Clause-②: yes
5b objectstack#15952 — plugin-spec.mdx stops promising @objectstack/testing; create-objectstack blank template gets a test story objectstack Blocked-by 5a
5c objectstack#15953 — classify hotcrm's platform-semantics pins → derived proof families in verify (D) / platform regression tests (R) / keep (K) objectstack Blocked-by 5a
5 #1595 — replace hook-harness / flow-harness / action-sandbox / metadata-fixtures / tenancy-probe with the handle; delete the stand-ins and their five self-proof suites (~4,069 lines); declare the platform packages tests import hotcrm Blocked-by 5a published and pinned
6 docs↔metadata drift mechanics (19 files / 7,991 lines platform-candidate rows; repo-root / heading-label / docs-anchors helpers) — frozen: no new docs-drift tests; no card; revisit when a platform doc-lint exists
— tenant-scoped unique-index materialisation asserted by case-number-tenant-scope / account-name-tenant-scope group B objectstack folds into 5c's classification (expected (R)); if 5c files it elsewhere, the epic PM adds the Blocked-by on F5

Rules for the epic PM

  • Cards touching packages/spec go to the spec seat's queue with Blocked-by: back-links (none expected here).
  • A platform rule that does not fire under strict on this repo is a platform gap: file upstream, keep the local assertion; never delete on the name of a rule alone.
  • A behaviour the verify handle cannot express is likewise a platform gap (rule 2): file upstream, keep that one helper path, never re-grow a stand-in.
  • Business-fact pins (86 files) are not touched by this epic.
  • Close-out: last sub-issue closed → summary comment here → close this card and remove pm:epic.

Provenance of the census round

Filed by the director seat on the maintainer's instruction 「1543 选 F,普查卡同意开,你现在就派发处理」 (2026-09-05); the read-only census was delivered by an os-dev round (report 5552614013) and ACCEPTed (5552648775). The original census brief is preserved in this card's edit history. Step 5's two read-only surveys (hotcrm helper anatomy; platform test capabilities) were run by the director seat's own explore sub-agents on 2026-09-05T15:3x–15:4xZ; their findings are recorded on objectstack#15951 and #1595.

Refs: #1543 / PR #1580 (the first retirement) · objectstack#15922 (field-consumer diagnostic) · objectstack#13848 (2026-08-31 rulings) · objectstack#15929 (skills finding on the decision frame) · docs/audits/2026-09-hotcrm-handwritten-test-split.md (objectstack).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    pm:epicParent delegated to a dedicated epic PM — other PMs never dispatch into its subtree

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions