Include and exclusion globs now honour class members, ranges and negation.
A malformed class admits nothing as an include and covers the target as an exclusion.
- Ask class-specific first-touch questions (instruction, test, prose,
config, code); code questions are unchanged.
- Credit a completed Glob/Grep/LS or shell search from the current human
turn that covered the target; Read and exclusion globs never count.
- Collapse same-class new-file creations in one directory within a turn.
- Add opt-in GATEGUARD_FACT_FORCE_MAX_DENIALS session cap (from #2755).
- Always gate sensitive targets, judged on lexical and real paths.
- Canonicalize checked-path keys.
Closes#2608
Co-authored-by: SulimanAbdulrazzaq <suliman9000a@gmail.com>
Adds a curated, Pi-native, skills+prompts-only profile at pi/core/ for downstream packagers that mirror GitHub Releases.
- manifests/pi-core.json: explicit include lists, per-item exclusion reasons, curation rules, safety allowlists; every root skill and command must be classified.
- scripts/build-pi-core.js regenerates pi/core deterministically (package.json from VERSION, LICENSE, README.md, CURATION.md, skills/, commands/); --check fails CI on drift. council is renamed ecc-council inside pi/core only.
- Safety checks: no callable endpoints outside the allowlist, no npx/curl|sh/pip install, no secrets, no absolute home paths, no symlinks, valid frontmatter, no duplicate names.
- CI: build + drift check and an offline Pi CLI load test of pi/core.
- Release: VERSION, package.json and pi/core/package.json at 2.2.2, CHANGELOG, tag-triggered release verification, and a two-week cadence in CONTRIBUTING.md.
pi/core: 123 of 293 skills and 24 of 94 commands; 35,006 characters of skill description text.
- Problem: main d30588f9 (integrate-reviewed-followups) added a skill and
bumped the skill-triggers registryDigest, conflicting with this branch's
own digest refresh for the plan-orchestrate SKILL.md edit.
- Fix: take main's manifest and recompute registryDigest over the merged
tree via scripts/lib/context-pack-registry.js; triggers, triggersDigest
and generatedAt untouched.
- Verification: environment reproduces both sides' committed digests on
their own trees; merged-tree digest a6b6bce7...; validate-context-profiles
293 skills OK; plan-orchestrate registry fixtures 8/8; full
node tests/run-all.js = 704 passed / 0 failed.
Reconciles a local, unpushed doc fix (missing imports in the ja-JP
database.md example) with a CodeRabbit-suggested wording fix applied
on GitHub to the ja-JP SKILL.md security warning. Non-overlapping files,
no conflicts.
Add metadata.upstream: tinystruct==1.7.34 to both the English skill and
its Japanese translation, so a future sync can mechanically diff the
pinned version against the current tinystruct release instead of
rediscovering drift from prose. Also migrates the legacy top-level
`origin: ECC` key into the metadata block, matching the schema used by
the rest of the skills in this repo (tests/commands/learn-skill-discovery.test.js
already asserts top-level `origin:` is unsupported).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The malformed-drawing rollback test took its marker baseline before the
malformed poll but only checked it after resizeAgain(). Resize redraws
the accepted view on its own, so the test still passed with the
immediate rollback redraw removed and the canvas left blank until the
operator resized.
Record the log position alongside the baseline and assert the retained
markers are on the canvas immediately after the malformed poll, before
any resize. Scoped to the drawing case, since the events and lanes
cases fail before draw() starts and correctly do not redraw.
Mutating the implementation confirms the assertion bites: disabling the
rollback draw and removing it entirely both fail it with the message
"the rollback must redraw the retained markers immediately".
Test-only change. control-plane-view-ui 27/27, control-plane-view
13/13, control-plane-view-ui-a11y 18/18, ESLint clean on the test file.
- Problem: CI Test matrix fails on the merge ref with 'Skill triggers manifest is stale: regenerate with scripts/dev/generate-skill-triggers.js'. The SKILL.md sentence added in 8a6e52c9 changes the plan-orchestrate skill content digest that feeds the registry digest, and the committed skill-triggers manifest predates this branch's base.
- Fix: merge current main (the validator and manifest postdate this branch's base, which is why this only bites in CI) and refresh registryDigest to the recomputed value. Triggers are hand-seeded and grounded in the unchanged skill description, so triggers and triggersDigest are intentionally untouched.
- Verification: node scripts/ci/validate-context-profiles.js reproduces the CI error before the fix and passes after (292 skills, triggers 32/292); tests/ci/context-profiles.test.js 3/3; tests/skills/plan-orchestrate-registry.test.js passes; sabotage (reverting the digest) re-fails the validator with the exact CI error.
- Problem: the registry fixtures validated SKILL.md against the committed docs/COMMAND-REGISTRY.json but nothing in the file asserted the registry itself was fresh, so a standalone run passed against a stale registry (npm test does run command-registry:check first, but this file is also run on its own).
- Fix: rebuild the registry in memory via the exported generateRegistry() and assert deep equality with the committed JSON so drift fails as a regenerate hint with a field diff instead of passing silently; add one sentence to SKILL.md stating that a command retired from commands/ fails closed with the BLOCKED marker like a no-argument command.
- Verification: node tests/skills/plan-orchestrate-registry.test.js passes with the new check 8 (8/8); sabotage with a mutated registry description fails check 8 with the regenerate hint and a field diff.
Preserve the original contributor histories and apply the exact independently reviewed repair.
Source-Parent: 5785183108
Review-Manifest-SHA256: e223d98c24e357715527b786257901d2ef0bebadb75ac61e5c000fe60da10f9a
Preserve the original contributor histories and apply the exact independently reviewed repair.
Source-Parent: edcb389e2c
Review-Manifest-SHA256: c607db261fe8760465af1dffd5f9a3dda42478c5f745dbfa5916fd8e014ef306
Preserve the original contributor histories and apply the exact independently reviewed repair.
Source-Parent: 74023e5689
Review-Manifest-SHA256: 208a6350119857df7c1e5b83a46cdba0b7f7399f58ed60167397920c7a21b454
Preserve the original contributor histories and apply the exact independently reviewed repair.
Source-Parent: e41c9241f5
Review-Manifest-SHA256: df9ec6b308f1935e55f13af1845a99b87a0fc921fb30b16e52fbf70d5120ee81
Preserve the original contributor histories and apply the exact independently reviewed repair.
Source-Parent: dee884656e
Review-Manifest-SHA256: 0c7eeef7c2722a605d049daf2dc3c2473c10dd616005afcba21049fc036d8ce9
Preserve the original contributor histories and apply the exact independently reviewed repair.
Source-Parent: aa0ea42882
Review-Manifest-SHA256: 3d35033783c03f7660b6795e20c1de588fc1cd48850b208e36add955e2446ad7
Preserve the original contributor histories and apply the exact independently reviewed repair.
Source-Parent: 81df6475b2
Review-Manifest-SHA256: 272ae1970f0b94fe40dbb974b509b7333682176259f5a1493bbae12d9a7e70cb
Update four stale skill totals to the293 canonical entries verified by the existing catalog checker.
Reviewed-Parent: 5d4cca811d
Source-Manifest-SHA256: 5281891022c3405cfa0549bb15a15ce4b1df101b7c64780da9cbbd839df3d971
Keep the original wrapper assertions while supervising owned child groups through pipe closure, reporting failed capability probes, and preserving aggregate counts.
Reviewed-Base: 807f07a687
Source-Manifest-SHA256: 75176a5cfe5345cc93c20fb748ba5a1f159fdeb171b12ae7a8619979fa55edd9
Final-Source-SHA256: 691cb15f7356845a2cc4f84277ff5fd24cd6210ec9995ffefea0ab19509ba076
The project-scoped reference file shipped an active [profiles.yolo] block
with approval_policy = "never" and exposed MCP servers / approval_policy /
sandbox_mode / notify / profiles.* keys that override the user's own
~/.codex/config.toml when the repo is trusted. AgentShield flags this as
codex-approval-never (CRITICAL) and codex-project-config-escalates (HIGH).
Restrict the project-scoped file to model selection, persistent
instructions, features, and role definitions. Move every other key into a
clearly-marked USER-LEVEL REFERENCE appendix as commented-out examples so
installs still ship a usable template without overriding user policy.
Verified locally with ecc-agentshield scan --path . against .codex/config.toml:
* pre-fix: 2 critical/high findings
* post-fix: 0 critical/high findings
Refs: ARU-10 (ECC-SEC-1.1 review CLEAR), ARU-18 (this PR).
Co-Authored-By: Paperclip <noreply@paperclip.ing>