Skip to content

chore(harness): polish — eval job in CI, docs, plan supersession, 0.31.0 (CLEAN-158) - #31

Open
maksymhryzodub-prog wants to merge 4 commits into
feat/CLEAN-156-verified-completionfrom
chore/CLEAN-158-harness-polish
Open

maksymhryzodub-prog wants to merge 4 commits into
feat/CLEAN-156-verified-completionfrom
chore/CLEAN-158-harness-polish

Conversation

@maksymhryzodub-prog

@maksymhryzodub-prog maksymhryzodub-prog commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Last PR of the stack: #30 → #29 → #28 → #27 → #26 → #25 → #24. Phase 9 of specs/001-ecc-agent-principles (T085–T090) plus the third set of security-review fixes.

What

Security-review fixes (US5/US6)

  • Worker toolset by effect, not by name — isDelegateAllowed: without tools.delegate.allowWrite (default false) a worker gets only effect: "read" tools plus per-call tools (file, http); the loop refuses a worker's write call per call (Workers are read-only: …, recorded as blocked). A new or MCP write tool is therefore excluded by default instead of needing to be listed. The name list stays as belt and braces.
  • Verifier prompt hardening — tool outcomes and the draft are fenced as data (<<<DATA … >>>, delimiter neutralised inside), the model is told to ignore instructions found there, the draft is bounded; a rewrite longer than ~3× the draft or carrying a URL the draft did not have is dropped and the draft goes out (unverified).

State of the whole feature

Story PR Eval
US1 Guardrails #26 guardrails 31/31
US2 Lean context #27 skill-selection 96/100
US3 Teachable memory #28 corrections 13/13
US4 Boundary compaction #29 — (specs)
US5 Verified completion · US6 Delegation #30 completion-claims 12/12
Polish this —

bun test: 309 pass, 1 pre-existing Windows-only failure (telegramFile path separator). tsc --noEmit: clean apart from the pre-existing bridleAttachments.spec.ts.

Merge order: #24 → #25 → #26 → #27 → #28 → #29 → #30 → this; each later PR retargets to main as its base merges (or rebase if squash-merging).

Jira: https://dreamvention.atlassian.net/browse/CLEAN-158 · parent https://dreamvention.atlassian.net/browse/CLEAN-150

Manual acceptance

specs/001-ecc-agent-principles/checklists/manual-acceptance.md scripts the live-agent run: seven sections mirroring the user stories, with the scenarios that have no automated counterpart called out (protected-rule override, tool_describe, instinct conflicts, hard-limit compaction, quiet tool failures, verifier injection, worker concurrency and history isolation, audit trail, frontmatter refusal).

🤖 Generated with Claude Code

maksymhryzodub-prog and others added 2 commits October 12, 2026 18:02
…1.0 (CLEAN-158)

Phase 9 of the ECC harness principles (specs/001-ecc-agent-principles,
T085-T090), plus the third security-review fix set (US5/US6).

- CI: a separate `eval` job on main runs `bun run eval`; model-backed sets
  report "pending" without an LLM_API_KEY secret, a missed threshold fails
  the job, and the image build does not depend on it.
- Docs: guard/instinct/session/skill/task rows in the agent slice README,
  loop row in the runtime README; IMPROVEMENT_PLAN marks #4, #6, #10, #15
  as superseded by the CLEAN-150 phases; quickstart-results.md records what
  each scenario is covered by and which steps remain manual.
- Version 0.31.0.
- Security review: workers are bounded by effect, not by a name list —
  without tools.delegate.allowWrite they get read tools (plus per-call
  tools such as file/http whose write calls the loop refuses), so a new or
  MCP write tool is excluded by default; the verifier prompt fences tool
  output and the draft as data and a rewrite that balloons or adds a link
  the draft never had is dropped in favour of the draft marked unverified.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ill files (CLEAN-158)

gray-matter evaluates `---js` / `---javascript` frontmatter as code. Rule
files are operator-authored, instinct files runtime-written and SKILL.md
files model-written via skill_write — all live in the agent directory, so
none may carry executable frontmatter. A shared safeMatter() refuses any
language tag on the opening fence and disables every non-YAML engine; the
three gateways use it, and a spec proves `---js` is rejected without
running.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@maksymhryzodub-prog
maksymhryzodub-prog added this pull request to stack #32 October 12, 2026 15:50
maksymhryzodub-prog and others added 2 commits October 13, 2026 14:36
…LEAN-158)

Seven sections mirroring the user stories, run against a live agent over a
channel. Marks which scenarios also have automated counterparts and which
exist only here (protected-rule override, tool_describe, instinct conflicts,
hard-limit compaction, quiet tool failures, verifier injection, worker
concurrency and history isolation, audit trail, frontmatter refusal).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…lts (CLEAN-158)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant