Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -161,10 +161,10 @@ jobs:
run: bash scripts/roadmap/check-roadmap-fresh.sh

# The kit's own reader, not a home-made one: owner decision 23/09. The
# home-made scripts/ci/check-product-map.mjs (0d9f5ac, 31/08) describes a
# different state model and cannot be green at the same time as the kit's
# map. It stays on disk only because signed evidence (cong-tu-canh-minh)
# names it as a verifier; it no longer runs in CI.
# home-made scripts/ci/check-product-map.mjs (0d9f5ac, 31/08) described a
# different state model and could not be green at the same time as the
# kit's map. It was deleted on 23/09 once cong-tu-canh-minh, the signed
# dossier naming it as a verifier, was retired (owner: manh).
- name: Product map freshness
run: node "$CLAUDE_PLUGIN_ROOT/scripts/product-map.mjs" --root . --check

Expand Down
8 changes: 4 additions & 4 deletions PRODUCT-MAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,11 @@ flowchart TD
- CI-a — vitest vào CI + gỡ ghim SDK cứng của guard overlay (khử mìn hạ tầng verify) (`ci-vitest-sdk-pin`)
- slot dán chữ/khung giá/logo/safe-zone lên ảnh & video (Phase 1.2) (`compose-overlay`)
- Conformance L0 — pluginRev, node_cached contract, TS↔Python conformance suite (`conformance-l0`)
- Cổng tự canh mình — hai guard vào CI, và suite verify thôi tự đốt vòng (`cong-tu-canh-minh`)
- Cổng tự canh mình — hai guard vào CI, và suite verify thôi tự đốt vòng (`cong-tu-canh-minh`) — đã giao — đã nghỉ, giữ sử liệu
- Đăng ký fork oneflow-api-openai vào manifest chính thức (`dang-ky-fork-openai`)
- Dependency refresh — five pending dependabot updates (`dependency-refresh-2026-07`)
- Gate 0.6 — cùng-không-gian cho scope paths + neo lịch sử cho eval per-PR (`gate-scope-anchors`)
- Gate tooling × t1_skip_globs — đường hợp lệ để sửa guard, và trả ba nợ 0.8 (`gate-tooling-t1`)
- Gate 0.6 — cùng-không-gian cho scope paths + neo lịch sử cho eval per-PR (`gate-scope-anchors`) — đã giao — đã nghỉ, giữ sử liệu
- Gate tooling × t1_skip_globs — đường hợp lệ để sửa guard, và trả ba nợ 0.8 (`gate-tooling-t1`) — đã giao — đã nghỉ, giữ sử liệu
- Hai đường chạy, một venv — engine Python dùng venv per-plugin như bên TypeScript, thôi nuốt lỗi cấp phát (`hai-duong-chay-mot-venv`)
- Hàng rào thôi đọc nhầm "không đo được" thành "không có gì sai" (`hang-rao-doc-nham-loi-thanh-khong-co-gi`)
- Kho khoá toàn vẹn — đọc không cắt bớt âm thầm, ghi không để lại file cụt (`kho-khoa-toan-ven`)
Expand All @@ -64,7 +64,7 @@ flowchart TD
- Plugin scanner reads imports by scope boundary, and says why a slot was skipped (`scan-with-block-imports`)
- Publish the SDK as oneflow-sdk while keeping the tongflow import package (`sdk-distribution-rename`)
- Skill system v1 — manifest tham số, template, orchestrator v1, ngăn skill và xem/sửa kế hoạch; skill thứ hai không đụng engine (`skill-system-v1`)
- Scope evidence staleness by declared eval paths (`stale-scope-by-paths`)
- Scope evidence staleness by declared eval paths (`stale-scope-by-paths`) — đã giao — đã nghỉ, giữ sử liệu
- Per-task metering columns and measured plugin duration (`task-metering`)

## Đã nghiệm thu giá trị
Expand Down
92 changes: 40 additions & 52 deletions _acceptance/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -387,20 +387,11 @@ executors:
# ---- hai-duong-chay-mot-venv (B4) ----
hdc_layout_constant_pinned: "bash scripts/plugins/check-venv-layout-pinned.sh"
hdc_layout_constant_teeth: "bash scripts/plugins/check-venv-layout-teeth.sh"
# --- cong-tu-canh-minh (31/08) ---
# Bo kiem ban do + rang cua no. Dat o scripts/ci/ chu khong scripts/roadmap/
# hay scripts/acceptance/ vi gia re-pin: 0 vs 1 vs 2 ho so (do tren paths da
# khai cua 29 ho so).
# --- cong-tu-canh-minh (31/08) --- khoa pmap_* (thuoc ban do rieng
# scripts/ci/check-product-map*.{mjs,sh}) da go 23/09: ho so nghi (thuoc =
# kit, #128/#129), ban do nay do scripts/product-map.mjs cua kit canh.
kkt_seam_signature: "bash scripts/settings/check-env-store-teeth.sh --case seam-signature"
kkt_teeth_all: "bash scripts/settings/check-env-store-teeth.sh"
pmap_check: "node scripts/ci/check-product-map.mjs"
pmap_teeth_all: "bash scripts/ci/check-product-map-teeth.sh"
pmap_teeth_missing_slug: "bash scripts/ci/check-product-map-teeth.sh --case missing-slug"
pmap_teeth_count: "bash scripts/ci/check-product-map-teeth.sh --case count-mismatch"
pmap_teeth_opportunity: "bash scripts/ci/check-product-map-teeth.sh --case opportunity-mismatch"
pmap_teeth_unreadable: "bash scripts/ci/check-product-map-teeth.sh --case artifact-missing --case artifact-unreadable"
pmap_teeth_extra_slug: "bash scripts/ci/check-product-map-teeth.sh --case extra-slug --case status-downgraded"
pmap_teeth_source_buckets: "bash scripts/ci/check-product-map-teeth.sh --case contract-unparsable --case status-unknown --case dir-empty"
# Lo mu cua guard lo trinh: no so TAP slug trong khoi marker nen dong trung
# vo hinh. Do 31/08: so cai CO dong trung normalize-text-vi ma guard van xanh.
roadmap_fresh: "bash scripts/roadmap/check-roadmap-fresh.sh"
Expand Down Expand Up @@ -430,7 +421,11 @@ executors:
# ho so nay (do tren cay eb175ed). Ve «la mot suite key» cua AC-9 do bang
# phep khang dinh truc tiep ben duoi. Phat hien ngoai hop dong -> Cong 2.
lcm_wiring: "bash scripts/ci/check-gate-guards-job.sh shape && bash scripts/ci/check-gate-guards-job.sh reachable && bash scripts/ci/check-gate-guards-job.sh teeth && bash scripts/roadmap/check-plan-suite-key.sh"
lcm_pmap: "node scripts/ci/check-product-map.mjs && bash scripts/ci/check-product-map-teeth.sh --case parked-opportunity"
# 23/09: tro sang bo doc ban do cua kit ghim KIT_SHA (cung lenh buoc CI
# «Product map freshness»); thuoc rieng check-product-map.mjs va case rang
# parked-opportunity cua no da xoa — rang do kit tu canh. Ban do kit van in
# «Xep lai sau 3 viec» dung ba co hoi park cua AC-11.
lcm_pmap: "node \"$CLAUDE_PLUGIN_ROOT/scripts/product-map.mjs\" --root . --check"
# --- mo-hoa-b01 (05/09) --- guard dinh danh fork + rang, MOT khoa moi ca (khuon lcm_*).
fork_identity: "bash scripts/fork/check-fork-identity.sh"
mhb_teeth_all: "bash scripts/fork/check-fork-identity-teeth.sh"
Expand All @@ -443,7 +438,7 @@ executors:
mhb_teeth_notice: "bash scripts/fork/check-fork-identity-teeth.sh --case notice-dist-gone && bash scripts/fork/check-fork-identity-teeth.sh --case notice-unchanged-back && bash scripts/fork/check-fork-identity-teeth.sh --case notice-attribution-gone"
mhb_prototype_lane: "bash scripts/fork/check-prototype-lane.sh mo-hoa-b01 && bash scripts/fork/check-fork-identity-teeth.sh --case debt-table-missing && bash scripts/fork/check-fork-identity-teeth.sh --case debt-table-duplicate"
mhb_wiring: "bash scripts/ci/check-gate-guards-job.sh shape && bash scripts/ci/check-gate-guards-job.sh reachable && bash scripts/ci/check-gate-guards-job.sh teeth && bash scripts/fork/check-suite-key.sh fork_identity check-fork-identity.sh && bash scripts/fork/check-fork-identity-teeth.sh --case suite-key-dangling"
mhb_existing_guards: "bash scripts/plugins/check-live-docs-manifest-synced.sh readme && bash scripts/plugins/check-live-docs-manifest-synced.sh claude && bash scripts/plugins/check-live-docs-manifest-synced.sh orphans origin/main && bash scripts/plugins/check-manifest-doc-synced.sh && bash scripts/plugins/check-prefix-docs.sh && bash scripts/ci/check-action-pins.sh && bash scripts/ci/check-docker-dryrun.sh && node scripts/roadmap/check-plan-freeze.mjs && bash scripts/roadmap/check-plan-docs.sh && bash scripts/roadmap/check-roadmap-fresh.sh && node scripts/ci/check-product-map.mjs"
mhb_existing_guards: "bash scripts/plugins/check-live-docs-manifest-synced.sh readme && bash scripts/plugins/check-live-docs-manifest-synced.sh claude && bash scripts/plugins/check-live-docs-manifest-synced.sh orphans origin/main && bash scripts/plugins/check-manifest-doc-synced.sh && bash scripts/plugins/check-prefix-docs.sh && bash scripts/ci/check-action-pins.sh && bash scripts/ci/check-docker-dryrun.sh && node scripts/roadmap/check-plan-freeze.mjs && bash scripts/roadmap/check-plan-docs.sh && bash scripts/roadmap/check-roadmap-fresh.sh && node \"$CLAUDE_PLUGIN_ROOT/scripts/product-map.mjs\" --root . --check"
# Job CI: rut lenh RA TU ci.yml roi CHAY no, theo khuon check-vitest-job.sh.
# Doc YAML la do chi dan; chay lenh rut ra moi la do hanh vi.
# o-do-chay-0-ca-van-xanh: mot o do loc theo ten ca ma khong ca nao khop
Expand Down Expand Up @@ -528,39 +523,11 @@ executors:
# conformance-l0 Gate 1 (2026-07-28).
conformance_discriminating: bash scripts/conformance/check-suite-discriminating.sh
plugin_rev_joined_path: pnpm tsx scripts/plugins/check-rev-joined-path.ts
# stale-scope-by-paths Gate 1 (2026-07-28): every file below lands during
# implementation. These live under scripts/acceptance/ on purpose — the
# t1_skip_globs exemption for the gate tooling lists EXACT paths, so a guard
# in a new subdirectory is gated and the gate applies to itself.
# One key per eval, same guard with a different --case: nine evals behind one
# command collapse nine criteria into one exit code, and a case that was
# never implemented then looks identical to a case that passed.
stale_scope_in_scope: bash scripts/acceptance/check-stale-scoping.sh --case in-scope
stale_scope_out_of_scope: bash scripts/acceptance/check-stale-scoping.sh --case out-of-scope
stale_scope_partial: bash scripts/acceptance/check-stale-scoping.sh --case partial
stale_scope_under_declared: bash scripts/acceptance/check-stale-scoping.sh --case under-declared
stale_scope_malformed: bash scripts/acceptance/check-stale-scoping.sh --case malformed
stale_scope_indent_drift: bash scripts/acceptance/check-stale-scoping.sh --case indent-drift
stale_scope_merged_halves: bash scripts/acceptance/check-stale-scoping.sh --case merged-halves
stale_scope_suppression: bash scripts/acceptance/check-stale-scoping.sh --case suppression
stale_scope_two_bases: bash scripts/acceptance/check-stale-scoping.sh --case two-bases
stale_scope_announce: bash scripts/acceptance/check-stale-scoping.sh --case announce
stale_scope_mutation: bash scripts/acceptance/check-stale-scoping.sh --case mutation
stale_scope_case_completeness: bash scripts/acceptance/check-stale-scoping.sh --case case-completeness
stale_scope_guard_not_exempt: bash scripts/acceptance/check-stale-scoping.sh --case guard-not-exempt
stale_scope_no_kill_switch: bash scripts/acceptance/check-stale-scoping.sh --case no-kill-switch
stale_scope_real_repo: bash scripts/acceptance/check-stale-real-repo.sh
# gate-tooling-t1 (item 0.8). Ba case MỚI của check-stale-scoping.sh giữ
# tiền tố stale_scope_* vì chúng là case của guard đó; các guard mới đứng
# riêng mang tiền tố gt1_. Một key cho một eval — xem đầu evals.yaml.
stale_scope_fork_undeclared: bash scripts/acceptance/check-stale-scoping.sh --case fork-undeclared
stale_scope_fork_declared_in_union: bash scripts/acceptance/check-stale-scoping.sh --case fork-declared-in-union
stale_scope_undeclared: bash scripts/acceptance/check-stale-scoping.sh --case undeclared
gt1_t1_escape_path: bash scripts/acceptance/check-t1-escape-path.sh
gt1_all_scoping_cases: bash scripts/acceptance/check-scoping-all-cases.sh
gt1_dead_code_absent: bash scripts/acceptance/check-golden-dead-code-absent.sh
gt1_fork_teeth: bash scripts/acceptance/check-fork-scope-teeth.sh
gt1_no_stale_on_empty_diff: bash scripts/acceptance/check-no-stale-empty-diff.sh
# stale-scope-by-paths / gate-tooling-t1 / gate-scope-anchors: cac khoa
# stale_scope_*, gt1_* (5 khoa) va scope_ns_*/gate_ns_* da go 23/09 cung
# guard cua chung — chung canh co che staleness theo paths cua cong fork da
# xoa o #129, ca ba ho so nghi (thuoc = kit). Khoa con lai ben duoi tro vao
# script con song.
gt1_no_golden_claim: bash scripts/acceptance/check-no-golden-claim.sh
gt1_landed_merge_repinned: bash scripts/acceptance/check-landed-merge-repinned.sh
# roadmap-drift-guard Gate 1 (2026-08-27). MỘT khoá cho MỖI case: bộ răng cũ
Expand All @@ -577,12 +544,9 @@ executors:
roadmap_teeth_supersede_source_single: bash scripts/roadmap/check-roadmap-guard-teeth.sh --case supersede-source-single
roadmap_teeth_case_isolation: bash scripts/roadmap/check-roadmap-guard-teeth.sh --case case-isolation
own_range_case_completeness: bash scripts/acceptance/test-own-range.sh case-completeness
scope_ns_case_completeness: bash scripts/acceptance/test-scope-namespace.sh case-completeness
# gate-scope-anchors (0.6): same-universe scope check + historical anchors.
# gate-scope-anchors (0.6): historical anchors (own-range); the scope
# namespace half died with the fork gate (#129).
# b2_* and ghcr_anchored hit the network (gh) — local verify only, not CI.
gate_ns_exempt_refused: bash scripts/acceptance/test-scope-namespace.sh exempt-refused
gate_ns_variants_red: bash scripts/acceptance/test-scope-namespace.sh variants-discriminating
gate_ns_legit_granted: bash scripts/acceptance/test-scope-namespace.sh legit-granted
own_range_anchored: bash scripts/acceptance/test-own-range.sh anchored
own_range_unlanded: bash scripts/acceptance/test-own-range.sh unlanded
own_range_malformed: bash scripts/acceptance/test-own-range.sh malformed
Expand Down Expand Up @@ -831,6 +795,30 @@ risk_tiers:
- "_acceptance/**"
- "public/**"
- "src/i18n/messages/**"
# lịch sử — tệp đã xoá ở #129; giữ để luật stale không đếm việc xoá là code
# đổi sau verify (kit GUIDE §5.3 mục 3, 23/09). Luật stale đếm tệp đổi từ
# verified_commit ngoài t1_skip_globs, nên gỡ các dòng này biến chính việc
# xoá bản kit đã chép thành «code đổi sau verify» cho mọi hồ sơ ký trước #129.
# Giữ cả hai bộ tên `.js`/`.cjs`: cửa sổ diff từ verified_commit cũ còn thấy
# đường `.js` (kit 1.40.0 đổi đuôi). Gỡ chỉ khi không hồ sơ sống nào có
# verified_commit trước #129.
- "scripts/pre-merge-check.sh"
- "lib/eval-yaml.cjs"
- "scripts/recheck-evidence.cjs"
- "scripts/recheck-evidence.js"
- "lib/evidence-core.cjs"
- "lib/evidence-core.js"
- "lib/gap-probe.cjs"
- "lib/gap-probe.js"
- "lib/ac-line.cjs"
- "lib/ac-line.js"
- "lib/md-section.cjs"
- "lib/md-section.js"
- "lib/workspace-record.cjs"
# Bản chép lop-nhin-thay.cjs vào ở a282fed (kit 2.14.0) nhưng chưa từng được
# khai ở đây; #129 xoá nó nên nó cũng phải là dòng lịch sử, nếu không mọi hồ
# sơ có verified_commit từ a282fed tới trước #129 hết hạn vì chính việc xoá.
- "lib/lop-nhin-thay.cjs"
# Lint configuration only — it constrains how source is written, never what
# the product does at runtime, so a change here cannot invalidate evidence.
- "biome.json"
Expand Down
1 change: 1 addition & 0 deletions _acceptance/cong-tu-canh-minh/decisions.jsonl
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@
{"id":"d-20260831T140000Z-2093","type":"approach","stage":"gate2","at":"2026-08-31T14:00:00Z","decision":"Ngoai-1 (guard nuot tham so la) — owner chon ghi Known limits, nhan ban sua vao goi nay","impact":"tiet kiem: mot dong lenh go sai trong ci.yml khong con doc ra thanh da-kiem-sach · rui ro: khong tieu chi nao do truc tiep hanh vi tu choi do, no duoc giu gian tiep boi ve guard-of-the-guard cua E8"}
{"id":"d-20260831T140100Z-7746","type":"approach","stage":"gate2","at":"2026-08-31T14:01:00Z","decision":"Ngoai-2 (nghi van cong bo qua staleness) — owner chon mo ho so moi staleness-ho-so-thieu-paths","impact":"tiet kiem: khong sua mu mot chot chan CI · rui ro: neu dung la fail-open thi no van mo cho toi khi ho so moi chay xong"}
{"id": "d-20260831T150000Z-3382", "type": "fix", "stage": "S5", "at": "2026-08-31T15:00:00Z", "decision": "Them dong so cai lo trinh cho chinh ho so nay, va viet no KHONG dung nhay nguoc", "impact": "tiet kiem: CI xanh · rui ro: so cai doc MOI tu trong nhay nguoc la mot slug, nen dong nao chua ten lenh trong nhay se sinh slug ma — gioi han co san cua guard, khong phai loi goi nay"}
{"id":"d-20260923T074315Z-20","type":"nghi","stage":"gate2","at":"2026-09-23T07:43:15Z","by":"manh","decision":"thước = kit từ 23/09","impact":"hồ sơ thôi hứa: bản đồ PRODUCT-MAP.md khớp hồ sơ theo thước riêng scripts/ci/check-product-map.mjs (AC-1..4, 10..12; nay bước CI Product map freshness chạy bộ đọc của kit ở KIT_SHA, #128) và suite_keys tách build/typecheck (AC-8; owner gộp lại 02/09 ở 4d8dd32). Guard sổ cái, nối dây job và a11y-dist-dir vẫn chạy nhưng không còn hồ sơ này bảo chứng"}
1 change: 1 addition & 0 deletions _acceptance/gate-scope-anchors/decisions.jsonl
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,4 @@
{"id":"d-20260804T220000Z-11216","type":"fix","stage":"S4-r3","at":"2026-08-04T22:00:00Z","decision":"Dong finding HIGH vong 3: cua so registry cua check-ghcr-untouched khoa theo CO-SLUG thay vi CO-HA-CANH. Feature da neo nhung chua merge -> anchor_tip tra HEAD -> UNTIL = ngay commit hom nay, som hon SINCE (createdAt cua run dispatch) -> cua so RONG -> jq khong chon gi -> in ok va exit 0, nuot mat mot ban publish that. Da repro bang so lieu that truoc khi sua","impact":"tiet kiem: dong lo fail-open trong chinh nua doi chung ma Task 5 vua them; them anchor_landed (hoi DA-HA-CANH-CHUA, khac han anchor_tip hoi CAY-NAO) va assert_window_sane (cua so ket thuc truoc khi bat dau = cau hoi khong tra loi duoc = exit 2). Doi lai: mot ham nua trong gh-run-lib","serves":["AC-9"]}
{"id":"d-20260804T220001Z-11217","type":"revisit","stage":"S4-r3","at":"2026-08-04T22:00:01Z","decision":"Ba vong nghiem thu lien tiep, moi vong tim dung MOT loi that trong code cua toi, va ca ba deu cung mot loi tu duy: gan mot cau hoi vao DIEU KIEN GAN DUNG thay vi dieu kien that (exit trong subshell; slug-co-mat thay cho neo-giai-duoc; slug-co-mat thay cho da-ha-canh)","impact":"chi phi: ~2.8M token/vong. Gia tri bien van duong nhung dang giam dan va deu roi vao MOT ho loi da co ten","revisit":"Trinh Manh o Cong 2: chay vong 4 hay dung lai. Lap luan de dung: ho loi da duoc dat ten va nay co guard thi hanh (assert_window_sane, set -e invariant, ba poison value); lap luan de chay tiep: ba vong deu khong rong"}
{"id":"d-20260804T221500Z-11218","type":"fix","stage":"S4-r3","at":"2026-08-04T22:15:00Z","decision":"Dong finding LOW nhung TRONG hop dong: scope_has_any_match doc ls-files KHONG co core.quotePath=false, trong khi stale_files doc diff CO — git mac dinh quote path phi-ASCII, nen hai ben danh van khac nhau (\"src/lib/caf\\303\\251.ts\" vs src/lib/cafe.ts). Da xac minh bang fixture that","impact":"huong lech la fail-CLOSED (tu choi scope oan) chu khong phai lo hong; nhung chinh chu thich toi viet khang dinh hai ben hoi cung mot khong gian — khang dinh do phai dung. Sua mot co, them ca kiem vao E3, mutation-test", "serves":["AC-1","AC-3"]}
{"id":"d-20260923T074315Z-19","type":"nghi","stage":"gate2","at":"2026-09-23T07:43:15Z","by":"manh","decision":"thước = kit từ 23/09","impact":"hồ sơ thôi hứa cả hai nửa: AC-1..3 không gian tên paths của cổng fork (đã xoá ở #129, kit không đọc paths); AC-4..12 neo own-range vẫn có script sống và test-own-range.sh vẫn xanh nhưng không còn hồ sơ đã ký bảo chứng"}
Loading
Loading